Política de Seguridad
Última actualización: 30 de abril de 2026 · Versión: 1.0
NEXXUS Legal está construido desde el primer commit con el principio zero-knowledge: ni nuestros ingenieros, ni nuestro CEO, ni un atacante con acceso al servidor pueden leer el contenido legal de tu despacho. Esta página resume las medidas técnicas y organizativas (TOMs) que sostienen esa promesa.
E2EE real
libsodium · XChaCha20-Poly1305 · Argon2id 64MB
Shamir 3-de-2
Recuperación con 2 de 3 piezas que tú custodias
Audit log Ed25519
Hash chain inmutable, replicado WORM en B2
Multi-tenant RLS
PostgreSQL Row-Level Security por despacho
1. Cifrado end-to-end (E2EE)
1.1 Las tres capas
NEXXUS distingue tres tipos de datos y los protege con criptografía distinta:
| Capa | Algoritmo | Custodio de la clave | Ejemplos |
|---|---|---|---|
| Metadata | AES-256-GCM | NEXXUS (DEK rotada) | Índices, búsquedas, contadores |
| PII | CMEK · HSM | NEXXUS (HSM dedicado) | Email, RUC, teléfono |
| Contenido legal | XChaCha20-Poly1305 (libsodium) | Solo el despacho | Documentos, notas, audio, casos |
1.2 Derivación de la clave maestra
La master key del despacho se deriva de la contraseña del admin con Argon2id:
Argon2id (
memoria = 64 MiB,
iter = 3,
paralelismo = 4,
salt = 16 bytes random por despacho
)
→ master_key (32 bytes)
Estos parámetros equivalen a OWASP "high security" 2024. La master key NUNCA viaja al servidor sin estar cifrada por una clave de sesión efímera.
1.3 Implementación cliente
- Frontend React 19 + libsodium-wrappers (WebAssembly auditado)
- Cifrado realizado en el navegador antes de enviar al backend
- El servidor recibe únicamente blobs cifrados + nonce + auth tag
- Las búsquedas se hacen sobre blind indexes (HMAC truncado), no sobre texto claro
2. Recuperación con Shamir's Secret Sharing 3-de-2
La contraplomadía del E2EE es: si pierdes la contraseña, nadie puede recuperar tus datos. Para no convertir esto en una bomba, NEXXUS divide la master key con Shamir's Secret Sharing:
- Generamos 3 piezas al onboarding
- Bastan 2 piezas cualesquiera para reconstruir la master key
- Ninguna pieza individual revela información sobre la clave (security threshold matemáticamente probada)
2.1 Custodia recomendada
| Pieza | Dónde guardarla |
|---|---|
| 1 — "casa" | Caja fuerte personal del admin del despacho |
| 2 — "oficina" | Caja fuerte de la oficina + custodia notarial |
| 3 — "abogado de confianza" | Custodiada por un colega o familiar de confianza |
NEXXUS NO almacena ninguna pieza. Si pierdes 2 de las 3, los datos cifrados son irrecuperables — incluso para nosotros.
2.2 Acceso de emergencia (rotura-de-cristal)
Para escenarios extremos (fallecimiento del admin, secuestro de claves), existe un protocolo opt-in:
- Quórum 3-of-5 admins del despacho
- Cool-off de 72 horas antes de la liberación
- Notificación email + push a TODOS los miembros del despacho
- Registro inmutable en el audit log público del tenant
- Reversible durante el cool-off por cualquier admin
3. Audit log Ed25519 hash chain
Cada acción significativa (login, lectura de caso, edición, exportación, cambio de permisos) se registra en una bitácora inmutable.
3.1 Hash chain
entry_n = {
timestamp,
tenant_id,
actor_id,
event_type,
payload,
prev_hash = SHA-256(entry_{n-1}),
signature = Ed25519_sign(entry_n_sin_signature)
}
Cada entrada referencia el hash de la anterior. Cualquier modificación retroactiva rompe la cadena y la verificación falla.
3.2 Replicación WORM
El audit log se replica cada 6 horas a Backblaze B2 con Object Lock Compliance Mode:
- Los objetos quedan inmutables durante el período de retención
- Retención: 7 años (cumple obligación SRI + LOPDP art. 27)
- Ni siquiera la cuenta root de B2 puede borrarlos antes del término
3.3 Verificabilidad
El despacho puede descargar el audit log completo + la clave pública Ed25519 y validar la integridad con nexxus-audit-verify (script open-source). El log es admisible como prueba documental en juicio.
4. Aislamiento multi-tenant (PostgreSQL RLS)
Cada despacho es un tenant aislado a nivel de base de datos:
- Row-Level Security nativa de PostgreSQL 16
- Política
tenant_isolationaplicada a todas las tablas condespacho_id - Sesión Django establece
SET LOCAL app.current_tenant = <uuid>en cada request - Un bug en el ORM no puede filtrar datos entre despachos: la DB rechaza la query a nivel de motor
- Pruebas automatizadas verifican el aislamiento en cada deploy (test suite "tenant-leak" 7/7 pass requerido)
5. Almacenamiento y backups
5.1 Hosting
- Hetzner CPX31 (Ashburn US-East) — disco NVMe cifrado LUKS at-rest
- Reverse proxy Caddy con TLS 1.3 + HSTS + Let's Encrypt
- Hardening: UFW firewall, fail2ban, SSH solo con llave Ed25519, sin password
5.2 Backups
- Diarios automáticos · cifrados age (libsodium-equiv) · retención 90 días rolling
- Replicados a Backblaze B2 Object Lock Compliance · 7 años para audit log y facturas SRI
- RPO ≤ 24h, RTO ≤ 4h
- Drill de restore documentado y probado trimestralmente
6. Compliance LOPDP Ecuador
NEXXUS cumple íntegramente la Ley Orgánica de Protección de Datos Personales del Ecuador (LOPDP, R.O. Suplemento 459 de 2021) y su Reglamento (Decreto Ejecutivo 904 de 2023):
- Designación de DPO — dpo@nexxus.legal — Dr. Alejandro Sánchez Muñoz
- Registro de actividades de tratamiento mantenido y disponible para la Superintendencia
- Política de Privacidad y DPA publicados (ver privacidad · DPA)
- Notificación de brechas en 72h a la Superintendencia + sin demora al titular
- Derechos ARCO+ auto-servicio en la app + email privacidad@nexxus.legal (15 días hábiles)
- Transferencias internacionales amparadas en cláusulas contractuales tipo (art. 56)
- Logs de auditoría conservados 5 años (art. 27)
7. Autenticación y control de acceso
- Contraseñas almacenadas con Argon2id (mismos parámetros que la master key)
- 2FA TOTP recomendado para todos los usuarios (RFC 6238)
- SSO/SAML disponible en plan Enterprise
- Tokens DRF rotables + sesión Django corta + refresh seguro
- Roles granulares:
admin·socio·abogado·asistente·cliente_lectura - Permisos por feature flag (35 features con
@require_feature)
8. Procesos de desarrollo seguro
- Análisis estático continuo (bandit, safety, npm audit)
- Dependencias auditadas y actualizadas semanalmente
- Code review obligatorio en main; commits firmados
- Tests de integración 7/7 pass requeridos antes de promover a producción
- Pen-testing externo anual (plan Enterprise) + bug bounty: security@nexxus.legal
- NDA + capacitación LOPDP anual obligatoria para todo el personal
9. Sub-procesadores
NEXXUS usa sub-procesadores cuidadosamente seleccionados — todos vinculados por DPA. Lista completa y compromisos en el documento DPA NEXXUS § 7.
10. Reportar vulnerabilidades
Si descubres una vulnerabilidad en NEXXUS, agradecemos tu colaboración responsable:
- Email: security@nexxus.legal
- PGP key disponible bajo solicitud
- Compromiso: respuesta inicial en 48h, fix coordinado, reconocimiento público (opcional) y bug bounty según severidad
- No realices pruebas que afecten datos de otros despachos — usa la cuenta de pruebas que te facilitaremos
Esta política se actualiza cuando cambia la arquitectura. Versiones anteriores conservadas en el audit log público del proyecto. Aprobado por: Dr. Alejandro Sánchez Muñoz — DPO & Representante legal · DESPACHO LEGAL AXSM S.A.S.