Cómo Tangem genera entropía para claves privadas
Este artículo está disponible en los siguientes idiomas:
- ¿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 la 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 mediante métodos de generación aleatoria auditados:
- En Android, usamos SecureRandom, un generador de números aleatorios criptográficamente seguros (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, utilizamos la API del sistema SecRandomCopyBytes, que genera bytes aleatorios seguros adecuados 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; a mayor cantidad de bits, mayor es el espacio de posibles claves.
La billetera genera entropía una sola vez, durante la configuración inicial. Todas las claves, direcciones y firmas posteriores derivan de reglas matemáticas fijas, por lo que no entra nueva aleatoriedad al sistema.
Esto hace que el paso de generación sea 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 de claves para adivinar la clave mucho más eficientemente que intentando todas las posibilidades.
Una clave privada debe parecer completamente aleatoria desde la perspectiva de cualquier adversario; una baja entropía reduce drásticamente el espacio de búsqueda efectivo, convirtiendo un problema matemáticamente imposible en algo factible con suficiente poder de cómputo o análisis avanzado.
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 insuficiente del sistema), la clave privada resultante tendrá estructuras ocultas.
Los atacantes han explotado exactamente esto en incidentes reales, 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 coincida con la fortaleza del algoritmo subyacente. Para claves de curva elíptica como secp256k1 (usada en Bitcoin y muchas otras), la curva ofrece aproximadamente 128 bits de seguridad contra ataques matemáticos, por lo que la clave privada necesita al menos esa cantidad de entropía para no convertirse en 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 aleatorios verdaderos por hardware, que produce aleatoriedad a partir de procesos físicos como el ruido térmico y el jitter de osciladores. Así es el proceso en detalle:
Paso 1: El TRNG toma muestras de ruido físico.
El generador de números aleatorios verdaderos 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 un flujo de bits sin procesar, 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 blanqueo, para eliminar patrones y producir una salida distribuida uniformemente entre todos los valores posibles. También ejecuta pruebas de salud continuas sobre el flujo bruto 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 pruebas estrictas durante la 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 solo un candidato a clave privada.
Paso 4: El chip valida el candidato según 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á justo 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 tomar muestras, 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 sea sin frase semilla. Los 256 bits ingresan directamente a la jerarquía de claves como clave privada maestra, sin mnemónico.
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.
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. Las dos rutas generan claves diferentes, por lo que corresponden a direcciones distintas.
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 mnemónico en el teléfono. La app solicita bytes aleatorios al generador criptográfico de números aleatorios de la plataforma, que es SecRandomCopyBytes en iOS y SecureRandom en Android.
Ambas interfaces son generadores de números aleatorios criptográficamente seguros. Cada una toma su semilla del pool de entropía del sistema operativo, que el dispositivo llena desde fuentes de entropía de hardware al iniciar y durante el uso.
Luego, la app convierte esos bytes en palabras siguiendo el estándar BIP-39. Añade un checksum, 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 principal causa de pérdida: una frase escrita que alguien puede encontrar, fotografiar o destruir. El modo con frase semilla brinda portabilidad a otras billeteras, pero implica crear una copia de la clave fuera del chip.
¿Por qué los usuarios no pueden probar su propia entropía?
Una clave generada con 40 bits de entropía luce idéntica a una de 256 bits. Ambas producen una dirección válida y devuelven la misma cantidad de palabras en el mismo formato.
No existe una prueba que el usuario pueda realizar en casa. Por eso, los defectos de entropía pueden pasar desapercibidos en productos durante años. La verificación, entonces, debe hacerse antes de la compra, a través de 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, algo inviable a cualquier escala realista.
La entropía débil elimina la necesidad de ese cálculo. El atacante busca entre el conjunto reducido de claves que el generador defectuoso pudo haber producido, deriva las direcciones para cada candidato y luego verifica 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 sólida y verificable, ya que este es el punto clave que determina la imprevisibilidad de tus claves privadas.
El reciente incidente 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.
El enfoque más sólido 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 usar billeteras de hardware que incluyan un Secure Element certificado junto con firmware auditado de forma independiente. Este firmware gestiona el uso del Secure Element, y fallas 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 forma independiente por laboratorios líderes como Kudelski Security, Riscure y Cure53, lo que brinda garantía sobre la seguridad general de nuestra billetera.