¿Qué es el Nonce Blinding Protocol?

La seguridad en el mundo de blockchain siempre está avanzado, y una prueba de ello es la creación del Nonce Blinding Protocol. Este es un protocolo creado por la comunidad del proyecto Bitcoin, donde parece que nada es suficiente para asegurar la total seguridad de la cadena de bloques y la de los monederos de los usuarios.

El Nonce Blinding Protocol fue presentado finalmente a la comunidad el 28 de febrero de 2020, en la lista de desarrollo de Bitcoin. De hecho, su primer pull de prueba (código fuente enviado al proyecto)  se realizó el 15 de febrero de 2019. Fue presentado como una mejora al esquema de firmas y su aplicación en hardware wallets y otros dispositivos secundarios. La idea básica del protocolo es; crear un escudo que evite las filtraciones de datos y los ataques de canal lateral a los esquemas de firmas de Bitcoin y otras criptomonedas.

Todo esto partió de una idea que el propio Satoshi Nakamoto compartió en 2010 en el foro Bitcointalk, en la que decía:

Crypto may offer a way to do “key blinding”. I did some research and it was obscure, but there may be something there. “group signatures” may be related.

Las criptomonedas pueden ofrecer una forma de hacer “cegamiento de claves”. Investigué un poco y no estaba claro, pero puede haber algo allí. Las “firmas de grupo” pueden estar relacionadas.

Pero ¿Qué es un ataque de canal lateral y porque son una amenaza contra nuestra seguridad? ¿Qué hace exactamente Nonce Blinding Protocol? Conozcamos un poco más sobre estos y otros temas.

Ataques de canal lateral (side-channel attacks), la pesadilla de la seguridad en blockchain

Un ataque lateral o side-channel attack, es un tipo de ataque informático que permite traspasar todos los mecanismos de seguridad de un software o hardware, usando para ello la mismas funciones de dicho hardware, software. Puede incluso, usar funciones relacionadas de terceros para realizar un análisis forense de los mismos y lograr obtener la información que se desea.

Para ponerlo en términos más sencillos, un ataque de canal lateral usa el mismo software, hardware u otros medios relacionados, para encontrar fallas en ese software o hardware y explotar dichas fallas. ¿Sorprendente, no? Parece sacado de una película de ciencia ficción, pero es real. De hecho, es algo que lleva muchos años entre nosotros y ha permitido crear cosas muy descabelladas.

Por ejemplo, un sniffer sonoro para tu teclado que permite a una persona en otra habitación saber que estás tecleando en tu computador. Y si ello no te alarma, que te parece una cookie (de las que usan los sitios webs) capaz de cargar un programa en la memoria de tu PC, y de allí extraer datos de tus claves privadas de Bitcoin, o lo que sea que use criptografía. Incluso un análisis eléctrico o electromagnético puede comprometer tu seguridad, usando side-channels attacks.

Puedes pensar que estos ataques son muy elaborados, costosos de hacer y solo posible bajo condiciones muy específicas. Pero la verdad es que en este preciso momento, tu computador puede ser vulnerable a estos ataques sin que lo sepas. Por ejemplo, la mayoría de procesadores para computadores Intel, AMD y ARM (que son para smartphones) son vulnerables a ataques side-channel (como Spectre o Meltdown) y esos problemas de seguridad no están del todo corregidos y otros no se pueden corregir.

Seguramente te estarás preguntando ¿Ha sido premeditado este tipo de cosas? ¿Las empresas han creado estos fallos para violentar la seguridad de nuestros sistemas en caso de que lo necesiten? No lo sabemos con certeza, pero es posible, especialmente si tenemos en cuenta el historial de muchas empresas por generar estos problemas y venderlos a altos precios a gobiernos y sus organizaciones de espionaje.

En ese caso, debido a que dependemos de esa tecnología para nuestro día a día, debemos crear mecanismos que nos ayuden a hacerles más difícil o imposible obtener la información que desean. Es allí donde entra en acción el Nonce Blinding Protocol y ahora explicaremos cómo logra proteger nuestra seguridad contra este tipo de ataques.

¿Cómo funciona Nonce Blinding Protocol?

El objetivo de Nonce Blinding Protocol es el de evitar o hacer más complejos los ataques de canal lateral sobre monederos de criptomonedas, especialmente los hardware wallets. Para lograrlo, el protocolo genera una serie de condiciones que evitan que las claves del monedero puedan filtrarse.

En primer lugar, se genera una mayor aleatoriedad dentro del dispositivo de firma, lo que otorga un mayor nivel de seguridad al software del monedero. Sin embargo, para que dicha aleatoriedad sea realmente impredecible, el host (monedero hardware) y el cliente (un computador u otro dispositivo conectado al host) debe asegurar un canal de comunicación seguro (el protocolo) de confirmación-revelación que funciona de la siguiente manera:

  1. El host genera un pool de aleatoriedad, computa un hash del mismo y envía dicho hash al cliente (generalmente se usa SHA-256) junto a un compromiso criptográfico de que esa es la aleatoriedad que se usará para el proceso de firma.
  2. El cliente recibe la información del host, y se compromete a usar dicho ajuste para la creación del sistema de firmas. Adicionalmente, el cliente también tiene una pool de aleatoriedad que usará para la firma digital. Toda esta información es enviada al host para su conocimiento.
  3. El host responde con la aleatoriedad generada en el paso 1, confirmando la recepción de la información.
  4. Seguidamente el cliente realiza una firma usando la aleatoriedad proporcionada por el host. Realizado este punto, el cliente envía la información de la firma al host.
  5. El host recibe la información y la verifica. Si la información recibida es correcta entonces, el host tomará la aleatoriedad generada por ambas partes, y de ella creará una firma válida para la transacción. Si por el contrario, la verificación falla, el protocolo advierte del fallo.

Este sencillo protocolo permite lo siguiente:

  1. Establecer un entorno de generación y validación de firmas seguro.
  2. Genera una firma válida para una transacción usando dos pool de aleatoriedad distintos. De esta forma, se evita que la información de la firma sea procesada por una sola parte que puede estar o no comprometida.

En pocas palabras, este método divide la generación de las firmas en dos partes distintas, que luego se unen para generar finalmente la firma válida de la transacción. La única manera de corromper un sistema de este tipo es que ambas partes estén afectadas al mismo tiempo. Adicionalmente, el mecanismo es extensible, es decir, se puede usar un esquema en el que participen más de dos partes, lo que incrementa aún más la seguridad del protocolo.