Introducción a la Criptografía en Blockchain

Bautista Diaz Geliot
Boske
Published in
8 min readMar 15, 2021

Introducción

La criptografía es una herramienta muy importante para gestionar de una manera muy segura a los tokens en una red de actores que son anónimos y difíciles de confiar. Permite la transparencia de las interacciones y al mismo tiempo mantiene la privacidad de todos los actores de la red. Por último, pero no menos importante, mediante la criptografía se llega a identificar verdaderamente a todos los actores pertenecientes a la red, permitiendo así, dar lugar al protocolo de consenso en una red blockchain.

En el contexto de las redes públicas de blockchain se utilizan tres bloques de construcción criptográfica relevante:

· Funciones de hash: son algoritmos matemáticos que convierten cualquier tipo de dato de un tamaño arbitrario (mensaje) en un dato de un tamaño fijo (valor hash). Se habla de una función unidireccional ya que es posible recrear el dato original desde el dato final, pero se debe emplear mucho tiempo y poder informático que resulta improductivo. Se utilizan para garantizar la integridad y la privacidad de los datos transmitidos.

· Sistema simétrico: el cifrado simétrico no se usa para la comunicación en redes públicas debido a que existen muchos actores en los cuales no se puede confiar. Es por lo que este sistema se utiliza para cifrar grandes cantidades de datos, ciertas aplicaciones de pago o generación de números aleatorios.

· Sistema asimétrico: también llamado criptografía de clave pública se enfoca en resolver el problema de coordinación no abarcado por el sistema simétrico introduciendo dos claves, una pública y una privada. La clave privada es solo conocida por su propio dueño y debe permanecer así. Mientras que la clave pública se puede transmitir en la red, permitiendo a cualquier participante usar esta clave para mandar mensajes encriptados al dueño de la clave pública. Este mensaje enviado solo puede ser descifrado con la clave privada. Finalmente, cualquiera puede verificar con la clave pública correspondiente si la transacción es válida. Algunos ejemplos de sistemas asimétricos son RSA (Rivest-Shamir-Adleman) y ECC (Elliptic-Curve Cryptography)(ver notas).

Billeteras y firmas digitales

Una billetera blockchain es un software que almacena la clave privada, la clave pública, la dirección blockchain y es la manera de comunicarse con la red. Este software se puede ejecutar desde un celular o una computadora. Esta billetera permite autenticar usuarios y gestionar los tokens, es decir, enviarlos e inspeccionar los recibidos. Para cada operación de envío/recepción de tokens en Bitcoin se debe usar una billetera para firmar la transacción con su correspondiente clave privada. Luego, como ya lo vimos antes, esta operación se ajusta en todas las copias del ledger.

Comencemos desde el principio. Cuando se lanza por primera vez una billetera Bitcoin se genera un par de claves que consisten en una clave privada y una clave pública. En el primer paso, la clave privada se crea aleatoriamente. En un segundo paso, la clave pública se deriva matemáticamente de la clave privada usando criptografía ECC. Por último, la dirección blockchain se deriva de la clave pública usando un tipo diferente de criptografía, que no se haya usado anteriormente, agregando un mayor nivel de seguridad (por ejemplo, la función de hash). Esto significa que, si algún individuo es capaz de quebrar la ECC, todavía tendría que pasar por la segunda capa de seguridad para acceder a la información personal del agente en cuestión. Como resultado, la dirección blockchain actúa como una huella digital de la clave pública, pero no da información acerca de la misma. La dirección de blockchain puede ser comparada y tiene la misma función que el número de cuanta bancaria si hacemos referencia a las transacciones financieras tradicionales. Otro ejemplo podría ser que funciona como la dirección de correo electrónico cuando se trata de emails.

Las firmas digitales en las redes blockchain se realizan usando las billeteras. Similar a las firmas a mano, la firma digital se usa para verificar que una persona es quien dice ser. Implementadas correctamente, son más difíciles de forzar que las escritas a mano. Particularmente, en las redes blockchain, las firmas electrónicas tienen la tarea de autentificación, es decir, probar que el remitente de los tokens es realmente él; y de integración de transacción, es decir, verificar la cantidad de tokens mandados. Asimismo, la clave privada se usa para firmar transacciones de tokens, y la clave pública se utiliza por los nodos validadores para verificar la firma. Consecuentemente, una billetera no puede hacerse pasar como otra billetera, esto es, que una persona no puede controlar otra billetera a no ser que tenga la clave privada correspondiente.

Como información extra quiero adjuntar este video que explica en dos minutos y medio que es una billetera virtual para criptomonedas.

Tipos de billetera y administración de clave

La clave privada debe ser personal y mantenida en secreto a no ser que se quiera dar acceso a los tokens a otra persona. Si se pierde acceso a la billetera o a la clave privada, se perderá el acceso a los tokens, pero los mismos seguirán existiendo.

Contrariamente a la creencia popular, la billetera virtual no almacena los tokens. Lo que se almacena allí es el par de claves (pública y privada) asociado a la dirección blockchain. Por lo tanto, el término “billetera” es engañoso, y sería más apropiada la palabra “llavero” ya que actúa como un almacenamiento seguro de llaves y como una herramienta de comunicación en la red blockchain.

Existen dos tipos diferentes de billeteras:

· Controlada por el usuario: ofrece un control personal sobre los tokens personales. La clave privada está únicamente custodiada por el usuario y las transacciones se realizan directamente desde los dispositivos del usuario. La parte negativa que conlleva esto es que el usuario es el único responsable en el caso de pérdida o robo de la clave.

· Alojada: son servicios de custodia ofrecidos por servicios de intercambio online, donde el proveedor del servicio en su servidor maneja la billetera del usuario. Usualmente la clave privada perteneciente al usuario también es manejada por el proveedor del servicio. El software replica la clave privada del usuario de una manera que esta tercera parte pueda cargar transacciones en nombre del usuario. Estas entidades funcionan de una manera similar a los bancos ya que actúan como custodios de los fondos del usuario. Muchos clientes eligen este tipo de billetera para asegurar sus tokens y delegar todo tipo de responsabilidades.

En la actualidad, la mayoría de las billeteras solo permiten un tipo de token y una cierta cantidad limitada de ese token. Esto se debe a que, en su mayoría, los diferentes sistemas de ledger no son interoperables. Muchos sistemas tienen diferentes especificaciones técnicas lo que hace que cada uno requiera el desarrollo de su propia billetera virtual. Billeteras que son compatibles con muchos ledgers, suelen tener problemas en cuanto al consumo del tiempo, y además son difíciles de desarrollar. Otro aspecto relacionado con el punto anterior tiene que ver con que el sistema particular de la criptomoneda pueda aceptar o no una billetera multipagos.

¿Cómo enviamos tokens?

Si Alicia le quiere enviar Bitcoin tokens a Bruno, ella necesitará utilizar una billetera para autenticarse a ella misma, especificar la cantidad que quiere mandar, e indicar la dirección de Bruno. Su billetera transmite la transacción a todas las computadoras de la red. Luego, cada individuo de la red puede chequear si la transacción es válida teniendo en cuenta las reglas de la red.

Pasos a seguir:

1. Alicia mediante la billetera virtual, crea una transacción que contiene su clave pública. Después, especifica la dirección de Bruno y la cantidad enviada y crea una firma digital perteneciente a esta transacción. Esta firma digital es un hash.

2. Para poder probar a toda la red que ella es la dueña de esa dirección, y, por lo tanto, de los tokens, debe firmar el hash con su clave privada. Esta acción la realiza automáticamente la billetera.

3. Ahora Alicia transmite a toda la red esta operación enviando la transacción sin formato y el hash firmado (ver gráfico de abajo).

4. Cualquier computadora de la red que reciba esta transacción puede, ahora, verificar la validez de la misma. Se deben validar dos situaciones. La primera, consiste en probar que Alice es, en efecto, ella y esto se realiza mediante el uso de la matemática y la clave pública. La segunda, esta relacionada con la factibilidad de la operación y se prueba aplicando la función de hash a la transacción. Si el output que le devuelve es el mismo hash, entonces la intervención es verdadera.

5. Luego de que las transacciones sean aprobadas por consenso, las mismas se almacenan en un bloque que se “cierra” (“hashea”). A su vez, el bloque se convierte en parte del ledger si su cierre es aprobado por el resto de los nodos. Este resultado se alcanza debido al mecanismo de consenso llamado Proof-of-Work (PoW) sobre el que se rige Bitcoin y la mayoría de las blockchain.

6. Una vez cerrado el bloque, cada ledger perteneciente a cada nodo se actualiza de modo que Bruno es ahora el propietario de los fondos que Alicia le envió. Esta transacción ya se convierte en parte del estado universal de la red Bitcoin y es resistente a la manipulación y a la modificación.

Notas:

  1. RSA vs ECC: son dos sistemas criptográficos de clave pública (sistema asimétrico) en el cual la diferencia más importante es el tamaño de las claves en comparación con la resistencia criptográfica. ECC ofrece la misma potencia criptográfica que el sistema RSA, pero con claves mucho más pequeñas. Por ejemplo, una clave ECC de 256 bits es la misma que una clave RSA de 3072 bits.

Referencias

  • Texto inspirado en el libro “Token Economy Book”, Shermin Voshmgir, capítulo 2.
  • Gráficos extraídos del libro “Token Economy Book”, Shermin Voshmgir, capítulo 2.

--

--

Bautista Diaz Geliot
Boske
Writer for

Licenciado en Economía UTDT. Maestría en Finanzas UTDT.