Cifrado en tránsito y reposo
Toda la operación de Ministrium pasa por capas de cifrado modernas. Esta página describe qué se cifra, con qué algoritmo y dónde se gestionan las llaves.
Resumen
| Capa | Mecanismo |
|---|---|
| En tránsito | TLS 1.2 o superior en todas las conexiones, certificados administrados por Replit/Cloudflare. |
| En reposo | AES-256 en la base de datos (Neon/Postgres) y en el almacén de objetos para archivos adjuntos. |
| Secretos de aplicación | Almacenados en el gestor de secretos cifrado de Replit, jamás en el código fuente ni en logs. |
| Contraseñas | Hash con bcrypt (cost factor 12), nunca almacenadas en claro. |
| Tokens de sesión | JWT firmados con secreto rotable; expiración corta y refresh tokens revocables. |
En tránsito
Toda conexión hacia Ministrium usa TLS 1.2 o superior:
- HTTPS obligatorio en todos los dominios públicos. Las peticiones HTTP se redirigen automáticamente a HTTPS.
- HSTS (HTTP Strict Transport Security) habilitado con preload, lo que indica al navegador que jamás use HTTP para nuestros dominios.
- Certificados administrados por Replit y Cloudflare, con rotación automática.
- TLS 1.0 y 1.1 deshabilitados del lado del servidor.
- Suite de cifrado moderna: prefiere AEAD (AES-GCM, ChaCha20-Poly1305) y Forward Secrecy.
Las conexiones internas entre componentes (API → base de datos, API → almacén de objetos) también pasan por TLS dentro del entorno cloud.
En reposo
Base de datos
La base de datos PostgreSQL (gestionada por Neon) cifra todos los datos en reposo con AES-256. Las llaves son administradas por Neon en su KMS (Key Management Service) y rotadas según su política. Los backups y snapshots heredan el mismo cifrado.
Almacén de objetos
Los archivos adjuntos (fotos, documentos, recibos) se almacenan en un object store con AES-256 en reposo y replicación geográfica para resiliencia.
Backups
Los backups automáticos diarios y los snapshots de point-in-time recovery se conservan cifrados con AES-256. Ver el detalle de retención en Vista general de Seguridad.
Contraseñas
Las contraseñas de los usuarios:
- Nunca se almacenan en claro ni siquiera en logs temporales.
- Se hashean con bcrypt y un cost factor de 12 (configurable hacia arriba; nunca hacia abajo).
- Cada hash incluye su propio salt aleatorio.
- En el momento de cambiar el cost factor del bcrypt, los hashes existentes se actualizan en el siguiente login válido del usuario.
Para políticas de contraseña y MFA, ver MFA y políticas de contraseña.
Tokens de sesión
Los tokens de sesión que la API devuelve al cliente son JWT (JSON Web Tokens):
- Firmados con un secreto que vive en el gestor de secretos de Replit.
- Expiración corta (típicamente 15 minutos para el access token).
- Renovados con refresh tokens revocables que la API valida contra una lista de tokens activos.
- Al cerrar sesión, el refresh token se revoca inmediatamente.
- Al cambiar contraseña o detectar una sesión sospechosa, todos los tokens activos del usuario se revocan.
Secretos de aplicación
Las credenciales que la aplicación usa para hablar con servicios externos (Stripe, SendGrid, Twilio, integraciones del cliente) se guardan en el gestor de secretos cifrado de Replit:
- Nunca en el código fuente del repositorio.
- Nunca en logs: los pipelines de logging filtran cualquier patrón que parezca una llave o token.
- Nunca en los reportes de error que ven los desarrolladores.
- Acceso al gestor restringido a un grupo pequeño del equipo de Ministrium con MFA y revisión trimestral.
Llaves para cifrado a nivel de campo
Algunos campos especialmente sensibles (información de salud bajo HIPAA, ciertos datos de menores bajo COPPA) se cifran a nivel de campo con llaves específicas que viven en el KMS de Replit:
- Las llaves se rotan anualmente.
- Los datos en queries se descifran solo cuando un rol autorizado los consulta.
- Cada descifrado deja entrada en la auditoría.
El cifrado a nivel de campo es defensa en profundidad: aunque el cifrado del disco fallara, los campos sensibles seguirían cifrados con llaves administradas aparte.
Pruebas de cifrado
Verificamos las configuraciones de cifrado periódicamente:
- SSL Labs A+ en todos los dominios públicos.
- Escaneos automáticos de configuración TLS en CI antes de cada despliegue.
- Auditoría externa anual de configuración como parte de SOC 2. Ver SOC 2.