e2hat — cifrado de extremo a extremo en el navegador
e2hat es un chat web cifrado de extremo a extremo construido sobre el código de curva elíptica de ecutils: el cifrado corre en el navegador, así que el servidor solo transporta texto cifrado. La versión inicial puso los mensajes en movimiento; los días siguientes fueron sobre autenticación, forward secrecy y protección contra replay.
Claves que no sobreviven a la conversación. La primera versión reutilizaba una clave Diffie–Hellman estática. Se reemplazó por renegociación de clave DH efímera, de modo que cada sesión deriva claves nuevas y una clave comprometida no expone retroactivamente los mensajes anteriores — forward secrecy. Los escalares por mensaje vienen de HKDF, con una corrección de sesgo en cómo se derivaban.
Asumir que el canal es hostil. Un servidor que solo transporta texto cifrado aún puede reordenar, repetir o descartar. Aquí entraron autenticación por desafío–respuesta, firmas ECDSA, autenticación con separación de dominio para que un valor firmado con un propósito no se reutilice en otro, estado anti-replay que sobrevive a una recarga, y un sondeo previo al envío que comprueba que ambos lados coinciden en las claves efímeras antes de que salga el mensaje. Las claves en reposo se guardan con AES-GCM en IndexedDB.
Mensajes como puntos de la curva. Como el transporte es por curva elíptica, el texto debe convertirse en puntos sobre la curva (codificación de Koblitz), lo que limita cuánto cabe en un punto. Los mensajes largos se dividen en fronteras de palabra y se reensamblan en una sola burbuja del otro lado.
e2hat está en línea en e2hat.com.