Seguridad de datos

La información clínica es altamente sensible. Estos son los controles técnicos y organizativos que aplicamos.

Última actualización: 2026-05-23.

Cifrado

  • En tránsito: todas las conexiones usan TLS 1.2+. Los certificados son gestionados por nuestros proveedores de infraestructura (Vercel para el frontend, Railway para el backend, Supabase para la DB).
  • En reposo a nivel de aplicación: los campos clínicos más sensibles se cifran adicionalmente con Fernet (AES-128-CBC + HMAC-SHA256) antes de persistirse en la DB. Cubre: diagnóstico, objetivos de tratamiento, notas clínicas, evoluciones, transcripciones (texto crudo, texto editado y resumen IA).
  • En reposo a nivel de volumen: la base de datos PostgreSQL gestionada por Supabase usa cifrado at-rest del proveedor de infraestructura.
  • Rotación de claves: la clave Fernet de aplicación se almacena en variables de entorno cifradas y no se loguea ni se expone en código fuente.

Autenticación y accesos

  • Contraseñas almacenadas con hashing bcrypt (cost factor 12 en producción), nunca en texto plano.
  • Tokens de sesión JWT firmados con HS256, almacenados como cookies HttpOnly + SameSite=Lax + Secure. Expiración 24h.
  • Verificación de email obligatoria para activar funciones sensibles.
  • Aislamiento estricto de datos entre profesionales — cada query filtra por psychologist_id; un profesional solo puede ver sus propios pacientes y sesiones.
  • Token único por paciente para el portal (portal_token UUID v4), tratado como secret equivalente a contraseña.
  • Rate limiting en endpoints sensibles (login, registro, reset password) vía SlowAPI.

Infraestructura

  • Base de datos PostgreSQL gestionada por Supabase con backups automáticos y point-in-time recovery.
  • Logs estructurados de acceso y auditoría a operaciones sensibles.
  • Separación estricta de ambientes (desarrollo local / producción Vercel + Railway).
  • Headers de seguridad por defecto: X-Content-Type-Options: nosniff, X-Frame-Options: DENY, Referrer-Policy: strict-origin-when-cross-origin, Permissions-Policy: geolocation=(), microphone=(self).

Videollamadas, transcripción y resumen IA

  • Videollamadas: Daily.co con cifrado de medios a través de DTLS-SRTP. Las salas se generan por sesión, con tokens de acceso de corta duración para los participantes.
  • Transcripción: AssemblyAI procesa el audio en tiempo real vía WebSocket. No almacena el audio (solo el texto resultante se persiste, cifrado con Fernet, en nuestra DB). Requiere consentimiento expreso del paciente (Ley 25.326, art. 11).
  • Resumen IA: Anthropic Claude procesa el texto transcrito para generar un resumen clínico estructurado. Por contrato, Anthropic no usa los datos para entrenar sus modelos. Antes de mandar el texto, se aplican filtros para no incluir nombre del paciente ni identificadores en el prompt.
  • Retención: el texto crudo de la transcripción se borra automáticamente a los 15 días. El resumen, aprobado por el profesional, se conserva como parte de la historia clínica (Ley 26.529 obliga 10 años).

Cumplimiento normativo

  • Ley 25.326 (Protección de Datos Personales, Argentina) — consentimiento informado, derechos del titular, transferencias internacionales con consentimiento expreso.
  • Ley 26.529 (Derechos del Paciente) — confidencialidad de historia clínica, plazos de retención.
  • Códigos de ética profesionales (FEPRA y Colegios Provinciales) — secreto profesional. Los sub-procesadores (AssemblyAI, Anthropic) están sujetos a sus propios acuerdos de confidencialidad. Ver detalles en Política de privacidad §4.

Respuesta a incidentes

Ante un incidente de seguridad notificaremos a los profesionales afectados dentro de las 72 horas de haberlo detectado, indicando alcance, datos comprometidos y pasos recomendados. Mantenemos runbook interno con escalado y postmortem público anonimizado.

Reporte responsable de vulnerabilidades

Si detectás una vulnerabilidad, escribinos a seguridad@getareapsi.com. Valoramos la divulgación responsable y respondemos rápido. Por ahora no operamos un programa formal de bug bounty con recompensa monetaria, pero te damos crédito público (con tu permiso) en un hall of fame.