Arquitectura criptográfica

Sus datos,
ilegibles incluso para nosotros.

leggit aplica los estándares modernos del cifrado de extremo a extremo. He aquí, en términos claros, cómo funciona — y por qué le protege.

El principio: zero-knowledge

El «zero-knowledge» significa literalmente: leggit no tiene ningún conocimiento del contenido de sus cajas fuertes. Sus datos se cifran en su dispositivo antes de ser enviados, y la clave que permite descifrarlos no abandona nunca su equipo, ni el equipo de sus destinatarios.

En concreto, aunque nuestros servidores fueran incautados o vulnerados, el contenido seguiría siendo ilegible — un archivo cifrado sin clave es ruido aleatorio.

Desde la evolución E2EE (cifrado de extremo a extremo) de la plataforma, este principio ya no es una promesa: es una garantía técnica verificable. Para sus cajas personales, el cifrado y descifrado se realizan en su navegador, dentro de un Web Worker aislado que custodia solo sus claves. El servidor de leggit nunca recibe más que blobs cifrados opacos.

🔒 Cómo se hace realmente: la biblioteca criptográfica libsodium-wrappers se sirve desde nuestros propios servidores (sin CDN externo → anti-supply-chain). Cada script JavaScript crítico se entrega con un hash SRI (Subresource Integrity): el navegador rechaza ejecutarlo si el código ha sido alterado en tránsito. Los hashes se publican en nuestra página de transparencia E2EE; puede recalcularlos localmente con openssl para confirmar su integridad.
📋 Mises à jour récentes (2026-05-18) — Périmètre E2EE étendu

Depuis la version 1.0 de l'attestation, plusieurs modules ont été renforcés ou ajoutés au périmètre du chiffrement bout-en-bout (E2EE) :

  • Mode Prudent crypto-wallets — La table de substitution (photo scannée associée à un wallet) est désormais chiffrée dans votre navigateur AVANT envoi via le flux chunked E2EE (libsodium secretstream_xchacha20, header + chunks séparés). leggit ne voit jamais l'image en clair, même temporairement.
  • Workflow dual-device (PC + téléphone) — Vous pouvez désormais saisir les mots substitués sur votre PC et scanner la table sur votre téléphone, sans qu'aucun appareil n'ait simultanément les deux secrets. Le pairing utilise un token long (256 bits, stocké en SHA-256 côté serveur) + un code court à 6 caractères (rate-limité 10 tentatives / 15 min).
  • Révélation Prudent en 3 modes — Lors de la consultation d'un wallet Prudent, vous choisissez : « Mots seuls », « Table seule » (la seed n'est pas déchiffrée sur l'écran qui affiche la table), ou « Les deux ». Défense en profondeur cohérente avec le modèle dual-device.
  • Référentiel des relations administrable — Les types de relations (Conjoint, Enfant, Parent, etc.) sont désormais centralisés dans une table administrée, avec leur miroir réciproque et un flag « Ayant droit par défaut » pour suggérer la propagation.

Voir l'attestation v2.0 complète — ou la version technique détaillée.

Cifrado por sobre

Cada elemento (texto, archivo, mensaje) se cifra con una clave aleatoria única llamada Data Encryption Key (DEK). Esta DEK se cifra a su vez con su clave maestra, derivada de su contraseña mediante Argon2id (un algoritmo costoso que resiste a los ataques masivos).

Ventaja: el día que cambie de contraseña, solo se vuelven a cifrar las DEK, no todos sus archivos.

Claves públicas X25519 para los destinatarios

Cada destinatario dispone de un par clave pública / clave privada generado en su dispositivo. Para transmitir un dato a Alicia, su caja fuerte cifra la DEK con la clave pública de Alicia: solo la clave privada de Alicia puede descifrarla.

X25519 es el algoritmo utilizado por WireGuard, Signal y todas las soluciones modernas de mensajería cifrada.

Reparto de secreto de Shamir

Para la recuperación de su cuenta o la liberación post mortem, leggit divide una clave crítica en varios fragmentos matemáticamente vinculados. Por ejemplo, en 5 fragmentos, de los cuales son necesarios 3 para reconstituir el secreto.

Ningún fragmento por sí solo aporta información: hace falta que el quórum esté reunido — por ejemplo 3 personas de confianza de 5 — para activar el descifrado. Nadie puede actuar en solitario.

AEAD: integridad y confidencialidad

Todos los cifrados aplicados utilizan algoritmos AEAD (XChaCha20-Poly1305). Esto significa que un atacante no puede ni leer el contenido, ni modificar subrepticiamente un solo byte del archivo sin que se detecte al descifrar.

¿Dónde se almacenan las claves?

  • Su clave maestra se deriva de su contraseña en cada conexión mediante Argon2id. Después se entrega directamente a un Web Worker aislado en su navegador, donde permanece en RAM durante toda su sesión. Nunca se persiste en claro, y el hilo principal de JavaScript (DOM, scripts inline) no puede acceder a ella — limitando así el impacto de un eventual XSS.
  • Las claves privadas X25519 de sus destinatarios se cifran con su propia contraseña y se almacenan en su cuenta.
  • Los fragmentos de Shamir están en posesión de las personas de confianza que usted haya designado, nunca son accesibles a leggit en claro.
  • Al cerrar la sesión o la pestaña, el Worker se termina: todas las claves en RAM se borran inmediatamente (memzero).

Compruébelo usted mismo

No tiene que creernos sobre la palabra: la cadena criptográfica del lado del navegador está diseñada para ser auditable.

  • Abra las herramientas para desarrolladores de su navegador (F12) → pestaña Red. Cuando escriba o lea un elemento, verá transitar blobs base64 (cipher_blob_b64, my_wrap) — nunca texto en claro.
  • Consulte nuestra página de transparencia E2EE: expone en tiempo real los hashes SRI de cada script cripto con el comando para recalcularlos localmente.
  • Inspeccione el código fuente de los scripts (clic derecho → "Ver código fuente"). Todo es legible, sin ofuscación, e idéntico al código que publicamos públicamente.

Nuestro modelo de amenazas está documentado honestamente en la página de transparencia — incluyendo aquello que el E2EE no protege (compromiso de su propio navegador por malware local, por ejemplo).

Alcance actual del E2EE

No todo está aún en E2EE puro de navegador — este es el estado real de la cobertura hoy:

  • Cajas personales (textos, contraseñas, archivos y vídeos hasta 100 MB): E2EE completo en navegador. Escritura, lectura, adición de destinatario (con re-autenticación), migración progresiva de elementos antiguos y exportación RGPD: todo pasa por su navegador. El servidor solo accede a cipher blobs opacos.
  • 🔘 Cajas familiares (compartidas entre varios miembros): cifrado del lado del servidor con reparto multi-clave (Shamir + X25519 por miembro). El servidor tiene acceso al contenido durante las sesiones activas para asegurar el reparto entre miembros. El paso al E2EE de navegador está en nuestra hoja de ruta.
  • 🔘 Crypto-wallets (imágenes de tablas de sustitución): cifrado del lado del servidor libsodium secretstream. Migración E2EE prevista.
  • ⚙️ Mensajes programados post mortem por email: legítimamente del lado del servidor. El servidor DEBE poder descifrar el día J para enviar el email al destinatario — un email puro E2EE sería imposible de entregar.
  • ⚙️ Tubería de liberación post mortem (herencia): combinación Shamir + descifrado del lado de la sesión tras quórum. Para las cajas personales creadas en E2EE, el descifrado final se hace en el navegador del destinatario.

Hoja de ruta pública: extensión oficial del navegador y cliente de escritorio firmado para eliminar la dependencia del JavaScript servido por nuestros servidores (supresión del riesgo residual «JS comprometido activamente»). Trabajo en preparación.

Auditoría y transparencia

Toda operación criptográfica se registra en una auditoría con marca de tiempo. Puede consultar en todo momento el historial de acceso a su caja fuerte: quién ha visto qué, cuándo, desde dónde. Para las cajas personales E2EE, los detalles sensibles (títulos, vistas previas) se cifran a su vez con su clave maestra dentro del propio registro — solo usted puede releerlos a través de su navegador.

Recuperación de contraseña sin leggit

Si olvida su contraseña, no puede recurrir al clásico «pulse aquí para restablecer»: leggit no tiene acceso a su clave maestra. Al inscribirse usted designó al menos 2 personas de recuperación.

Cuando se produce un olvido de contraseña, sus personas de confianza reciben una notificación, validan la solicitud y un mecanismo criptográfico llamado Shamir Secret Sharing reconstituye entonces una clave que le permite definir una nueva contraseña. leggit no aprende nada en el proceso.

Atención: si pierde su contraseña Y sus personas de recuperación pasan a estar indisponibles (fallecimiento, pérdida de contacto, rechazo), sus datos se perderán definitivamente. Designe más personas de las estrictamente necesarias y privilegie a personas geográficamente repartidas.

Doble autenticación (2FA)

Además de su contraseña, puede activar una segunda capa de protección: un código de 6 dígitos generado por una aplicación de autenticación estándar (Google Authenticator, Authy, 1Password) en su teléfono.

Con la 2FA activa, aunque alguien conozca su contraseña (por phishing, filtración u observación), no podrá conectarse sin su teléfono. Fuertemente recomendado para las cajas fuertes que contengan crypto-wallets o datos muy sensibles.

Procedimiento judicial / requerimiento

leggit puede recibir un requerimiento judicial de un magistrado o de un servicio del Estado. ¿Qué se puede entregar? Únicamente lo que leggit posee: los blobs cifrados, los metadatos, el historial de conexión, la identidad de la cuenta. No el contenido en claro, porque nunca lo hemos tenido.

Ninguna implementación de «puerta trasera» técnica para permitir un descifrado a la demanda. La criptografía es matemáticamente estanca. Si la justicia exige un contenido, debe pasar por los destinatarios o las personas de confianza, que siguen siendo libres de cooperar o no.

Continuidad del servicio

¿Qué ocurre si leggit echa el cierre? Nos comprometemos en tres puntos:

  • Preaviso mínimo de 6 meses antes del cese efectivo de la actividad.
  • Exportación completa de cada caja fuerte facilitada a cada usuario, en un formato abierto y legible (texto en claro + archivos).
  • Transmisión del código fuente, de la documentación técnica y de las bases de datos cifradas a una persona de confianza designada, con mecanismo de escrow para que un sucesor pueda, si es posible, dar continuidad.

Conformidad RGPD

leggit respeta el Reglamento General de Protección de Datos (RGPD) y la ley francesa de protección de datos. Tiene en todo momento el derecho de acceder a sus datos, rectificarlos, exportarlos y suprimirlos definitivamente.

Para la transmisión post mortem, leggit se inscribe en el marco de la ley francesa República Digital de 2016 (art. 84-86 del Código Civil) que autoriza la expresión y la ejecución de directrices digitales tras el fallecimiento. El mandato post mortem firmado a través de DocuSeal tiene valor jurídico probatorio.