Saltar al contenido principal
Privacidad y Seguridad

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

EEquipo Brauni/5 de diciembre de 2025/9 min de lectura
La mascota de Brauni junto a capas concéntricas de seguridad alrededor de una pantalla con candado, con íconos de llave, huella, ojo y escudo

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:

  1. Bloqueo de cuenta: después de 5 intentos fallidos, la cuenta se bloquea por 15 minutos.
  2. Notificación inmediata: recibís un email avisándote que alguien intentó acceder a tu cuenta.
  3. 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:

CapaQué hace
1. ExtensiónSolo acepta formatos conocidos (PDF, DOCX, imágenes, audio)
2. Bytes mágicosVerifica que el contenido real coincida con la extensión (detecta archivos disfrazados)
3. Inspección profundaEscanea PDFs buscando código JavaScript oculto o acciones automáticas maliciosas
4. Reprocesamiento de imágenesRe-codifica imágenes para eliminar metadatos ocultos (EXIF, GPS, etc.)
5. Límites de tamañoDocumentos: 10 MB max. Audio: 25 MB max. Protección contra bombas de descompresión
6. Nombre seguroElimina 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).

seguridadprivacidadHIPAAdatos de pacientescifrado
Compartir
Seguir leyendo

Artículos relacionados

Escribinos