Un poco de criptografía: Bitcoin Cash y las firmas digitales
Para lograr crear Bitcoin, Satoshi Nakamoto reunió bloques fundacionales de la criptografía y los unió de tal manera que produjeran un sistema monetario seguro, escalable, resistente a la censura y correctamente incentivado a lo largo del tiempo para asegurar su permanencia. De más está decir que cada una de esas partes es en sí un logro asombroso del ingenio humano. Del mismo modo que la imprenta, el avión e Internet no fueron una creación que surgió de la nada, y que contaba con elementos constitutivos previos, Bitcoin depende de que cada uno de esos pilares funcione correctamente.
Uno de ellos, crucial para la tarea que se propone realizar, son los algoritmos de firmas criptográficas. Uno no puede subestimar la importancia que tienen hoy en día, tanto en la comunicación corriente con cualquier servidor como en asegurar y autenticar secretos militares. En el caso del protocolo Bitcoin, el propósito que se busca cumplir mediante el uso de estas tecnologías es la siguiente: asegurar a la red que, dado un mensaje ―una transacción que autoriza el gasto de unas monedas determinadas― y una firma, solamente el poseedor de la clave pública asociada a esas monedas puede haber producido la firma correspondiente.
Aquí es donde empezamos a entrar en el interesante mundo de las matemáticas que propulsan la criptografía que utilizamos día a día en cada transacción de Bitcoin Cash. La idea es emplear un par de claves asimétricas (una privada, que el usuario mantiene en secreto, y otra pública, que puede ser conocida por cualquiera). La clave pública es derivada a partir de la privada, pero el proceso inverso es imposible. Para que se entienda de una manera más sencilla, pongamos un ejemplo:
Supongamos que Alan quiere enviar 2 BCH a Bárbara. Él debe confeccionar una transacción ―utilizando un software de monedero― que contenga la siguiente información, que debe ser públicamente accesible:
Las monedas que desea gastar.
Las direcciones a las que quiere que la red asocie las nuevas monedas.
La firma correspondiente, producida por la clave privada asociada a la dirección de Alan, a esa transacción en particular.
Los mineros ―quienes son los encargados de asegurar la red y de agregar nuevas transacciones válidas a la cadena de bloques― verifican que los datos provistos por Alan sean correctos. De ser así, dejarán registro de que esos 2 BCH pasan a estar vinculados a la dirección de Bárbara, que debe repetir el proceso. En el caso de que la firma no corresponda a la transacción que se intenta realizar o a la clave pública de las direcciones de Alan, la transacción completa será declarada inválida y ningún minero la incluirá en la cadena de bloques.
¿Qué pasaría si un usuario malicioso quisiera hacerse pasar por Alan para gastar de forma ilegítima sus monedas? En ese caso, debería producir una firma criptográficamente válida que la red debe aceptar. Suponiendo que no conoce la clave secreta de Alan, esta tarea será sencillamente imposible.
¿Y si, en cambio, Alan produce una transacción con una firma válida hacia Bárbara, pero Carlos la altera para que en lugar de Bárbara sea él quien recibe los fondos? En ese caso, la firma no se corresponderá con la información presente en la transacción en cuestión.
Este principio sencillo de funcionamiento es lo que hace a Bitcoin órdenes de magnitud más seguro que cualquier otro sistema de transferencia de dinero, como las transferencias bancarias o las tarjetas de crédito. En el modelo Bitcoin, solamente es el usuario quien puede realizar y hacer pagos. Además, hacer un pago no revela información privada que pueda ser utilizada por un atacante para hacer transacciones ilegítimas en el futuro a su nombre. Si lo comparamos con la enorme industria del fraude crediticio y las estafas para robar números de tarjeta de crédito, vemos por qué el de Satoshi es el modelo más seguro y preferible para usar en el futuro.
Bitcoin tradicionalmente ha utilizado el sistema de firmas conocido como ECDSA (Elliptic Curve Digital Signature Algorithm, ‘algoritmo de firma digital de curva elíptica’). En comparación a otros sistemas existentes, tiene varias ventajas notables que lo hacen idóneo para ser empleado dentro de Bitcoin: las firmas producidas son compactas, criptográficamente seguras y la verificación es rápida. Además, estaba implementado en la mayoría de librerías criptográficas en la era de Satoshi, lo cual hacía fácil producir nuevos programas para Bitcoin.
Sin embargo, en los últimos años se han estado investigando nuevas opciones con diferentes beneficios. Sin perder las propiedades mencionadas arribas, ¿existen otros algoritmos que puedan ser usados? La respuesta es sí y uno de ellos sobresale por el resto: las firmas de Schnorr.
Las firmas de Schnorr son un concepto no muy nuevo. De hecho, su origen se remonta a los años ochenta, aunque la patente recién expiró en el año 2008. El principio del funcionamiento es similar, ya que se pueden aplicar sobre curvas elípticas. Sin embargo, tienen propiedades interesantes. Dadas dos pares de claves públicas (p1 y p2) y privadas (k1 y k2), se puede crear una clave pública p3 tal que su clave privada asociada k3 sea igual a k1 + k2 sin que sea necesario revelar estas dos claves. Esto permite producir algoritmos de firma múltiple cuyas transacciones son indistinguibles de transacciones regulares (algo útil si se trata de preservar la privacidad).
Las firmas de Schnorr son algo más compactas y pueden ser agrupadas, de modo que en el futuro se podrían utilizar de forma extensiva para ahorrar espacio en disco (o sea, Bitcoin Cash sería aún más escalable). Por otra parte, también pueden ser usadas dentro de los esquemas de contratos inteligentes onchain. Las posibilidades son ilimitadas.
Como todo, esto requiere ingenio y capacidad intelectual, pero también saber producir un resultado que sea perdurable en el tiempo.