Seguridad de Latens Chat
Protocolo 2. Las versiones anteriores son incompatibles y no pueden volver a abrir sus salas.
Autenticación antes de enviar
La invitación contiene un secreto aleatorio de 256 bits que permanece en los navegadores. Viaja en el fragmento del enlace, se retira de la dirección al abrirlo y no se transmite al relay. Protégete compartiéndolo solo con tu contacto.
El intercambio utiliza HPKE en modo PSK conforme al RFC 9180, con P-256, HKDF-SHA256 y AES-256-GCM, mediante la biblioteca hpke-js. Se vinculan sala, época, versión, roles, identidades, claves y política de caducidad. La biblioteca declara que no dispone de una auditoría formal; las pruebas de integración no equivalen a una certificación independiente.
Además, ambos extremos deben introducir el código de 80 bits recibido por un canal independiente de confianza. Copiar el código propio o aceptar sin compararlo no acredita a la persona. No se permite enviar antes de completar las dos confirmaciones.
Mensajes y claves
AES-256-GCM verifica la integridad. Cada mensaje usa una clave de una cadena simétrica que se descarta al avanzar; los contadores y la sesión impiden reproducir mensajes. Las claves saltadas admiten un orden limitado y caducan. No se implementa Double Ratchet completo ni se promete recuperación automática tras comprometer un extremo.
Las claves y el texto viven en memoria mientras son necesarios. Una renovación o reconexión purga el contenido y usa un intercambio nuevo; exige comparar un código nuevo. El secreto de invitación permanece en memoria durante la sala para autenticar esos intercambios.
Dos participantes y revocación
El servidor emite identificadores aleatorios, consume la invitación y vincula cada capacidad de reconexión a una clave privada individual. Solo admite una conexión por identidad. Conocer el RoomId o robar únicamente la capacidad no permite reconectar.
Cuando el relay recibe la solicitud de destruir o salir, revoca la sala. El cliente elimina su contenido y claves locales aunque falle la red; si no recibe la confirmación, indica que la destrucción remota no está confirmada. Una solicitud que no llega al servidor no puede revocar la sala a distancia: seguirá vigente hasta su caducidad o hasta que el otro participante la destruya. La caducidad se aplica en el servidor, incluso si el navegador está desconectado. Un reinicio cambia la época y pierde las salas; el cliente no puede recrear un identificador anterior.
Límites explícitos
Un relay que manipule las claves puede impedir la comunicación, pero carece del secreto necesario para autenticar un intercambio falso. Quien robe la invitación completa puede intentar ocupar la segunda plaza: la comprobación externa del código con tu contacto es necesaria para detectar a la persona equivocada.
El operador que puede entregar JavaScript modificado controla el cliente web y podría capturar secretos antes del cifrado. Este producto no garantiza confidencialidad frente a ese operador ni dispone todavía de una distribución del cliente verificable de forma independiente.
No podemos borrar capturas, copias externas, malware ni memoria de un dispositivo permanentemente desconectado. Las referencias administradas se descartan; JavaScript y .NET no permiten acreditar borrado físico de toda la memoria o de dumps del proveedor.