Seguridad y privacidad en Brauni: cómo protegemos los datos de tus pacientes

Si sos psicólogo, sabés que la confidencialidad no es opcional. Es la base de la relación terapéutica. Cada nota de sesión, cada historia clínica, cada dato personal de tus pacientes merece la máxima protección posible.
En Brauni nos tomamos esto muy en serio. No es un slogan: es ingeniería. En este artículo te mostramos, con transparencia total, las capas de seguridad que protegen la información clínica dentro de la plataforma.
Cifrado de datos: tu información es ilegible sin la llave
Todos los datos sensibles de tus pacientes se cifran antes de guardarse en la base de datos. Usamos AES-128 en modo CBC con autenticación HMAC (cifrado Fernet) para los campos clínicos, y además la plataforma cuenta con cifrado en reposo administrado por el proveedor cloud y TLS 1.3 en tránsito.
¿Qué significa esto en la práctica? Si alguien accediera a la base de datos directamente, vería cadenas de texto incomprensibles. Sin la llave de cifrado, los datos son inútiles.
¿Qué datos se cifran?
- Nombres y apellidos de pacientes
- Fechas de nacimiento
- Números de documento
- Notas de sesión e historias clínicas
- Teléfonos y datos de facturación
- Archivos subidos (cifrados antes de enviarse al almacenamiento)
Nota
El cifrado se aplica campo por campo. Incluso dentro de nuestro propio equipo técnico, nadie puede leer los datos clínicos de tus pacientes.
Además, cada archivo subido a la plataforma se verifica con un hash SHA-256, una huella digital única que detecta cualquier alteración. Si un archivo fue modificado -por error o por un ataque -el sistema lo detecta automáticamente.
Autenticación: más que una contraseña
Contraseñas protegidas con Argon2id
No guardamos tu contraseña. Guardamos un derivado matemático generado con Argon2id, el algoritmo ganador de la Password Hashing Competition y considerado el más seguro del mundo actualmente.
¿Por qué importa? Otros sistemas usan algoritmos más viejos como bcrypt o SHA-256. Argon2id está diseñado específicamente para ser resistente a ataques con hardware especializado (GPUs y ASICs), porque requiere mucha memoria RAM para cada intento de adivinación.
Autenticación multifactor (MFA)
Brauni ofrece cuatro métodos de autenticación en dos pasos para que elijas el que más te convenga:
- App de autenticación (TOTP): Google Authenticator, Authy u otra app genera códigos de 6 dígitos que cambian cada 30 segundos.
- Código por email: recibís un código temporal de 6 dígitos en tu correo.
- Llave de seguridad (WebAuthn/FIDO2): podés usar una YubiKey u otra llave física. Es el método más seguro que existe.
- Códigos de respaldo: 10 códigos de un solo uso para emergencias si perdés acceso a tu segundo factor.
Consejo
Recomendamos activar la autenticación por app o llave de seguridad. Son los métodos más seguros y no dependen de que te llegue un email.
Protección contra ataques de fuerza bruta
Si alguien intenta adivinar tu contraseña, Brauni responde en múltiples capas:
- Bloqueo de cuenta: después de 5 intentos fallidos, la cuenta se bloquea por 15 minutos.
- Notificación inmediata: recibís un email avisándote que alguien intentó acceder a tu cuenta.
- Límites de velocidad: el sistema limita la cantidad de intentos de login, registro y recuperación de contraseña por IP.
Además, el sistema está diseñado para no revelar si un email está registrado. Si alguien intenta iniciar sesión con un email que no existe, la respuesta es idéntica a la de una contraseña incorrecta. Esto previene la enumeración de usuarios.
Tokens y sesiones: acceso controlado en todo momento
Tokens de corta duración
Cuando iniciás sesión, Brauni genera un token de acceso que expira en 15 minutos. Esto minimiza la ventana de exposición si alguien interceptara el token.
Para que no tengas que iniciar sesión cada 15 minutos, usamos tokens de refresco de un solo uso. Cada vez que se renueva tu sesión, el token anterior se invalida. Si alguien intentara reusar un token de refresco ya usado, el sistema detecta el ataque, invalida la sesión completa y registra el incidente.
Revocación instantánea
Podés cerrar todas tus sesiones activas con un solo click. El sistema usa versionado de tokens: al revocar, cambia la versión y todos los tokens emitidos anteriormente dejan de ser válidos al instante.
Protección de archivos: defensa en profundidad
Subir archivos a una plataforma clínica es un vector de ataque común. Brauni implementa 6 capas de validación antes de aceptar cualquier archivo:
| Capa | Qué hace |
|---|---|
| 1. Extensión | Solo acepta formatos conocidos (PDF, DOCX, imágenes, audio) |
| 2. Bytes mágicos | Verifica que el contenido real coincida con la extensión (detecta archivos disfrazados) |
| 3. Inspección profunda | Escanea PDFs buscando código JavaScript oculto o acciones automáticas maliciosas |
| 4. Reprocesamiento de imágenes | Re-codifica imágenes para eliminar metadatos ocultos (EXIF, GPS, etc.) |
| 5. Límites de tamaño | Documentos: 10 MB max. Audio: 25 MB max. Protección contra bombas de descompresión |
| 6. Nombre seguro | Elimina caracteres peligrosos y asigna un nombre aleatorio único |
Importante
Nunca confíes en una plataforma que solo valida la extensión del archivo. Un PDF puede contener código malicioso. Brauni inspecciona el contenido real de cada archivo antes de aceptarlo.
Prevención de accesos no autorizados (IDOR)
Uno de los ataques más comunes en aplicaciones web es el IDOR (Insecure Direct Object Reference): un usuario intenta acceder a datos de otro usuario cambiando un ID en la URL.
En Brauni, cada operación sobre datos de pacientes valida que el profesional que hace la solicitud sea el dueño de esos datos. Si un psicólogo intenta acceder a un paciente que no le pertenece, el sistema responde con un error genérico que ni siquiera confirma si ese paciente existe. Cero filtraciones de información.
Registro de actividad: auditoría completa
Brauni registra automáticamente toda acción relevante en un log de auditoría inmutable:
- Quién accedió, cuándo y desde dónde (IP, navegador)
- Qué paciente fue consultado o modificado
- Qué tipo de operación se realizó (lectura, creación, modificación, eliminación)
- Eventos de seguridad (intentos de login fallidos, cambios de contraseña, activación de MFA)
Este registro no se puede borrar ni modificar. Cumple con los requerimientos de trazabilidad que exigen normativas de protección de datos en salud.
Cabeceras de seguridad: protección a nivel de red
Cada respuesta del servidor incluye cabeceras de seguridad que protegen contra ataques comunes:
- HSTS: fuerza el uso de HTTPS en todo momento (2 años de vigencia, incluye subdominios)
- CSP: bloquea la ejecución de scripts no autorizados
- X-Frame-Options: previene ataques de clickjacking (nadie puede embeber Brauni en un iframe)
- X-Content-Type-Options: evita que el navegador interprete archivos de forma incorrecta
- Permissions-Policy: desactiva el acceso a cámara, micrófono y geolocalización desde el navegador
Protección CSRF: formularios seguros
Brauni implementa el patrón de doble cookie CSRF (Double-Submit Cookie). Cada operación sensible requiere un token firmado criptográficamente que se valida contra una cookie. Esto previene que un sitio malicioso ejecute acciones en tu nombre si visitaras un enlace peligroso.
Los tokens CSRF expiran en 1 hora y usan HMAC-SHA256 para su firma, lo que hace imposible falsificarlos.
Verificación de identidad (KYC)
Para garantizar que solo profesionales reales usen la plataforma, Brauni ofrece verificación de identidad a través de Stripe Identity. El proceso incluye:
- Foto de documento de identidad (DNI, pasaporte o licencia)
- Selfie en tiempo real para verificar que la persona coincida con el documento
- Procesamiento seguro por Stripe -Brauni nunca almacena las fotos del documento
Google OAuth con PKCE: login seguro con Google
Si preferís iniciar sesión con Google, Brauni usa el flujo Authorization Code con PKCE (Proof Key for Code Exchange), el estándar más seguro para OAuth. Esto previene ataques de interceptación del código de autorización, incluso en conexiones comprometidas.
Gestión de secretos: nada en el código
Las llaves de cifrado, credenciales de servicios externos y configuraciones sensibles nunca están en el código fuente. En producción, se obtienen de AWS Systems Manager Parameter Store, un servicio diseñado específicamente para almacenar secretos de forma segura y auditada.
Al iniciar, el sistema valida que las llaves cumplan requisitos mínimos de seguridad. Si detecta una llave débil o de desarrollo en un entorno de producción, se niega a arrancar.
Probá Brauni gratis durante 15 días, sin tarjeta
Notas de sesión automáticas, historia clínica digital y más.
Comenzar gratis¿Por qué tantas capas?
En seguridad informática existe un principio llamado defensa en profundidad: nunca dependas de una sola medida de protección. Si una capa falla, las siguientes siguen protegiendo los datos.
Brauni implementa este principio en cada nivel:
- Datos en reposo: cifrado Fernet (AES-128) campo por campo + cifrado en reposo administrado por el proveedor cloud
- Datos en tránsito: HTTPS obligatorio con HSTS
- Autenticación: Argon2id + MFA + bloqueo de cuenta
- Autorización: validación de propiedad en cada operación
- Archivos: 6 capas de validación antes de aceptar un upload
- Sesiones: tokens de corta duración + refresco de un solo uso
- Auditoría: registro inmutable de toda actividad
- Red: cabeceras de seguridad en cada respuesta
Tu responsabilidad como profesional
La plataforma hace su parte, pero la seguridad es compartida. Te recomendamos:
- Activá la autenticación en dos pasos (MFA) desde la configuración de tu cuenta
- Usá una contraseña única para Brauni que no uses en otros servicios
- No compartas tu sesión -cada profesional debe tener su propia cuenta
- Cerrá sesión cuando uses una computadora compartida
Compromiso de transparencia
La seguridad no debería ser una caja negra. Creemos que los profesionales de la salud merecen entender cómo se protegen los datos de sus pacientes. Por eso publicamos este artículo y seguiremos compartiendo actualizaciones sobre las medidas de seguridad que implementamos.
Si tenés preguntas sobre seguridad o privacidad, escribinos a soporte@brauni.io. Estamos para ayudarte.
Brauni cumple con los principios de la Ley 25.326 de Protección de Datos Personales de Argentina y se alinea con los estándares internacionales de HIPAA para el manejo de información de salud protegida (PHI).
Artículos relacionados

Privacidad y Seguridad
Qué es Patient Privacy Monitoring y por qué toda app de salud debería tenerlo
Cifrar los datos clínicos no alcanza. Explicamos qué es Patient Privacy Monitoring (UEBA aplicado a salud), por qué HIPAA lo exige y cómo Brauni detecta accesos sospechosos a historias clínicas en tiempo real.

Privacidad y Seguridad
Dónde se guardan los datos de tus pacientes y por qué elegimos AWS
Te mostramos exactamente dónde viven los datos clínicos de tus pacientes en la nube de AWS, la infraestructura más grande y segura del mundo, y por qué eso importa para tu práctica.

Privacidad y Seguridad
Qué es un BAA HIPAA y por qué Brauni firmó uno con Google Cloud y AWS
Explicamos qué es un Business Associate Agreement (BAA) bajo HIPAA y por qué Brauni firmó este acuerdo con Google Cloud y AWS para proteger los datos clínicos de tus pacientes.