Cifrado de Dos Capas: Como Z-Text Protege tus Mensajes
La mayoria de los mensajeros cifrados dependen de una sola capa de cifrado. Z-Text utiliza dos capas de cifrado independientes, cada una protegiendo contra diferentes vectores de amenaza.
La mayoría de los mensajeros cifrados dependen de una sola capa de cifrado. Z-Text usa dos capas de cifrado independientes, cada una protegiendo contra diferentes vectores de amenaza. Este artículo explica cómo funcionan juntas para proporcionar defensa en profundidad para tus mensajes.
Capa 1: Blindaje de blockchain
La primera capa de cifrado proviene de la propia blockchain de BitcoinZ. Las transacciones blindadas usan zk-SNARKs (Zero-Knowledge Succinct Non-Interactive Arguments of Knowledge) para cifrar todos los datos de la transacción.
Cuando un mensaje de Z-Text se envía como una transacción blindada, lo siguiente queda oculto para todos los observadores de la red:
- La dirección del remitente
- La dirección del destinatario
- El monto de la transacción
- El campo memo (donde se almacena el mensaje)
Solo el titular de la clave de visualización de la z-address del destinatario puede descifrar el campo memo y leer el contenido del mensaje. Esto protege contra la vigilancia pasiva de la red y el análisis de blockchain.
Capa 2: Cifrado con clave de contacto
La segunda capa añade cifrado de extremo a extremo sobre el blindaje de blockchain. Durante el proceso de handshake, Z-Text establece una clave secreta compartida entre dos contactos usando el intercambio de claves Elliptic Curve Diffie-Hellman (ECDH).
Antes de que cualquier mensaje se coloque en el memo de la transacción, se cifra con esta clave compartida. Esto significa que incluso si alguien obtiene la clave de visualización de la z-address (mediante coerción, robo o una vulnerabilidad futura), aún no puede leer los mensajes sin la clave de contacto derivada por separado.
El intercambio de claves del handshake
La clave de contacto se establece a través de un protocolo de handshake sin necesidad de confianza:
- Alice envía una solicitud de handshake a la z-address de Bob, conteniendo su clave pública efímera (cifrada en el memo de una transacción blindada)
- Bob acepta enviando su clave pública efímera de vuelta a Alice (también mediante transacción blindada)
- Tanto Alice como Bob derivan independientemente el mismo secreto compartido usando ECDH
- Este secreto compartido se convierte en la clave de cifrado simétrico para todos los mensajes futuros
La elegancia de este enfoque es que incluso el intercambio de claves está protegido por el blindaje de la Capa 1. Un observador no puede ver las claves públicas siendo intercambiadas ni siquiera que se está realizando un handshake.
Por qué importan dos capas
Cada capa protege contra diferentes escenarios de ataque:
- Solo la Capa 1 protege contra observadores de la red y analistas de blockchain, pero es vulnerable al compromiso de la clave de visualización
- Solo la Capa 2 protege contra el compromiso de la clave de visualización, pero sería vulnerable si los mensajes se enviaran en texto plano en la cadena
- Ambas capas juntas requieren que un atacante comprometa dos sistemas criptográficos independientes simultáneamente
Este es el principio de defensa en profundidad aplicado al cifrado de mensajería. Ningún punto único de fallo puede exponer tus mensajes.
Primitivas criptográficas
La pila de cifrado de Z-Text utiliza primitivas criptográficas bien establecidas:
- zk-SNARKs (Groth16) para transacciones blindadas de la Capa 1
- ECDH sobre Curve25519 para el intercambio de claves
- ChaCha20-Poly1305 para el cifrado simétrico de la Capa 2
- BLAKE2b para la derivación de claves
Todas las operaciones criptográficas se realizan en el núcleo Rust de la aplicación, aprovechando implementaciones de tiempo constante para prevenir ataques de canal lateral por temporización.
Implicaciones prácticas
Para el usuario, el cifrado de dos capas es completamente transparente. La aplicación maneja todo el intercambio de claves y el cifrado automáticamente. Los mensajes aparecen en una interfaz de chat familiar sin indicación de la sofisticada criptografía que ocurre por debajo.
El resultado es un nivel de seguridad de mensajes que supera lo que cualquier mensajero centralizado puede ofrecer -- no porque la criptografía sea más compleja, sino porque el modelo de confianza es fundamentalmente diferente. No hay servidor que citar judicialmente, no hay empresa que coaccionar, y no hay una sola clave que lo desbloquee todo.
Articulos Relacionados
El Handshake en Blockchain: Intercambio de Claves sin Confianza
Antes de que dos usuarios de Z-Text puedan intercambiar mensajes, deben completar un handshake criptografico. Este articulo explica como funciona y por que es importante para la seguridad.
Z-Text vs Signal vs Telegram: Una Comparativa de Privacidad
No todas las afirmaciones de privacidad son iguales. Este articulo compara la arquitectura de Z-Text con dos alternativas populares: Signal y Telegram.