- OroyFinanzas.com - https://www.oroyfinanzas.com -

¿Qué es una clave privada y pública, dirección y firma digital en Bitcoin?

(OroyFinanzas.com) – En Bitcoin la propiedad de las criptomonedas [1] se establece a través de tres elementos: claves digitales (privadas y públicas), direcciones y firmas digitales que se crean criptográficamente y, por lo tanto, son de una seguridad extrema. Veremos a continuación en qué consisten cada uno de ellos.

La criptografía de clave pública [2] es lo que hace posible muchas de las características únicas de Bitcoin como la confianza descentralizada, la comprobación de la propiedad y el modelo de seguridad de pruebas criptográficas.

La criptografía de clave pública se inventó en 1970 [3] y es a día de hoy la base matemática de la seguridad informática. Además, desde entonces, se han inventado varias funciones matemáticas que permiten la creación de secretos digitales y firmas digitales infalsificables, y el protocolo Bitcoin utiliza uno de ellos para la creación de las claves privadas y públicas, [4]así como para la creación de las firmas: el algoritmo ECDSA (Elliptic Curve Digital Signature Algorithm). [5]

¿Qué son las claves digitales (privada y pública) en Bitcoin?

En Bitcoin, las claves digitales es lo que da control al acceso de los bitcoins almacenados en una cartera y se utiliza la criptografía de clave pública para generar estas claves. En concreto, en Bitcoin las claves digitales vienen en pares: la clave privada y la clave pública. Podemos pensar en la clave pública como si fuera el número de una cuenta bancaria y la clave privada como si fuera el PIN secreto. La clave pública es usada para recibir bitcoins, y la clave privada es usada para firmar las transacciones para gastar esos bitcoins.

Una clave privada y una clave pública están matemáticamente relacionadas, y de hecho, la clave pública deriva de la clave privada. Pero si bien es posible crear la clave pública a partir de una clave privada, es prácticamente imposible crear la clave privada a partir de una clave pública.

La posesión de ambas claves determina automáticamente el control sobre los bitcoins que se almacenen en una cartera Bitcoin y por ello es importante que la clave privada permanezca siempre bajo el control del propietario de dicha cuenta. Además, es importante resaltar que las claves digitales en Bitcoin son creadas y almacenadas por los usuarios (o pueden ser generadas y administradas por el software de cartera del usuario) y, por lo tanto, son completamente independientes del protocolo Bitcoin.

La clave pública se genera desde una clave privada. La clave privada puede tener esta estructura por ejemplo: 18E14A7B6A307F426A94F8114701E7C8E774E7F9A47E2C2035DB29A206321725

Una clave pública Bitcoin derivada de la clave privada puede tener este formato por ejemplo: 0450863AD64A87AE8A2FE83C1AF1A8403CB53F53E486D8511DAD8A04887E5B23522CD470243453A299FA9E77237716103ABC11A1DF38855ED6F2EE187E9C582BA6

Las direcciones Bitcoin

Para poder recibir y enviar bitcoins necesitamos utilizar dos elementos más que derivan de dichas claves. Uno de ellos es la dirección Bitcoin [4]. La dirección Bitcoin es una cadena de números y letras que se producen normalmente a partir de las claves pública y privadas y que podríamos definir como la huella digital de dichas claves.

Como las claves privadas y públicas tienen un formato complejo, después de pasar por el proceso matemático de creación de clave privada y pública tiene un formato más gestionable. Estas versiones de clave pública y privada se llaman direcciones privadas y públicas. La privada es la que da acceso a los bitcoins y debe, por tanto, mantenerse en secreto y la dirección pública es la “cuenta” que podemos compartir con el resto de la red Bitcoin para que nos envíen bitcoins y es la dirección pública de otro usuario lo que utilizamos para indicar en una transacción el receptor de los fondos que enviamos. Veamos unos ejemplos.

Ejemplo de una dirección pública después de haber sido aplicado el proceso matemático de resumen de la clave pública original (siempre empiezan con un 1 o 3. El tres es para direcciones multifirma [6]): 16UwLL9Risc3QfPqBUvKofHmBQ7wMtjvM

La dirección privada tiene un formato similar a la pública, pero nunca se debe compartir porque entonces quien la conozca  puede retirar esos bitcoins de la dirección pública.

El proceso de creación de una dirección pública en Bitcoin lo explicamos en nuestro artículo de referencia: ¿Cómo se crea una dirección o clave pública en Bitcoin? (X) [4]

Firma digital en Bitcoin

Para poder gastar los bitcoins de una dirección Bitcoin en particular, debemos además probar la propiedad de esos bitcoins. Para ello necesitamos demostrar que conocemos la clave privada. Es decir, necesitamos demostrar que conocemos la clave privada, de la clave pública a la que se refiere esa dirección Bitcoin. Y para poder demostrar que conocemos la clave privada sin revelarla públicamente es para lo que se utiliza la firma.

Estas firmas digitales se incluyen en el campo scriptSign de la transacción. Las firmas son elementos criptográficos que se calculan a partir de la clave privada y de una combinación de otra información incluida en la transacción. Y aquí es donde entra en juego la magia de la criptografía, ya que gracias a ello es posible que una clave pública pueda usarse para verificar que dicha firma se ha creado usando la clave privada correspondiente. Además, como las firmas se calculan utilizando la clave privada y una combinación de otra información de la transacción, permiten demostrar además del conocimiento de la clave privada, que el poseedor de la misma, y por lo tanto el dueño de esos bitcoins, confirma los datos de dicha transacción. Por lo tanto, cada firma es únicamente válida para una transacción específica.

El dueño de la clave privada puede firmar por lo tanto una transacción y gastar esos bitcoins sin preocuparse de que nadie vaya a conocer su clave privada porque la clave privada en sí nunca queda expuesta públicamente y además es imposible de averiguar.

La firma y la clave pública de la dirección de la que se envían los bitcoins se añaden al campo de inputs de la transacción (en Bitcoin se habla de transacciones Input y Output que explicaremos en otro artículo). Y esto demuestra que el propietario de la clave privada tiene realmente la intención de efectuar esa transacción y se asegura de que no puede ser alterada.

Actualmente, el protocolo Bitcoin está diseñado para que las claves y firmas se creen a través del esquema criptográfico conocido como Elliptic Curve Digital Signature Algorithm (ECDSA) que es una variante del algoritmo DSA que emplea operaciones sobre puntos de curvas elípticas lo que le brinda la misma seguridad que DSA pero con números de menor tamaño, es decir, claves más pequeñas e igual de seguras. Pero que en el caso de Bitcoin era importante, ya que reduce los requisitos de almacenamiento y de transmisión y con ello facilita el manejo da las claves.

Sin embargo, existen otros tipos de esquemas criptográficos. Ya no es ningún secreto que muchos desarrolladores creen que modificar el actual ECDSA por Schnorr podría traer una gran cantidad de ventajas a Bitcoin. Actualmente, este cambio requeriría de un hard fork [7] para poder implementarse, pero tras la implementación de Testigos Segregados (Segregated Witnesses) [8] podría ser introducido a través de un soft fork [7]. En otro artículo profundizaremos sobre Schnorr y las ventajas que podría tener para el protocolo Bitcoin [9].

EPL