El post Mejorando la Privacidad de Blockchain: El Papel de las Pruebas de Conocimiento Cero en Transacciones Seguras apareció primero en Coinpedia Fintech News
Introducción
Vivimos en un mundo de información, donde los datos son el nuevo petróleo. Por lo tanto, con datos, todo y cualquier cosa es posible. Esta realidad impulsada por datos trae responsabilidades significativas, especialmente en asegurar que la información privada y sensible permanezca protegida. La tecnología blockchain es una herramienta poderosa que prioriza la transparencia sobre la privacidad. Mientras que la transparencia es esencial para la confianza en un sistema descentralizado, puede exponer detalles sensibles, lo cual puede no ser siempre deseable, especialmente en aplicaciones que involucran transacciones confidenciales o información personal.
Para superar estas limitaciones, los desarrolladores han introducido una variedad de tecnologías que mejoran la privacidad, como Pruebas de Conocimiento Cero (ZKP), zk-SNARKs, monedas de privacidad como Monero y Zcash, y técnicas de encriptación avanzadas como la encriptación homomórfica (HE).
Estas tecnologías mantienen un equilibrio entre la transparencia y la confidencialidad del usuario.
En este artículo, exploraremos cómo funcionan estas herramientas que mejoran la privacidad y sus aplicaciones en el desarrollo de blockchain.
¡Así que empecemos!
Debes estar pensando que Blockchain es la opción más segura y transparente en el dominio tecnológico, ¿verdad? Pero aún tiene algunos defectos. Por ejemplo, consideremos Bitcoin, que es una moneda transparente (Blockchain Pública). Donde tus direcciones son seudónimas. ¡Pero hay un problema! Los mineros aún pueden tener el poder de acceder a los datos en la blockchain antes de que esté oficialmente en la cadena. ¡Escalofriante, verdad?!
Por lo tanto, para evitar todas estas instancias optamos por opciones que mejoran la privacidad y una de ellas son los ZPks. ¡Echemos un vistazo!
Pruebas de Conocimiento Cero y zk-SNARKs
¿Qué son las pruebas de conocimiento cero?
La prueba de conocimiento cero es un protocolo de criptografía donde hay un probador y un verificador. Aquí, el probador debe convencer al verificador de que alguna afirmación es verdadera sin revelar otros hechos o información más allá del mero hecho de que la afirmación es verdadera.
Entendamos esto de manera más intuitiva tomando un ejemplo de la vida real:
Así que, digamos que tienes un amigo llamado Carl que es daltónico y tienes dos bolas (una roja y otra verde) y necesitas que él distinga ambas sin revelar realmente cuál bola es cuál.
Así que aquí estás tú como el probador y Carl es el verificador. Ahora le pides a Carl que ponga ambas bolas en la parte de atrás y él puede elegir una bola al azar donde puede hacerte una pregunta simple: ¿Intercambié las bolas? Este procedimiento luego puede hacerse de manera iterativa y con una probabilidad del 50% Carl debería estar convencido (“completitud”) de que las bolas son de hecho de diferentes colores.
Así que, como su nombre sugiere, probaste la validez de tu afirmación y tu amigo nunca aprende qué bola es verde y cuál es roja; de hecho, no gana ningún conocimiento sobre cómo distinguir las bolas. Así que este conocimiento luego puede ser transferido a la tercera parte también.
Ejemplo de Código:
# Simulación simple de ZKP de hashlib import sha256# Supongamos que el probador conoce la contraseña ‘secreta’contraseña_secreta = “blockchain_rocks”hash_de_secreto = sha256(contraseña_secreta.encode()).hexdigest()# El probador quiere probar conocimiento sin revelar ‘contraseña_secreta’def probar_conocimiento(contraseña_adivinada): return sha256(contraseña_adivinada.encode()).hexdigest() == hash_de_secreto# El verificador confirma el conocimiento del probador al hacer coincidir los hashesprint(probar_conocimiento(“blockchain_rocks”)) # Devuelve True sin revelar ‘contraseña_secreta’
zk-SNARKs: Argumentos de Conocimiento No Interactivos y Concisos de Conocimiento
zk-SNARKs significa Argumentos de Conocimiento No Interactivos y Concisos de Conocimiento. Es una construcción de prueba donde el probador tiene que probar la verdad o su posesión sin interactuar con el verificador. Esta es solo una versión más específica de ZKPs. zk-SNARK es más útil cuando no puede haber posibilidad de comunicación entre las dos partes, por ejemplo, transacciones en línea sin comunicación en tiempo real.
Este concepto es un poco complicado de entender, en resumen, podemos decir que le dices a otra persona que conoces su secreto sin decir cuál es en realidad el secreto, sino probándolo.
¿Sabías? que los zk-SNARKs están implementados en Zcash, una moneda de privacidad conocida por sus transacciones protegidas.
Ejercicio: Construir un zk-SNARK con libsnark
Usa libsnark para configurar y verificar un zk-SNARK simple, o consulta la documentación de la biblioteca para proyectos de muestra sobre la construcción de pruebas zk-SNARK.
Ahora la pregunta es ¿Cómo funciona este ZKP no interactivo?
Configuración: los zk-SNARKs requieren una configuración única para las claves criptográficas, que se utilizan para construir pruebas.
Generación de Pruebas: El probador utiliza información privada para generar una prueba sucinta que puede ser verificada públicamente.
Verificación: Los verificadores pueden confirmar que el probador tiene cierto conocimiento sin conocer los detalles.
Monedas de Privacidad
Las monedas de privacidad son criptomonedas que están diseñadas específicamente para priorizar la privacidad y ocultar la identidad de un usuario.
Monero
Monero (XMR) es una criptomoneda con privacidad mejorada. Usa una blockchain especial que oculta los detalles de las transacciones, haciendo que sea casi imposible para los externos ver quién está enviando o recibiendo Monero, cuánto se está enviando o cualquier saldo de cuentas. Esto mantiene el anonimato y asegura que todas las unidades de Monero sean fungibles.
Fungible (intercambiable): lo que significa que un Monero siempre es igual a otro, sin historial rastreable.
¿Cómo asegura Monero transacciones privadas?
Monero implementa técnicas únicas como se detalla a continuación para asegurar transacciones privadas. Echemos un vistazo a estas técnicas:
Firmas en Anillo: Combina la firma de transacción de un usuario con otras para ofuscar el verdadero origen.
Ejemplo de código:
import random# Lista de claves públicas para participantesparticipantes = [“Alice”, “Bob”, “Charlie”, “Dave”]# Elegir un participante al azar como el “remitente”remitente = random.choice(participantes)# Mezclando la firma del remitente con otrasfirmas_mezcladas = random.sample(participantes, len(participantes))print(“Grupo de Firma en Anillo:”, firmas_mezcladas)print(“Remitente (oculto):”, remitente)
Direcciones Stealth: Crea direcciones únicas de un solo uso para cada transacción, asegurando que solo el remitente y el receptor conozcan el destino.
Transacciones Confidenciales en Anillo (RingCT): Oculta el monto de la transacción para prevenir que terceros vinculen transacciones.
También lee:
Escalado de Blockchain Simplificado: Una Guía para Soluciones Eficientes de Capa 1 y Capa 2
,
Zcash
Zcash (ZEC) es una moneda de privacidad que se basa en el código de Bitcoin. Comparte muchas similitudes con Bitcoin, como transacciones regulares y transparentes, pero también ofrece una opción para transacciones protegidas.
Transacción protegida: Las transacciones protegidas en Zcash son transacciones privadas que utilizan un método criptográfico llamado zk-SNARKs (Argumentos de Conocimiento No Interactivos y Concisos de Conocimiento) para mantener los detalles de la transacción completamente confidenciales.
Por lo tanto, Zcash soporta tanto transacciones transparentes como protegidas con direcciones T (Direcciones Transparentes que funcionan como Bitcoin estándar) y direcciones Z (Direcciones Protegidas que ocultan los detalles de las transacciones).
Las transacciones protegidas de Zcash son una excelente opción para escenarios que exigen confidencialidad, como transacciones B2B en la gestión de la cadena de suministro, donde la privacidad de los datos es crucial.
Configuración
# Instalar cliente Zcashsudo apt-get update && sudo apt-get install zcash# Crear una dirección protegidazcash-cli z_getnewaddress# Enviar a la dirección protegidazcash-cli z_sendmany
Encriptación Homomórfica y su Papel en Blockchain
La encriptación homomórfica (HE) es un tipo de encriptación que te permite realizar cálculos sobre datos mientras aún están encriptados. Esto significa que no necesitas desencriptar los datos para trabajar con ellos. Cuando finalmente desencriptas los resultados, es como si hubieras hecho los cálculos sobre los datos originales no encriptados.
Esta técnica es especialmente útil para la privacidad, ya que permite que datos sensibles sean almacenados y procesados en servidores externos (como en la nube) sin exponerlos.
Hay dos tipos principales de técnicas de Encriptación Homomórfica:
Encriptación Homomórfica Parcial (PHE): La PHE permite solo operaciones específicas sobre los datos, por ejemplo, Suma y Multiplicación.
Encriptación Homomórfica Total (FHE): La FHE soporta operaciones arbitrarias sobre datos encriptados. Pero es intensiva en recursos.
Código de Ejemplo:
from seal import EncryptionParameters, SEALContext, IntegerEncoder# Establecer parámetros de encriptaciónparms = EncryptionParameters(scheme_type.BFV)parms.set_poly_modulus_degree(1024)parms.set_coeff_modulus(coeff_modulus_128(1024))# Ejemplo de suma encriptadaencrypted_sum = add_encrypted_values(enc1, enc2)print(“Suma Encriptada:”, encrypted_sum)
Conclusión
Las tecnologías que mejoran la privacidad como las Pruebas de Conocimiento Cero (ZKPs), zk-SNARKs, monedas de privacidad y la encriptación homomórfica están redefiniendo lo que es posible en blockchain al crear un equilibrio esencial entre privacidad y transparencia. Para los desarrolladores, esta evolución trae oportunidades emocionantes. Al integrar estas características de privacidad en aplicaciones descentralizadas, los desarrolladores pueden satisfacer las necesidades de industrias como finanzas, salud y IoT, donde se requiere confidencialidad.
¡Sigue aprendiendo y feliz codificación!