Da por hecho que los servidores están comprometidos
Este es el modelo de seguridad a nivel de plataforma que sostiene cualquier despliegue de MindooDB, incluida la Seguridad y privacidad de Haven. MindooDB está diseñado para que la infraestructura de almacenamiento y sincronización no tenga que ser de confianza. Tres capas de cifrado independientes protegen la confidencialidad de los datos. Las firmas criptográficas demuestran la autoría e impiden la manipulación. Incluso una brecha completa del servidor solo entrega texto cifrado y claves públicas: ningún dato en claro, ninguna clave privada, ningún nombre de usuario.
Tres capas de cifrado independientes
El protocolo de sincronización de MindooDB ofrece defensa en profundidad mediante varias capas de protección. Aunque una capa quede comprometida, las demás siguen protegiendo la confidencialidad de los datos. Es la pieza central de la seguridad de MindooDB: no hace falta confiar en ninguna capa concreta para estar a salvo.
Antes de que una entrada llegue al almacén, su payload se cifra con una clave simétrica (AES-256-GCM). Este cifrado forma parte del modelo de datos, no del transporte. El servidor que guarda las entradas no puede leer su contenido: solo ve bytes cifrados.
Cuando el servidor responde a una petición de sincronización, envuelve los payloads de las entradas en una capa RSA adicional, con la clave pública del usuario que las pide. Aunque alguien capture la respuesta HTTP, no podrá descifrarla sin la clave RSA privada del destinatario.
Toda la comunicación va por TLS. Eso protege los metadatos (IDs de entrada, marcas de tiempo, parámetros de la petición) que las capas de cifrado del payload no cubren. Juntas, las tres capas garantizan una protección completa en reposo, en tránsito y en la línea.
Cómo se establece la confianza
En MindooDB la confianza parte de una sola raíz: la clave de firma Ed25519 del administrador. El administrador firma la base de datos del directorio, que contiene los registros de usuario. La clave pública de cada usuario queda anotada en una entrada del directorio firmada por el administrador. Cuando un cliente o un servidor recibe un cambio en un documento, verifica la clave pública de quien firma contra el directorio: si la clave no está registrada, el cambio se rechaza. No hace falta autenticación en el servidor; la confianza se establece mediante pruebas criptográficas.
Lo que el servidor ve y lo que no
Esta es la consecuencia práctica de la arquitectura de confianza cero. Un servidor (o cualquier intermediario, incluidos los nodos de relay) solo maneja datos cifrados e información pública. Todo lo sensible se queda en los dispositivos cliente.
- Claves públicas de firma (Ed25519)
- Claves públicas de cifrado (RSA-OAEP)
- Blobs cifrados (texto cifrado AES-256-GCM)
- Metadatos de las entradas (marcas de tiempo, hashes de contenido)
- Hashes de nombres de usuario (SHA-256, no los nombres reales)
- El contenido de los documentos (cifrado de extremo a extremo)
- Los nombres de usuario (cifrados con la clave RSA del administrador)
- Las claves privadas de firma o de cifrado
- Las claves de cifrado simétricas (de tenant o con nombre)
- Las contraseñas compartidas (solo por canal aparte)
Control de acceso basado en el cifrado
MindooDB impone el control de acceso mediante claves de cifrado, no con permisos en el servidor. Si tienes la clave, puedes descifrar el documento. Si no, el documento es texto cifrado. Eso significa que el control de acceso funciona igual tanto si los datos están en un servidor como en el dispositivo de otro peer o en un nodo de relay que no puede leerlos. Para el control granular de las operaciones de escritura - quién puede crear, cambiar, borrar, hacer snapshots o purgar documentos - consulta la página dedicada al control de acceso.
Todos los documentos se cifran con la clave AES-256 predeterminada del tenant salvo que se indique otra. Cada usuario registrado recibe esa clave al incorporarse. Sirve para los datos generales de todo el tenant.
Para los documentos sensibles, crea una clave de cifrado con nombre y compártela solo con los usuarios autorizados. Las claves viajan fuera de línea (envía la clave cifrada por correo y la contraseña por teléfono o en persona) o de forma opaca para el administrador mediante una política: un usuario que ya tiene la clave la empaqueta con la clave pública personal de cada destinatario, así que un administrador puede distribuirla sin llegar a leerla. Solo quien tiene la clave puede descifrarlos.
Una clave especial que cifra únicamente las entradas de control de acceso del directorio (registros de usuario, revocaciones, grupos). Los servidores la usan para validar en qué claves de firma se confía, sin ver nombres de usuario ni datos de negocio. Los nombres de usuario se guardan como hashes SHA-256; los nombres reales van cifrados con la clave RSA del administrador.
| Operación | Qué se exige |
|---|---|
| Registrar un usuario | Firma del administrador (Ed25519) |
| Crear un documento | Tener la clave de cifrado (predeterminada o con nombre) |
| Modificar un documento | Tener la clave de firma (usuario registrado) + la clave de cifrado |
| Leer un documento | Tener la clave de descifrado |
| Revocar un usuario | Firma del administrador; bloquea la sincronización y rechaza los cambios futuros |
Autenticación por desafío y respuesta e incorporación segura
MindooDB no usa contraseñas ni tokens guardados en el servidor. La autenticación se basa en un desafío y respuesta con Ed25519: el servidor genera un desafío aleatorio, el cliente lo firma con su clave privada y el servidor verifica la firma contra la clave pública registrada. Así se demuestra la identidad sin compartir secretos.
Cada sesión de sincronización empieza con un saludo de desafío y respuesta:
- El cliente envía su clave pública de firma al servidor
- El servidor busca la clave en el directorio y envía un desafío aleatorio
- El cliente firma el desafío con su clave privada
- El servidor verifica la firma, comprueba si hay revocación y emite un JWT de corta duración
Sin contraseñas ni bases de datos de sesión en el servidor. Un usuario revocado no puede ni iniciar el proceso de autenticación.
Los usuarios nuevos se suman mediante un saludo en tres pasos en el que las claves privadas nunca salen del dispositivo:
- Solicitud de unión — El usuario nuevo genera sus claves en local y crea una solicitud que solo contiene claves públicas. Se puede compartir por cualquier canal sin riesgo.
- Aprobación del administrador — El administrador registra al usuario en el directorio y cifra las claves simétricas con una contraseña de uso único.
- Intercambio por dos canales — La respuesta de unión se envía por correo o chat; la contraseña compartida se comunica aparte, por teléfono o en persona.
Algoritmos y garantías
MindooDB usa algoritmos criptográficos consolidados y auditados a fondo. Nada de criptografía propia. La elección de algoritmos equilibra la solidez de la seguridad con la compatibilidad entre plataformas (Node.js, navegadores, React Native).
- Firma: Ed25519 (seguridad de 128 bits, curva elíptica)
- Cifrado del payload: AES-256-GCM (seguridad de 256 bits)
- Cifrado del transporte: RSA-OAEP con SHA-256 (claves de 3072 bits)
- Derivación de claves: PBKDF2 con sales únicas por tipo de clave
- Firma de tokens: HMAC-SHA256
- Hashing: SHA-256 (direccionamiento por contenido, privacidad del nombre de usuario)
- Confidencialidad: cifrado AES-256-GCM — solo lee quien tiene la clave
- Autenticidad: firmas Ed25519 — demuestran quién creó cada cambio
- Integridad: encadenamiento por hash — manipular algo rompe la cadena y se detecta en cualquier punto
- No repudio: las firmas no se pueden falsificar — la autoría es demostrable
- Privacidad: los nombres de usuario van con hash y cifrados — el servidor no puede identificar a nadie
De qué protege el sistema
MindooDB da por hecho que los servidores, la infraestructura de red e incluso algunos peers pueden estar comprometidos o ser maliciosos. El modelo de seguridad está pensado para mantener la confidencialidad y la integridad de los datos en esas condiciones.
- Brecha en el servidor — Quien ataca obtiene solo texto cifrado y claves públicas. Nada en claro, ninguna clave privada, ningún nombre de usuario.
- Interceptación de la red — Tres capas de cifrado protegen los datos incluso si TLS queda comprometido.
- Cambios no autorizados — Todo cambio va firmado; los que no lo están o lo están mal se rechazan.
- Manipulación — El encadenamiento por hash hace detectable cualquier modificación.
- Acceso de un usuario revocado — La revocación se aplica tanto en el desafío como al validar el token; bloquea la sincronización de inmediato.
- Escucha en un relay — Los nodos de relay guardan y reenvían entradas cifradas que no pueden descifrar.
El contenido del payload siempre va cifrado, pero algunos metadatos son visibles para el servidor por diseño. Es un compromiso deliberado: el protocolo de sincronización necesita metadatos para reconciliar entradas.
- Visible: marcas de tiempo de las entradas, hashes de contenido, estructura de los documentos (cuántas entradas tiene cada uno), patrones de acceso (cuándo sincronizan los usuarios)
- No visible: el contenido de los documentos, los nombres de usuario, las claves de cifrado, el contenido de los adjuntos
Los hashes de contenido revelan cuándo dos entradas contienen los mismos datos cifrados (para deduplicarlos). Es un compromiso aceptado a cambio de eficiencia en el almacenamiento.
Lo que conviene saber
MindooDB es software en beta con una base criptográfica sólida. Se ha realizado una auditoría de seguridad completa que ha identificado áreas por reforzar antes de un despliegue en producción. Creemos que ser transparentes sobre las limitaciones genera más confianza que las promesas de marketing.
Revocar a un usuario bloquea toda sincronización futura y rechaza sus cambios posteriores. Sin embargo, los datos ya sincronizados en su dispositivo siguen siendo accesibles: ningún sistema puede garantizar el borrado en un dispositivo que nunca vuelve a conectarse. Mitigación: usa claves con nombre para los documentos sensibles (radio de impacto menor) y rota las claves cuando alguien deja el equipo. Haven Enterprise añade a esas mismas políticas de gobernanza un borrado remoto del dispositivo firmado por el administrador: el tenant se elimina de un dispositivo robado o dado de baja la próxima vez que se conecta.
Varias claves por usuario (firma, cifrado, claves simétricas con nombre) exigen una distribución segura. Mitigación: una sola contraseña desbloquea todas las claves mediante PBKDF2 con sales distintas. El KeyBag ofrece un almacén de claves unificado. El flujo de solicitud y respuesta de unión se encarga del intercambio de claves para los usuarios nuevos. Haven Enterprise automatiza el trabajo del día a día: las políticas de distribución de claves firmadas por el administrador aprovisionan claves a usuarios y grupos — y las revocan de nuevo —, empaquetadas para cada destinatario, y cada cliente reconcilia su KeyBag en la siguiente sincronización.
Por defecto el servidor no puede consultar el contenido de los documentos porque solo ve texto cifrado. Todas las consultas se hacen en el cliente, con indexación incremental. Pero si tu caso necesita procesamiento en el servidor (por ejemplo, un sistema de reservas en línea o una web pública), puedes darle al proceso del servidor una clave de descifrado o compartir con él un subconjunto de los datos. Es una decisión de arquitectura consciente en cada despliegue: la confidencialidad es lo predeterminado, y el acceso del servidor se activa solo donde haga falta.
Una auditoría de seguridad completa identificó áreas por reforzar: limitación de peticiones en los endpoints, revocación de tokens JWT y rotación de la clave de administrador. Los cambios antedatados de usuarios revocados ya se evitan con recibos del testigo basados en una hora de confianza (consulta el modelo de control de acceso). La base criptográfica (Ed25519, AES-256-GCM, RSA-OAEP) es sólida. El refuerzo operativo está en marcha.
Controles técnicos que respaldan el cumplimiento
MindooDB aporta piezas criptográficas que cubren requisitos técnicos clave de los marcos normativos habituales. El cumplimiento en sí es una responsabilidad de la organización; MindooDB pone la base técnica.
- ✅ Historial de escritura completo (append-only)
- ✅ Firmas criptográficas (prueba de autoría)
- ✅ Registros a prueba de manipulaciones (encadenados por hash)
- ✅ Viaje en el tiempo (reconstruye cualquier estado)
- ✅ Cifrado de extremo a extremo (el servidor no puede descifrar)
- ✅ Control de acceso granular (claves con nombre)
- ✅ Borrado de datos coordinado (
purgeDocHistory) - ⚙️ Registro de los accesos de lectura (lo construyes en tu app)
Estos controles respaldan programas de HIPAA (sanidad), SOX (finanzas), RGPD (protección de datos) y PCI-DSS (pagos). Ver la documentación detallada de cumplimiento →
MindooDB Haven es una PWA que corre en el navegador y lleva ese mismo cifrado de extremo a extremo, las apps aisladas en una sandbox y la sincronización local-first a un espacio de trabajo sereno y multiplataforma. Prueba la beta gratuita o entra en los análisis a fondo.