Guides ·

Generar una billetera Ethereum offline: guía completa


Generar una billetera Ethereum mientras estás conectado a internet es conveniente. También es un riesgo innecesario. Cada segundo que tu frase semilla o clave privada existe en un dispositivo conectado, está expuesta a keyloggers, malware de portapapeles, extensiones de navegador con permisos excesivos y troyanos de acceso remoto. La solución es directa: genera la billetera offline, escribe el respaldo y solo lleva la dirección pública al mundo online.

Esta guía recorre el proceso técnico completo — desde la generación de entropía hasta una dirección Ethereum utilizable — y explica por qué tus claves generadas offline funcionan perfectamente en redes Layer 2 como Polygon, Arbitrum, Optimism y Base.

¿Por qué generar offline?

Una billetera Ethereum es fundamentalmente solo una clave privada. Quien tenga esa clave controla los fondos. Cuando generas una billetera usando un servicio online o un navegador conectado, la clave privada pasa por capas de software que no controlas completamente: el motor JavaScript del navegador, extensiones del navegador, la gestión de memoria del sistema operativo y potencialmente una pila de red que podría filtrar datos.

La generación offline elimina el vector de red por completo. Si la máquina no tiene conexión de red — WiFi desactivado, Ethernet desconectado, Bluetooth apagado — entonces la clave privada no puede ser exfiltrada remotamente, sin importar qué software esté ejecutándose.

La configuración ideal es:

  1. Una máquina limpia (sistema operativo recién instalado, o una distribución Live USB).
  2. Sin conexión de red de ningún tipo.
  3. Una herramienta que se ejecute enteramente en el navegador usando la Web Crypto API para la aleatoriedad.
  4. Papel o metal para registrar la frase semilla.

El Generador de frases semilla Ethereum de SafeSeed está diseñado exactamente para este escenario. Se ejecuta enteramente del lado del cliente — sin llamadas API, sin comunicación con el servidor, sin analíticas. Puedes cargar la página, desconectarte de internet y generar tu billetera en completo aislamiento. Para una visión más amplia de las prácticas de seguridad offline, consulta la Guía de almacenamiento en frío 2026.

secp256k1 y Keccak-256

Dos primitivas criptográficas definen el sistema de claves de Ethereum: la curva elíptica secp256k1 para la generación de claves, y Keccak-256 para la derivación de direcciones.

secp256k1: la curva elíptica

Ethereum heredó la curva secp256k1 de Bitcoin. Es una curva específica definida sobre un campo primo, elegida por su eficiencia y la ausencia de debilidades conocidas. La ecuación que la define es:

y^2 = x^3 + 7 (mod p)

donde p es un número primo de 256 bits. La seguridad del sistema se basa en el problema del logaritmo discreto en curvas elípticas (ECDLP): dado un punto público en la curva, es computacionalmente inviable determinar el escalar (clave privada) que lo produjo.

Una clave privada en Ethereum es un entero de 256 bits — 32 bytes, o 64 caracteres hexadecimales. La clave pública se deriva multiplicando el punto generador G de la curva por el escalar de la clave privada. Esta multiplicación es una operación unidireccional: fácil de calcular hacia adelante, efectivamente imposible de revertir.

La clave pública resultante es un punto en la curva con coordenadas x e y, totalizando 64 bytes en forma no comprimida (128 caracteres hexadecimales, prefijados con 04). Para una comparación de secp256k1 con la curva ed25519 usada por Solana, consulta secp256k1 vs ed25519.

Keccak-256: de clave pública a dirección

Ethereum no usa la clave pública directamente como dirección. En cambio, aplica Keccak-256 (una variante de SHA-3) a la clave pública no comprimida (sin el prefijo 04), produciendo un hash de 32 bytes. Los últimos 20 bytes de ese hash se convierten en la dirección Ethereum, prefijada con 0x.

Clave privada (32 bytes)
    → multiplicación secp256k1 → Clave pública (64 bytes)
    → hash Keccak-256 → 32 bytes
    → Tomar últimos 20 bytes → Dirección Ethereum (0x...)

Este paso de hash no es solo una reducción de tamaño. Proporciona una capa adicional de protección: incluso si se descubriera un fallo en secp256k1 que permitiera la recuperación parcial de la clave pública desde la dirección, el hash Keccak-256 haría significativamente más difícil recuperar la clave completa. Sin embargo, en la práctica, una vez que realizas una transacción desde una dirección, la clave pública completa se revela en la cadena en la firma de la transacción.

De frase semilla a dirección ETH

La mayoría de las billeteras modernas no te piden que gestiones claves privadas en bruto. En cambio, usan frases semilla BIP39 y derivación de billeteras HD para producir un árbol de claves a partir de un único respaldo.

Paso 1: generar entropía

El proceso comienza con 128 o 256 bits de aleatoriedad criptográficamente segura (entropía). Esta entropía es la semilla de todo lo que sigue. En SafeSeed, esta aleatoriedad proviene del crypto.getRandomValues() del navegador, que obtiene datos del CSPRNG del sistema operativo.

Para una frase semilla de 12 palabras, se generan 128 bits de entropía. Para una de 24 palabras, 256 bits. Consulta BIP39 explicado para el desglose completo de cómo la entropía se convierte en palabras.

Paso 2: entropía a palabras mnemónicas

La entropía se hashea con SHA-256 para producir un checksum. Los bits del checksum se agregan a la entropía, y la cadena de bits combinada se divide en segmentos de 11 bits. Cada segmento se mapea a una de las 2,048 palabras de la lista BIP39, produciendo 12 o 24 palabras.

Paso 3: mnemónico a semilla maestra

Las palabras mnemónicas (más una passphrase opcional) se introducen en PBKDF2-HMAC-SHA512 con 2,048 iteraciones, produciendo una semilla maestra de 512 bits. Esta semilla maestra es la raíz de todo el árbol de la billetera HD.

Paso 4: semilla maestra a clave maestra

La semilla de 512 bits se introduce en HMAC-SHA512 con la clave "Bitcoin seed" (sí, incluso para Ethereum — esta es una convención BIP32). La salida se divide: los 256 bits izquierdos se convierten en la clave privada maestra y los 256 bits derechos en el código de cadena maestro.

Paso 5: derivar la clave Ethereum

Ethereum usa la ruta de derivación m/44'/60'/0'/0/0 según lo definido por BIP44. Cada nivel en la ruta representa una derivación de clave hijo:

  • 44' — Propósito: jerarquía multi-cuenta BIP44.
  • 60' — Tipo de moneda: 60 es el índice SLIP44 para Ethereum.
  • 0' — Cuenta: primera cuenta.
  • 0 — Cambio: cadena externa (direcciones de recepción).
  • 0 — Índice de dirección: primera dirección.

En cada nivel, la clave padre y el código de cadena se combinan mediante HMAC-SHA512 para producir la clave hijo. Las derivaciones endurecidas (indicadas por el apóstrofe) usan la clave privada como entrada, proporcionando un aislamiento más fuerte entre ramas.

Paso 6: clave privada a dirección

La clave privada derivada en m/44'/60'/0'/0/0 es un entero de 256 bits. Se multiplica por el punto generador de secp256k1 para producir la clave pública. La clave pública se hashea con Keccak-256, y los últimos 20 bytes se convierten en tu dirección Ethereum.

El Generador de claves privadas Ethereum de SafeSeed te permite ver cada paso de esta derivación, desde la entropía en bruto hasta la dirección final.

Mismas claves en redes Layer 2

Una de las propiedades más prácticas de Ethereum es que tus claves funcionan de manera idéntica en todas las redes compatibles con EVM. La misma clave privada que controla la dirección 0xABC... en la red principal de Ethereum también controla 0xABC... en Polygon, Arbitrum, Optimism y Base. No se requiere generación de claves adicional.

Esto funciona porque todas las cadenas EVM usan las mismas primitivas criptográficas — secp256k1 para firmar y Keccak-256 para la derivación de direcciones — y el mismo modelo de cuentas. La dirección se deriva de manera determinista a partir de la clave privada, y como la derivación es idéntica, la dirección es idéntica.

Lo que difiere entre cadenas es el chain ID — un identificador de red incrustado en las firmas de transacciones (EIP-155) para prevenir ataques de repetición. Cuando firmas una transacción para Polygon (chain ID 137), esa firma es inválida en la red principal de Ethereum (chain ID 1). Esta es una protección a nivel de transacción, no a nivel de clave.

Para tu flujo de trabajo de generación offline, esto significa que un único respaldo de frase semilla protege activos en todas las cadenas EVM. Genera una vez, respalda una vez y usa la misma dirección en todas partes. Este es uno de los argumentos más fuertes para una generación offline cuidadosa: el riesgo se multiplica en cada cadena que tus claves tocan.

Para más información sobre las implicaciones de seguridad de las direcciones compartidas en cadenas EVM, consulta Seguridad de direcciones EVM.

Verificar con el validador de direcciones

Después de generar tu billetera offline, deberías verificar que la dirección tiene el formato correcto antes de enviar fondos. Usa el Validador de direcciones Ethereum para confirmar:

  1. Verificación de formato: La dirección comienza con 0x y contiene exactamente 40 caracteres hexadecimales.
  2. Checksum EIP-55: La codificación de mayúsculas y minúsculas mixtas es correcta. Si la dirección fue generada correctamente, las letras mayúsculas y minúsculas coincidirán con el hash Keccak-256 de la dirección en minúsculas.

Puedes ejecutar el validador en la misma máquina aislada. Abre la herramienta, desconéctate, pega la dirección y verifica. Si el checksum pasa, puedes confiar en que la dirección fue transcrita correctamente desde cualquier medio que hayas usado (papel, metal, código QR).

Para una explicación detallada de cómo funciona la validación de direcciones en diferentes cadenas, consulta Cómo validar una dirección cripto.

Exportar a MetaMask u otras billeteras

Una vez que tu frase semilla está generada y respaldada de forma segura, eventualmente necesitarás usarla en una aplicación de billetera. Las opciones más comunes son MetaMask (extensión de navegador o móvil), Rabby, Rainbow y billeteras hardware como Ledger o Trezor.

Importar en MetaMask

MetaMask acepta frases semilla BIP39 directamente:

  1. Instala MetaMask en un perfil de navegador limpio.
  2. Selecciona "Importar una billetera existente."
  3. Ingresa tus 12 o 24 palabras.
  4. Establece una contraseña local (esto solo cifra la clave en el dispositivo; no es parte de la semilla).

MetaMask derivará la clave en m/44'/60'/0'/0/0 y mostrará la dirección correspondiente. Verifica que coincida con la dirección que generaste offline. Si no coincide, algo salió mal durante la transcripción — no envíes fondos a ninguna dirección hasta resolver la discrepancia.

Importar en una billetera hardware

Los dispositivos Ledger y Trezor aceptan frases semilla BIP39 durante la inicialización. Ingresa la frase directamente en la pantalla del dispositivo hardware — nunca en una computadora. La billetera hardware derivará la misma clave en la misma ruta y producirá la misma dirección. Este es el estándar de oro para combinar generación offline con uso diario: la semilla fue generada en una máquina aislada y la clave privada nunca existe en una computadora conectada.

Múltiples cuentas

La ruta de derivación m/44'/60'/0'/0/0 produce la primera cuenta. Incrementar el último índice te da direcciones adicionales: m/44'/60'/0'/0/1, m/44'/60'/0'/0/2, y así sucesivamente. Todas derivadas de la misma frase semilla. La mayoría de las billeteras manejan esto automáticamente cuando haces clic en "Agregar cuenta."

La generación offline de billeteras Ethereum no es paranoia — es seguridad operacional básica. Los pocos minutos que toma desconectarte, generar y transcribir son una inversión que protege cada ETH, token y NFT que alguna vez mantengas en esa dirección, a través de cada cadena EVM, mientras tengas las claves. La criptografía es sólida. La única variable es cuán cuidadosamente la manejes.