Un artículo para entender la prueba de conocimiento cero detrás de ZCash

Un artículo para entender la prueba de conocimiento cero detrás de ZCash

En el complejo campo de la criptografía, las pruebas de conocimiento cero ofrecen una solución única para una tarea aparentemente contradictoria: probar el conocimiento de una parte de la información sin revelar la información en sí. Este método de cifrado involucra a dos partes: un probador y un verificador. El objetivo de un probador es demostrar que posee alguna información (llamémosla ;x) sin revelar ningún dato sobre ;x; en sí mismo. Lo que el verificador aprende del intercambio es el simple hecho de que el probador tiene este conocimiento. Lo más importante es que el verificador no tiene información adicional sobre ;x;.

Por ejemplo, cuando Xiaoling y Xiaoshi están jugando a la sala de escape, Xiaoling le dice a Xiaoling que ha descifrado la contraseña de cierta "caja del tesoro". Pero Xiao Ling no está dispuesto a compartir la "respuesta" preparada directamente, y no está dispuesto a abrir el cofre del tesoro frente a Xiao Ten. Entonces, ¿cómo demostrarle a Xiao Shi que realmente resolvió el rompecabezas y conoce la contraseña del cofre del tesoro?

Así que le pidió a Xiao Ten que escribiera una cadena de cadenas que solo él conocía en una hoja de papel, firmó su nombre al mismo tiempo y metió el papel a través del hueco en el cofre del tesoro.

Luego, Xiao Ling abrió la caja del tesoro y sacó el papel que Xiao Ten puso y se lo mostró a Xiao Ten. Xiao Ten verificó que la cuerda y la firma fueran correctas. Esto prueba que Xiao Ling conoce la contraseña de la caja del tesoro, y este pedazo de papel se sacó de la caja del tesoro.

Xiao Ten no conocía el proceso de descifrado y, al mismo tiempo, Xiao Ling demostró que había descifrado la contraseña del cofre del tesoro.

Prueba de conocimiento cero

En criptografía, la prueba de conocimiento cero (Zero Knowledge Proof, también conocida como; ZKP) o el protocolo de conocimiento cero es un método que permite al probador convencer al verificador de creer o probar a un verificador la verdad de una declaración o afirmación.

La prueba de conocimiento cero fue propuesta originalmente por los profesores del MIT; Shafi Goldwasser, Silvio Micali; y los maestros de criptografía; Charles Rockoff; tres autores en el artículo "La complejidad del conocimiento de las pruebas interactivas". Este concepto de algoritmo sentó las bases para la criptografía moderna.

Las pruebas de conocimiento cero tienen dos propiedades adicionales: concisión y conocimiento cero. La concisión permite que un verificador acepte la corrección de un cálculo grande sin calcular la declaración o representación en sí. Y el conocimiento cero garantiza que no se filtren datos sobre la entrada.

Las pruebas de conocimiento cero son fundamentales para garantizar la privacidad y la seguridad de muchos protocolos criptográficos. Son una salvaguardia contra posibles fugas de información, la armadura invisible del mundo "Crypto". La aplicación de este conocimiento se puede extender a diferentes campos, incluida la tecnología blockchain y los sistemas de autenticación segura, donde la protección de datos sensibles es de suma importancia.

Amplia gama de aplicaciones

Blockchain y criptografía: las tecnologías de cadena de bloques como Zcash utilizan pruebas de conocimiento cero para proteger la privacidad de las transacciones. Una persona puede demostrar que tiene suficiente moneda criptográfica para realizar una transacción sin revelar la cantidad exacta de sus fondos. Esto garantiza la privacidad al tiempo que garantiza la integridad de las transacciones.

Verificación y autenticación de identidad: las pruebas de conocimiento cero también se pueden usar para confirmar identidades sin revelar información innecesaria. Por ejemplo, una persona podría demostrar que tiene más de 18 años sin proporcionar su fecha exacta de nacimiento, o probar su identidad sin compartir datos confidenciales como contraseñas. Esto minimiza el riesgo de robo de identidad o acceso no autorizado.

Cómputo seguro de múltiples partes (SMPC): las pruebas de conocimiento cero pueden facilitar interacciones complejas entre múltiples partes, donde cada parte puede demostrar que sigue un protocolo acordado sin revelar los detalles de su entrada. Esto es muy efectivo en muchos aspectos, como la extracción de datos para preservar la privacidad, los sistemas de votación seguros, etc.

Seguridad de la red: las pruebas de conocimiento cero pueden proporcionar protocolos de seguridad mejorados, como políticas de contraseñas seguras. Puede verificar que la contraseña propuesta por el usuario cumple con ciertos estándares de seguridad sin que el servidor sepa o registre la contraseña real. Debido a que las contraseñas no se almacenan en ningún lugar, se evitan posibles infracciones.

Compartir datos mientras se protege la privacidad: las pruebas de conocimiento cero se pueden usar para demostrar que ciertos datos cumplen ciertos requisitos sin revelar los datos en sí, lo cual es especialmente importante en campos como la atención médica o las finanzas. Las regulaciones de privacidad de datos en estos campos son estrictas, pero compartir información de una manera segura y preservando la privacidad puede traer grandes beneficios, como promover el desarrollo de carreras médicas, etc.

Las pruebas de conocimiento cero han desbloqueado nuevas posibilidades técnicas en la cadena de bloques. Esto se puede ver en varios;Layer 2;ZKSync; y;Polygon;'s;zkEVM;etc. Sin embargo, esto es solo un subconjunto de cadenas de bloques creadas por pruebas de conocimiento cero.

Cómo representar una prueba

En esta sección, y en el resto del documento, nos centraremos en las pruebas construidas sobre el sistema de prueba ;PLONK;.

PLONK es un sistema a prueba de conocimiento cero, su nombre completo es

"Permutaciones sobre bases de Lagrange para argumentos ecuménicos no interactivos de conocimiento", es decir, "Disposición global de prueba de conocimiento no interactivo basada en bases de Lagrange".

En esencia, PLONK; es un sistema de prueba criptográfica actualizable y de uso general, una innovación que permite una verificación y escalado eficientes en sistemas de cadena de bloques y otras redes distribuidas.

PLONK; la idea detrás es construir un sistema de prueba general y actualizable. En el contexto de los sistemas de prueba de conocimiento cero, "universal" significa que se puede utilizar para cualquier tipo de cálculo; "actualizable" significa que la cadena de referencia criptográfica (un dato utilizado para generar y verificar la prueba) se actualiza de forma segura tiempo.

PLONK; se destaca por su eficiencia y simplicidad, lo que lo convierte en una opción popular para proyectos y empresas que requieren un sistema de transacciones seguro y privado. En comparación con otros sistemas, utiliza menos restricciones por puerta (la unidad básica de cálculo, a la que nos referimos colectivamente como "puerta"), lo que hace que el cálculo sea más rápido y escalable.

Vitalik Buterin; ha publicado una descripción más completa de;PLONK;. [Copie el enlace al navegador para ver el texto original;

probar

Antes de probar un enunciado, primero representamos el enunciado en términos de un circuito. Un circuito codifica el valor en el cálculo junto con otros dos tipos de datos:

  1. Operaciones: como cálculos de multiplicación y suma en datos de entrada
  2. El orden en que se realizan las operaciones

Para codificar estos datos, PLONKish; los circuitos se representan como un conjunto de vectores y restricciones. Las restricciones son las relaciones que deben obedecer las unidades en el vector, los tipos de restricciones son: restricciones de puerta y restricciones de copia, que representan respectivamente las operaciones y el orden de las operaciones en el circuito.

Hay muchas formas de expresar un circuito usando diferentes arquitecturas de puertas y circuitos.

🎛; Representar un enunciado como un circuito

Supongamos que tenemos dos puertas: una puerta de multiplicación y una puerta de suma. La puerta de multiplicación se representa como un vector |a|b|c| de longitud;3;.

Si se selecciona esta puerta, se restringirá que ;c; sea igual a ;a*b. De manera similar, la puerta de suma se expresa como un vector de longitud; 3;, si se selecciona la puerta de suma, entonces; c; es igual a; a+b. Usando estas puertas, denotemos el producto escalar entre dos vectores (a,;b) y (c,;d). Para hacer esto, necesitamos realizar los siguientes cálculos:

  1. Usa la puerta de multiplicación para calcular: a*b
  2. Calcular con puerta de multiplicación c*d
  3. Calcular con puerta de suma, ab+cd Esto se puede representar mediante un vector.

Un artículo para comprender la prueba de conocimiento cero detrás de ZCash

Tenga en cuenta que la salida de la primera y la segunda puerta de multiplicación es el valor de entrada de la puerta de suma. Estos datos se codifican por separado de las restricciones de puerta en nuestro circuito. Esto se llama una restricción de copia.

Entonces, ¿por qué son importantes las restricciones de circuito? Si no hubiera restricciones, entonces un validador malicioso podría poner cualquier valor que quisiera en el circuito. Por ejemplo, el verificador puede reemplazar ;ab+cd con ;aba*b;. De manera similar a los contratos inteligentes, las restricciones deben verificarse a través de un sistema de prueba antes de que puedan usarse.

🎛; declaración de prueba

Ahora que podemos representar declaraciones en términos de circuitos, ¿cómo convence el probador al verificador de que la prueba es válida? Para un sistema ;PLONK;, el probador debe convencer al verificador de que se cumplen las restricciones de puerta y las restricciones de replicación. Para las restricciones de copia, esto se realiza mediante la comprobación de permutaciones.

La verificación de sustitución fue propuesta por primera vez por Bayer-Groth y luego desarrollada por Gabizon, Williamson y Ciobotaru en el artículo PLONK. Para probar la restricción de la puerta, es necesario calcular un determinado polinomio cociente.

Intuitivamente, las comprobaciones de permutación muestran que si se permutan las entradas de las restricciones de copia, el circuito sigue siendo el mismo. 🎛; Reemplazar cheque

Decimos que un vector ;a; Denotamos esto como σ(a)=b. Dados dos vectores; a=(a,;b,...,;c), b=(a',;b',...,;c')$, y una permutación σ, queremos determinar σ (a)=b. Esto puede hacerse de la siguiente manera:

Representar vectores como ;a'=((a,;1),(b,;2),...,(c,;n)) y ;b'=((a',σ(;1), ( b',σ(;2)),...,(c',σ(n)) ) Esto codifica el vector con respecto a la permutación σ.

Reescribe el vector como un vector polinomial: a''=((a+;1;X),(b+;2;X),...,(c+nX)) y ;b''=((a'+ σ(;1)X), (b'+σ(;2)X),..., (c'+σ(n)X))

Se puede verificar si ;a'' y ;b'' son equivalentes como conjuntos múltiples eligiendo aleatoriamente ;gamma;, mostrando así $(a+;1;X+γ)(b+;2;X+γ).. .. (c+nX+γ) = (a'+σ(;1)X)+γ)(b'+σ(;2)X+γ)....(c'+σ(n)X +γ ps

Eligiendo un β al azar, podemos comprobar que estos polinomios son equivalentes mediante el lema de Schwartz-Zippel; Los conjuntos ;a'' y ;b'' son equivalentes como polysets si son equivalentes como polinomios. Si no son polinomios equivalentes, entonces ;a'' y ;b'' no son multiconjuntos equivalentes.

escribir al final

Si bien las pruebas de conocimiento cero son un tema complejo, su adopción va en aumento. En este artículo hemos dado una explicación intuitiva de cómo funcionan las pruebas de conocimiento cero. En el futuro, el equipo de CertiK ;j; se sumergirá en la aplicación de pruebas de conocimiento cero y cómo el equipo puede optimizar sus circuitos para nuevos casos de uso.

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.
  • Recompensa
  • Comentar
  • Compartir
Comentar
0/400
Sin comentarios
  • Anclado
Comercie con criptomonedas en cualquier lugar y en cualquier momento
qrCode
Escanee para descargar la aplicación Gate.io
Comunidad
Español
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)