Descripción General
La Criptografía de Curva Elíptica (ECC) es la base matemática que sustenta el sistema de generación de claves y firma digital de Bitcoin. Proporciona la misma seguridad que la criptografía de clave pública tradicional (como RSA) pero con tamaños de clave significativamente más pequeños, lo que la hace adecuada para un sistema donde las firmas deben almacenarse permanentemente en la blockchain.
La Curva secp256k1
Bitcoin usa una curva elíptica específica llamada secp256k1, definida por la ecuación:
y² = x³ + 7 (mod p)
Donde p = 2²⁵⁶ - 2³² - 977
(un número primo muy grande)
Esta curva fue una elección inusual cuando se creó Bitcoin, ya que la mayoría de los sistemas usaban la curva secp256r1 recomendada por NIST. Se cree que la elección de secp256k1 por parte de Satoshi estuvo motivada por el hecho de que sus parámetros no son arbitrarios, reduciendo las preocupaciones sobre posibles puertas traseras en las constantes de la curva.
Generación de Claves
┌──────────────────────────────────┐
│ 1. Generar número aleatorio de │
│ 256 bits (clave privada k) │
└──────────────┬───────────────────┘
│
▼
┌──────────────────────────────────┐
│ 2. Multiplicar el punto │
│ generador G por la clave │
│ privada: │
│ K = k × G │
│ (multiplicación de punto │
│ en curva elíptica) │
└──────────────┬───────────────────┘
│
▼
┌──────────────────────────────────┐
│ 3. El resultado K es la clave │
│ pública (un punto en la │
│ curva) │
│ K = coordenadas (x, y) │
└──────────────────────────────────┘
La seguridad de ECC descansa en el Problema del Logaritmo Discreto de Curva Elíptica (ECDLP): dado la clave pública K y el punto generador G, es computacionalmente inviable determinar la clave privada k. Esta es una función de un solo sentido: la multiplicación es fácil, pero la división (encontrar el escalar a partir del resultado) es prácticamente imposible con las matemáticas actuales.
Propiedades Clave
- Clave privada: Un entero aleatorio de 256 bits (entre 1 y el orden n de la curva)
- Clave pública: Un punto en la curva (dos coordenadas de 256 bits, o 33 bytes comprimidos)
- Nivel de seguridad: secp256k1 proporciona aproximadamente 128 bits de seguridad
- Espacio de claves: Aproximadamente 2^256 claves privadas posibles, más que el número estimado de átomos en el universo observable
¿Por Qué ECC en Lugar de RSA?
| Propiedad | ECC (secp256k1) | RSA (equivalente) |
|---|---|---|
| Tamaño de clave | 256 bits | 3.072 bits |
| Tamaño de firma | ~64-72 bytes | ~384 bytes |
| Nivel de seguridad | 128 bits | 128 bits |
| Velocidad | Rápida | Más lenta |
Conceptos Erróneos Comunes
- Las computadoras cuánticas podrían teóricamente romper ECC usando el algoritmo de Shor. Sin embargo, no se espera que las computadoras cuánticas prácticas capaces de esto aparezcan por muchos años, y la comunidad de Bitcoin tiene tiempo para planificar actualizaciones criptográficas post-cuánticas.
- La clave privada no se deriva de la clave pública "invirtiendo" un hash. Está relacionada a través de la multiplicación de puntos en curva elíptica, que es una operación matemática diferente.
- Las claves públicas comprimidas y sin comprimir representan el mismo punto en la curva. Las claves comprimidas almacenan solo la coordenada x más un byte de paridad.