Es un verdadero placer (y también un motivo de orgullo) compartir un desarrollo del algoritmo Fiat-Shamir para las Zero Knowledge Proofs (Pruebas de Conocimiento Cero). Durante un tiempo, estuve intrigado por cómo funcionaba este algoritmo en la práctica…
Resumiendo mucho, un algoritmo de ZKP (Zero Knowledge Proof) es un método criptográfico que permite a una parte demostrar a otra que conoce un valor específico, sin revelar ninguna información sobre ese valor más allá del hecho de que lo conoce.
En términos más detallados, un algoritmo de ZKP permite que una parte, el ‘probador’, pruebe a otra parte, el ‘verificador’, que tiene cierta información, como una contraseña o un secreto, sin tener que revelar esa información directamente. Lo sorprendente de estos algoritmos es que se llevan a cabo de tal manera que el verificador no gana ningún conocimiento adicional aparte de la validez de la afirmación. Por lo tanto, estos algoritmos son vitales para mantener la privacidad y la seguridad en transacciones digitales y sistemas blockchain.
Blockchains que usan Zero Knowledge Proof
Hace unos meses, mi curiosidad me llevó a explorar más a fondo ZCash, una blockchain que, aunque ya lleva con nosotros varios años, utiliza de manera intrínseca protocolos de prueba de conocimiento cero. Viendo que existía una aplicación real y teniendo el interés de aprender más, decidí sumergirme de lleno en la implementación de mi versión personal de este algoritmo. Con el objetivo de hacerlo lo más realista posible, opté por utilizar Docker para simular dos entidades participantes, y establecer una comunicación entre ellas a través de RabbitMQ. Para añadir aún más realismo, implementé los participantes en dos lenguajes diferentes: Python y PHP.
Hoy, con la finalización de este proyecto, me siento emocionado de compartir mi implementación del algoritmo Fiat-Shamir en GitHub. Otro desarrollo más en el entorno Blockchain, como ya hice con los Filtros Bloom o el Merkle Tree. A diferencia de los anteriores, a lo largo de este viaje tuve la oportunidad de sumergirme profundamente en los procesos de Zero Knowledge Proof, una pieza fundamental en el mundo de la criptografía y de especial relevancia en entornos blockchain como ZCash o Monero.
Os invito a explorar mi trabajo y a descubrir más sobre este fascinante algoritmo de prueba de conocimiento cero. Espero que pueda ser de utilidad para todos aquellos que estén interesados en adentrarse en el mundo de la criptografía y la seguridad en la blockchain.
¿Quieres ver el código? Visita mi GitHub