DOCUMENTO TÉCNICO
Lo que hay bajo el capó de CipherOps, sin humo criptográfico.
Explicado fácil
Imagina que quieres mandarle una nota secreta a un amigo en clase.
- Candado y llave
Tu móvil crea dos cosas: un candado abierto (llave pública) que puedes regalar, y una llave secreta (privada) que se queda en tu bolsillo.
- Meter el mensaje en la caja
Para escribirte, tu amigo cierra tu candado sobre su mensaje. Aunque alguien intercepte la caja, no puede abrirla sin tu llave.
- Sólo tú lo abres
Cuando la caja llega, tu llave secreta abre el candado y lees el mensaje. Nadie más del mundo puede.
- Se quema sola
Puedes decidir que la caja se queme sola en 10 segundos, 1 minuto o justo al abrirla. Sin rastro en ningún lado.
Cada dispositivo genera un par de claves X25519 (curva Curve25519, 256 bits). La clave privada permanece en memoria del navegador y nunca se serializa a red ni a disco. La pública se comparte como fingerprint SHA-256 o QR para verificación.
Al recibir la pública del contacto se realiza ECDH para derivar un secreto compartido. Ese secreto pasa por HKDF-SHA256 con etiqueta de contexto CipherOps/v1/AES-GCM-256 y produce una clave AES-256.
Cada mensaje se cifra con AES-256-GCM usando un IV aleatorio de 96 bits generado por crypto.getRandomValues. GCM provee confidencialidad y autenticación (detecta manipulación).
Los mensajes tienen TTL configurable o modo burn on read. Al expirar, la entrada se elimina del estado de React y los buffers de clave y contenido se sobrescriben con ceros. No hay persistencia en localStorage ni IndexedDB.
CipherOps no envía tus mensajes a ningún servidor. La demo simula el canal en la misma pestaña. En un despliegue real, el ciphertext viajaría por cualquier transporte (WebRTC, WebSocket, correo…) sin que ese transporte pueda leerlo.
CipherOps es una demo educativa: la criptografía es estándar y sólida, pero el sistema no ha sido auditado ni incluye defensas avanzadas (perfect forward secrecy por mensaje tipo Double Ratchet, deniability, verificación fuera de banda obligatoria). Para comunicaciones críticas usa Signal, que implementa el protocolo Signal completo.