Modulo de Privacidad, Cifrado y Consentimiento
Identificador: MTS-PRI-001
Version: 3.1.0
Fecha de ultima actualizacion: 2025-12-08
Estado: Aprobado
Autor: SpecQueen
Revisores: Director del Proyecto
1. Historial de Versiones
| Version |
Fecha |
Autor |
Cambios |
| 3.1.0 |
2025-12-08 |
SpecQueen |
Nueva seccion: Privacidad en Busquedas de Catalogos Publicos (INV-015, TECH-CS-001) |
| 3.0.0 |
2025-12-05 |
SpecQueen |
OBS-068: Arquitectura E2E zero-knowledge, incorpora INV-008/009/010/011 |
| 2.1.0 |
2025-12-05 |
SpecQueen |
Iteracion 13: APIs de privacidad, retencion de logs |
| 2.0.0 |
2025-12-01 |
SpecQueen |
ACL8-006 Politica unificada de retencion |
| 1.0.0 |
2025-11-28 |
SpecQueen |
Version inicial |
2. Proposito
Este modulo especifica la arquitectura de privacidad y seguridad de datos de MedTime V1.0, basada en tres principios fundamentales:
- Zero-Knowledge: MedTime no puede ver los datos del paciente
- Control del Paciente: El paciente decide quien accede a sus datos
- Cumplimiento Regulatorio: HIPAA, LGPD, LFPDPPP, NOM-024
Referencia: Este modulo implementa las investigaciones:
- INV-008 - Blind Index y Split-Key
- INV-009 - Consentimiento Explicito
- INV-010 - Anonimizacion
- INV-011 - Auditoria Zero-Knowledge
3. Principio Fundamental
"El paciente tiene control ABSOLUTO sobre quien accede a su informacion y para que proposito. Ni siquiera MedTime puede ver los datos."
ARQUITECTURA ZERO-KNOWLEDGE V1.0:
+------------------+ +------------------+ +------------------+
| DISPOSITIVO | | FIREBASE | | MEDTIME |
| (Usuario) | | (Almacenamiento)| | (Empresa) |
+------------------+ +------------------+ +------------------+
| | | | | |
| Datos en claro | | Blobs cifrados | | Sin acceso a |
| Cifrado local |---->| Solo metadatos | | datos de usuario |
| Master Key local | | No puede leer | | |
| | | | | |
+------------------+ +------------------+ +------------------+
^ |
| |
+--------------- SIN ACCESO A DATOS ----------------+
GARANTIA: Solo el usuario con su Master Key puede descifrar sus datos
4. Arquitectura de Cifrado E2E
4.1. Capas de Cifrado
| Capa |
Algoritmo |
Proposito |
Clave |
| 1. Transporte |
TLS 1.3 |
Datos en transito |
Certificado servidor |
| 2. Aplicacion |
AES-256-GCM |
Datos en reposo |
Master Key usuario |
| 3. Campo |
AES-256-GCM + Blind Index |
Busqueda cifrada |
Derived Key |
4.2. Jerarquia de Claves (INV-008)
JERARQUIA DE CLAVES:
+-------------------+
| USER SECRET |
| (PIN / Password) |
+-------------------+
|
+-------v--------+
| ARGON2ID |
| (derivacion) |
+-------+--------+
|
+-------v--------+
| MASTER KEY |
| (256 bits) |
+-------+--------+
|
+-----------------+-----------------+
| | |
+-----v-----+ +-----v-----+ +-----v-----+
| DATA KEY | | INDEX KEY | | SHARE KEY |
| (cifrado) | | (busqueda)| | (compartir)|
+-----+-----+ +-----+-----+ +-----+-----+
| | |
+-----v-----+ +-----v-----+ +-----v-----+
| Datos | | Blind | | Key |
| cifrados | | Index | | Escrow |
+-----------+ +-----------+ +-----------+
4.3. Master Key Management
| Tier |
Generacion |
Almacenamiento |
Recuperacion |
| Free |
PIN + Argon2id |
Keychain/Keystore local |
Reinicio (pierde datos) |
| Pro |
Firebase + Argon2id |
Keychain + Cloud backup cifrado |
Via Firebase Auth |
| Perfect |
Firebase + MFA + Argon2id |
Keychain + Split-Key |
Recovery Key (24 palabras) |
4.4. Split-Key para Recovery (Perfect - INV-008)
flowchart TD
A[Master Key generada] --> B[Split con Shamir Secret Sharing]
B --> C[Share 1: Almacenado en Keychain]
B --> D[Share 2: Derivado de Recovery Key]
B --> E[Share 3: Almacenado cifrado en Firebase]
Note over C,E: Requiere 2 de 3 shares para reconstruir
F[Usuario pierde dispositivo] --> G{Tiene Recovery Key?}
G -->|Si| H[Share 2 + Share 3 = Master Key]
G -->|No| I[Datos irrecuperables]
H --> J[Usuario recupera acceso]
5. Blind Index para Busqueda Cifrada (INV-008)
5.1. Concepto
El Blind Index permite buscar en datos cifrados sin exponer el contenido.
BLIND INDEX:
Dato original: "Metformina 850mg"
|
v
+-----------------------------------+
| HMAC-SHA256 |
| (dato + INDEX_KEY + salt) |
+-----------------------------------+
|
v
Blind Index: "a7f2b9c3d4e5..." (truncado)
|
v
+-----------------------------------+
| Almacenado junto con blob |
| cifrado del dato original |
+-----------------------------------+
BUSQUEDA:
Query: "Metformina"
-> Generar blind index de query
-> Buscar en indices
-> Retornar blobs cifrados que coinciden
-> Descifrar localmente
5.2. Campos con Blind Index
| Campo |
Tiene Index |
Longitud Index |
Notas |
| Nombre medicamento |
Si |
12 bytes |
Para busqueda |
| Nombre medico |
Si |
12 bytes |
Para busqueda |
| Email usuario |
Si |
16 bytes |
Para login |
| Nombre paciente |
No |
N/A |
Solo cifrado, sin busqueda |
| Dosis |
No |
N/A |
Solo cifrado |
| Notas |
No |
N/A |
Solo cifrado |
5.3. Implementacion
{
"medication_id": "med_abc123",
"name_encrypted": "AES256:base64...",
"name_blind_index": "a7f2b9c3d4e5f6a7",
"dosage_encrypted": "AES256:base64...",
"schedule_encrypted": "AES256:base64...",
"created_at": "2025-12-05T10:30:00Z"
}
6. Consentimiento Explicito (INV-009)
6.1. Marco Regulatorio
| Regulacion |
Requisito |
Implementacion MedTime |
| LFPDPPP (Mexico) |
Consentimiento expreso para datos sensibles |
Firma electronica |
| LGPD (Brasil) |
Consentimiento especifico y destacado |
Checkbox + scroll |
| HIPAA (USA) |
Autorizacion escrita para PHI |
Firma electronica |
| NOM-024-SSA3 |
Consentimiento informado |
Documento descargable |
6.2. Tipos de Consentimiento
| Tipo |
Obligatorio |
Revocable |
Consecuencia de Revocar |
| Terminos de Servicio |
Si |
No* |
No puede usar app |
| Aviso de Privacidad |
Si |
No* |
No puede usar app |
| Tratamiento Datos Salud |
Si |
Si |
Eliminacion de cuenta |
| Notificaciones Push |
No |
Si |
Sin alertas |
| Analisis de Uso |
No |
Si |
Sin mejoras personalizadas |
| Fotos de Tratamiento |
No |
Si |
No puede tomar fotos |
6.3. Proceso de Consentimiento para Datos de Salud
sequenceDiagram
participant U as Usuario
participant A as App MedTime
participant S as Sistema
U->>A: Iniciar onboarding
A->>U: Mostrar aviso de privacidad completo
Note over A,U: Usuario debe hacer scroll hasta el final
A->>U: Habilitar checkbox "He leido y acepto"
U->>A: Marcar checkbox
A->>U: Mostrar pantalla de firma electronica
Note over A,U: Para datos de salud requiere firma adicional
U->>A: Confirmar con PIN/biometria
A->>A: Generar hash del documento
A->>A: Crear firma electronica
S->>S: Registrar consentimiento con metadata
S->>U: Enviar copia por email (PDF)
A->>U: Continuar con onboarding
6.4. Firma Electronica
| Componente |
Contenido |
| Documento |
Hash SHA-256 del texto de consentimiento |
| Timestamp |
Fecha/hora ISO 8601 con timezone |
| Dispositivo |
device_id, modelo, OS version |
| IP |
Hash de IP (no IP en claro) |
| Metodo |
"PIN" o "biometric" o "password" |
| Version |
Version del documento aceptado |
{
"consent_id": "con_abc123",
"type": "health_data",
"document_version": "2.0.0",
"document_hash": "sha256:a7f2b9c3...",
"signature": {
"method": "biometric",
"timestamp": "2025-12-05T10:30:00Z",
"device_id_hash": "sha256:device...",
"ip_hash": "sha256:ip...",
"signed_payload_hash": "sha256:payload..."
},
"revoked": false,
"revoked_at": null
}
7. Anonimizacion de Datos (INV-010)
7.1. Tecnicas de Anonimizacion
| Tecnica |
Uso en MedTime |
Datos Aplicables |
| Hashing |
Identificadores |
user_id, device_id |
| Truncamiento |
Timestamps |
Estadisticas agregadas |
| Generalizacion |
Ubicacion |
Solo pais/region |
| Supresion |
Nombres |
Exports anonimos |
7.2. Datos Anonimizados para Analytics
{
"event": "medication_taken",
"timestamp_truncated": "2025-12-05T10:00:00Z",
"user_id_hash": "sha256:abc123...",
"medication_category": "antidiabetic",
"adherence_rate_bucket": "80-90%",
"region": "LATAM"
}
7.3. Exportacion Anonima (Investigacion)
Para contribuir a investigacion medica (con consentimiento adicional):
| Dato |
Original |
Anonimizado |
| Nombre |
Juan Garcia |
[SUPRIMIDO] |
| Edad |
45 |
40-50 |
| Medicamento |
Metformina 850mg |
Antidiabetico oral |
| Dosis |
2 veces al dia |
2x |
| Adherencia |
87.3% |
80-90% |
| Region |
Ciudad de Mexico |
Mexico |
8. Auditoria Zero-Knowledge (INV-011)
8.1. Principio
El sistema de auditoria registra QUIEN accedio CUANDO y A QUE, pero nunca el contenido de los datos.
AUDITORIA ZERO-KNOWLEDGE:
+--------------------------------------------------+
| LOG DE AUDITORIA |
+--------------------------------------------------+
| timestamp: 2025-12-05T10:30:00Z |
| action: "VIEW_MEDICATION" |
| user_id_hash: "sha256:abc..." |
| resource_id_hash: "sha256:med..." |
| resource_type: "medication" |
| accessor_role: "CS" (Cuidador Solidario) |
| permission_used: "ver_medicamentos" |
| ip_hash: "sha256:ip..." |
| device_id_hash: "sha256:device..." |
+--------------------------------------------------+
| |
| NOTA: No contiene nombre del medicamento, |
| dosis, ni ningun dato de salud en claro |
+--------------------------------------------------+
8.2. Eventos Auditados
| Categoria |
Eventos |
Retencion |
| Autenticacion |
Login, logout, MFA, cambio password |
90 dias |
| Acceso datos |
Ver, editar, eliminar medicamentos |
5 anos |
| Consentimiento |
Otorgar, revocar, actualizar |
10 anos |
| Compartir |
Invitar CS, revocar acceso |
5 anos |
| Exportacion |
Solicitar, descargar datos |
5 anos |
| Administracion |
Cambio tier, eliminar cuenta |
10 anos |
8.3. Politica Unificada de Retencion
| Tipo de Log |
Retencion |
Justificacion |
| Logs operacionales |
90 dias |
Debugging, soporte |
| Logs de seguridad |
2 anos |
Investigacion incidentes |
| Logs de consentimiento |
10 anos |
Cumplimiento legal |
| Logs de acceso PHI |
5 anos |
HIPAA requirement |
| Logs de transacciones |
7 anos |
Cumplimiento fiscal |
8.4. Estructura de Log de Auditoria
{
"log_id": "log_abc123",
"timestamp": "2025-12-05T10:30:00.123Z",
"event_type": "ACCESS_PHI",
"action": "VIEW_MEDICATION",
"actor": {
"user_id_hash": "sha256:actor...",
"role": "CS",
"session_id_hash": "sha256:session..."
},
"target": {
"resource_type": "medication",
"resource_id_hash": "sha256:med...",
"owner_id_hash": "sha256:owner..."
},
"context": {
"ip_hash": "sha256:ip...",
"device_id_hash": "sha256:device...",
"app_version": "1.0.0",
"platform": "iOS"
},
"authorization": {
"permission": "ver_medicamentos",
"granted_at": "2025-11-01T00:00:00Z"
},
"result": "SUCCESS"
}
9. Privacidad en Busquedas de Catalogos Publicos
9.1. Diferencia con Zero-Knowledge
IMPORTANTE: La arquitectura Zero-Knowledge de MedTime protege losdatos del usuario(medicamentos agregados, historial de tomas, recetas, etc.). Sin embargo, lasbusquedas en catalogos publicos operan de forma diferente.
| Aspecto |
Datos del Usuario |
Busquedas en Catalogo |
| Arquitectura |
Zero-Knowledge E2E |
Cliente-Servidor tradicional |
| Cifrado |
AES-256-GCM local |
TLS 1.3 en transito |
| Servidor ve contenido |
NO - Solo blobs cifrados |
SI - Texto de busqueda |
| Justificacion |
Datos sensibles de salud |
Catalogo publico, no es PHI |
9.2. Que Ve el Servidor en Busquedas
Cuando un usuario busca en el catalogo de medicamentos, el servidor recibe:
| Dato |
Visible al Servidor |
Ejemplo |
| Texto de busqueda |
SI |
"metformina 850mg" |
| Timestamp |
SI |
2025-12-08T10:30:00Z |
| Identidad del usuario |
NO |
user_id hasheado para rate-limiting |
| Medicamento seleccionado |
NO |
Seleccion ocurre localmente |
| Si agrego el medicamento |
NO |
Dato cifrado E2E |
sequenceDiagram
participant U as Usuario
participant App as App MedTime
participant S as Servidor
U->>App: Escribe "metformina"
App->>S: POST /api/v1/catalog/search
Note over App,S: {query: "metformina", timestamp}
Note over App,S: user_id hasheado (solo rate-limiting)
S->>S: Buscar en catalogo
S-->>App: Lista de resultados
U->>App: Selecciona "Metformina 850mg"
Note over App: Seleccion LOCAL - servidor no sabe
U->>App: Agregar a mis medicamentos
App->>App: Cifrar con Master Key
App->>S: PUT /api/v1/medications (blob cifrado)
Note over App,S: Servidor recibe blob opaco
9.3. Disclaimer de Privacidad Requerido (INV-015)
Referencia: INV-015 - Investigacion sobre privacidad en busquedas de catalogos
El sistema DEBE mostrar un disclaimer claro al usuario antes de realizar busquedas en el catalogo:
| Momento |
Comportamiento |
| Primera busqueda manual |
Modal con disclaimer + opcion de activar automatica |
| Busqueda automatica habilitada |
Disclaimer aceptado previamente, busqueda directa |
| Busqueda manual posterior |
Texto informativo discreto en UI |
Texto del Disclaimer:
+--------------------------------------------------+
| Aviso de Privacidad - Busqueda en Catalogo |
+--------------------------------------------------+
Cuando buscas medicamentos en nuestro catalogo:
[Icono Check] Tu busqueda se envia a nuestros servidores
[Icono Check] NO sabemos quien eres (busqueda anonima)
[Icono Check] NO vemos que medicamento seleccionas
[Icono Check] NO vemos si lo agregas a tu tratamiento
Tus medicamentos y datos de salud siguen protegidos
con cifrado de extremo a extremo.
[ ] Activar busqueda automatica
(No mostrar este aviso cada vez)
[Entendido, buscar] [Cancelar]
+--------------------------------------------------+
9.4. Regla de 100 Registros - Privacidad por Volumen (TECH-CS-001)
Referencia: TECH-CS-001 seccion 3.2.3.1
Para proteger la privacidad adicional, el servidor implementa la Regla de 100 Registros:
| Aspecto |
Implementacion |
| Resultados minimos |
Siempre retorna 100 registros (padding) |
| Ordenamiento |
Los mas relevantes primero, resto aleatorio |
| Proposito |
Observador no puede inferir interes especifico |
| Rate limiting |
Por IP hasheada, no por usuario |
// Ejemplo de respuesta del servidor
{
"results": [...], // Siempre 100 items
"total_matches": 3, // Coincidencias reales
"padded": true, // Indica que hay padding
"relevance_cutoff": 3 // Primeros 3 son relevantes
}
Beneficio de Privacidad: Un observador de red que intercepte la respuesta no puede determinar si el usuario buscaba "Metformina" (3 resultados reales) o cualquiera de los otros 97 medicamentos en la respuesta.
9.5. Reglas de Negocio - Busquedas en Catalogo
| Regla |
Descripcion |
| RN-PRI-011 |
Busquedas en catalogo publico NO estan cifradas E2E (solo TLS) |
| RN-PRI-012 |
Usuario debe aceptar disclaimer antes de primera busqueda |
| RN-PRI-013 |
Servidor no almacena historial de busquedas por usuario |
| RN-PRI-014 |
Rate limiting por IP hasheada, no por identidad |
| RN-PRI-015 |
Respuestas paddeadas a 100 registros minimo |
| RN-PRI-016 |
Seleccion de medicamento ocurre 100% localmente |
10. Control de Acceso Compartido
10.1. Permisos Granulares para CS
| Permiso |
Codigo |
Descripcion |
Requiere Consentimiento |
| Ver medicamentos |
ver_medicamentos |
Lista de medicamentos |
Si |
| Ver adherencia |
ver_adherencia |
Estadisticas de tomas |
Si |
| Registrar tomas |
registrar_tomas |
Confirmar en nombre del PI |
Si (adicional) |
| Recibir alertas |
recibir_alertas_tomas |
Notificacion de omision |
Si |
| Ver recetas |
ver_recetas |
Recetas digitalizadas |
Si (adicional) |
| Ver citas |
ver_citas |
Agenda medica |
Si (adicional) |
| Ver analisis |
ver_analisis |
Resultados de laboratorio |
Si (adicional) |
10.2. Flujo de Compartir con CS
sequenceDiagram
participant PI as Paciente (PI)
participant A as App MedTime
participant CS as Cuidador Solidario
PI->>A: Ir a Mis Cuidadores > Invitar
A->>PI: Mostrar formulario de invitacion
PI->>A: Ingresar email/telefono del CS
A->>PI: Seleccionar permisos a otorgar
PI->>A: Selecciona: ver_medicamentos, ver_adherencia
A->>PI: Mostrar consentimiento para compartir
Note over A,PI: "Autorizas a [CS] a ver tus medicamentos y adherencia"
PI->>A: Confirmar con PIN/biometria
A->>A: Registrar consentimiento de compartir
A->>CS: Enviar invitacion
CS->>A: Acepta invitacion
A->>A: Crear relacion PI-CS con permisos
A->>PI: Notificar aceptacion
10.3. Revocacion de Acceso
| Accion |
Efecto Inmediato |
Log |
| Revocar permiso individual |
CS pierde acceso a esa categoria |
Si |
| Revocar todos los permisos |
CS desvinculado completamente |
Si |
| PI elimina cuenta |
Todos los CS pierden acceso |
Si |
11. Derechos del Titular (ARCO/LGPD)
11.1. Derecho de Acceso
| Aspecto |
Implementacion |
| Solicitud |
Desde Centro de Privacidad |
| Tiempo respuesta |
Inmediato (descarga local) |
| Formato |
JSON, PDF, o CSV |
| Contenido |
Todos los datos del usuario |
11.2. Derecho de Rectificacion
| Dato |
Rectificable |
Metodo |
| Nombre |
Si |
Editar perfil |
| Email |
Si |
Verificacion requerida |
| Medicamentos |
Si |
Editar medicamento |
| Historial tomas |
No* |
Inmutable por diseno |
*El historial de tomas es inmutable para garantizar integridad clinica
11.3. Derecho de Cancelacion/Eliminacion
flowchart TD
A[Usuario solicita eliminacion] --> B[Mostrar advertencias]
B --> C[Confirmar con PIN + texto SI ELIMINAR]
C --> D{Tier del usuario?}
D -->|Free| E[Eliminar datos locales inmediatamente]
D -->|Pro/Perfect| F[Eliminar datos locales]
F --> G[Marcar cuenta para eliminacion en cloud]
G --> H[Periodo de gracia 30 dias]
H --> I{Usuario cancela?}
I -->|Si| J[Restaurar cuenta]
I -->|No - 30 dias| K[Eliminacion permanente]
E --> L[Cuenta eliminada]
K --> L
L --> M[Log de eliminacion retenido 10 anos]
11.4. Derecho de Oposicion
| Tratamiento |
Oposicion Permitida |
Consecuencia |
| Datos de salud |
Si |
Eliminacion de cuenta |
| Analytics anonimizados |
Si |
Sin personalizacion |
| Notificaciones |
Si |
Sin alertas |
| Marketing |
Si |
Sin comunicaciones |
12. Exportacion de Datos
| Formato |
Contenido |
Uso |
| JSON |
Completo estructurado |
Portabilidad tecnica |
| PDF |
Legible para humanos |
Compartir con medico |
| CSV |
Tabular |
Analisis en Excel |
| FHIR |
HL7 FHIR R4 |
Interoperabilidad |
12.2. Contenido de Exportacion
{
"export_version": "1.0",
"generated_at": "2025-12-05T10:30:00Z",
"user": {
"name": "Juan Garcia",
"email": "juan@example.com",
"role": "PI",
"tier": "Pro",
"created_at": "2025-01-15T00:00:00Z"
},
"medications": [...],
"dose_history": [...],
"prescriptions": [...],
"health_events": [...],
"appointments": [...],
"caregivers": [...],
"consents": [...],
"audit_log_summary": {
"total_logins": 245,
"last_login": "2025-12-05T08:00:00Z",
"data_accesses": 1847
}
}
13. Consentimiento Adicional para Fotos de Tratamiento
13.1. Clarificacion (OBS-037)
| Accion |
Requiere Consentimiento Adicional |
Motivo |
| Tomar foto de tratamiento |
No |
Es dato del propio usuario |
| Almacenar foto cifrada local |
No |
Datos propios, cifrados |
| Sincronizar foto cifrada a cloud |
No |
Cubierto por consentimiento general |
| Compartirfoto con cuidador |
Si |
Tercero accede a datos sensibles |
| Compartirfoto con profesional |
Si |
Tercero accede a datos sensibles |
13.2. Flujo de Compartir Foto
sequenceDiagram
participant PI as Paciente
participant A as App MedTime
participant CS as Cuidador
PI->>A: Seleccionar foto de tratamiento
A->>PI: Opciones: Ver, Eliminar, Compartir
PI->>A: Compartir con CS
A->>PI: Mostrar consentimiento adicional
Note over A,PI: "Autorizas a [CS] a ver esta foto de tratamiento?"
Note over A,PI: "Esta foto contiene informacion sensible de salud"
PI->>A: Confirmar con PIN
A->>A: Registrar consentimiento de compartir foto
A->>A: Generar clave de acceso temporal
A->>CS: Notificar foto disponible
CS->>A: Solicitar acceso a foto
A->>A: Verificar permiso
A->>CS: Enviar foto cifrada + clave temporal
Note over A,CS: Clave expira en 24 horas
14. Centro de Privacidad
14.1. Componentes
| Seccion |
Funcionalidad |
| Mis Consentimientos |
Ver, descargar, revocar consentimientos |
| Mis Datos |
Exportar, ver historial de accesos |
| Quienes Acceden |
Lista de CS con permisos, revocar |
| Eliminar Cuenta |
Proceso de eliminacion con advertencias |
| Historial |
Log de accesos a mis datos |
14.2. Interfaz de Centro de Privacidad
+--------------------------------------------------+
| CENTRO DE PRIVACIDAD |
+--------------------------------------------------+
+--------------------------------------------------+
| [Icono Documento] |
| MIS CONSENTIMIENTOS |
| 5 consentimientos activos |
| [Ver todos >] |
+--------------------------------------------------+
+--------------------------------------------------+
| [Icono Personas] |
| QUIENES ACCEDEN A MIS DATOS |
| 2 cuidadores con acceso |
| [Gestionar >] |
+--------------------------------------------------+
+--------------------------------------------------+
| [Icono Descargar] |
| EXPORTAR MIS DATOS |
| Descarga en JSON, PDF o CSV |
| [Exportar >] |
+--------------------------------------------------+
+--------------------------------------------------+
| [Icono Historial] |
| HISTORIAL DE ACCESOS |
| Ultimos 30 dias |
| [Ver historial >] |
+--------------------------------------------------+
+--------------------------------------------------+
| [Icono Eliminar] ZONA DE PELIGRO |
| Eliminar mi cuenta |
| Esta accion es irreversible |
| [Eliminar cuenta] |
+--------------------------------------------------+
15. Reglas de Negocio
| Regla |
Descripcion |
| RN-PRI-001 |
Todo dato de salud se cifra antes de salir del dispositivo |
| RN-PRI-002 |
Master Key nunca se transmite ni se almacena en servidor |
| RN-PRI-003 |
Consentimiento de datos de salud requiere firma electronica |
| RN-PRI-004 |
Logs de auditoria nunca contienen datos en claro |
| RN-PRI-005 |
Revocar consentimiento de datos de salud elimina la cuenta |
| RN-PRI-006 |
Export incluye todos los datos del usuario |
| RN-PRI-007 |
Eliminacion de cuenta tiene periodo de gracia de 30 dias |
| RN-PRI-008 |
Compartir fotos requiere consentimiento adicional |
| RN-PRI-009 |
Acceso de CS se registra en log de auditoria |
| RN-PRI-010 |
Hash de IP se usa en lugar de IP en claro |
16. Integracion con Otros Modulos
| Modulo |
Integracion |
| MTS-AUTH-001 |
Master Key derivada de credenciales |
| MTS-BCK-001 |
Backup de datos cifrados |
| MTS-ONB-001 |
Flujo de consentimiento inicial |
| MTS-SEC-001 |
Algoritmos de cifrado |
17. Criterios de Aceptacion
17.1. Cifrado
17.2. Consentimiento
17.3. Auditoria
17.4. Derechos ARCO
18. Referencias
Documento generado por SpecQueen - "La privacidad no es una opcion, es un derecho. Esta especificacion lo garantiza."