Este artículo incluye lo siguiente: 1. ¿Qué es una prueba de conocimiento cero? 2. ¿Por qué necesitamos pruebas de conocimiento cero? 3. Escenarios de aplicación de la prueba de conocimiento cero. 4. Cómo funcionan las pruebas de conocimiento cero. 5. Clasificación y casos de aplicación de las pruebas de conocimiento cero. 6. Defectos de las pruebas de conocimiento cero.
PART.01
Qué es la prueba de conocimiento cero
**Prueba de conocimiento cero (Zero-Knowledge Proof) fue propuesta por S.Goldwasser, S.Micali y C.Rackoff a principios de la década de 1980. Se refiere a la capacidad del probador para convencer al verificador de que una determinada afirmación es correcta sin proporcionar ninguna información útil al verificador. **
Para dar un ejemplo simple, Puff dijo que es chef y puede cocinar platos chinos, coreanos e italianos. Mi madre expresó su incredulidad porque no había cocinado una sola comida en casa. Entonces, ¿cómo puedo probar que puedo cocinar en este momento?
Puedo hacer que mi mamá me vea terminar una comida en la cocina y demostrar que realmente sé cocinar. Pero no quiero que mi madre me vea haciendo un desastre en la cocina mientras cocino, o me volverán a regañar, entonces, ¿qué debo hacer? Fui solo a la cocina y mis padres estaban esperando afuera. Después de que terminé de cocinar y empaqué, saqué los platos. Esto todavía prueba que puedo cocinar. En cuanto a los ingredientes que usé, los condimentos que puse y lo desordenada que estaba la cocina durante el proceso, no los necesito. Mientras mi madre sepa que puedo cocinar, demostrará que no lo soy. mintiendo.
En pocas palabras: las pruebas de conocimiento cero intentan establecer la confianza entre dos partes con la cantidad mínima de información intercambiada. Sin revelar más información, una parte (el probador, el probador) puede probar a otra parte (el verificador, el verificador) que una cosa es cierta.
PART.02
¿Por qué necesitas una prueba de conocimiento cero?
Proteger datos privados
Los proveedores deshonestos quieren recopilar la mayor cantidad posible de datos de usuarios, y algunos de los recibos que no tienen nada que ver con su negocio también solicitan permisos a los usuarios (realmente los odio). Colocan la información de identidad personal (PII) del usuario recopilada en una base de datos centralizada. Estas bases de datos son muy vulnerables a los ataques. Una vez atacadas, la información de identidad personal se filtrará, lo que conducirá a varios problemas de fraude.
Autenticación
Al utilizar el sitio web, el usuario puede demostrarle al sitio web que tiene una clave privada, o sabe una respuesta que solo él conoce. El sitio web no necesita conocer la clave, pero puede confirmar la identidad del usuario a través de una prueba de conocimiento cero. A través del almacenamiento descentralizado, el servidor puede demostrar a los usuarios que los datos se conservan correctamente y no se filtran.
Compresión informática y expansión de blockchain
En la arquitectura de bloque tradicional, el mismo cálculo se repite muchas veces, como verificación de firma, verificación de validez de transacción, ejecución de contrato inteligente y otros lugares, porque con la prueba de cálculo, no es necesario repetir el mismo cálculo muchas veces, el proceso de cálculo puede ser probado comprimido por la tecnología de conocimiento cero.
** La prueba de conocimiento cero realmente resuelve la confianza de los datos, realiza la protección de los datos privados y hace que la cadena de bloques realmente se dé cuenta del concepto de máquinas confiables. **
PART.03
Escenario de aplicación de prueba de conocimiento cero
**Los principales escenarios de aplicación de la prueba de conocimiento cero son: pago anónimo, prueba de identidad, cálculo verificable y votación anónima. **
Pago anónimo
Las transacciones de criptomonedas son visibles públicamente en la cadena pública. Los usuarios realizan transacciones de forma anónima, pero también están vinculados a identidades del mundo real (por ejemplo, al incluir direcciones ETH en sus perfiles de Twitter o GitHub), o sus identidades del mundo real se pueden obtener a través del análisis de datos dentro y fuera de la cadena.
Hay "monedas de privacidad" específicas diseñadas para transacciones completamente anónimas. Los ejemplos incluyen Zcash y Monero, que enmascaran los detalles de la transacción, incluidas las direcciones del remitente/destinatario, el tipo de activo, el monto y el cronograma de la transacción. Al incorporar técnicas de conocimiento cero en los protocolos, las redes blockchain centradas en la privacidad permiten que los nodos verifiquen las transacciones sin tener acceso a los datos de las transacciones.
Las pruebas de conocimiento cero también se han aplicado a transacciones anónimas en cadenas de bloques públicas. Como Tornado Cash, un servicio descentralizado sin custodia que permite a los usuarios realizar transacciones privadas en Ethereum. Tornado Cash utiliza pruebas de conocimiento cero para ofuscar los detalles de las transacciones y garantizar la privacidad financiera.
Identificación Personal
Bajo la premisa de no revelar información de identidad específica, se emite un certificado de identidad específico. Por ejemplo, el uso de servicios en línea requiere que se acredite la identidad del usuario y el derecho a acceder a dichas plataformas. Esto generalmente requiere proporcionar información personal como nombre, dirección de correo electrónico, fecha de nacimiento, etc.
Las pruebas de conocimiento cero pueden simplificar la autenticación de plataformas y usuarios. Las pruebas ZK se generan utilizando entradas públicas (p. ej., datos que prueban que el usuario es miembro de la plataforma) y entradas privadas (p. ej., los detalles del usuario), que los usuarios simplemente pueden presentar para verificar su identidad cuando necesitan acceder a los servicios. Por ejemplo, para acreditar si el usuario es mayor de edad o no, no es necesario emitir los datos del DNI, ni el año concreto de nacimiento, sino únicamente la conclusión de si el usuario tiene o no dieciocho años.
Cálculo verificable
Cuando el dispositivo del usuario no pueda admitir la informática requerida, o el costo de la informática local sea demasiado alto, se considerarán los servicios de terceros. Estos servicios de terceros pueden devolver resultados de salida a los usuarios de forma rápida y económica (como el servicio Oracle de Chainlink). Las pruebas de conocimiento cero en este escenario permiten a los proveedores de energía informática de terceros generar pruebas de integridad computacional para garantizar que los resultados de salida recibidos por los usuarios sean correctos.
Votación anónima
Bajo la premisa de no revelar la identidad concreta, se acredita la identidad del usuario y se obtiene la facultad de voto para completar la votación.
PART.04
Cómo funcionan las pruebas de conocimiento cero
Las pruebas de conocimiento cero fueron propuestas por primera vez por Shafi Goldwasser y Silvio Micali del MIT en un artículo de 1985 titulado "Complejidad del conocimiento de los sistemas de prueba interactivos". El autor mencionó en el artículo que es posible que un probador convenza a un verificador de la autenticidad de los datos sin revelar los datos específicos. La prueba de conocimiento cero puede ser interactiva, es decir, el probador tiene que probar la autenticidad de los datos una vez a cada verificador; también puede ser no interactiva, es decir, el probador crea una prueba, y cualquiera que use esta prueba puede ser verificado. Actualmente hay muchas implementaciones de pruebas de conocimiento cero, como zk-SNARKS, zk-STARKS, PLONK y Bulletproofs. Cada método tiene sus propias ventajas y desventajas en términos de tamaño de prueba, tiempo de prueba y tiempo de verificación.
La prueba de conocimiento cero tiene tres características básicas, a saber:
Integridad: si la declaración es verdadera, el verificador honesto puede confiar en que el probador honesto tiene la información correcta.
Confiabilidad: Si la declaración es falsa, ningún probador deshonesto puede convencer a un verificador honesto de que tiene la información correcta.
Conocimiento cero: si la declaración es verdadera, el verificador no sabe nada, excepto que la declaración es verdadera del probador.
En resumen, para crear una prueba de conocimiento cero, el verificador debe hacer que el probador realice una secuencia de operaciones que el probador solo puede realizar correctamente si conoce la información subyacente. Si el probador engaña con un resultado, es muy probable que el verificador encuentre y pruebe su error en la verificación.
PART.05
Clasificación de pruebas de conocimiento cero
La prueba de conocimiento cero se puede dividir en "prueba de conocimiento cero interactiva" y "prueba de conocimiento cero no interactiva" según el método de interacción.
Prueba interactiva de conocimiento cero
El probador y el verificador deben interactuar varias veces, el verificador continuará haciendo preguntas para desafiar al probador, y el probador continuará respondiendo a estos desafíos hasta que el verificador esté convencido.
Prueba interactiva de conocimiento cero: juego para daltónicos
Alice es daltónica, pero Bob no es daltónico. Bob tiene dos bolas del mismo tamaño y forma, pero los colores de estas dos bolas son diferentes. Una bola es azul y la otra es roja. Dado que Alice es daltónica, entonces Alice no puede saber si las dos bolas son iguales, Bob necesita demostrarle a Alice que las dos bolas son diferentes. Aquí, Alice se llama el verificador y necesita verificar si la declaración de Bob es correcta o no. Bob se llama el probador y necesita probar su declaración (hay dos bolas con diferentes colores). En el caso del color de dos bolas, demuéstrele a Alicia que los colores de las dos bolas son diferentes, lo cual es consistente con la definición de prueba de conocimiento cero.
Alice recoge dos pelotas frente a Bob, la pelota azul en la mano izquierda y la pelota roja en la mano derecha, y luego pone ambas manos detrás de su espalda para que Bob no pueda ver la pelota en la mano de Alice, y Alice intercambia la pelota al azar. bolas en sus manos izquierda y derecha detrás de su espalda, después de que se completa el intercambio, Alice extiende su mano y le pregunta a Bob si las dos bolas han intercambiado posiciones.Si Bob puede ver el color en la bola, entonces cada vez que Alice cambia la posición de la pelota, Bob puede responder correctamente a la pregunta de Alice.
Por primera vez, Alice intercambió en secreto la posición de la pelota en su mano, y luego Alice le preguntó a Bob si ella intercambió la posición de la pelota. Si Bob respondió Sí, entonces Alice tiene un 50% de probabilidad de que Bob pueda distinguir los colores de las dos bolas, porque Bob Hay una probabilidad de 1/2 de hacerlo bien, por lo que Alice puede intentarlo de nuevo. Si Bob responde No, entonces Alice puede estar segura de que Bob no puede distinguir los colores de las dos bolas.
La segunda vez, Alice no cambia las posiciones de las bolas en sus manos y luego Alice le pregunta a Bob si cambió las posiciones de las bolas. Si Bob responde No, entonces Alice tiene un 75% de probabilidad de creer que Bob puede distinguir los colores de las dos bolas.
Después de la primera iteración, Alice puede decir que la afirmación de Bob tiene un 50% de probabilidad de ser cierta. Si Bob responde correctamente la segunda vez, Alice puede decir que la afirmación de Bob es verdadera con una probabilidad del 75 %. Después de la tercera iteración, será del 87,5 %. Si Bob ha pasado la prueba n veces consecutivas, Alicia tiene una probabilidad de 1-(1/2)^n y puede pensar que lo que dijo Bob es cierto y que las dos bolas son rojas y azules.
La prueba interactiva de conocimiento cero es un método de verificación basado en la probabilidad. El verificador hace preguntas al probador en función de cierta aleatoriedad. Si el probador puede dar la respuesta correcta, significa que tiene una alta probabilidad de tener todo su "conocimiento declarado". ". La prueba de conocimiento cero no es una prueba en el sentido matemático, porque tiene una pequeña probabilidad de error, y el probador engañoso puede engañar al verificador a través de afirmaciones falsas. En otras palabras, las pruebas de conocimiento cero son pruebas probabilísticas en lugar de pruebas deterministas, pero existen técnicas que pueden reducir los errores a valores insignificantes.
Este enfoque interactivo tiene algunas limitaciones:
Cada verificación requiere todo un largo proceso.
Tanto el probador como el verificador deben estar presentes al mismo tiempo, ya sea en línea o cara a cara.
Solo se puede confiar en un verificador. Si se va a confiar en varios verificadores, cada verificador debe pasar por un proceso de prueba.
PRUEBA NO INTERACTIVA DE CONOCIMIENTO CERO
Las pruebas interactivas de conocimiento cero requieren que dos partes estén fácilmente disponibles e interactúen repetidamente. Incluso si el verificador confía en que el probador es honesto, la prueba no se puede usar para una verificación independiente (el cálculo de una nueva prueba requiere un nuevo conjunto de mensajes entre el probador y el verificador).
Para resolver los problemas que enfrentan las pruebas interactivas de conocimiento cero, surgieron las pruebas no interactivas de conocimiento cero. Manuel Blum, Paul Feldman y Silvio Micali propusieron las primeras pruebas interactivas de conocimiento cero, donde el probador y el verificador tienen un secreto compartido. Esto permite que un probador demuestre su conocimiento de cierta información sin proporcionar la información en sí.
** Prueba de conocimiento cero no interactivo --- juego de Sudoku **
Sudoku es un juego matemático originado en Suiza en el siglo 18. Es un juego de lógica que utiliza papel y bolígrafo para realizar cálculos. Los jugadores deben deducir los números de todos los espacios restantes en función de los números conocidos en el tablero de 9 × 9 y asegurarse de que los números en cada fila, cada columna y cada palacio de línea gruesa (3*3) contengan 1- 9. repetir.
Para demostrarle a Bob que ha resuelto un Sudoku, Alice crea una máquina a prueba de manipulaciones para esto. Alice pone la respuesta de Sudoku generada en la máquina, y la máquina puede enviar una prueba a Bob. La máquina de Alice sigue el siguiente protocolo verificable públicamente: Primero, Alice coloca el Sudoku original sin resolver en la máquina y las tres cartas del Sudoku boca arriba. A continuación, Alice pone su respuesta boca abajo en la celda correspondiente de la máquina, colocando también tres cartas en cada celda. Finalmente, Bob obtiene la prueba de la máquina y la máquina le devuelve 27 bolsas:
La máquina saca 9 cartas de cada fila de Sudoku, las mezcla por separado y las mete en una bolsa, son 9 filas en total, y usa 9 bolsas, la máquina saca 9 cartas de cada fila de Sudoku, las mezcla y las pone en Ponlas en una bolsa, hay 9 columnas en total, y se usan 9 bolsas; la máquina saca las cartas en cada palacio de línea gruesa (3*3) en Sudoku, las mezcla y las pone en una bolsa, un total de 9, use hasta 9 bolsas;
Bob revisa cada una de las 27 bolsas individualmente, y si las tarjetas en cada bolsa contienen los números del 1 al 9, y ninguno de los números falta o se repite, entonces Bob puede confirmar que Alice realmente resolvió el Sudoku y que Bob no tomó cualquier número de la máquina Cualquier conocimiento sobre la solución de Sudoku se puede obtener de la prueba devuelta, porque los datos devueltos por la máquina a la bolsa de Bob se barajan al azar.
Las pruebas de conocimiento cero no interactivas superan algunas de las deficiencias de las pruebas de conocimiento cero interactivas, no requieren largas interacciones en línea, muchas personas (o incluso todos) pueden confiar en ellas y la prueba siempre es válida, pero las máquinas y los programas adicionales puede ser necesario para determinar el orden experimental. Por ejemplo, en el caso de Sudoku, depende del programa decidir qué columna o fila verificar. La secuencia de verificación debe mantenerse en secreto, de lo contrario, el verificador puede pasar la verificación sin conocer el "conocimiento" real.
Prueba interactiva de conocimiento cero VS prueba no interactiva de conocimiento cero
Cada verificación de una prueba interactiva requiere una nueva ronda de comunicación, y una prueba no interactiva requiere solo una ronda de comunicación entre los participantes (probador y verificador). El probador pasa la información secreta a un algoritmo especial para calcular la prueba de conocimiento cero. Esta prueba se envía al verificador, que utiliza otro algoritmo para comprobar si el probador conoce el secreto.
Las pruebas no interactivas reducen la comunicación entre el probador y el verificador, lo que hace que las pruebas ZK sean más eficientes. Además, una vez que se genera una prueba, cualquier otra persona puede verificarla (con acceso al secreto compartido y al algoritmo de verificación).
**PART.**06
Soluciones técnicas y aplicaciones de prueba de conocimiento cero
La tecnología de conocimiento cero permite a los desarrolladores no solo aprovechar la seguridad de las cadenas de bloques subyacentes como Ethereum, sino también mejorar el rendimiento y la velocidad de las transacciones para las dApps y, al mismo tiempo, poner la información personal de los usuarios fuera de la cadena para proteger la privacidad del usuario. Las transacciones se empaquetarán y cargarán en la cadena para reducir el costo de uso para los usuarios finales. En última instancia, los proyectos pueden aprovechar estas capacidades para crear dApps avanzadas que no solo compitan con los sistemas Web2 en rendimiento, sino que también mantengan los beneficios de descentralización de Web3.
(Fuente de la imagen: Chainlink)
En Layer2, zk-rollup empaquetará varias transacciones juntas y las publicará en la cadena de bloques de Layer1, y también publicará una prueba de conocimiento cero para verificar la validez del cálculo. Las pruebas publicadas en la cadena también se denominan "pruebas de validez". **La tecnología de prueba de validez se divide en dos tipos: SNARK y STARK. **
zk-SNAR
El nombre completo de SNARK es "argumento sucinto no interactivo de conocimiento cero sobre el conocimiento" (prueba sucinta no interactiva de conocimiento cero). Esta es una prueba criptográfica de que el archivo es pequeño y fácilmente verificable. Genera una prueba criptográfica utilizando una curva elíptica que asume que el logaritmo discreto de un elemento de curva elíptica aleatoria no se puede encontrar desde un punto base público. El costo de cálculo de la curva elíptica es menor que la función hash de STARK, por lo que el costo de gas del protocolo SNARK es menor.
El nombre completo de STARK es "argumento de conocimiento transparente escalable de conocimiento cero" (prueba de conocimiento transparente escalable de conocimiento cero). Esta prueba criptográfica casi no requiere interacción entre el probador y el verificador. La mayor ventaja de STARK sobre SNARK es que el tiempo de prueba es más corto y es más fácil de expandir. Además, dado que los STARK utilizan una función hash, también son resistentes a los ataques cuánticos.
Vale la pena mencionar que el inventor de STARK es Eli Ben-Sasson, cofundador de StarkWare, el equipo que también desarrolló StarkEx y StarkNet.
Ejemplos: StarkEx, StarkNet, X inmutable, Starkware
PART.07
Desventajas de la prueba de conocimiento cero
Alto costo de hardware
Dependiendo del sistema de prueba, el proceso de generación de prueba de conocimiento cero es diferente. Pero al final, te enfrentarás a problemas difíciles: multiplicación de vectores de números grandes (campos o grupos), especialmente multiplicación multiescalar (MSM) con bases variables y fijas, o transformada rápida de Fourier (FFT) y FFT inversa.
Tanto MSM como FFT son operaciones lentas. En un sistema en el que existen tanto FFT como MSM, aproximadamente el 70 % del tiempo de generación de pruebas se dedica a MSM y el 30 % a FFT. Se requiere aceleración de hardware para implementar en cálculos complejos. En general, se considera que la tecnología más importante para la aceleración de hardware ZK es FPGA en lugar de GPU (debido al costo y la eficiencia energética) o ASIC (debido a su rigidez y ciclo de iteración largo). Los FPGA de primera línea son aproximadamente 3 veces más baratos que las GPU de primera línea. Además, las FPGA son más de 10 veces más eficientes energéticamente que las GPU, principalmente porque las GPU deben conectarse a un dispositivo host, lo que consume mucha energía.
Costo de Verificación
Verificar la prueba requiere muchos cálculos complejos, lo que también aumenta el costo computacional. Por ejemplo, los ZK-rolluos deben pagar alrededor de 500 000 de gasolina para verificar una sola prueba de AK-SNARK en Ethereum, y los ZK-STARK requieren tarifas aún más altas.
Asunción de confianza
La premisa de la prueba de conocimiento cero es que ambas partes son honestas y quieren saber la respuesta real y no falsificarán los datos. En ZK-SNARK, la generación de parámetros públicos una vez puede ser reutilizada por las partes que participan en el protocolo de conocimiento cero, lo que significa que los datos proporcionados por los participantes son correctos de forma predeterminada.
Pero, de hecho, los usuarios no tienen forma de evaluar la honestidad de los participantes, incluso si los participantes ingresan datos falsos, los usuarios deben creerlo. No existe una suposición de confianza en ZK-STARK, y ahora, los investigadores están trabajando en configuraciones no confiables para ZK-SNARK para mejorar la seguridad del mecanismo de prueba.
Amenaza informática cuántica
ZK-SNARK utiliza el algoritmo de firma digital de curva elíptica (ECDSA) para el cifrado. Parece que el algoritmo ECDSA es seguro en la actualidad, pero es probable que el desarrollo de computadoras cuánticas en el futuro descifre este algoritmo.
En general, se cree que ZK-STARK no se verá amenazado por la computación cuántica porque está encriptado mediante hash anticolisión.A diferencia del par de claves pública-privada de ECDSA, el hash anticolisión es más difícil de descifrar por la computación cuántica.
Ver originales
El contenido es solo de referencia, no una solicitud u oferta. No se proporciona asesoramiento fiscal, legal ni de inversión. Consulte el Descargo de responsabilidad para obtener más información sobre los riesgos.
Interpretación de pruebas de conocimiento cero
Este artículo incluye lo siguiente: 1. ¿Qué es una prueba de conocimiento cero? 2. ¿Por qué necesitamos pruebas de conocimiento cero? 3. Escenarios de aplicación de la prueba de conocimiento cero. 4. Cómo funcionan las pruebas de conocimiento cero. 5. Clasificación y casos de aplicación de las pruebas de conocimiento cero. 6. Defectos de las pruebas de conocimiento cero.
PART.01
Qué es la prueba de conocimiento cero
**Prueba de conocimiento cero (Zero-Knowledge Proof) fue propuesta por S.Goldwasser, S.Micali y C.Rackoff a principios de la década de 1980. Se refiere a la capacidad del probador para convencer al verificador de que una determinada afirmación es correcta sin proporcionar ninguna información útil al verificador. **
Para dar un ejemplo simple, Puff dijo que es chef y puede cocinar platos chinos, coreanos e italianos. Mi madre expresó su incredulidad porque no había cocinado una sola comida en casa. Entonces, ¿cómo puedo probar que puedo cocinar en este momento?
Puedo hacer que mi mamá me vea terminar una comida en la cocina y demostrar que realmente sé cocinar. Pero no quiero que mi madre me vea haciendo un desastre en la cocina mientras cocino, o me volverán a regañar, entonces, ¿qué debo hacer? Fui solo a la cocina y mis padres estaban esperando afuera. Después de que terminé de cocinar y empaqué, saqué los platos. Esto todavía prueba que puedo cocinar. En cuanto a los ingredientes que usé, los condimentos que puse y lo desordenada que estaba la cocina durante el proceso, no los necesito. Mientras mi madre sepa que puedo cocinar, demostrará que no lo soy. mintiendo.
En pocas palabras: las pruebas de conocimiento cero intentan establecer la confianza entre dos partes con la cantidad mínima de información intercambiada. Sin revelar más información, una parte (el probador, el probador) puede probar a otra parte (el verificador, el verificador) que una cosa es cierta.
PART.02
¿Por qué necesitas una prueba de conocimiento cero?
Proteger datos privados
Los proveedores deshonestos quieren recopilar la mayor cantidad posible de datos de usuarios, y algunos de los recibos que no tienen nada que ver con su negocio también solicitan permisos a los usuarios (realmente los odio). Colocan la información de identidad personal (PII) del usuario recopilada en una base de datos centralizada. Estas bases de datos son muy vulnerables a los ataques. Una vez atacadas, la información de identidad personal se filtrará, lo que conducirá a varios problemas de fraude.
Autenticación
Al utilizar el sitio web, el usuario puede demostrarle al sitio web que tiene una clave privada, o sabe una respuesta que solo él conoce. El sitio web no necesita conocer la clave, pero puede confirmar la identidad del usuario a través de una prueba de conocimiento cero. A través del almacenamiento descentralizado, el servidor puede demostrar a los usuarios que los datos se conservan correctamente y no se filtran.
Compresión informática y expansión de blockchain
En la arquitectura de bloque tradicional, el mismo cálculo se repite muchas veces, como verificación de firma, verificación de validez de transacción, ejecución de contrato inteligente y otros lugares, porque con la prueba de cálculo, no es necesario repetir el mismo cálculo muchas veces, el proceso de cálculo puede ser probado comprimido por la tecnología de conocimiento cero.
** La prueba de conocimiento cero realmente resuelve la confianza de los datos, realiza la protección de los datos privados y hace que la cadena de bloques realmente se dé cuenta del concepto de máquinas confiables. **
PART.03
Escenario de aplicación de prueba de conocimiento cero
**Los principales escenarios de aplicación de la prueba de conocimiento cero son: pago anónimo, prueba de identidad, cálculo verificable y votación anónima. **
Pago anónimo
Las transacciones de criptomonedas son visibles públicamente en la cadena pública. Los usuarios realizan transacciones de forma anónima, pero también están vinculados a identidades del mundo real (por ejemplo, al incluir direcciones ETH en sus perfiles de Twitter o GitHub), o sus identidades del mundo real se pueden obtener a través del análisis de datos dentro y fuera de la cadena.
Hay "monedas de privacidad" específicas diseñadas para transacciones completamente anónimas. Los ejemplos incluyen Zcash y Monero, que enmascaran los detalles de la transacción, incluidas las direcciones del remitente/destinatario, el tipo de activo, el monto y el cronograma de la transacción. Al incorporar técnicas de conocimiento cero en los protocolos, las redes blockchain centradas en la privacidad permiten que los nodos verifiquen las transacciones sin tener acceso a los datos de las transacciones.
Las pruebas de conocimiento cero también se han aplicado a transacciones anónimas en cadenas de bloques públicas. Como Tornado Cash, un servicio descentralizado sin custodia que permite a los usuarios realizar transacciones privadas en Ethereum. Tornado Cash utiliza pruebas de conocimiento cero para ofuscar los detalles de las transacciones y garantizar la privacidad financiera.
Identificación Personal
Bajo la premisa de no revelar información de identidad específica, se emite un certificado de identidad específico. Por ejemplo, el uso de servicios en línea requiere que se acredite la identidad del usuario y el derecho a acceder a dichas plataformas. Esto generalmente requiere proporcionar información personal como nombre, dirección de correo electrónico, fecha de nacimiento, etc.
Las pruebas de conocimiento cero pueden simplificar la autenticación de plataformas y usuarios. Las pruebas ZK se generan utilizando entradas públicas (p. ej., datos que prueban que el usuario es miembro de la plataforma) y entradas privadas (p. ej., los detalles del usuario), que los usuarios simplemente pueden presentar para verificar su identidad cuando necesitan acceder a los servicios. Por ejemplo, para acreditar si el usuario es mayor de edad o no, no es necesario emitir los datos del DNI, ni el año concreto de nacimiento, sino únicamente la conclusión de si el usuario tiene o no dieciocho años.
Cálculo verificable
Cuando el dispositivo del usuario no pueda admitir la informática requerida, o el costo de la informática local sea demasiado alto, se considerarán los servicios de terceros. Estos servicios de terceros pueden devolver resultados de salida a los usuarios de forma rápida y económica (como el servicio Oracle de Chainlink). Las pruebas de conocimiento cero en este escenario permiten a los proveedores de energía informática de terceros generar pruebas de integridad computacional para garantizar que los resultados de salida recibidos por los usuarios sean correctos.
Votación anónima
Bajo la premisa de no revelar la identidad concreta, se acredita la identidad del usuario y se obtiene la facultad de voto para completar la votación.
PART.04
Cómo funcionan las pruebas de conocimiento cero
Las pruebas de conocimiento cero fueron propuestas por primera vez por Shafi Goldwasser y Silvio Micali del MIT en un artículo de 1985 titulado "Complejidad del conocimiento de los sistemas de prueba interactivos". El autor mencionó en el artículo que es posible que un probador convenza a un verificador de la autenticidad de los datos sin revelar los datos específicos. La prueba de conocimiento cero puede ser interactiva, es decir, el probador tiene que probar la autenticidad de los datos una vez a cada verificador; también puede ser no interactiva, es decir, el probador crea una prueba, y cualquiera que use esta prueba puede ser verificado. Actualmente hay muchas implementaciones de pruebas de conocimiento cero, como zk-SNARKS, zk-STARKS, PLONK y Bulletproofs. Cada método tiene sus propias ventajas y desventajas en términos de tamaño de prueba, tiempo de prueba y tiempo de verificación.
La prueba de conocimiento cero tiene tres características básicas, a saber:
En resumen, para crear una prueba de conocimiento cero, el verificador debe hacer que el probador realice una secuencia de operaciones que el probador solo puede realizar correctamente si conoce la información subyacente. Si el probador engaña con un resultado, es muy probable que el verificador encuentre y pruebe su error en la verificación.
PART.05
Clasificación de pruebas de conocimiento cero
La prueba de conocimiento cero se puede dividir en "prueba de conocimiento cero interactiva" y "prueba de conocimiento cero no interactiva" según el método de interacción.
Prueba interactiva de conocimiento cero
El probador y el verificador deben interactuar varias veces, el verificador continuará haciendo preguntas para desafiar al probador, y el probador continuará respondiendo a estos desafíos hasta que el verificador esté convencido.
Prueba interactiva de conocimiento cero: juego para daltónicos
Alice es daltónica, pero Bob no es daltónico. Bob tiene dos bolas del mismo tamaño y forma, pero los colores de estas dos bolas son diferentes. Una bola es azul y la otra es roja. Dado que Alice es daltónica, entonces Alice no puede saber si las dos bolas son iguales, Bob necesita demostrarle a Alice que las dos bolas son diferentes. Aquí, Alice se llama el verificador y necesita verificar si la declaración de Bob es correcta o no. Bob se llama el probador y necesita probar su declaración (hay dos bolas con diferentes colores). En el caso del color de dos bolas, demuéstrele a Alicia que los colores de las dos bolas son diferentes, lo cual es consistente con la definición de prueba de conocimiento cero.
Alice recoge dos pelotas frente a Bob, la pelota azul en la mano izquierda y la pelota roja en la mano derecha, y luego pone ambas manos detrás de su espalda para que Bob no pueda ver la pelota en la mano de Alice, y Alice intercambia la pelota al azar. bolas en sus manos izquierda y derecha detrás de su espalda, después de que se completa el intercambio, Alice extiende su mano y le pregunta a Bob si las dos bolas han intercambiado posiciones.Si Bob puede ver el color en la bola, entonces cada vez que Alice cambia la posición de la pelota, Bob puede responder correctamente a la pregunta de Alice.
Por primera vez, Alice intercambió en secreto la posición de la pelota en su mano, y luego Alice le preguntó a Bob si ella intercambió la posición de la pelota. Si Bob respondió Sí, entonces Alice tiene un 50% de probabilidad de que Bob pueda distinguir los colores de las dos bolas, porque Bob Hay una probabilidad de 1/2 de hacerlo bien, por lo que Alice puede intentarlo de nuevo. Si Bob responde No, entonces Alice puede estar segura de que Bob no puede distinguir los colores de las dos bolas.
La segunda vez, Alice no cambia las posiciones de las bolas en sus manos y luego Alice le pregunta a Bob si cambió las posiciones de las bolas. Si Bob responde No, entonces Alice tiene un 75% de probabilidad de creer que Bob puede distinguir los colores de las dos bolas.
Después de la primera iteración, Alice puede decir que la afirmación de Bob tiene un 50% de probabilidad de ser cierta. Si Bob responde correctamente la segunda vez, Alice puede decir que la afirmación de Bob es verdadera con una probabilidad del 75 %. Después de la tercera iteración, será del 87,5 %. Si Bob ha pasado la prueba n veces consecutivas, Alicia tiene una probabilidad de 1-(1/2)^n y puede pensar que lo que dijo Bob es cierto y que las dos bolas son rojas y azules.
La prueba interactiva de conocimiento cero es un método de verificación basado en la probabilidad. El verificador hace preguntas al probador en función de cierta aleatoriedad. Si el probador puede dar la respuesta correcta, significa que tiene una alta probabilidad de tener todo su "conocimiento declarado". ". La prueba de conocimiento cero no es una prueba en el sentido matemático, porque tiene una pequeña probabilidad de error, y el probador engañoso puede engañar al verificador a través de afirmaciones falsas. En otras palabras, las pruebas de conocimiento cero son pruebas probabilísticas en lugar de pruebas deterministas, pero existen técnicas que pueden reducir los errores a valores insignificantes.
Este enfoque interactivo tiene algunas limitaciones:
PRUEBA NO INTERACTIVA DE CONOCIMIENTO CERO
Las pruebas interactivas de conocimiento cero requieren que dos partes estén fácilmente disponibles e interactúen repetidamente. Incluso si el verificador confía en que el probador es honesto, la prueba no se puede usar para una verificación independiente (el cálculo de una nueva prueba requiere un nuevo conjunto de mensajes entre el probador y el verificador).
Para resolver los problemas que enfrentan las pruebas interactivas de conocimiento cero, surgieron las pruebas no interactivas de conocimiento cero. Manuel Blum, Paul Feldman y Silvio Micali propusieron las primeras pruebas interactivas de conocimiento cero, donde el probador y el verificador tienen un secreto compartido. Esto permite que un probador demuestre su conocimiento de cierta información sin proporcionar la información en sí.
** Prueba de conocimiento cero no interactivo --- juego de Sudoku **
Sudoku es un juego matemático originado en Suiza en el siglo 18. Es un juego de lógica que utiliza papel y bolígrafo para realizar cálculos. Los jugadores deben deducir los números de todos los espacios restantes en función de los números conocidos en el tablero de 9 × 9 y asegurarse de que los números en cada fila, cada columna y cada palacio de línea gruesa (3*3) contengan 1- 9. repetir.
Para demostrarle a Bob que ha resuelto un Sudoku, Alice crea una máquina a prueba de manipulaciones para esto. Alice pone la respuesta de Sudoku generada en la máquina, y la máquina puede enviar una prueba a Bob. La máquina de Alice sigue el siguiente protocolo verificable públicamente: Primero, Alice coloca el Sudoku original sin resolver en la máquina y las tres cartas del Sudoku boca arriba. A continuación, Alice pone su respuesta boca abajo en la celda correspondiente de la máquina, colocando también tres cartas en cada celda. Finalmente, Bob obtiene la prueba de la máquina y la máquina le devuelve 27 bolsas:
La máquina saca 9 cartas de cada fila de Sudoku, las mezcla por separado y las mete en una bolsa, son 9 filas en total, y usa 9 bolsas, la máquina saca 9 cartas de cada fila de Sudoku, las mezcla y las pone en Ponlas en una bolsa, hay 9 columnas en total, y se usan 9 bolsas; la máquina saca las cartas en cada palacio de línea gruesa (3*3) en Sudoku, las mezcla y las pone en una bolsa, un total de 9, use hasta 9 bolsas;
Bob revisa cada una de las 27 bolsas individualmente, y si las tarjetas en cada bolsa contienen los números del 1 al 9, y ninguno de los números falta o se repite, entonces Bob puede confirmar que Alice realmente resolvió el Sudoku y que Bob no tomó cualquier número de la máquina Cualquier conocimiento sobre la solución de Sudoku se puede obtener de la prueba devuelta, porque los datos devueltos por la máquina a la bolsa de Bob se barajan al azar.
Las pruebas de conocimiento cero no interactivas superan algunas de las deficiencias de las pruebas de conocimiento cero interactivas, no requieren largas interacciones en línea, muchas personas (o incluso todos) pueden confiar en ellas y la prueba siempre es válida, pero las máquinas y los programas adicionales puede ser necesario para determinar el orden experimental. Por ejemplo, en el caso de Sudoku, depende del programa decidir qué columna o fila verificar. La secuencia de verificación debe mantenerse en secreto, de lo contrario, el verificador puede pasar la verificación sin conocer el "conocimiento" real.
Prueba interactiva de conocimiento cero VS prueba no interactiva de conocimiento cero
Cada verificación de una prueba interactiva requiere una nueva ronda de comunicación, y una prueba no interactiva requiere solo una ronda de comunicación entre los participantes (probador y verificador). El probador pasa la información secreta a un algoritmo especial para calcular la prueba de conocimiento cero. Esta prueba se envía al verificador, que utiliza otro algoritmo para comprobar si el probador conoce el secreto.
Las pruebas no interactivas reducen la comunicación entre el probador y el verificador, lo que hace que las pruebas ZK sean más eficientes. Además, una vez que se genera una prueba, cualquier otra persona puede verificarla (con acceso al secreto compartido y al algoritmo de verificación).
**PART.**06
Soluciones técnicas y aplicaciones de prueba de conocimiento cero
La tecnología de conocimiento cero permite a los desarrolladores no solo aprovechar la seguridad de las cadenas de bloques subyacentes como Ethereum, sino también mejorar el rendimiento y la velocidad de las transacciones para las dApps y, al mismo tiempo, poner la información personal de los usuarios fuera de la cadena para proteger la privacidad del usuario. Las transacciones se empaquetarán y cargarán en la cadena para reducir el costo de uso para los usuarios finales. En última instancia, los proyectos pueden aprovechar estas capacidades para crear dApps avanzadas que no solo compitan con los sistemas Web2 en rendimiento, sino que también mantengan los beneficios de descentralización de Web3.
(Fuente de la imagen: Chainlink)
En Layer2, zk-rollup empaquetará varias transacciones juntas y las publicará en la cadena de bloques de Layer1, y también publicará una prueba de conocimiento cero para verificar la validez del cálculo. Las pruebas publicadas en la cadena también se denominan "pruebas de validez". **La tecnología de prueba de validez se divide en dos tipos: SNARK y STARK. **
zk-SNAR
El nombre completo de SNARK es "argumento sucinto no interactivo de conocimiento cero sobre el conocimiento" (prueba sucinta no interactiva de conocimiento cero). Esta es una prueba criptográfica de que el archivo es pequeño y fácilmente verificable. Genera una prueba criptográfica utilizando una curva elíptica que asume que el logaritmo discreto de un elemento de curva elíptica aleatoria no se puede encontrar desde un punto base público. El costo de cálculo de la curva elíptica es menor que la función hash de STARK, por lo que el costo de gas del protocolo SNARK es menor.
Caja: Zcash, Loopring, zkSync1.0, zkSync 2.0, Zigzag, Mine
zk-STARK
El nombre completo de STARK es "argumento de conocimiento transparente escalable de conocimiento cero" (prueba de conocimiento transparente escalable de conocimiento cero). Esta prueba criptográfica casi no requiere interacción entre el probador y el verificador. La mayor ventaja de STARK sobre SNARK es que el tiempo de prueba es más corto y es más fácil de expandir. Además, dado que los STARK utilizan una función hash, también son resistentes a los ataques cuánticos.
Vale la pena mencionar que el inventor de STARK es Eli Ben-Sasson, cofundador de StarkWare, el equipo que también desarrolló StarkEx y StarkNet.
Ejemplos: StarkEx, StarkNet, X inmutable, Starkware
PART.07
Desventajas de la prueba de conocimiento cero
Alto costo de hardware
Dependiendo del sistema de prueba, el proceso de generación de prueba de conocimiento cero es diferente. Pero al final, te enfrentarás a problemas difíciles: multiplicación de vectores de números grandes (campos o grupos), especialmente multiplicación multiescalar (MSM) con bases variables y fijas, o transformada rápida de Fourier (FFT) y FFT inversa.
Tanto MSM como FFT son operaciones lentas. En un sistema en el que existen tanto FFT como MSM, aproximadamente el 70 % del tiempo de generación de pruebas se dedica a MSM y el 30 % a FFT. Se requiere aceleración de hardware para implementar en cálculos complejos. En general, se considera que la tecnología más importante para la aceleración de hardware ZK es FPGA en lugar de GPU (debido al costo y la eficiencia energética) o ASIC (debido a su rigidez y ciclo de iteración largo). Los FPGA de primera línea son aproximadamente 3 veces más baratos que las GPU de primera línea. Además, las FPGA son más de 10 veces más eficientes energéticamente que las GPU, principalmente porque las GPU deben conectarse a un dispositivo host, lo que consume mucha energía.
Costo de Verificación
Verificar la prueba requiere muchos cálculos complejos, lo que también aumenta el costo computacional. Por ejemplo, los ZK-rolluos deben pagar alrededor de 500 000 de gasolina para verificar una sola prueba de AK-SNARK en Ethereum, y los ZK-STARK requieren tarifas aún más altas.
Asunción de confianza
La premisa de la prueba de conocimiento cero es que ambas partes son honestas y quieren saber la respuesta real y no falsificarán los datos. En ZK-SNARK, la generación de parámetros públicos una vez puede ser reutilizada por las partes que participan en el protocolo de conocimiento cero, lo que significa que los datos proporcionados por los participantes son correctos de forma predeterminada.
Pero, de hecho, los usuarios no tienen forma de evaluar la honestidad de los participantes, incluso si los participantes ingresan datos falsos, los usuarios deben creerlo. No existe una suposición de confianza en ZK-STARK, y ahora, los investigadores están trabajando en configuraciones no confiables para ZK-SNARK para mejorar la seguridad del mecanismo de prueba.
Amenaza informática cuántica
ZK-SNARK utiliza el algoritmo de firma digital de curva elíptica (ECDSA) para el cifrado. Parece que el algoritmo ECDSA es seguro en la actualidad, pero es probable que el desarrollo de computadoras cuánticas en el futuro descifre este algoritmo.
En general, se cree que ZK-STARK no se verá amenazado por la computación cuántica porque está encriptado mediante hash anticolisión.A diferencia del par de claves pública-privada de ECDSA, el hash anticolisión es más difícil de descifrar por la computación cuántica.