Descripción General
Un par de claves es la unidad fundamental de propiedad en Bitcoin. Consiste en una clave privada y su correspondiente clave pública, vinculadas a través de la criptografía de curva elíptica. La clave privada es un número secreto que permite a su poseedor firmar transacciones y gastar bitcoin. La clave pública se deriva de la clave privada y se usa para generar direcciones Bitcoin y verificar firmas digitales. Esta relación asimétrica —donde la clave pública puede derivarse de la clave privada pero no al revés— es la piedra angular del modelo de seguridad de Bitcoin.
Generación de Claves
Paso 1: Generar un número aleatorio de 256 bits (clave privada)
┌──────────────────────────────────────────────────────┐
│ Clave Privada (256 bits): │
│ e9873d79c6d87dc0fb6a5778633389f4453213303da61f20bd67│
│ fc233aa33262 │
│ │
│ (Debe estar entre 1 y el orden de la curva n) │
└──────────────────────────┬───────────────────────────┘
│
Multiplicación de curva elíptica
(multiplicación de punto en secp256k1)
│
▼
Paso 2: Derivar la clave pública
┌──────────────────────────────────────────────────────┐
│ Clave Pública = clave_privada * G (punto generador) │
│ │
│ No comprimida (65 bytes): 04 + coord-x + │
│ coord-y │
│ Comprimida (33 bytes): 02/03 + coord-x │
│ (prefijo 02 si y es par, 03 si y es impar) │
└──────────────────────────┬───────────────────────────┘
│
Operaciones hash (SHA-256 + RIPEMD-160)
│
▼
Paso 3: Derivar la dirección
┌──────────────────────────────────────────────────────┐
│ Dirección Bitcoin: bc1q... (Bech32 para SegWit nativo)│
│ 1... (Base58 para P2PKH legacy) │
│ 3... (Base58 para P2SH) │
└──────────────────────────────────────────────────────┘
La Relación Unidireccional
La seguridad de Bitcoin depende de la relación matemática unidireccional entre claves privadas y públicas:
Clave Privada ──────► Clave Pública ──────► Dirección
(fácil) (fácil)
Dirección ────✗────► Clave Pública ────✗──► Clave Privada
(imposible) (imposible con matemática actual)
Esta propiedad unidireccional se basa en el Problema del Logaritmo Discreto de Curva Elíptica: dado el punto de clave pública en la curva, no existe un algoritmo eficiente conocido para calcular el escalar de clave privada que lo produjo.
Formatos de Clave
Formatos de clave privada:
- Hex sin procesar: 64 caracteres hexadecimales (32 bytes)
- WIF (Wallet Import Format): Codificado en Base58Check, comienza con '5' (sin comprimir) o 'K'/'L' (comprimido)
- Parte de una derivación de frase semilla en billeteras HD modernas
Formatos de clave pública:
- Sin comprimir: 65 bytes (prefijo 04 + 32 bytes x + 32 bytes y)
- Comprimida: 33 bytes (prefijo 02 o 03 + 32 bytes x)
- Bitcoin moderno usa exclusivamente claves públicas comprimidas
Mejores Prácticas de Seguridad
- Nunca compartas tu clave privada. Cualquiera con la clave privada puede gastar todo el bitcoin asociado con ella.
- Usa generadores de números aleatorios criptográficamente seguros para la generación de claves. La aleatoriedad débil es una de las pocas formas prácticas en que las claves pueden verse comprometidas.
- Almacena las claves privadas sin conexión usando billeteras hardware o almacenamiento en frío para cantidades significativas.
- Usa billeteras HD para que la gestión de claves se simplifique a proteger una única frase semilla.
- Nunca generes claves usando brainwallets (claves derivadas de contraseñas memorizadas), ya que son vulnerables a ataques de fuerza bruta.
Conceptos Erróneos Comunes
- No necesitas "registrar" un par de claves en ningún lugar. Los pares de claves se generan localmente y son válidos de inmediato. El espacio de direcciones de Bitcoin es tan grande que las colisiones son virtualmente imposibles.
- Perder una clave privada significa perder el bitcoin permanentemente. No existe "restablecimiento de contraseña" en Bitcoin.
- Una clave pública no es lo mismo que una dirección. La dirección se deriva de la clave pública mediante hashing, añadiendo una capa adicional de seguridad. La clave pública solo se revela al gastar desde esa dirección.