Cómo Tangem genera entropía para claves privadas
- ¿Qué es la entropía en una billetera cripto?
- ¿Cuánta entropía necesita una clave privada?
- ¿Cómo genera Tangem entropía para claves en modo sin frase semilla?
- ¿Cómo genera Tangem entropía para frases semilla?
- ¿Por qué los usuarios no pueden probar su propia entropía?
- ¿Cómo funcionan los ataques de entropía?
- Qué tener en cuenta al elegir una billetera
En modo sin frase semilla, las Tangem Wallet obtienen entropía del True Random Number Generator (generador de números verdaderamente aleatorios) integrado en el Secure Element, certificado bajo el estándar alemán BSI PTG.2 (AIS 31).
Si prefieres usar una frase semilla, la entropía se genera usando métodos auditados de generación aleatoria:
- En Android, utilizamos SecureRandom, un generador de números pseudoaleatorios criptográficamente seguro (CSPRNG) cuyo resultado pasa por BoringSSL/Conscrypt hacia el pool de entropía del kernel. Este pool se alimenta de la temporización de interrupciones, sensores y el TRNG de hardware del SoC. Esto significa que un atacante no puede predecir ni reconstruir tu clave.
- En iOS, usamos la API del sistema SecRandomCopyBytes, que genera bytes aleatorios seguros aptos para la creación de claves criptográficas. La entropía proviene del TRNG basado en hardware del Secure Enclave.
¿Qué es la entropía en una billetera cripto?
La entropía es la aleatoriedad pura que una billetera utiliza para crear una clave privada. Se mide en bits, y a mayor cantidad de bits, mayor es el espacio posible de claves.
La billetera genera la entropía una sola vez al configurarse. Todas las claves, direcciones y firmas posteriores se derivan de reglas matemáticas fijas, por lo que no entra nueva aleatoriedad al sistema.
Esto vuelve el paso de generación permanente. Si la entropía es baja, nada puede fortalecer la frase mnemotécnica derivada.
¿Cuánta entropía necesita una clave privada?
Sin suficiente entropía, un atacante puede aprovechar patrones o sesgos en el proceso de generación para adivinar la clave mucho más eficientemente que forzando todo el espacio matemático.
Una clave privada debe parecer completamente aleatoria desde la perspectiva de cualquier adversario; una entropía baja reduce drásticamente el espacio de búsqueda efectivo, convirtiendo un problema casi imposible en algo factible con suficiente poder de cómputo o análisis sofisticado.
En la práctica, esta aleatoriedad proviene de fuentes de entropía de alta calidad que alimentan un generador de números aleatorios criptográficamente seguro. Si la fuente es débil (por ejemplo, si depende de marcas de tiempo, IDs de procesos o ruido del sistema insuficiente), la clave privada resultante tendrá una estructura oculta.
Existen casos reales donde atacantes han explotado exactamente esto, como la recuperación de claves privadas de Bitcoin a partir de RNGs mal inicializados en dispositivos, donde la entropía efectiva bajó hasta 32 bits, permitiendo el robo masivo de claves.
Una entropía suficiente garantiza que la seguridad de la clave esté a la altura del algoritmo subyacente. Para claves de curva elíptica como secp256k1 (usada en Bitcoin y muchas otras), la curva brinda aproximadamente 128 bits de seguridad contra ataques matemáticos, así que la clave privada necesita al menos esa cantidad de entropía para no ser el eslabón débil.
¿Cómo genera Tangem entropía para claves en modo sin frase semilla?
En modo sin frase semilla, la Tangem Card genera la clave privada dentro del chip Secure Element. Este chip contiene un generador de números verdaderamente aleatorios por hardware, que produce aleatoriedad a partir de procesos físicos como el ruido térmico y el jitter de osciladores. El proceso es el siguiente:
Paso 1: El TRNG toma muestras de ruido físico.
El generador de números verdaderamente aleatorios obtiene entropía de variaciones impredecibles en el silicio, incluyendo ruido térmico a nivel de transistores, ruido electrónico por efectos cuánticos y jitter en la temporización de osciladores de alta frecuencia. La salida en esta etapa es una secuencia de bits cruda con sesgo y correlación.
Paso 2: El acondicionamiento elimina el sesgo. El TRNG aplica un algoritmo de acondicionamiento, como un hash criptográfico o un proceso de blanqueamiento, para eliminar patrones y producir una salida distribuida uniformemente entre todos los valores posibles. Además, ejecuta pruebas de salud continuas sobre la secuencia bruta y se detiene si la fuente de ruido se degrada. En combinación con el Paso 1, este paso se realiza usando una biblioteca certificada CC EAL que pasa por estrictas pruebas de certificación, viene con el chip y nunca se modifica.
Paso 3: El chip extrae 256 bits. Se toma una secuencia de 256 bits de la salida acondicionada. Este valor es un candidato a clave privada y nada más.
Paso 4: El chip valida el candidato contra el orden de la curva. Una clave privada de curva elíptica debe ser un escalar válido dentro de un rango específico. Para secp256k1, la clave debe ser un entero entre 1 y n-1, donde n es el orden del punto base y está apenas por debajo de 2^256.
Un candidato igual a cero o igual o mayor que n es inválido. El chip lo descarta y vuelve a extraer, aunque la probabilidad de que esto ocurra es de alrededor de 2^-128.
Paso 5: El valor se convierte en la clave maestra. Este es el paso que hace que el método no requiera frase semilla. Los 256 bits ingresan directamente a la jerarquía de claves como la clave privada maestra, sin mnemotécnico.
Paso 6: El chip calcula la clave pública. La clave pública se obtiene multiplicando la clave privada por G, el punto generador de secp256k1, una operación irreversible y unidireccional.
Paso 7: Las direcciones se derivan de las claves públicas. Para Bitcoin, la clave pública comprimida en una ruta dada pasa por SHA-256 y luego RIPEMD-160 para obtener un hash de 20 bytes. La codificación de ese hash determina el tipo de dirección.
Una clave en una ruta BIP-84 se convierte en una dirección P2WPKH con codificación bech32. Una clave en una ruta BIP-44 se convierte en una dirección P2PKH con codificación Base58Check. Los dos caminos generan claves distintas, por lo que corresponden a direcciones diferentes.
Paso 9: La clave privada permanece en memoria protegida. La clave privada permanece dentro del chip Secure Element durante toda su vida útil. El chip firma transacciones internamente y solo entrega las firmas, por lo que la clave nunca llega al teléfono, la app ni a internet.
¿Cómo genera Tangem entropía para frases semilla?
En modo frase semilla, la app de Tangem genera el mnemotécnico en el teléfono. La app solicita bytes aleatorios al generador criptográfico de la plataforma, que es SecRandomCopyBytes en iOS y SecureRandom en Android.
Ambas interfaces son generadores pseudoaleatorios criptográficamente seguros. Cada una toma su semilla del pool de entropía del sistema operativo, que el dispositivo llena con fuentes de entropía de hardware al arrancar y durante el uso.
Luego, la app convierte esos bytes en palabras bajo el estándar BIP-39. Añade una suma de verificación, divide el resultado en grupos de 11 bits y asigna cada grupo a una palabra de una lista de 2048. Doce palabras codifican 128 bits de entropía. Veinticuatro palabras codifican 256 bits.
El modo sin frase semilla elimina la causa más común de pérdida: una frase escrita que alguien puede encontrar, fotografiar o destruir. El modo con frase semilla aporta portabilidad a otras billeteras, a costa de crear una copia de la clave fuera del chip.
¿Por qué los usuarios no pueden probar su propia entropía?
Una clave creada con 40 bits de entropía luce idéntica a una con 256 bits. Ambas generan una dirección válida y devuelven la misma cantidad de palabras en el mismo formato.
No existe ninguna prueba que un usuario pueda realizar en casa. Por eso, los defectos de entropía pueden pasar desapercibidos en productos vendidos durante años. La verificación debe hacerse antes de la compra, mediante auditorías publicadas y respuestas técnicas específicas del fabricante.
¿Cómo funcionan los ataques de entropía?
Un atacante no puede calcular una clave privada a partir de una dirección pública. Esto requeriría resolver el problema del logaritmo discreto, lo cual es inviable a cualquier escala realista.
La entropía débil elimina la necesidad de ese cálculo. El atacante explora el conjunto reducido de claves que el generador defectuoso pudo haber producido, deriva las direcciones para cada candidato y luego revisa esas direcciones en la blockchain para ver si tienen saldo.
La dirección actúa como objetivo de búsqueda. Por eso los ataques de entropía encuentran billeteras con fondos e ignoran las vacías.
Qué tener en cuenta al elegir una billetera
Al elegir una billetera de hardware, prioriza dispositivos con generación de entropía fuerte y verificable, ya que este es el punto clave que determina la imprevisibilidad de tus claves privadas.
El incidente reciente de ataque por entropía es un buen ejemplo de por qué el firmware de código abierto no debe considerarse automáticamente más seguro. La mayoría de los usuarios no puede auditar el código fuente por sí misma, mientras que atacantes sofisticados pueden estudiarlo para identificar vulnerabilidades sutiles y explotarlas.
La estrategia más sólida es minimizar la exposición innecesaria del firmware crítico y someterlo a auditorías independientes rigurosas por expertos reconocidos en seguridad. En última instancia, la seguridad proviene de una arquitectura robusta, pruebas exhaustivas y verificación independiente. – Andrey Lazutkin, CTO.
Considera el uso de billeteras de hardware que incluyan un Secure Element certificado junto con firmware auditado de forma independiente. Este firmware dirige el uso del Secure Element, y fallos en su implementación pueden comprometer incluso el hardware más seguro. Por eso, cada actualización de firmware debe ser revisada por expertos de confianza.
El diseño de seguridad de Tangem ha sido revisado de manera independiente por laboratorios líderes como Kudelski Security, Riscure y Cure53, lo que brinda confianza en la seguridad general de nuestra billetera.