Seguridad

Modelo de seguridad

ZetiSecret es una herramienta para compartir secretos de un solo uso. El objetivo central es que el servidor nunca vea el secreto en claro, incluso ante un compromiso parcial de la infraestructura.

Principios de diseño

Criptografía

Todo el cifrado ocurre en el navegador del remitente usando WebCrypto API, sin dependencias externas de cifrado.

ComponenteAlgoritmoNotas
Intercambio de claves ECDH P-256 Par efímero por secreto
Cifrado del secreto AES-GCM 256-bit IV aleatorio de 96-bit
Passphrase opcional PBKDF2-SHA-256 Salt aleatorio, iteraciones configurables (≥ 310 000)
Transporte TLS 1.2 / 1.3 HTTPS obligatorio
¿Por qué ECDH? El remitente genera un par de claves efímero. La clave pública se guarda en el servidor; la privada va en el #fragmento del enlace compartido. El servidor nunca puede descifrar el ciphertext porque nunca recibe la clave privada.

Datos guardados en base de datos

La tabla secrets almacena únicamente:

Nunca se guarda El secreto en claro, la clave privada ECDH, la passphrase en claro ni el fragmento #… del enlace.

Flujo de lectura

  1. El destinatario abre la URL /s/:id#clave_privada_ecdh en su navegador.
  2. El navegador extrae la clave privada del fragmento #…. Este fragmento no se envía al servidor.
  3. Si el secreto tiene passphrase, el navegador solicita al usuario que la introduzca y deriva el verificador localmente con PBKDF2.
  4. El backend valida la passphrase (si aplica), comprueba caducidad y estado de bloqueo.
  5. Si todo es correcto, borra la fila de la base de datos dentro de una transacción atómica (un solo uso garantizado).
  6. Devuelve ciphertext, iv y public_key al navegador.
  7. El navegador realiza el intercambio ECDH, deriva la clave AES y descifra localmente. El texto nunca abandona el dispositivo del destinatario en claro.

Controles técnicos activos

Transporte y red

Aplicación

Operaciones

Limitaciones actuales

Transparencia sobre lo que falta Publicamos esta lista porque la transparencia es parte del modelo de seguridad.

Roadmap de seguridad

CaracterísticaEstado
Auditoría criptográfica externaPlanificado
SAST en pipeline CIPlanificado
RBAC granular para equiposEn desarrollo
SSO / OIDC enterpriseEn roadmap
Webhook de auditoría / SIEMEn roadmap
Política formal de retenciónPlanificado

Cumplimiento normativo: ENS e ISO 27001

Cada componente técnico de ZetiSecret está diseñado para satisfacer controles concretos del Esquema Nacional de Seguridad (RD 311/2022) y de ISO/IEC 27001:2022. La siguiente tabla resume los controles directamente satisfechos por la arquitectura del producto.

Componente técnicoControles ENSControles ISO 27001
ECDH P-256 + AES-GCM (WebCrypto) mp.info.3, mp.com.2, mp.com.3 8.24, 5.14, 8.12
Clave privada solo en fragment URL (#) mp.com.2, mp.info.3 8.12, 8.11
PBKDF2-SHA-256 (passphrase) mp.info.3, op.acc.5 8.24, 8.5
TLS 1.2+ con HSTS (Caddy / App Service) mp.com.1, mp.if.7 8.20, 8.21
Red interna Docker / VNet privado mp.com.4, mp.if.7 8.22, 8.20
Helmet CSP + rate limiting mp.s.2, op.acc.5 8.26, 8.6, 8.5
Logs JSON + audit_events + SIEM webhook op.exp.8, op.exp.9, mp.info.1 8.15, 8.11, 5.28
Borrado atómico en consumo + TTL mp.info.6, mp.info.9 8.10, 5.14
Docker hardening (no-root, read-only) op.acc.6, op.exp.6 8.18, 8.19, 8.7
npm audit en CI + npm ci op.exp.4, op.pl.3 8.8, 5.21
Para la evidencia técnica completa de cada control (por qué y cómo cumple, con referencias al código fuente), consulta la página de cumplimiento ENS · ISO 27001 →
¿Tienes preguntas sobre seguridad o quieres reportar una vulnerabilidad? Escríbenos a soporte@zetit.es — respondemos en menos de 48 h.