¿Cómo realizar transacciones con valores en sistemas construidos sobre tecnología blockchain sin revelar su contenido?

En los últimos años, la tecnología blockchain se ha desarrollado activamente en el mundo, que es una arquitectura distribuida que consta de muchos "nodos" iguales. Los "nodos", a su vez, intercambian información en forma de transacciones que contienen información sobre el movimiento de valores y la ejecución de contratos inteligentes. Al mismo tiempo, la propia tecnología asegura la agrupación de estas transacciones en bloques, el desarrollo de consenso para incluir bloques en las secuencias existentes, la selección de la única cadena de bloques correcta (blockchain) y asegurando la distribución de la cadena de bloques correcta entre todos los "nodos".



La tecnología Blockchain garantiza que cada nodo tenga la cadena de bloques correcta, que también se puede llamar tecnología de contabilidad distribuida.



De hecho, una blockchain o blockchain es un registro continuamente actualizado que almacena en forma abierta toda la información sobre transacciones (movimiento de valores y operaciones con ellas) y permite rastrear el historial completo del origen y transferencia de valores entre participantes. Junto con la presencia en cada "nodo" de la correcta cadena de bloques, esto permite asegurar la invariabilidad y transparencia de la información contenida en dicho libro mayor distribuido para los participantes del sistema.



Debe tenerse en cuenta que no todos los participantes que utilizan la funcionalidad de la tecnología de contabilidad distribuida quieren publicitar la composición, calidad y cantidad de sus valores, las operaciones que se realizan con ellos o los participantes en dichas operaciones. Para resolver el problema de asegurar la confidencialidad de esta información en varios sistemas basados ​​en la tecnología de contabilidad distribuida, es posible considerar el uso de tecnología utilizando el Protocolo de Conocimiento Cero.



¿Y el sector bancario? Desde el punto de vista de JSC “Rosselkhozbank”, la tecnología de libros de contabilidad distribuidos con la implementación del Protocolo de Divulgación Cero puede ser útil para organizar la interacción electrónica entre bancos.



imagen



Esta solución tiene el siguiente conjunto de ventajas:



  • almacenar información sobre objetos de valor y transacciones con ellos sin revelar el contenido de dicha información (confidencialidad);
  • alta velocidad de operaciones;
  • relativa simplicidad en la implementación de la escalabilidad del sistema basada en tecnología de contabilidad distribuida, dependiendo de las necesidades de los participantes;
  • alta resiliencia en el almacenamiento de información.


Proponemos detenernos con más detalle en la solución que implica el uso del Protocolo de Divulgación Cero, ya que, en nuestra opinión, es este elemento clave el que determina el potencial del uso de la tecnología de contabilidad distribuida en el sector bancario.



Características del uso del protocolo de conocimiento cero



El protocolo de conocimiento cero es un protocolo de autenticación fuerte. Utiliza un par de claves públicas y privadas, y se utiliza para autenticar a los usuarios sin revelar ninguna información secreta. Dichos protocolos son aplicables para garantizar la seguridad de la información en muchas áreas de la tecnología de la información moderna. Además, existen opciones para usar protocolos sin conocimiento de secretos para construir un mecanismo de firma electrónica o aumentar su fuerza criptográfica contra ataques de malhechores.



Los protocolos de conocimiento cero pertenecen a los protocolos de clave pública. El protocolo se basa en la repetición de rondas que involucran ciertas acciones. En el curso de su trabajo, la ronda se realiza en 3 pasos. Los primeros 2 pasos utilizan valores aleatorios como entrada. La parte que se controla se llama "Prover" , y la parte que se controla se llama "Verifier" .



Pasos redondos:



  1. El Prover genera una clave privada de una sola vez, así como una clave pública de un solo uso, que luego se envía al Prover;
  2. El verificador recibe una clave pública única del Prover y luego genera un bit aleatorio, que luego envía al Prover;
  3. El probador recibe un poco de información y realiza cálculos sobre ella.


El Probador envía el resultado resultante al Verificador para su verificación.



En todas las rondas de verificación, la probabilidad de una respuesta correcta es del 50%, es decir, en cada ronda el Probador puede tener conocimiento de la verdad con una probabilidad del 50%.



Para lograr la precisión requerida, se debe aumentar el número de tales rondas, alcanzando así la probabilidad necesaria en la que el Probador se considerará autorizado.



Los principales problemas al utilizar protocolos de conocimiento cero son:



  1. La longitud requerida de la clave pública;
  2. Confianza en que el secreto no se ha compartido de otra forma.


Consideremos el componente teórico de varios protocolos con conocimiento nulo de secretos y elaboremos una tabla comparativa de sus características.



Protocolo ZkSNARKs



zkSNARKs son las siglas de Zero Knowledge Non-Interactive Argument of Knowledge.



Esta es una forma de criptografía que le permite a una persona demostrar que posee un conjunto particular de datos sin necesariamente revelarlo. Este sistema incluye solo dos lados: conductores y verificadores. La guía prueba que un determinado elemento, información o palabra existe y es correcto, sin revelar cuál es ese elemento o información. Este es el significado del conocimiento cero . El proceso involucrado en probar y validar la información es rápido y se puede validar en una fracción de segundo incluso para programas con grandes cantidades de datos.



Para que funcione, el protocolo debe satisfacer los requisitos básicos de conocimiento cero del secreto.



Por ejemplo, se ha creado un contrato inteligente. El usuario podrá recibir el pago si realiza determinadas acciones. ¿Qué pasa si el usuario no quiere revelar detalles porque son confidenciales y secretos para la competencia?



Para ello, se utiliza el protocolo de conocimiento cero zkSNARKs , que prueba que los pasos se realizaron de acuerdo con los términos del contrato inteligente, sin revelar cuáles fueron estas acciones. Solo puede mostrar parte del proceso sin mostrar todo el proceso y demostrar que el usuario es honesto.



zkSNARKs consta de tres algoritmos: G , P y V .



Generador (C - programa, λ - entrada, que no debe divulgarse (confidencial)):



(pk, vk) = G (λ, C)



Probador (x es una entrada pública, w es una declaración secreta que necesita ser probada, pero no contada):



π = P (pk, x, w) - prueba prf



Verificador:



V (vk, x, π) == (∃ w stC (x, w)) - verdadero o falso



G es un generador de claves que acepta la entrada λ (que no debe expandirse bajo ninguna circunstancia) y el programa C. Luego se generan dos claves públicas: una clave de validación pk (para un corrector de pruebas) y una clave de prueba vk ( para el verificador). Estas claves están a disposición de cualquier interesado.



PAGSEs quien usará 3 elementos como entrada. La clave de validación pk, una entrada aleatoria x que está disponible públicamente, y una declaración que necesita ser probada pero no explicada qué es realmente. Llamemos a este operador "w". El algoritmo P genera una prueba prf tal que: prf = P (pk, x, w) .



El algoritmo de verificación V devuelve una variable booleana. Una variable booleana tiene solo dos opciones: puede ser VERDADERO (verdadero) o FALSO (falso). Entonces, el verificador toma la clave, la entrada X y la prueba prf como entradas, como: V (vk, x, prf) . Y luego determina si es verdadero o falso.



Cabe señalar que el parámetro λusado en el generador a veces dificulta el uso de zkSNARKs en aplicaciones del mundo real. La razón de esto es que cualquiera que conozca este parámetro puede generar evidencia falsa. Por tanto, es necesario que el valor de λ sea confidencial .



Por lo tanto, el arranque del generador debe ser un proceso seguro, protegido de cualquier persona que conozca o robe el parámetro λ .



Protocolo ZkSTARKs



No hay una fase de instalación confiable externa en zkSTARKs y la aleatoriedad utilizada es información pública. El uso público de la aleatoriedad es extremadamente importante para que el público confíe en los sistemas de conocimiento cero; de lo contrario, una entidad poderosa podría ejercer su influencia para ganar escenarios y generar evidencia falsa. Dado que no hay una fase de configuración de confianza de terceros, y en su lugar se utiliza la aleatoriedad pública verificable, los sistemas zkSTARK crean una confianza verificable.



zkSTARKs no dependen de pares de claves públicas y privadas (como ECDSA), pero confía en el hash resistente a colisiones para soluciones interactivas y en un modelo de oráculo aleatorio (que generalmente se usa en lugar de funciones de hash criptográficas genéricas, donde se requieren suposiciones sólidas sobre la aleatoriedad para inferir el oráculo) para pruebas no interactivas ( zknSTARKs , n = no interactivo) por lo tanto, zkSTARKs puede ser resistente a ataques de computadoras cuánticas.



El protocolo zkSTARKs es escalable, transparente, de aplicación universal y puede ser cuánticamente robusto. Esto genera confianza en la tecnología, ya que es verificable. Hay muchas áreas que se pueden mejorar con tecnologías como zkSTARKsdonde se requiere confianza y existen grandes incentivos para hacer trampa, por ejemplo:



  • sistemas de votación;
  • realizar cálculos y verificar sus resultados, como transacciones pasadas en libros de contabilidad distribuidos;
  • verificación segura de la información, por ejemplo, para verificar la identidad o las credenciales.


Hay cuatro categorías relacionadas con la escalabilidad (resultados de zkSTARKs ).



  1. La complejidad del circuito aritmético (en los sistemas zkSNARK y zkSTARK, el código para crear programas zk se escribe de tal manera que se pueden dividir en circuitos y luego calcular; de hecho, la complejidad del circuito es mayor que su eficiencia computacional.
  2. ( zkSNARK , zkSTARKs, ).
  3. (zkSTARKs zkSNARK 10 , ).
  4. ( zkSTARKs zkSNARK, , zkSTARKs zkSNARK, ).


Se planeó que el protocolo zkSTARKs se use en Ethereum en computación verificable y transacciones potencialmente seguras / anónimas, así como en Dapps donde la privacidad es importante, como el navegador web Brave que usa el token de Atención Básica.



Hay una nueva compañía llamada StarkWare Industries que tiene como objetivo resolver algunos de los problemas con ZK-STARK (uno de los cuales es el tamaño de prueba) y también comercializar tecnología que se puede usar en muchas industrias, incluidas las implementaciones de libros de contabilidad distribuidos.



Tecnología a prueba de balas



La División de Desarrollo de Libro Mayor Distribuido de ING está experimentando con Bulletproofs, una tecnología centrada en la privacidad basada en algoritmos criptográficos modernos.



Bulletproofs se basa en el trabajo de Jonathan Bootle y otros en 2016 para mejorar el uso de logaritmos discretos, que son la base de las pruebas de conocimiento cero. y representa una forma más eficaz de esta misma prueba.



Es importante destacar que Bulletproofs tiene soporte integrado para claves públicas y obligaciones de Pedersen(una primitiva criptográfica que le permite fijar cualquier valor seleccionado, manteniéndolo oculto a los demás, con la capacidad de revelar posteriormente el valor fijo). Esto nos permite implementar pruebas de rango sobre principios generales de conocimiento cero sin realizar cálculos de máquinas pesadas de curvas elípticas.



Pruebas a prueba de balas representadas de una manera mucho más general que la prueba de rango y pueden usarse para declaraciones arbitrarias de conocimiento cero. La tecnología es comparable en eficiencia a zkSNARKs o zkSTARKs , pero tiene soporte incorporado para claves públicas de curva elíptica y obligaciones de Pedersen.(por lo tanto, como regla general, no es necesario realizar cálculos de curvas elípticas dentro del programa probado). Además, a diferencia de zkSNARKs , Bulletproofs tiene un nivel completo de 128 bits de fuerza criptográfica de acuerdo con suposiciones estándar sin utilizar una "instalación confiable". Y, a diferencia de los zkSTARK , son lo suficientemente rápidos como para poder probar y validar problemas a gran escala en hardware informático convencional.



En comparación con la tecnología ZKP , que requiere más potencia informática, la tecnología Bulletproofs es unas 10 veces más rápida, ya que permite transacciones sin el intercambio de datos de pago.



Puntos clave de esta tecnología (protocolo):



  • Las pruebas de balas se basan en los principios generales de prueba de conocimiento cero (como en zkSNARKs);
  • la tecnología se puede utilizar para ampliar protocolos multilaterales como los pagos condicionales de firma múltiple o de conocimiento cero;
  • Bulletproofs proporciona una versión mucho más eficiente de prueba de una variedad de transacciones confidenciales (cuando se usa la verificación por lotes, la velocidad de verificación es más de 23 veces más rápida);
  • tales pruebas de rango se pueden combinar dentro de una transacción, y su tamaño crecerá logarítmicamente;
  • con la agregación adecuada como Provisiones , la verificación por lotes proporciona más de 120 veces la velocidad de las pruebas anteriores.


Tabla comparativa de características del protocolo



Compilemos una tabla comparativa con las características de los protocolos considerados con conocimiento secreto cero



imagen



conclusiones



  1. zk-SNARKs y zk -STARKs tienen muchas áreas de aplicación, incluida la implementación de firmas electrónicas simples, así como la creación de sistemas de gestión de documentos electrónicos, asumiendo la confidencialidad de la información.
  2. En general, los protocolos de conocimiento cero son muy prometedores y se están volviendo más prácticos para su uso en sistemas de tecnología de contabilidad distribuida. Por el momento, cada implementación se destaca a su manera, sin embargo, todas requieren recursos y existe la necesidad de soluciones efectivas con rango de conocimiento cero.
  3. , , , , ( , , ).


1. 34.13-2018 (). . // docs.cntd.ru URL: docs.cntd.ru/document/1200161709 ( : 31.05.2020);

2. Recommendation for Key Management Part 1: General // nvlpubs.nist.gov URL: nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-57pt1r5.pdf ( : 11.05.2020);

3. / 12207-2010 // docs.cntd.ru/ URL: docs.cntd.ru/document/gost-r-iso-mek-12207-2010 ( : 11.05.2020);

4. Recommendation for Cryptographic Key Generation // nvlpubs.nist.gov/ URL: nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-133r1.pdf ( : 11.05.2020);

5. Recommendation for Key Management Part 2 – Best Practices for Key Management Organizations // nvlpubs.nist.gov URL: nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-57pt2r1.pdf ( : 11.05.2020);

6. Security Requirements for Cryptographic Modules // nvlpubs.nist.gov URL: nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.140-2.pdf ( : 11.05.2020);

7. Payment Card Industry (PCI) Data Security Standard // pcisecuritystandards.org URL: www.pcisecuritystandards.org/documents/PCI_DSS_v3-2-1.pdf?agreement=true&time=1589494129851 ( : 11.05.2020);

8. // intuit.ru URL: www.intuit.ru/studies/courses/553/409/info ( : 11.05.2020).

9. // cryptowiki.net/ URL: cryptowiki.net/index.php?title=____ ( : 11.05.2020);

10. Kerberos_(protocol) // en.wikipedia.org URL: en.wikipedia.org/wiki/Kerberos_(protocol) ( : 11.05.2020)

11. RFC5280 — Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile;

12. Recommendation for Key Management Part 3: Application-Specific Key Management Guidance // nvlpubs.nist.gov URL: nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-57Pt3r1.pdf ( : 11.05.2020);

13. Blockchain reference architecture // ibm.com URL: www.ibm.com/cloud/architecture/files/blockchain-architecture-diagram.pdf ( : 24.05.2020).

14. Key management // cloud.ibm.com URL: cloud.ibm.com/docs/blockchain?topic=blockchain-ibp-security ( : 24.05.2020);

15. , . . / . . . — : // . — 2016. — № 1 (105). — . 141-143. — URL: moluch.ru/archive/105/24663 ( : 31.05.2020).

16. CKMS – // www.cryptomathic.com URL: www.cryptomathic.com/hubfs/Documents/Product_Sheets/Cryptomathic_CKMS_-_Product_Sheet.pdf ( : 31.05.2020);

17. HSM // www.croc.ru URL: www.croc.ru/promo/insafety/design/hardware-security-module ( : 31.05.2020);

18. HSM // cbr.ru URL: cbr.ru/Content/Document/File/104755/FT_35.pdf ( : 30.05.2020);

19. AWS Key Management Service // aws.amazon.com URL: aws.amazon.com/ru/kms ( : 30.05.2020);

20. . . // zakonbase.ru URL: zakonbase.ru/content/part/1250444 ( : 31.05.2020);

21. Diffie Hellman Protocol // mathworld.wolfram.com URL: mathworld.wolfram.com/Diffie-HellmanProtocol.html ( : 31.05.2020);

22. STS Protocol // archive.dimacs.rutgers.edu URL: archive.dimacs.rutgers.edu/Workshops/Security/program2/boyd/node13.html ( : 31.05.2020);

23. The Needham-Schroeder Protocol // www.cs.utexas.edu URL: www.cs.utexas.edu/~byoung/cs361/lecture60.pdf ( : 31.05.2020);

24. Otway Rees protocol // www.lsv.fr URL: www.lsv.fr/Software/spore/otwayRees.pdf ( : 31.05.2020);

25. Payment Card Industry (PCI) PTS HSM Security Requirements // www.pcisecuritystandards.org URL: www.pcisecuritystandards.org/documents/PTS_HSM_Technical_FAQs_v3_May_2018.pdf ( : 31.05.2020);

26. zk-SNARK? // z.cash/ru URL: z.cash/ru/technology/zksnarks ( : 31.05.2020);

27. zk-SNARKs zk-STARKs? // academy.binance.com/ru URL: academy.binance.com/ru/blockchain/zk-snarks-and-zk-starks-explained ( : 31.05.2020);

28. Bulletproofs: Short Proofs for Confidential Transactions and More // web.stanford.edu URL: web.stanford.edu/~buenz/pubs/bulletproofs.pdf ( : 31.05.2020);

29. // beincrypto.ru URL: beincrypto.ru/learn/chto-takoe-tehnologiya-raspredelennogo-reestra ( : 31.05.2020);

30. 12 - // dou.ua URL: dou.ua/lenta/articles/12-konsensus-protocols ( : 31.05.2020);

31. ISO/IEC 11770-1-2017. 1 // www.egfntd.kz URL: www.egfntd.kz/rus/tv/391980.html?sw_gr=-1&sw_str=&sw_sec=24 ( : 31.05.2020);

32. Consensus algorithm // whatis.techtarget.com URL: clck.ru/Nvade ( : 31.05.2020);

33. Introduction to Zero Knowledge Proof: The protocol of next generation Blockchain // medium.com URL: medium.com/@kotsbtechcdac/introduction-to-zero-knowledge-proof-the-protocol-of-next-generation-blockchain-305b2fc7f8e5 ( : 31.05.2020).




All Articles