Olvídese del bombo y vea la pura belleza de Blockchain: Merkle Trees, Schnorr Signatures, Fiat Shamir y Pedersen Commitments

Creo firmemente que si volvemos a poner en marcha Internet, seleccionaríamos los mejores elementos de los métodos blockchain y nos desharíamos de nuestro punto de vista de los 80 sobre nuestro mundo digital. Los servidores, los puertos, los derechos de los sistemas operativos, las bases de datos SQL, etc., se han construido sobre modelos de confianza defectuosos y no reflejan el mundo en el que realmente vivimos.

También me preocupa un poco que el mundo no vea la verdadera belleza de blockchain.

Entonces, delinearé tres cosas que considero pura belleza y delinearé cómo cambiarán nuestro mundo: árboles de Merkle, firmas de Schnorr y compromisos de Pedersen.

Olvídese de las exageraciones, ahí abajo están las matemáticas

En el mundo de la física, vemos la belleza de las ecuaciones de Maxwell y de la gravedad, pero por alguna razón, muchos no logran ir más allá del “bombo” de blockchain y Bitcoin. Blockchain se ha convertido en una palabra … un término de moda … agréguelo a cualquier cosa que desee y lo anima. Entonces, algunas personas ahora usan DLT, pero todavía, para mí, suena hueco. Es casi como si hubiera perdido su significado.

¿Y por qué, cuando ves presentaciones en blockchain en estos días, pocas personas profundizan debajo de la superficie y ven la belleza debajo? Para muchos, parece magia que resuelve todos nuestros problemas, sin explicar realmente cuál es el problema y por qué lo resuelve. Imagínese si a alguien se le ocurriera un automóvil impulsado por agua y nos dijera que funcionaría para siempre con un litro de agua. Querríamos sondear el interior y descubrir cómo funciona. Así es como ha evolucionado nuestro mundo. Investigamos y descubrimos, pero por algunas razones, en blockchain, todo el proceso de investigación y descubrimiento para aquellos fuera de una comunidad seleccionada se ha evaporado, y todo lo que nos queda es la exageración de los términos.

Debajo encontramos certeza matemática dentro de un mundo digital que en gran medida no es confiable . Es un mundo donde podemos definir con casi certeza que algo ha sucedido, por alguien o algo, y en un momento determinado. Es un mundo donde la identidad y la firma digital realmente significan algo, y donde no somos solo identificaciones de inicio de sesión que son propiedad de alguien, sino donde existimos como entidades únicas dentro de un mundo global. Es un mundo en el que somos dueños de las cosas y no es el mundo de Google y Facebook el de poseer tu identidad y toda tu actividad en línea.

¡Te guste o no, tus datos eres tú!

No construir sobre arena

No construiríamos nuestros rascacielos en arena, entonces, ¿por qué hacemos lo mismo con nuestros sistemas de información? La única forma de romper con el punto de vista centralizado del mundo es construir sistemas digitales que escalen e integren los derechos ciudadanos y la gobernanza. Por ahora, si aparece en el registro de un sistema, no hay forma real de saber si es usted o no, y no hay forma real de probarlo. Durante demasiado tiempo, las grandes organizaciones han “poseído” Internet, y donde muy poco se puede confiar en nuestro mundo digital. Nuestro futuro debe centrarse en construir sobre una base sólida de criptografía e ingeniería de software, y construir nuevos mundos digitales que escalen. En finanzas, Ian Grigg propuso un modelo de siete capas [aquí]:

El árbol digital más asombroso

Para mí, el árbol Merkle es una de las entidades más perfectamente formadas en informática y una representación casi perfecta de la confianza. Para esto, empiezo con un bloque de génesis, y luego cada transacción que haya ocurrido es ahora confiable, y puedo verificar cada transacción en una instancia, en cualquier momento. Si tuviera que crear un banco perfecto, se basaría en el árbol Merkle. En casi un caso, puedo verificar la presencia de una transacción.

Pero lo que encuentro más hermoso es la pura belleza del proceso de firma … es el proceso de firma. En ciberseguridad, hemos crecido con la horrible infraestructura PKI, y donde mi clave pública es validada por una autoridad de certificación. De esta manera, necesita desarrollar un círculo de confianza e instalar las claves públicas de las autoridades de certificación en mi computadora. Hemos terminado con un lío confuso de confianza, que pocas personas entienden completamente.

La más confiable de todas las firmas

Con blockchain, y con las firmas ECDSA y Schnorr, creo mi propio par de claves y luego puedo firmar instantáneamente las transacciones, y usted puede hacer coincidir mi ID con mi clave pública. Este es un mundo verdaderamente distribuido y no centraliza la confianza. Ahora puedo crear mi propia identificación y firmar cosas para mis actualizaciones de código, mis correos electrónicos y todo lo demás. Solo yo tengo la clave privada que define mi identidad.

Con la firma de Schnorr, creamos una firma (R, s) para un hash del mensaje (MM). Primero generamos una clave privada (x) y luego derivamos la clave pública de un punto en la curva elíptica (G) para obtener:

P = x⋅G

A continuación, seleccionamos un valor aleatorio (k) para obtener un valor de firma de R:

R = k⋅G

El valor de s es entonces:

s = k − Hash (M, R) ⋅x

Nuestra firma de M es (s, R) y la clave pública es P.

Para comprobar la firma calculamos

P⋅Hash (M, R) + s⋅G

Esto se convierte en x⋅G⋅Hash (M, R) + (k − Hash (M, R) ⋅x) ⋅G

que es:

x⋅G⋅Hash (M, R) + k⋅G − Hash (M, R) ⋅x⋅G = k⋅G

El valor de k⋅G es igual a R, por lo que si el resultado es el mismo que R, la firma se comprueba.

Una ejecución de muestra con el mensaje “Hola” es (y donde “BN” es “Número grande”) [aquí]:

En este caso, tenemos una clave privada de 256 bits (dce7… 388) y producimos una clave pública de 512 bits (03 96e… 827) – la parte “03” identifica que estamos usando una clave pública de Bitcoin. Así, si conocemos el mensaje – y cuál se almacenará en la cadena de bloques en el caso de Bitcoin – y la clave, podemos ver que podemos recuperar la clave pública de la firma.

Una de las grandes ventajas de la firma de Schnorr es que podemos firmar más de un mensaje, de modo que varias partes pueden formar parte de la firma de una transacción, y el sistema puede verificar instantáneamente que todos los firmantes lo hayan firmado.

Hacia un mundo donde la propiedad significa algo

Blockchain está directamente del lado del ciudadano, y ahora vemos formas en que los ciudadanos pueden proteger sus propios datos, sin depender de las grandes empresas para que los protejan. Con los compromisos de Pedersen, ahora vemos formas en que aquellos que poseen datos tienen una forma de ocultarlos a los demás y revelarlos cuando los necesitan.

Entonces, ¿podríamos crear un mundo que cegara a Google, a los gobiernos y a otros, y donde nadie pudiera ver nuestras compras o, de hecho, nada sobre nuestras vidas? Sería un mundo donde podemos revelar cosas solo a aquellos en quienes confiamos. En este mundo, las empresas, los gobiernos y otros tendrían que pedirnos permiso para ver nuestros datos, y no solo enviarnos T & C unilaterales. Luego, si tuviéramos regímenes de auditoría / cumplimiento, podríamos crear factores cegadores para que solo ellos pudieran ver la información requerida.

Entonces, ¿cómo creamos un mundo en el que podamos almacenar nuestros secretos en un lugar de confianza y luego revelarlos cuando sea necesario? Digamos que predigo el resultado de una elección, pero no quiero revelar mi predicción hasta después de la elección. Bueno, podría guardar un compromiso con mi predicción, y luego, en algún momento en el futuro, podría revelárselo, y usted puede verificar el compromiso que hice. Cualquiera que vea mi compromiso no debería poder ver cuál es mi predicción.

Esto se conoce como Compromiso Pedersen , y donde producimos nuestro compromiso y luego mostramos el mensaje que coincide con el compromiso. En su forma básica, podemos implementar un compromiso de Pedersen en registros discretos [aquí]. Pero blockchain, IoT, Tor y muchas otras áreas de aplicación ahora usan métodos de curva elíptica, así que veamos si podemos comprometernos con ellos.

Para esto, podemos ocultar los valores en una transacción agregando un valor cegador . Digamos que tenemos un valor de transacción de v , ahora podemos definir esto como un punto en la curva elíptica (H) como:

v×H

Si tenemos tres transacciones ( v 1, v 2 y v 3), podemos crear una suma total de:

Total = v 1 × H + v 2 × H + v 3 × H = ( v 1+ v 2+ v 3) × H

De esta manera podemos determinar la suma de las transacciones. Pero eventualmente podríamos averiguar los valores de v 1, v 2 y v 3, ya que siempre aparecerían como el mismo valor cuando multiplicado por H. Ahora podemos agregar un factor de cegamiento agregando un segundo punto en otra curva elíptica (G) y una clave privada (r). Entonces, un valor de transacción es (según se define como un compromiso de Pedersen):

C = v × H + r × G

Supongamos que Bob tiene dos valores de entrada (v1 y v2) y un valor de salida (v3), y donde v3 = v1 + v2. Luego podemos crear un factor de cegamiento para cada transacción:

C = ( ri 1 × G + vi 1 × H ) + ( ri 2 × G + vi 2 × H ) = ( ro 3 × G + vo 3 × H )

Entonces:

ri 1+ ri 2 = ro 3

En este caso, si podemos probar esto, hemos probado que las entradas son iguales a las salidas. Una muestra de ejecución es [aquí]:

Un mundo en el que pueda probar cosas, sin revelar nada

Todavía estamos en una visión de la década de 1980 de nuestro mundo digital, y donde damos activamente nuestras contraseñas, nuestra fecha de nacimiento, la dirección de nuestra casa y muchas cosas, y donde deberíamos estar probando cosas. ¿Por qué Facebook almacena una versión hash de mi contraseña? ¿No saben que en la nube, un cracker puede probar Terahashes por segundo? Y que, como humanos, tendemos a poner la letra mayúscula al principio y el valor numérico al final. El concepto de almacenar contraseñas debe terminar pronto.

Uno de los métodos más utilizados es el “acceso aleatorio al oráculo no interactivo” para pruebas de conocimiento cero. Se define como la heurística de Fiat-Shamir [1].

En el caso, veremos el uso de un valor hash para la parte del oráculo aleatorio no interactivo. Normalmente, Alice pasaría un valor aleatorio a quienquiera que quiera probar su identidad, pero en este caso usará el valor hash para aleatorizar el rompecabezas y responder.

Las etapas son:

1. Primero, todos están de acuerdo en un rompecabezas y tienen un secreto (x). El rompecabezas es:

y = gˣ

donde estamos de acuerdo en gy x es el secreto que Alice demuestra que sabe. Supongamos que g es 13 y que x es 11, por lo que gˣ es:

2. A continuación, Alice genera un número aleatorio (v) y calcula t, que es:

t = gᵛ

Supongamos que el valor de v es 8. Esto da t de:

3. Ahora calcula un valor hash (c) creado a partir de g, y y t:

c = MD5 (g + y + t)

Digamos que esto nos da 12 (normalmente limitaríamos el rango del valor producido).

4. Ahora calcula r de r = v − c × t para obtener:

5. Ahora envía tyr para probar su identidad:

6. Todos los que saben que quieren demostrar su identificación calcularán (donde c se puede calcular como un hash de g, y y t):

t = gʳ × y-c

En este caso, el cálculo da 815,730,720, que es el mismo valor de t que envió Alice, por lo que han probado su ID [aquí].

Cada vez que Alice genera un nuevo número aleatorio y demuestra que conoce el valor de t cada vez.

Conclusiones

Vivimos en un mundo digital de desconfianza casi completo, y no estamos tratando de mapear nuestro mundo humano de confianza en él, y simplemente no funciona. Esto deja nuestro mundo expuesto al abuso y al ciberdelito.

Entonces, no sé si ve la belleza en lo que he descrito, así que repetiré …

¡Olvídese de las exageraciones y vea la belleza!