Zero Knowledge Protocols: El Poder de los Secretos
Hola, apasionados de la seguridad y la privacidad, hoy vamos a adentrarnos en el fascinante mundo de los protocolos de conocimiento cero (Zero Knowledge Protocols), esos enigmáticos héroes de la criptografía moderna. Imagina poder demostrar que sabes un secreto sin tener que revelar ni una pizca del mismo.
Suena a magia, ¿verdad? pues eso es exactamente lo que hacen los protocolos de conocimiento cero; permiten que pruebes que tienes un conocimiento específico sin divulgarlo. En un mundo donde la privacidad es oro, estos protocolos son como el Santo Grial de la seguridad.
¿Qué son las pruebas de conocimiento cero?
Se refieren a las técnicas criptográficas que permite a un “Probador” comprobar inequívocamente que conoce un dato o una información específica a un “Verificador”, sin revelar nada sobre la información misma.
Se refieren a las técnicas criptográficas que permite a un “Probador” comprobar inequívocamente que conoce un dato o una información específica a un “Verificador”, sin revelar nada sobre la información misma.
Figura 2: Imagen Zero Knowledge generada con ChatGPT4.
Figura 3: Libro de Cifrado de las comunicaciones digitales: de la cifra clásica a RSA 2ª Edición de 0xWord |
Por otro lado, los zk-SNARKs son más ligeros y rápidos, y tienen la ventaja de no necesitar interacción entre las partes involucradas. Debido a su eficiencia y practicidad, los zk-SNARKs se han convertido en la opción predominante en la actualidad, y es en ellos donde centraremos nuestra atención en este artículo.
Ejemplo práctico de zero knowledge
Para crear una Zero Knowledge Proof necesitaremos primero un circuito conocido por ambas partes (Probador y Verificador). Este circuito está escrito en un lenguaje especializado como Circom o Zokrates. En este ejemplo vamos a ver como se haría con Zokrates ya que tiene una integración bastante visual en Remix IDE.
En esta imagen anterior observamos el circuito arriba a la derecha, y los pasos a seguir para generar la prueba de conocimiento cero a la izquierda. Vamos a explicar los pasos uno a uno:
1.- Compile: Compilar el circuito escrito en Zokrates
Ejemplo práctico de zero knowledge
Para crear una Zero Knowledge Proof necesitaremos primero un circuito conocido por ambas partes (Probador y Verificador). Este circuito está escrito en un lenguaje especializado como Circom o Zokrates. En este ejemplo vamos a ver como se haría con Zokrates ya que tiene una integración bastante visual en Remix IDE.
Figura 4: Plugin ZOKRATES en Remix IDE
En esta imagen anterior observamos el circuito arriba a la derecha, y los pasos a seguir para generar la prueba de conocimiento cero a la izquierda. Vamos a explicar los pasos uno a uno:
1.- Compile: Compilar el circuito escrito en Zokrates
def main(private field a, field b) { assert(a * a == b); return; }2.- Compute: El Probador pasará los valores válidos para que se cumpla el circuito. En este caso a = 3 y b = 9, siendo “a” la variable privada que no va a conocer el Verificador.
Figura 5: Creando el “witness”
3.- Setup: Se crean llaves de verificación de y de prueba a partir de un número aleatorio.
4,- Generate Proof: Se genera a partir de el paso segundo y tercero generados por el Probador.
Figura 6: Prueba generada
5.- Export Verifier: Al ser un ejemplo de un zk-SNARK no interactivo, el Verificador será un código generado a partir del circuito que permita saber si el valor de la prueba es correcto sin saber los parámetros privados. En este caso se despliega un SmartContract de Solidity con una función pública para determinar si este valor es correcto.
Como parámetros hemos pasado los obtenidos en el paso Generate Proof:
La prueba:
[["0x109b7a48a253af99694912bdedc2067fcc2795cc6f7f8771bd548d3706ae7eff",
"0x30164869c99abafaa6c020cfa6c7725a46fe6e8d8d144654edb3e665355fce90"],
[["0x261c5b83bd5f59c8f62cb9b53789f34b4a8aabd3eb58cf395159d72f406d2c29",
"0x0e3f97868f33e6809a4434f3e057f40cec38c13d351b72ccb1dbe81a591252ac"],
["0x041bc3604e4864e493ae44ec0ed3873e49849e1f6612e3ce9bc4358905fe0ad4",
"0x00bcbaef597cde379b1e8f4b259dc2cc144df04edac945f8f9b5d70ef877f9e7"]],
["0x2129a223e0c8e321b3e1d832392a017bf8756185e38dead75eb4c369ac8fe97e",
"0x2a0702baf1d41279a46474b5de0e067b2a02e6403bd43bc4ffff1680eab0f7c4"]]Las variables públicas del circuito:
["0x0000000000000000000000000000000000000000000000000000000000000009"]El resultado obtenido:
Es “True” verificando así que el Probador conoce el secreto.
Posibles aplicaciones
En un futuro se prevé que con esta tecnología desbloquearemos un mundo de oportunidades con respecto a la privacidad y la autenticación con usos desde votaciones electrónicas, cumplimiento regulatorio hasta juegos y apuestas en línea. Sin embargo, en el presente, esta tecnología se está utilizando para cadenas de Blockchain y las criptomonedas. Esto se debe a que juntos son como un matrimonio perfecto entre privacidad y transparencia.
Posibles aplicaciones
En un futuro se prevé que con esta tecnología desbloquearemos un mundo de oportunidades con respecto a la privacidad y la autenticación con usos desde votaciones electrónicas, cumplimiento regulatorio hasta juegos y apuestas en línea. Sin embargo, en el presente, esta tecnología se está utilizando para cadenas de Blockchain y las criptomonedas. Esto se debe a que juntos son como un matrimonio perfecto entre privacidad y transparencia.
Figura 8: Libro dedicado a "Bitcoin: La tecnología Blockchain y su investigación" de Yaiza Rubio y Félix Brezo |
Por un lado, tienes una cadena de bloques pública y transparente. Por otro, deseas realizar transacciones o ejecutar contratos sin revelar todos tus secretos. Aquí es donde entran los Protocolos de Conocimiento Cero, permitiendo, por ejemplo, transacciones anónimas o la verificación de contratos inteligentes sin exponer los detalles sensibles. Esta combinación ha permitido dos grandes usos dentro de las cadenas de Blockchain:
Mirando hacia el futuro, los protocolos de conocimiento cero tienen el potencial de transformar radicalmente nuestra forma de interactuar. Así como los alquimistas soñaban con convertir los metales básicos en oro, los protocolos de conocimiento cero buscan transformar nuestra percepción de la seguridad y la privacidad, convirtiéndolos en elementos accesibles y transparentes para todos en la era digital.
Más artículos de Web3, Blockchain & SmartContractsAutor: Luis García Adán (Intership en el equipo de IdeasLocas)
- Privacidad: Protocolos como Zcash o Tornado Cash se benefician de esta oportunidad para ofrecer transacciones completamente anónimas, desvinculando el origen y el destino de los fondos. Sin embargo, debido a su funcionalidad, también se están utilizando para el lavado de dinero y están siendo sometidas a procesos judiciales tanto a los creadores como a los usuarios de los mismas.
- Zk rollups en cadenas públicas: Los zk-Rollups son una solución de escalado que agrega múltiples transacciones en un solo lote y luego las procesa en la cadena Blockchain principal. Utilizando ZKP, los zk-Rollups pueden validar estas transacciones masivamente agrupadas sin revelar sus contenidos individuales. Esto reduce los costos de transacción manteniendo la integridad. Cabe aclarar que, pese a su nombre, no deberíamos enviar transacciones privadas en estas redes porque su funcionamiento es de escalado y no privacidad, ya que, en la Layer2 dónde subas tu transacción se podrá acceder al contenido como en cualquier otra cadena Blockchain pública.
Mirando hacia el futuro, los protocolos de conocimiento cero tienen el potencial de transformar radicalmente nuestra forma de interactuar. Así como los alquimistas soñaban con convertir los metales básicos en oro, los protocolos de conocimiento cero buscan transformar nuestra percepción de la seguridad y la privacidad, convirtiéndolos en elementos accesibles y transparentes para todos en la era digital.
Recuerda que si quieres aprender de estas tecnologías, tienes Bit2Me Academy, que es una plataforma online para aprender de Web3, BitCoin, Tokenomics o Ethereum con cursos gratuitos además del libro dedicado a "Bitcoin: La tecnología Blockchain y su investigación" de Yaiza Rubio y Félix Brezo que seguro que te ayudan a ponerte las pilas.
Más artículos de Web3, Blockchain & SmartContracts
- Blockchain & SmartContracts: Una serie para aprender
- BlockChain & SmartContrats: Primer SmartContract con Solidity
- Blockchain & SmartContracts: Cómo probar y desplegar un SmartContract en Ethereum
- WWW, Web 1.0, Web 2.0, Web 3.0, Web3 y ¿Web 4.0?
- Metaverso, multiverso y las tierras digitales en que vivimos en forma de avatar
- Los Fan Tokens vs. las Criptomonedas y los NFTs: Level 101
- Tokenomics: Las criptomonedas y las "Proof-of-work": Level 101
- Los NFTs y el registro mundial de los dueños de activos digitales en el Metaverso
- BitCoin: Blockchain y su investigación
- Criptomonedas & Ciberestafas: Valor y Peligro en la Web3
- BlockChain & SmartContrats: El Internet descentralizado y el almacenamiento off-chain en IPFS
- Reentrancy Attack: Cómo te roban criptomonedas por un bug en tu SmartContract
- BlockChain & SmartContract: Bugs que pueden dejar tu SmartContrat "fuera de juego"
- Blockchain & SmartContracts: Patrones y buenas prácticas de seguridad
- Blockchain & SmartContracts: Herramientas de Auditoría de Seguridad de SmartContracts
- BlockChain & SmartContracts: Ataque de phishing a tx.origin y robo de criptomonedas
- BlockChain & SmartContracts: Ataques de Ice Phishing
- Blockchain & SmartContracts: Herramientas de análisis dinámico
- ZIION: Una distribución Linux para auditar SmartContracts (& BlockChain)
- Dominios Web3 en Etherenum Name Service y la trazabilizad de las transacciones Blockchain
- BlockChain & SmartContracts: Actualizar SmartContracts como los grandes protocolos
- Jumping level up (from) web2 (to) web3: Vulnerabilities & SCAMs - SmartContracts
- 20 millones (Euros) en Tokens de Optimism perdidos por no saber cómo funcionan los Wallets Multifirma
- BlockChain & SmartContracts: Cómo crear una DApp de la Web3 con Python (y Flask)
- Pentesting SmartContracts: From Web2.0 to Web3
- Tokenomics 101: Una explicación con gráficos
- Read-Only Reentrancy Attack: $220k robados y otros +$100M en riesgo
- Como utilizar ChatGPT para encontrar bugs en SmartContracts
- BlockChain & SmartContracts: Nuevas áreas profesionales relacionadas con la Web3
- Las voces de Satoshi: Un canal para estar al día en Web3, Blockchain, Criptos & IA
- BlockChain & SmartContracts: Nuevas áreas profesionales relacionadas con la Web3
- Bit2Me Academy: Una plataforma online para aprender de Web3, BitCoin, Tokenomics o Ethereum con cursos gratuitos
- Level_Up!: Una plataforma para aprender a hacer pentesting en Web3 (SmartContracts & BlockChain ) a través de retos hacking
- Level_Up!: Web3 Security WarGames para los amantes del Challenge Based Learning
- Level_up!: WriteUp del Reto Questions para comenzar el pentesting en la Web3
- Level_Up! Deny_to_me Challenge activado en la plataforma Level_up! de retos hacking Web3
- Level_Up!: WriteUp del Ownership Challenge para hacer pentesting en Web3
- Nuevo reto Hacking Web3 de Level_UP! -> Forensic Ouch!
- Level_Up!: WriteUp del reto "Safeguarding" para hacer pentesting en Web3
- Reto Web3 en Level_Up! "Replay_me": La importancia de una correcta validación de firmas
- Level_Up! Configuración paso a paso de la plataforma de pentesting en Web3
- Level_Up! Consigue tus NFTs mientras cuando supera retos Web3
- Telefónica validará nodos de la cadena BlockChain de Celo
- Latch Web3: Un pestillo de seguridad para SmartContract
- Level_Up!: El WriteUp del reto "Origin" y un nuevo reto "Guess my number"
- CrazyToolBox: Una herramienta multifunción de utilidades Web3
- Level_Up!: El WriteUp del reto "ReLottery" y un nuevo reto de agosto llamado “Pay Me!”
- WriteUp: Reto Overworld y nuevo reto DEX Knowledge disponible en Level_Up!
- WriteUp del Reto Hacking Web3 Blockchain Tour & Nuevo Reto Gas Knowledge en Level_Up!
- WriteUp del Reto Hacking Web3 "Snippet Delegated" & Nuevo Reto "Send to me" en Level_Up!
- Una comparativa de Seguridad, Transparencia, Privacidad y Cumplimiento Regulatorio en Exchangers Web3
No hay comentarios:
Publicar un comentario