Privacidad y Seguridad
Seguridad y privacidad en Brauni: como protegemos los datos de tus pacientes
Si sos psicologo, sabes que la confidencialidad no es opcional. Es la base de la relacion terapeutica. Cada nota de sesion, cada historia clinica, cada dato personal de tus pacientes merece la maxima proteccion posible.
En Brauni nos tomamos esto muy en serio. No es un slogan: es ingenieria. En este articulo te mostramos, con transparencia total, las capas de seguridad que protegen la informacion clinica dentro de la plataforma.
Cifrado de datos: tu informacion 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 autenticacion HMAC (cifrado Fernet) para los campos clinicos, y ademas la plataforma cuenta con AES-256 en reposo y TLS 1.3 en transito.
¿Que significa esto en la practica? Si alguien accediera a la base de datos directamente, veria cadenas de texto incomprensibles. Sin la llave de cifrado, los datos son inutiles.
¿Que datos se cifran?
- Nombres y apellidos de pacientes
- Fechas de nacimiento
- Numeros de documento
- Notas de sesion e historias clinicas
- Telefonos y datos de facturacion
- Archivos subidos (cifrados antes de enviarse al almacenamiento)
Nota
El cifrado se aplica campo por campo. Incluso dentro de nuestro propio equipo tecnico, nadie puede leer los datos clinicos de tus pacientes.
Ademas, cada archivo subido a la plataforma se verifica con un hash SHA-256, una huella digital unica que detecta cualquier alteracion. Si un archivo fue modificado -por error o por un ataque -el sistema lo detecta automaticamente.
Autenticacion: mas que una contraseña
Contraseñas protegidas con Argon2id
No guardamos tu contraseña. Guardamos un derivado matematico generado con Argon2id, el algoritmo ganador de la Password Hashing Competition y considerado el mas seguro del mundo actualmente.
¿Por que importa? Otros sistemas usan algoritmos mas viejos como bcrypt o SHA-256. Argon2id esta diseñado especificamente para ser resistente a ataques con hardware especializado (GPUs y ASICs), porque requiere mucha memoria RAM para cada intento de adivinacion.
Autenticacion multifactor (MFA)
Brauni ofrece cuatro metodos de autenticacion en dos pasos para que elijas el que mas te convenga:
- App de autenticacion (TOTP): Google Authenticator, Authy u otra app genera codigos de 6 digitos que cambian cada 30 segundos.
- Codigo por email: recibis un codigo temporal de 6 digitos en tu correo.
- Llave de seguridad (WebAuthn/FIDO2): podes usar una YubiKey u otra llave fisica. Es el metodo mas seguro que existe.
- Codigos de respaldo: 10 codigos de un solo uso para emergencias si perdes acceso a tu segundo factor.
Consejo
Recomendamos activar la autenticacion por app o llave de seguridad. Son los metodos mas seguros y no dependen de que te llegue un email.
Proteccion contra ataques de fuerza bruta
Si alguien intenta adivinar tu contraseña, Brauni responde en multiples capas:
- Bloqueo de cuenta: despues de 5 intentos fallidos, la cuenta se bloquea por 15 minutos.
- Notificacion inmediata: recibis un email avisandote que alguien intento acceder a tu cuenta.
- Limites de velocidad: el sistema limita la cantidad de intentos de login, registro y recuperacion de contraseña por IP.
Ademas, el sistema esta diseñado para no revelar si un email esta registrado. Si alguien intenta iniciar sesion con un email que no existe, la respuesta es identica a la de una contraseña incorrecta. Esto previene la enumeracion de usuarios.
Tokens y sesiones: acceso controlado en todo momento
Tokens de corta duracion
Cuando inicias sesion, Brauni genera un token de acceso que expira en 15 minutos. Esto minimiza la ventana de exposicion si alguien interceptara el token.
Para que no tengas que iniciar sesion cada 15 minutos, usamos tokens de refresco de un solo uso. Cada vez que se renueva tu sesion, el token anterior se invalida. Si alguien intentara reusar un token de refresco ya usado, el sistema detecta el ataque, invalida la sesion completa y registra el incidente.
Revocacion instantanea
Podes cerrar todas tus sesiones activas con un solo click. El sistema usa versionado de tokens: al revocar, cambia la version y todos los tokens emitidos anteriormente dejan de ser validos al instante.
Proteccion de archivos: defensa en profundidad
Subir archivos a una plataforma clinica es un vector de ataque comun. Brauni implementa 6 capas de validacion antes de aceptar cualquier archivo:
| Capa | Que hace |
|---|---|
| 1. Extension | Solo acepta formatos conocidos (PDF, DOCX, imagenes, audio) |
| 2. Bytes magicos | Verifica que el contenido real coincida con la extension (detecta archivos disfrazados) |
| 3. Inspeccion profunda | Escanea PDFs buscando codigo JavaScript oculto o acciones automaticas maliciosas |
| 4. Reprocesamiento de imagenes | Re-codifica imagenes para eliminar metadatos ocultos (EXIF, GPS, etc.) |
| 5. Limites de tamaño | Documentos: 10 MB max. Audio: 25 MB max. Proteccion contra bombas de descompresion |
| 6. Nombre seguro | Elimina caracteres peligrosos y asigna un nombre aleatorio unico |
Importante
Nunca confies en una plataforma que solo valida la extension del archivo. Un PDF puede contener codigo malicioso. Brauni inspecciona el contenido real de cada archivo antes de aceptarlo.
Prevencion de accesos no autorizados (IDOR)
Uno de los ataques mas 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 operacion sobre datos de pacientes valida que el profesional que hace la solicitud sea el dueño de esos datos. Si un psicologo intenta acceder a un paciente que no le pertenece, el sistema responde con un error generico que ni siquiera confirma si ese paciente existe. Cero filtraciones de informacion.
Registro de actividad: auditoria completa
Brauni registra automaticamente toda accion relevante en un log de auditoria inmutable:
- Quien accedio, cuando y desde donde (IP, navegador)
- Que paciente fue consultado o modificado
- Que tipo de operacion se realizo (lectura, creacion, modificacion, eliminacion)
- Eventos de seguridad (intentos de login fallidos, cambios de contraseña, activacion de MFA)
Este registro no se puede borrar ni modificar. Cumple con los requerimientos de trazabilidad que exigen normativas de proteccion de datos en salud.
Cabeceras de seguridad: proteccion 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 ejecucion 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 camara, microfono y geolocalizacion desde el navegador
Proteccion CSRF: formularios seguros
Brauni implementa el patron de doble cookie CSRF (Double-Submit Cookie). Cada operacion sensible requiere un token firmado criptograficamente 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.
Verificacion de identidad (KYC)
Para garantizar que solo profesionales reales usen la plataforma, Brauni ofrece verificacion de identidad a traves 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 preferis iniciar sesion con Google, Brauni usa el flujo Authorization Code con PKCE (Proof Key for Code Exchange), el estandar mas seguro para OAuth. Esto previene ataques de interceptacion del codigo de autorizacion, incluso en conexiones comprometidas.
Gestion de secretos: nada en el codigo
Las llaves de cifrado, credenciales de servicios externos y configuraciones sensibles nunca estan en el codigo fuente. En produccion, se obtienen de AWS Systems Manager Parameter Store, un servicio diseñado especificamente para almacenar secretos de forma segura y auditada.
Al iniciar, el sistema valida que las llaves cumplan requisitos minimos de seguridad. Si detecta una llave debil o de desarrollo en un entorno de produccion, se niega a arrancar.
Probá Brauni gratis durante 15 días
Notas de sesión automáticas, historia clínica digital y más.
Comenzar gratis¿Por que tantas capas?
En seguridad informatica existe un principio llamado defensa en profundidad: nunca dependas de una sola medida de proteccion. Si una capa falla, las siguientes siguen protegiendo los datos.
Brauni implementa este principio en cada nivel:
- Datos en reposo: cifrado Fernet campo por campo + cifrado AES-256 en reposo administrado por el proveedor cloud
- Datos en transito: HTTPS obligatorio con HSTS
- Autenticacion: Argon2id + MFA + bloqueo de cuenta
- Autorizacion: validacion de propiedad en cada operacion
- Archivos: 6 capas de validacion antes de aceptar un upload
- Sesiones: tokens de corta duracion + refresco de un solo uso
- Auditoria: 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:
- Activa la autenticacion en dos pasos (MFA) desde la configuracion de tu cuenta
- Usa una contraseña unica para Brauni que no uses en otros servicios
- No compartas tu sesion -cada profesional debe tener su propia cuenta
- Cerra sesion cuando uses una computadora compartida
Compromiso de transparencia
La seguridad no deberia ser una caja negra. Creemos que los profesionales de la salud merecen entender como se protegen los datos de sus pacientes. Por eso publicamos este articulo y seguiremos compartiendo actualizaciones sobre las medidas de seguridad que implementamos.
Si tenes preguntas sobre seguridad o privacidad, escribinos a soporte@brauni.io. Estamos para ayudarte.
Brauni cumple con los principios de la Ley 25.326 de Proteccion de Datos Personales de Argentina y se alinea con los estandares internacionales de HIPAA para el manejo de informacion de salud protegida (PHI).
Seguir leyendo
Artículos relacionados
Privacidad y Seguridad
Donde se guardan los datos de tus pacientes y por que elegimos AWS
Te mostramos exactamente donde viven los datos clinicos de tus pacientes en la nube de AWS, la infraestructura mas grande y segura del mundo, y por que eso importa para tu practica.
Privacidad y Seguridad
Que es un BAA HIPAA y por que Brauni firmo uno con Google Cloud y AWS
Explicamos que es un Business Associate Agreement (BAA) bajo HIPAA y por que Brauni firmo este acuerdo con Google Cloud y AWS para proteger los datos clinicos de tus pacientes.
Privacidad y Seguridad
Tus datos clinicos no entrenan ninguna IA: como y por que lo garantizamos
Explicamos con transparencia tecnica por que los datos de tus pacientes en Brauni nunca se usan para entrenar modelos de IA. Vertex AI, contratos y arquitectura.