Visión general
Una clave pública en Bitcoin es un punto en la curva elíptica secp256k1, derivado de una clave privada a través de la multiplicación de puntos de curva elíptica. Esta operación matemática es una función unidireccional: dada una clave privada, cualquiera puede calcular la clave pública correspondiente, pero derivar la clave privada de una clave pública es computacionalmente inviable. Las claves públicas sirven como base para las direcciones Bitcoin y las firmas digitales.
Cómo se derivan las claves públicas
Derivación de clave:
Clave Privada (número de 256 bits)
│
▼
Multiplicación de Curva Elíptica
(multiplicación de punto en secp256k1)
│
▼
Clave Pública (punto en la curva)
│
├──> Comprimida: 33 bytes (prefijo 02 o 03 + coordenada x)
│ Ejemplo: 02b4632d08485ff1...
│
└──> No comprimida: 65 bytes (prefijo 04 + coordenadas x e y)
Ejemplo: 04b4632d08485ff1...
│
▼
Hash (HASH160 = RIPEMD160(SHA256(clavepub)))
│
▼
Dirección Bitcoin
Comprimida vs. no comprimida
El software Bitcoin moderno usa exclusivamente claves públicas comprimidas (33 bytes) en lugar de claves no comprimidas (65 bytes). Dado que la coordenada y de un punto en la curva elíptica puede calcularse desde la coordenada x (con un bit de paridad), el formato comprimido almacena solo la coordenada x con un byte de prefijo que indica si y es par (02) o impar (03). Esto ahorra espacio en las transacciones y reduce las comisiones.
Rol en la verificación de transacciones
Cuando alguien gasta bitcoin, proporciona una firma y su clave pública. Cada nodo en la red usa la clave pública para verificar que la firma es válida y que la clave pública hace hash a la dirección a la que se bloquearon los fondos. Este proceso de verificación garantiza que solo el titular de la clave privada correspondiente pudo haber autorizado el gasto.
Exposición de la clave pública
En transacciones P2PKH y P2WPKH, la clave pública se hashea para crear la dirección. La clave pública real solo se revela cuando se gasta la salida. Esto proporciona una capa teórica de resistencia cuántica para las salidas no gastadas, ya que un atacante con una computadora cuántica necesitaría derivar la clave privada de la clave pública, que solo se expone en el momento del gasto.
Concepto erróneo común
Una clave pública no es lo mismo que una dirección Bitcoin. La dirección se deriva de la clave pública a través de uno o más pasos de hashing. Aunque una clave pública puede compartirse de forma segura, la mejor práctica de Bitcoin es compartir direcciones en su lugar, ya que las direcciones son más cortas, incluyen sumas de verificación de detección de errores y mantienen oculta la clave pública hasta el momento del gasto.