- Investigacion: Auditoria en Arquitectura Zero-Knowledge
- 1. Resumen Ejecutivo
- 2. Contexto y Problema
- 3. Marco Regulatorio
- 3.1. Requisitos LFPDPPP (Mexico)
- 3.1.1. Requisitos de Auditoria (Art. 9, 19, 20)
- 3.1.2. Derechos ARCO y Auditoria
- 3.1.3. Requisitos de Retencion LFPDPPP 2025
- 3.2. Requisitos HIPAA (Futuro - Expansion USA)
- 3.2.1. HIPAA Security Rule - Audit Controls (45 CFR 164.312(b))
- 3.2.2. Auditoria sin Exposicion de PHI
- 3.3. Requisitos LGPD (Futuro - Expansion Brasil)
- 3.3.1. Principios de Auditoria LGPD
- 3.3.2. DSAR (Data Subject Access Request) bajo LGPD
- 4. Tipos de Eventos Auditables
- 4.1. Eventos de Sistema (sin PHI)
- 4.1.1. Eventos de Autenticacion
- 4.1.2. Eventos de Sistema
- 4.2. Eventos de Usuario (metadata)
- 4.2.1. Operaciones CRUD sobre Datos Cifrados
- 4.2.2. Eventos de Comparticion
- 4.3. Eventos Regulatorios (ARCO/DSR)
- 4.3.1. Solicitudes de Derechos ARCO
- 4.3.2. Eventos de Consentimiento
- 5. Estrategias de Auditoria Zero-Knowledge
- 5.1. Audit Logs Cifrados
- 5.1.1. Concepto
- 5.1.2. Implementacion: Public Key Encryption for Audit Logs
- 5.1.3. Ventajas y Desventajas
- 5.1.4. Recomendacion MedTime
- 5.2. Hashes de Integridad
- 5.2.1. Concepto
- 5.2.2. Implementacion: Hash Chain (Blockchain-lite)
- 5.2.3. Publicacion de Anchors
- 5.3. Timestamps Verificables
- 5.3.1. RFC 3161 Timestamps
- 5.3.2. Proveedores TSA Recomendados
- 5.4. Counters Ciegos
- 5.4.1. Concepto
- 5.4.2. Aplicacion en MedTime
- 5.5. Auditor Tercero de Confianza
- 5.5.1. Modelo de Auditor Externo
- 5.5.2. Requisitos del Auditor Tercero
- 5.5.3. Flujo de Auditoria con Tercero
- 6. Manejo de Solicitudes ARCO
- 6.1. Acceso (El Usuario Descifra sus Propios Datos)
- 6.1.1. Flujo de Solicitud de Acceso
- 6.1.2. Contenido del Paquete ARCO-Acceso
- 6.1.3. Audit Log de Acceso ARCO
- 6.2. Rectificacion
- 6.2.1. Flujo de Rectificacion en Zero-Knowledge
- 6.2.2. Consideraciones Legales de Rectificacion
- 6.3. Cancelacion (Derecho al Olvido)
- 6.3.1. Tipos de Cancelacion
- 6.3.2. Proceso de Cancelacion Auditable
- 6.3.3. Datos Retenidos Post-Cancelacion
- 6.4. Oposicion
- 6.4.1. Escenarios de Oposicion en MedTime
- 6.4.2. Audit Log de Oposicion
- 7. Implementacion Recomendada V1.0
- 7.1. Que Auditar
- 7.1.1. Matriz de Eventos y Nivel de Detalle
- 7.1.2. Esquema de Audit Log V1.0
- 7.1.3. Catalogo de Tipos de Evento
- 7.2. Como Almacenar
- 7.2.1. Arquitectura de Almacenamiento
- 7.2.2. Esquema de Base de Datos
- 7.2.3. Seguridad del Almacenamiento
- 7.3. Retencion
- 7.3.1. Politica de Retencion por Tipo de Evento
- 7.3.2. Proceso de Archivado
- 7.3.3. Destruccion Segura
- 8. Conclusiones
- 9. Referencias
Investigacion: Auditoria en Arquitectura Zero-Knowledge¶
Identificador: INV-011 Version: 1.0.0 Fecha: 2025-12-05 Autor: KnowledgeDrone, ComplianceDrone Relacionado: INV-001, INV-008 Estado: Completado Tipo: Investigacion de Seguridad, Cumplimiento y Privacidad
1. Resumen Ejecutivo¶
Esta investigacion aborda uno de los desafios mas complejos en sistemas de privacidad: como auditar un sistema donde el servidor no puede ver los datos del usuario. MedTime implementa una arquitectura zero-knowledge donde los datos PHI estan cifrados E2E y el servidor almacena "blobs opacos" que no puede descifrar.
1.1. Paradoja Central¶
PARADOJA DE AUDITORIA ZERO-KNOWLEDGE:
Las regulaciones exigen:
- Audit logs detallados de acceso a datos sensibles
- Trazabilidad completa de quien accedio que y cuando
- Capacidad de investigar incidentes de seguridad
Zero-Knowledge garantiza:
- El servidor NO puede ver el contenido de los datos
- Solo el paciente puede descifrar su informacion
- El servidor solo ve "blobs" cifrados
PREGUNTA: Como auditar algo que no puedes ver?
1.2. Conclusion Principal¶
| Estrategia | Viabilidad | Cumplimiento | Privacidad |
|---|---|---|---|
| Audit logs de metadata | Alta | Cumple LFPDPPP/HIPAA | Preservada |
| Hashes de integridad | Alta | Cumple | Preservada |
| Timestamps verificables | Alta | Cumple | Preservada |
| Audit logs cifrados | Media | Cumple | Maxima |
| Counters ciegos | Alta | Parcial | Preservada |
| Auditor tercero | Baja | Cumple | Reducida |
Recomendacion V1.0:Implementar auditoria basada enmetadata + hashes de integridad + timestamps verificables, sin exponer contenido PHI.
2. Contexto y Problema¶
2.1. Arquitectura Zero-Knowledge de MedTime (Referencia INV-008)¶
Segun la investigacion INV-008: Cifrado de Perfil e Identificacion, MedTime implementa:
ARQUITECTURA ACTUAL (V1.0):
+------------------+ +--------------------+ +------------------+
| CLIENTE | | SERVIDOR | | CLIENTE |
| (Paciente) | | (MedTime) | | (Receptor) |
+------------------+ +--------------------+ +------------------+
| | | | | |
| - Master Key | | - Blind Index | | - Clave Publica |
| - Recovery Key | | (email_hash) | | - Clave Privada |
| - Clave Privada | | - Blob cifrado | | |
| | | (NO descifrable) | | |
| PUEDE VER: | | PUEDE VER: | | PUEDE VER: |
| - Todos sus datos| | - Metadata | | - Datos compart. |
| | | - Timestamps | | descifrados |
| | | - Tamano de blobs | | |
| | | - Hashes | | |
+------------------+ +--------------------+ +------------------+
2.1.1. Componentes criticos de INV-008¶
| Componente | Descripcion | Relevancia para Auditoria |
|---|---|---|
| Blind Index | HMAC-SHA256 del email para busqueda | Permite identificar usuario sin ver email |
| Split-Key (Shamir 2-of-3) | Clave dividida en 3 partes | Recuperacion auditable sin exponer clave |
| Argon2id KDF | Derivacion de clave robusta | Previene ataques de fuerza bruta |
| AES-256-GCM | Cifrado autenticado | Tag de autenticacion para integridad |
2.2. El Problema de Auditoria¶
ESCENARIO: Incidente de seguridad - acceso no autorizado sospechado
SIN ZERO-KNOWLEDGE:
1. Revisar audit log -> "Usuario X accedio a medicamento Metformina 500mg"
2. Verificar si acceso fue legitimo
3. Investigacion completa
CON ZERO-KNOWLEDGE:
1. Revisar audit log -> "Usuario X accedio a blob ID 7f8a9b..."
2. No sabemos QUE datos fueron accedidos
3. Solo sabemos CUANDO y por QUIEN
PREGUNTA: Es esto suficiente para cumplimiento regulatorio?
2.3. Tipos de Informacion Disponible¶
En una arquitectura zero-knowledge, el servidor tiene acceso a:
| Tipo | Descripcion | Ejemplo |
|---|---|---|
| Metadata estructural | Informacion sobre la estructura de datos | "Usuario tiene 5 entradas de medicamentos" |
| Metadata temporal | Timestamps de operaciones | "Ultima modificacion: 2025-12-05 10:30:00" |
| Metadata de tamano | Tamano de blobs cifrados | "Blob de 2.3KB" |
| Identificadores ciegos | Hashes no reversibles | "email_hash: 7f8a9b2c..." |
| Hashes de integridad | Verificacion sin revelar contenido | "SHA-256 del blob: abc123..." |
| Contadores | Numeros sin contexto | "Operaciones de escritura: 47" |
3. Marco Regulatorio¶
3.1. Requisitos LFPDPPP (Mexico)¶
La Ley Federal de Proteccion de Datos Personales en Posesion de los Particulares (LFPDPPP 2025) establece requisitos especificos de auditoria:
3.1.1. Requisitos de Auditoria (Art. 9, 19, 20)¶
| Requisito | Descripcion | Aplicacion Zero-Knowledge |
|---|---|---|
| Trazabilidad | Registro de quien accede a datos personales | Cumple: Registro de user_id + timestamp |
| Responsabilidad | Documentar medidas de seguridad implementadas | Cumple: Documentar arquitectura E2E |
| Control de acceso | Registrar intentos de acceso exitosos y fallidos | Cumple: Metadata de autenticacion |
| Integridad | Garantizar que datos no han sido alterados | Cumple: Hashes de integridad |
| Retencion | Conservar registros por periodo definido | Cumple: Logs de metadata por 5 anos |
3.1.2. Derechos ARCO y Auditoria¶
DERECHOS ARCO EN ARQUITECTURA ZERO-KNOWLEDGE:
ACCESO:
- El usuario descifra sus propios datos
- Servidor proporciona blob cifrado
- Audit log: "Usuario X solicito acceso a sus datos"
RECTIFICACION:
- Usuario descifra, modifica, re-cifra
- Servidor recibe nuevo blob
- Audit log: "Usuario X actualizo blob ID Y"
CANCELACION:
- Usuario solicita eliminacion
- Servidor elimina blob y metadata asociada
- Audit log: "Usuario X elimino blob ID Y"
OPOSICION:
- Usuario revoca consentimiento de comparticion
- Servidor revoca tokens de acceso
- Audit log: "Usuario X revoco acceso a blob ID Y para receptor Z"
3.1.3. Requisitos de Retencion LFPDPPP 2025¶
| Tipo de Registro | Retencion Minima | Notas |
|---|---|---|
| Logs de acceso | 5 anos | Desde ultima interaccion |
| Logs de consentimiento | Duracion del tratamiento + 5 anos | Para demostrar base legal |
| Logs de ARCO | 5 anos | Desde solicitud |
| Logs de incidentes | 10 anos | Recomendacion de la Secretaria |
Fuente: Mexico Privacy Law (LFPDPPP): A 2025 Guide to Compliance
3.2. Requisitos HIPAA (Futuro - Expansion USA)¶
3.2.1. HIPAA Security Rule - Audit Controls (45 CFR 164.312(b))¶
La norma HIPAA requiere implementar "hardware, software, and/or procedural mechanisms that record and examine activity in information systems that contain or use electronic protected health information (ePHI)."
| Requisito HIPAA | Descripcion | Aplicacion Zero-Knowledge |
|---|---|---|
| User Audit Trail | Identificar usuarios que acceden | Cumple: user_id en todos los logs |
| System Audit Trail | Registrar dispositivos, IP, timestamps | Cumple: Metadata de sistema |
| Application Audit Trail | Registrar acciones dentro de la app | Parcial: Acciones sin contenido |
| Tamper-proof logs | Logs inmutables | Cumple: Hash chain + WORM storage |
| 6 years retention | Retencion minima | Cumple: Configurable |
3.2.2. Auditoria sin Exposicion de PHI¶
EJEMPLO DE AUDIT LOG HIPAA-COMPLIANT EN ZERO-KNOWLEDGE:
{
"event_id": "evt_2025120510300001",
"timestamp": "2025-12-05T10:30:00.000Z",
"event_type": "DATA_ACCESS",
"user_id": "usr_7f8a9b2c", // Blind index del usuario
"session_id": "ses_abc123",
"device_id": "dev_xyz789",
"ip_address": "192.168.1.100", // O hash del IP
"action": "READ",
"resource_type": "MEDICATION_BLOB",
"resource_id": "blob_def456", // ID del blob, no contenido
"resource_hash": "sha256:abc123...", // Hash para integridad
"result": "SUCCESS",
"metadata": {
"blob_size_bytes": 2048,
"encryption_version": "1.0",
"key_version": 3
}
}
NOTA: En ningun momento se registra:
- Nombre del medicamento
- Dosis
- Frecuencia
- Ningún dato PHI
Fuente: HIPAA Audit Logs: Complete Requirements for Healthcare Compliance in 2025
3.3. Requisitos LGPD (Futuro - Expansion Brasil)¶
3.3.1. Principios de Auditoria LGPD¶
La Lei Geral de Protecao de Dados establece:
| Principio LGPD | Aplicacion a Auditoria | Implementacion Zero-Knowledge |
|---|---|---|
| Transparencia | Usuario puede solicitar logs de acceso | Proporcionar logs de metadata |
| Seguranca | Proteger logs de auditoria | Cifrar logs, hash chain |
| Responsabilizacao | Demostrar cumplimiento | Audit trail inmutable |
| Minimizacao | Solo datos necesarios en logs | No incluir PHI en logs |
3.3.2. DSAR (Data Subject Access Request) bajo LGPD¶
FLUJO DSAR EN ZERO-KNOWLEDGE:
1. Usuario solicita copia de todos sus datos
-> Audit log: "DSAR recibido de usuario X"
2. Sistema recopila:
a) Blobs cifrados (usuario descifra)
b) Metadata de processing
c) Logs de acceso (sin PHI)
d) Consentimientos registrados
3. Paquete DSAR:
- encrypted_data.zip (solo usuario descifra)
- access_logs.json (metadata visible)
- consent_records.json (datos de consentimiento)
- processing_info.json (como se procesan datos)
4. Audit log: "DSAR completado para usuario X, entregado via [canal]"
Fuente: How Does GDPR Impact Log Management?
4. Tipos de Eventos Auditables¶
4.1. Eventos de Sistema (sin PHI)¶
Estos eventos son completamente seguros de registrar sin comprometer privacidad:
4.1.1. Eventos de Autenticacion¶
| Evento | Datos Registrados | No Registrar |
|---|---|---|
| LOGIN_SUCCESS | user_hash, timestamp, device_id, IP, method | nombre, email real |
| LOGIN_FAILED | user_hash (si existe), timestamp, IP, razon | contrasena intentada |
| LOGOUT | session_id, timestamp, tipo (voluntario/timeout) | - |
| MFA_CHALLENGE | user_hash, method, timestamp | codigo enviado |
| MFA_SUCCESS | user_hash, method, timestamp | codigo ingresado |
| MFA_FAILED | user_hash, method, timestamp, intentos | - |
| PASSWORD_CHANGE | user_hash, timestamp, success | nueva contrasena |
| RECOVERY_INITIATED | user_hash, method, timestamp | recovery key |
| RECOVERY_SUCCESS | user_hash, timestamp | - |
| SESSION_CREATED | session_id, user_hash, device, expiry | - |
| SESSION_REVOKED | session_id, reason, timestamp | - |
4.1.2. Eventos de Sistema¶
| Evento | Datos Registrados | No Registrar |
|---|---|---|
| SYNC_STARTED | user_hash, device_id, timestamp | - |
| SYNC_COMPLETED | user_hash, items_synced_count, duration | contenido |
| SYNC_CONFLICT | user_hash, blob_id, resolution | datos conflictivos |
| KEY_ROTATION | user_hash, old_key_version, new_key_version | claves |
| DEVICE_REGISTERED | user_hash, device_id, platform, timestamp | - |
| DEVICE_REMOVED | user_hash, device_id, timestamp | - |
| APP_VERSION | user_hash, version, platform | - |
| ERROR_OCCURRED | error_code, component, timestamp | stack trace con PHI |
4.2. Eventos de Usuario (metadata)¶
Eventos relacionados con acciones del usuario sobre sus datos:
4.2.1. Operaciones CRUD sobre Datos Cifrados¶
PATRON DE LOGGING PARA OPERACIONES CRUD:
CREATE:
{
"event": "DATA_CREATED",
"user_hash": "usr_7f8a9b2c",
"resource_type": "MEDICATION", // Tipo, no contenido
"resource_id": "blob_new123",
"timestamp": "2025-12-05T10:30:00Z",
"encrypted_size": 1024,
"metadata": {
"encryption_algo": "AES-256-GCM",
"key_version": 3
}
}
// NO registrar: nombre medicamento, dosis, etc.
READ:
{
"event": "DATA_READ",
"user_hash": "usr_7f8a9b2c",
"resource_type": "MEDICATION",
"resource_id": "blob_def456",
"timestamp": "2025-12-05T11:00:00Z",
"access_type": "FULL" // o "PARTIAL", "METADATA_ONLY"
}
// NO registrar: que datos fueron leidos
UPDATE:
{
"event": "DATA_UPDATED",
"user_hash": "usr_7f8a9b2c",
"resource_type": "MEDICATION",
"resource_id": "blob_def456",
"timestamp": "2025-12-05T11:30:00Z",
"old_hash": "sha256:abc123...",
"new_hash": "sha256:def456...",
"size_delta": +256 // bytes
}
// NO registrar: que campos cambiaron
DELETE:
{
"event": "DATA_DELETED",
"user_hash": "usr_7f8a9b2c",
"resource_type": "MEDICATION",
"resource_id": "blob_def456",
"timestamp": "2025-12-05T12:00:00Z",
"deletion_type": "SOFT" // o "HARD", "SCHEDULED"
}
// NO registrar: contenido eliminado
4.2.2. Eventos de Comparticion¶
| Evento | Datos Registrados | No Registrar |
|---|---|---|
| SHARE_INITIATED | sender_hash, recipient_hash, resource_count, timestamp | recursos especificos |
| SHARE_ACCEPTED | share_id, recipient_hash, timestamp | - |
| SHARE_DECLINED | share_id, recipient_hash, timestamp | razon |
| SHARE_REVOKED | share_id, sender_hash, timestamp | - |
| SHARE_EXPIRED | share_id, expiry_time | - |
| SHARE_ACCESSED | share_id, recipient_hash, timestamp | datos accedidos |
4.3. Eventos Regulatorios (ARCO/DSR)¶
Eventos especificos para cumplimiento regulatorio:
4.3.1. Solicitudes de Derechos ARCO¶
EVENTOS ARCO AUDITABLES:
ARCO_ACCESS_REQUEST:
{
"event": "ARCO_REQUEST",
"type": "ACCESS",
"user_hash": "usr_7f8a9b2c",
"timestamp": "2025-12-05T09:00:00Z",
"request_id": "arco_req_001",
"channel": "IN_APP", // o "EMAIL", "WRITTEN"
"status": "RECEIVED"
}
ARCO_ACCESS_FULFILLED:
{
"event": "ARCO_FULFILLED",
"type": "ACCESS",
"request_id": "arco_req_001",
"timestamp": "2025-12-05T09:30:00Z",
"delivery_method": "IN_APP_DOWNLOAD",
"data_categories_included": ["MEDICATIONS", "PROFILE", "LOGS"],
"encrypted_package_hash": "sha256:xyz789..."
}
ARCO_RECTIFICATION:
{
"event": "ARCO_REQUEST",
"type": "RECTIFICATION",
"user_hash": "usr_7f8a9b2c",
"timestamp": "2025-12-05T10:00:00Z",
"request_id": "arco_req_002",
"affected_resources_count": 2, // cuantos, no cuales
"status": "PROCESSING"
}
ARCO_CANCELLATION:
{
"event": "ARCO_REQUEST",
"type": "CANCELLATION",
"user_hash": "usr_7f8a9b2c",
"timestamp": "2025-12-05T11:00:00Z",
"request_id": "arco_req_003",
"scope": "FULL_ACCOUNT", // o "PARTIAL"
"retention_period_days": 30,
"status": "SCHEDULED"
}
4.3.2. Eventos de Consentimiento¶
| Evento | Datos Registrados | Retencion |
|---|---|---|
| CONSENT_GRANTED | user_hash, purpose, timestamp, version | Duracion + 5 anos |
| CONSENT_WITHDRAWN | user_hash, purpose, timestamp | Duracion + 5 anos |
| CONSENT_EXPIRED | user_hash, purpose, expiry_date | 5 anos |
| PRIVACY_NOTICE_ACCEPTED | user_hash, version, timestamp | Duracion + 5 anos |
| TERMS_ACCEPTED | user_hash, version, timestamp | Duracion + 5 anos |
5. Estrategias de Auditoria Zero-Knowledge¶
5.1. Audit Logs Cifrados¶
5.1.1. Concepto¶
Los audit logs pueden cifrarse de forma que solo auditores autorizados puedan leerlos, mientras el servidor no puede ver el contenido.
flowchart TD
A[Evento ocurre] --> B[Generar log entry]
B --> C{Contiene PHI?}
C -->|No| D[Almacenar en plaintext]
C -->|Si| E[Cifrar con clave auditor]
E --> F[Almacenar cifrado]
D --> G[Hash chain]
F --> G
G --> H[Almacenar hash en blockchain o WORM]
I[Auditor autorizado] --> J[Solicitar logs]
J --> K[Descifrar con clave auditor]
K --> L[Revisar contenido]
5.1.2. Implementacion: Public Key Encryption for Audit Logs¶
Basado en investigacion de University of Texas - Building an Encrypted and Searchable Audit Log:
ARQUITECTURA DE AUDIT LOGS CIFRADOS:
1. GENERACION DE CLAVES:
- Auditor genera par de claves (pub_audit, priv_audit)
- pub_audit se distribuye a todos los clientes
- priv_audit se guarda en HSM
2. CREACION DE ENTRY:
log_entry = {
"timestamp": "2025-12-05T10:30:00Z",
"event": "DATA_ACCESS",
"user_id": "real_user_email@domain.com", // Dato sensible
"resource": "Medicamento: Metformina 500mg" // PHI
}
// Cifrar entry
encrypted_entry = Encrypt(pub_audit, log_entry)
// Almacenar
store(encrypted_entry)
3. BUSQUEDA (sin descifrar todo):
- Auditor crea "search capability" para keyword
- Sistema busca sobre indices cifrados
- Solo entries relevantes se descifran
4. ACCESO:
- Solo auditor con priv_audit puede descifrar
- Servidor nunca ve contenido de logs
5.1.3. Ventajas y Desventajas¶
| Aspecto | Ventaja | Desventaja |
|---|---|---|
| Privacidad | Logs con PHI sin exposicion | Complejidad criptografica |
| Cumplimiento | Trazabilidad completa | Requiere auditor externo |
| Performance | Busqueda sobre cifrado | Overhead de cifrado |
| Disponibilidad | N/A | Single point of failure en clave |
5.1.4. Recomendacion MedTime¶
Para V1.0: No implementar audit logs cifrados para PHI. Mantener logs de metadata unicamente.
Para V2.0+: Evaluar implementacion con auditor tercero certificado (ver seccion 4.5).
5.2. Hashes de Integridad¶
5.2.1. Concepto¶
En lugar de registrar el contenido, se registra un hash criptografico que permite verificar integridad sin revelar datos.
EJEMPLO:
Usuario modifica medicamento:
- Antes: hash_before = SHA-256(blob_cifrado_antes)
- Despues: hash_after = SHA-256(blob_cifrado_despues)
Audit log:
{
"event": "DATA_MODIFIED",
"resource_id": "blob_123",
"hash_before": "sha256:abc123...",
"hash_after": "sha256:def456...",
"timestamp": "2025-12-05T10:30:00Z"
}
VERIFICACION DE INTEGRIDAD:
1. Obtener blob actual
2. Calcular hash
3. Comparar con ultimo hash_after en logs
4. Si coincide: datos no han sido alterados fuera de sistema
5.2.2. Implementacion: Hash Chain (Blockchain-lite)¶
Basado en Cossack Labs - Audit Logs Security:
ESTRUCTURA DE HASH CHAIN:
Entry[0]:
{
"sequence": 0,
"timestamp": "2025-12-05T00:00:00Z",
"event_hash": SHA-256(event_data),
"prev_hash": "GENESIS",
"chain_hash": SHA-256(sequence + timestamp + event_hash + prev_hash)
}
Entry[1]:
{
"sequence": 1,
"timestamp": "2025-12-05T00:01:00Z",
"event_hash": SHA-256(event_data),
"prev_hash": Entry[0].chain_hash,
"chain_hash": SHA-256(sequence + timestamp + event_hash + prev_hash)
}
Entry[N]:
{
"sequence": N,
"timestamp": "...",
"event_hash": SHA-256(event_data),
"prev_hash": Entry[N-1].chain_hash,
"chain_hash": SHA-256(...)
}
PROPIEDADES:
- Si se modifica Entry[K], todos los hashes desde K+1 se invalidan
- Deteccion de eliminacion: secuencia rota
- Deteccion de insercion: timestamps anomalos
5.2.3. Publicacion de Anchors¶
Para prevenir truncacion, se publican "anchors" periodicos:
| Metodo | Descripcion | Frecuencia | Costo |
|---|---|---|---|
| Blockchain publica | Hash en Ethereum/Bitcoin | Diario | $1-50/tx |
| Timestamping Authority | RFC 3161 TSA | Por batch | $0.01-0.10/ts |
| WORM Storage | Write-once media | Continuo | $$/GB |
| Multi-party witness | Varios terceros firman | Diario | Bajo |
Recomendacion MedTime V1.0: Timestamping Authority RFC 3161 con batches cada hora.
5.3. Timestamps Verificables¶
5.3.1. RFC 3161 Timestamps¶
FLUJO DE TIMESTAMP VERIFICABLE:
1. Servidor genera digest de batch de logs:
batch_hash = SHA-256(log_entries[1..N])
2. Solicitar timestamp a TSA:
timestamp_token = TSA.sign(batch_hash, current_time)
3. Almacenar token:
{
"batch_id": "batch_20251205_1030",
"entries_from": 10001,
"entries_to": 10500,
"batch_hash": "sha256:xyz...",
"timestamp_token": "base64:...",
"tsa_certificate": "...",
"timestamp": "2025-12-05T10:30:00Z"
}
4. Verificacion posterior:
- Recalcular batch_hash de entries
- Verificar firma del TSA
- Confirmar timestamp es correcto
5.3.2. Proveedores TSA Recomendados¶
| Proveedor | Cumplimiento | Costo | Disponibilidad |
|---|---|---|---|
| DigiCert | eIDAS, RFC 3161 | $0.05/ts | 99.99% |
| GlobalSign | eIDAS, RFC 3161 | $0.03/ts | 99.9% |
| Entrust | eIDAS, RFC 3161 | $0.07/ts | 99.99% |
5.4. Counters Ciegos¶
5.4.1. Concepto¶
Registrar contadores de eventos sin contexto detallado, suficiente para detectar anomalias sin exponer PHI.
EJEMPLOS DE COUNTERS CIEGOS:
Por usuario (agregado mensual):
{
"user_hash": "usr_7f8a9b2c",
"period": "2025-12",
"counters": {
"logins": 47,
"medication_views": 156,
"medication_creates": 3,
"medication_updates": 12,
"medication_deletes": 1,
"shares_initiated": 2,
"shares_received": 0,
"sync_events": 89,
"errors": 3
}
}
// NO incluye:
// - Que medicamentos
// - Cuando exactamente
// - Con quien compartio
DETECCION DE ANOMALIAS:
- Si un usuario normalmente tiene 50 medication_views/mes
- Y de repente tiene 5000
- Posible exfiltracion de datos
- Investigar SIN ver contenido
5.4.2. Aplicacion en MedTime¶
| Counter | Proposito | Umbral de Anomalia |
|---|---|---|
| login_attempts | Detectar brute force | >10/hora |
| data_reads | Detectar exfiltracion | >100/hora |
| data_exports | Detectar bulk export | >5/dia |
| share_events | Detectar comparticion masiva | >10/dia |
| failed_decryptions | Detectar ataques a claves | >5/sesion |
5.5. Auditor Tercero de Confianza¶
5.5.1. Modelo de Auditor Externo¶
flowchart TD
subgraph "MedTime (No ve datos)"
A[Servidor] --> B[Logs cifrados]
A --> C[Metadata]
end
subgraph "Auditor Tercero Certificado"
D[HSM con clave] --> E[Descifra logs]
E --> F[Analisis]
F --> G[Reportes anonimizados]
end
subgraph "Regulador"
H[Solicitud de auditoria]
I[Recibe reportes]
end
B --> D
C --> D
G --> I
H --> D
5.5.2. Requisitos del Auditor Tercero¶
| Requisito | Descripcion | Verificacion |
|---|---|---|
| Certificacion | ISO 27001, SOC 2 Type II | Certificado vigente |
| Independencia | Sin relacion comercial con MedTime | Declaracion jurada |
| Seguridad | HSM FIPS 140-2 Level 3 | Certificado hardware |
| Jurisdiccion | Misma jurisdiccion que datos | Contrato legal |
| Confidencialidad | NDA con penalizaciones | Contrato |
5.5.3. Flujo de Auditoria con Tercero¶
1. SOLICITUD DE AUDITORIA (Regulador o Paciente):
- Especificar alcance (fechas, eventos)
- Justificacion legal
- Autorizacion del paciente (si aplica)
2. PREPARACION (MedTime):
- Extraer logs cifrados del periodo
- Generar paquete con metadata
- Enviar a Auditor Tercero
3. ANALISIS (Auditor):
- Descifrar logs en ambiente seguro
- Analizar segun criterios solicitados
- Generar reporte anonimizado
4. ENTREGA (Auditor -> Solicitante):
- Reporte sin PHI identificable
- Hallazgos y conclusiones
- Destruir copias descifradas
5. REGISTRO (MedTime):
- Log de que auditoria ocurrio
- Hash del reporte
- Sin contenido del reporte
6. Manejo de Solicitudes ARCO¶
6.1. Acceso (El Usuario Descifra sus Propios Datos)¶
6.1.1. Flujo de Solicitud de Acceso¶
sequenceDiagram
participant U as Usuario
participant A as App MedTime
participant S as Servidor
participant L as Sistema de Logs
U->>A: Solicitar mis datos
A->>S: GET /api/v1/arco/access
S->>L: Log: ARCO_ACCESS_REQUEST
S->>S: Recopilar blobs cifrados
S->>S: Recopilar metadata
S->>S: Recopilar logs de acceso
S->>A: Paquete cifrado + metadata
A->>A: Descifrar con clave usuario
A->>U: Mostrar datos
L->>L: Log: ARCO_ACCESS_FULFILLED
6.1.2. Contenido del Paquete ARCO-Acceso¶
{
"arco_request_id": "arco_acc_001",
"generated_at": "2025-12-05T10:30:00Z",
"data_controller": "MedTime Technologies",
"data_subject_hash": "usr_7f8a9b2c",
"encrypted_personal_data": {
"profile": "base64_encrypted_blob...",
"medications": ["blob1...", "blob2..."],
"medical_events": ["blob3...", "blob4..."],
"notes": ["blob5..."]
},
"metadata": {
"account_created": "2024-01-15T08:00:00Z",
"last_login": "2025-12-05T09:00:00Z",
"total_logins": 547,
"devices_registered": 2,
"tier": "Pro",
"storage_used_bytes": 15360000
},
"access_logs": [
{
"timestamp": "2025-12-04T10:00:00Z",
"event": "DATA_READ",
"resource_type": "MEDICATION",
"result": "SUCCESS"
}
// ... ultimos 90 dias
],
"consent_records": [
{
"purpose": "MEDICATION_REMINDERS",
"granted_at": "2024-01-15T08:05:00Z",
"status": "ACTIVE"
}
],
"third_party_sharing": [
{
"recipient_type": "HEALTHCARE_PROVIDER",
"recipient_hash": "prov_abc123",
"shared_at": "2025-06-01T10:00:00Z",
"revoked_at": null
}
]
}
6.1.3. Audit Log de Acceso ARCO¶
{
"event_id": "evt_arco_001",
"event_type": "ARCO_ACCESS_FULFILLED",
"timestamp": "2025-12-05T10:30:00Z",
"user_hash": "usr_7f8a9b2c",
"request_id": "arco_acc_001",
"delivery_method": "IN_APP_DOWNLOAD",
"package_hash": "sha256:package_integrity_hash",
"data_categories": ["PROFILE", "MEDICATIONS", "LOGS", "CONSENTS"],
"items_count": 156,
"response_time_ms": 3500
}
6.2. Rectificacion¶
6.2.1. Flujo de Rectificacion en Zero-Knowledge¶
PROBLEMA: Usuario quiere corregir un dato erroneo
Servidor NO puede verificar si el dato es correcto
SOLUCION: El usuario es responsable de la veracidad
FLUJO:
1. Usuario identifica error en sus datos (client-side)
2. Usuario corrige el dato
3. Cliente re-cifra datos corregidos
4. Cliente sube nuevo blob
5. Servidor registra evento de rectificacion (sin ver contenido)
AUDIT LOG:
{
"event": "ARCO_RECTIFICATION",
"user_hash": "usr_7f8a9b2c",
"timestamp": "2025-12-05T11:00:00Z",
"resources_modified": 1,
"old_hash": "sha256:abc...",
"new_hash": "sha256:def...",
"user_attestation": true // Usuario afirma que correccion es veraz
}
6.2.2. Consideraciones Legales de Rectificacion¶
| Aspecto | Implicacion | Mitigacion |
|---|---|---|
| Veracidad | MedTime no puede verificar | Usuario firma declaracion |
| Trazabilidad | Se pierde version anterior | Mantener hash de version previa |
| Disputas | Imposible resolver sin descifrar | Proceso de mediacion |
6.3. Cancelacion (Derecho al Olvido)¶
6.3.1. Tipos de Cancelacion¶
CANCELACION PARCIAL:
- Usuario solicita eliminar categoria especifica
- Ej: "Eliminar todos mis medicamentos"
- Blobs de esa categoria se eliminan
- Otros datos permanecen
CANCELACION TOTAL:
- Usuario solicita eliminar cuenta completa
- Periodo de gracia de 30 dias
- Tras periodo: eliminacion irreversible
- Backup cifrado ofrecido antes
CANCELACION POR INACTIVIDAD:
- Si usuario inactivo por 24 meses
- Notificaciones de advertencia
- Tras 30 dias sin respuesta: cancelacion
6.3.2. Proceso de Cancelacion Auditable¶
flowchart TD
A[Solicitud de Cancelacion] --> B{Tipo?}
B -->|Parcial| C[Identificar blobs]
B -->|Total| D[Marcar cuenta para eliminacion]
C --> E[Eliminar blobs]
D --> F[Periodo de gracia 30 dias]
E --> G[Log: ARCO_CANCELLATION_PARTIAL]
F --> H{Usuario cancelo solicitud?}
H -->|Si| I[Reactivar cuenta]
H -->|No| J[Eliminar todo]
I --> K[Log: ARCO_CANCELLATION_ABORTED]
J --> L[Log: ARCO_CANCELLATION_COMPLETED]
L --> M[Retener logs minimos por 5 anos]
6.3.3. Datos Retenidos Post-Cancelacion¶
Segun LFPDPPP y HIPAA, ciertos datos deben retenerse incluso despues de cancelacion:
| Dato | Retencion | Justificacion |
|---|---|---|
| Logs de auditoria | 5 anos (LFPDPPP) / 6 anos (HIPAA) | Requisito legal |
| Registros de consentimiento | 5 anos desde cancelacion | Prueba de base legal |
| Hash de usuario | Permanente (desvinculado) | Prevenir reuso |
| Facturacion | Segun ley fiscal local | Requisito contable |
6.4. Oposicion¶
6.4.1. Escenarios de Oposicion en MedTime¶
ESCENARIO 1: Oposicion a comparticion
- Usuario compartio datos con medico
- Ahora quiere revocar acceso
- Accion: Revocar tokens de acceso del medico
ESCENARIO 2: Oposicion a analytics
- Usuario consintio a analytics anonimos
- Ahora se opone
- Accion: Excluir de futuros analytics, eliminar datos historicos
ESCENARIO 3: Oposicion a comunicaciones
- Usuario recibe recordatorios de medicamentos
- Se opone a notificaciones
- Accion: Desactivar notificaciones (puede afectar funcionalidad)
ESCENARIO 4: Oposicion a procesamiento automatizado
- MedTime usa ML para sugerir horarios
- Usuario se opone a decisiones automatizadas
- Accion: Desactivar sugerencias ML
6.4.2. Audit Log de Oposicion¶
{
"event_id": "evt_oposicion_001",
"event_type": "ARCO_OPPOSITION",
"timestamp": "2025-12-05T12:00:00Z",
"user_hash": "usr_7f8a9b2c",
"opposition_scope": "THIRD_PARTY_SHARING",
"affected_recipients": ["prov_abc123", "prov_def456"],
"effective_date": "2025-12-05T12:00:00Z",
"user_notification": true,
"recipients_notified": true
}
7. Implementacion Recomendada V1.0¶
7.1. Que Auditar¶
7.1.1. Matriz de Eventos y Nivel de Detalle¶
| Categoria | Eventos | Detalle | PHI Incluido |
|---|---|---|---|
| Autenticacion | Login, Logout, MFA | Alto | No |
| Sesiones | Crear, Revocar, Expirar | Alto | No |
| Datos | CRUD operations | Medio | No (solo hashes) |
| Comparticion | Iniciar, Aceptar, Revocar | Alto | No (solo IDs) |
| ARCO | Todas las solicitudes | Alto | No |
| Errores | Excepciones, Fallos | Alto | No (sin stack traces PHI) |
| Sistema | Sync, Keys, Devices | Medio | No |
7.1.2. Esquema de Audit Log V1.0¶
{
"$schema": "medtime-audit-log-v1",
"event": {
"id": "string (UUID v7)",
"type": "enum (ver catalogo)",
"timestamp": "ISO 8601 con microsegundos",
"sequence": "integer autoincremental"
},
"actor": {
"type": "enum (USER, SYSTEM, ADMIN, API)",
"id_hash": "string (blind index)",
"session_id": "string",
"device_id": "string",
"ip_hash": "string (opcional)"
},
"action": {
"verb": "enum (CREATE, READ, UPDATE, DELETE, ...)",
"resource_type": "enum (MEDICATION, PROFILE, SHARE, ...)",
"resource_id": "string (ID, no contenido)",
"result": "enum (SUCCESS, FAILURE, PARTIAL)",
"error_code": "string (si aplica)"
},
"integrity": {
"resource_hash_before": "string (si aplica)",
"resource_hash_after": "string (si aplica)",
"payload_hash": "string (hash de este log entry)"
},
"chain": {
"prev_hash": "string (hash del entry anterior)",
"chain_hash": "string (hash de cadena)"
},
"metadata": {
"app_version": "string",
"platform": "enum (IOS, ANDROID, WEB)",
"additional": "object (datos no-PHI adicionales)"
}
}
7.1.3. Catalogo de Tipos de Evento¶
AUTENTICACION:
- AUTH_LOGIN_SUCCESS
- AUTH_LOGIN_FAILED
- AUTH_LOGOUT
- AUTH_MFA_CHALLENGE
- AUTH_MFA_SUCCESS
- AUTH_MFA_FAILED
- AUTH_PASSWORD_CHANGED
- AUTH_RECOVERY_INITIATED
- AUTH_RECOVERY_COMPLETED
SESIONES:
- SESSION_CREATED
- SESSION_REFRESHED
- SESSION_EXPIRED
- SESSION_REVOKED
DATOS:
- DATA_CREATED
- DATA_READ
- DATA_UPDATED
- DATA_DELETED
- DATA_EXPORTED
COMPARTICION:
- SHARE_INITIATED
- SHARE_ACCEPTED
- SHARE_DECLINED
- SHARE_REVOKED
- SHARE_EXPIRED
- SHARE_ACCESSED
ARCO:
- ARCO_ACCESS_REQUESTED
- ARCO_ACCESS_FULFILLED
- ARCO_RECTIFICATION_REQUESTED
- ARCO_RECTIFICATION_COMPLETED
- ARCO_CANCELLATION_REQUESTED
- ARCO_CANCELLATION_COMPLETED
- ARCO_OPPOSITION_REQUESTED
- ARCO_OPPOSITION_APPLIED
CONSENTIMIENTO:
- CONSENT_GRANTED
- CONSENT_WITHDRAWN
- CONSENT_EXPIRED
SISTEMA:
- SYNC_STARTED
- SYNC_COMPLETED
- SYNC_FAILED
- KEY_ROTATED
- DEVICE_REGISTERED
- DEVICE_REMOVED
SEGURIDAD:
- SECURITY_ANOMALY_DETECTED
- SECURITY_RATE_LIMIT_EXCEEDED
- SECURITY_SUSPICIOUS_ACTIVITY
7.2. Como Almacenar¶
7.2.1. Arquitectura de Almacenamiento¶
+------------------+ +------------------+ +------------------+
| APP CLIENT | | API GATEWAY | | AUDIT SERVICE |
+------------------+ +------------------+ +------------------+
| | | | | |
| Generar evento |---->| Validar request |---->| Recibir evento |
| | | Agregar metadata | | Validar schema |
| | | | | Agregar sequence |
+------------------+ +------------------+ | Calcular hashes |
| Encadenar |
+--------+---------+
|
+--------------------------------------+
|
+---------+---------+
| |
+---------v---------+ +-------v---------+
| HOT STORAGE | | COLD STORAGE |
| (PostgreSQL) | | (S3 + Glacier) |
+-------------------+ +-----------------+
| - Ultimos 90 dias | | - Historico |
| - Indices rapidos | | - Comprimido |
| - Full-text search| | - Cifrado |
+-------------------+ +-----------------+
|
v
+---------+---------+
| TSA SERVICE |
| (Timestamping) |
+-------------------+
| - Batch cada hora |
| - RFC 3161 |
| - Anchor externo |
+-------------------+
7.2.2. Esquema de Base de Datos¶
-- Tabla principal de audit logs
CREATE TABLE audit_logs (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
sequence BIGSERIAL NOT NULL,
event_type VARCHAR(50) NOT NULL,
timestamp TIMESTAMPTZ NOT NULL DEFAULT NOW(),
-- Actor
actor_type VARCHAR(20) NOT NULL,
actor_id_hash VARCHAR(64) NOT NULL,
session_id VARCHAR(64),
device_id VARCHAR(64),
ip_hash VARCHAR(64),
-- Action
action_verb VARCHAR(20) NOT NULL,
resource_type VARCHAR(50),
resource_id VARCHAR(64),
result VARCHAR(20) NOT NULL,
error_code VARCHAR(50),
-- Integrity
resource_hash_before VARCHAR(64),
resource_hash_after VARCHAR(64),
payload_hash VARCHAR(64) NOT NULL,
-- Chain
prev_hash VARCHAR(64) NOT NULL,
chain_hash VARCHAR(64) NOT NULL,
-- Metadata
app_version VARCHAR(20),
platform VARCHAR(20),
additional JSONB,
-- Indexes
CONSTRAINT unique_sequence UNIQUE (sequence),
CONSTRAINT unique_chain_hash UNIQUE (chain_hash)
);
-- Indices para consultas comunes
CREATE INDEX idx_audit_timestamp ON audit_logs(timestamp);
CREATE INDEX idx_audit_actor ON audit_logs(actor_id_hash);
CREATE INDEX idx_audit_event_type ON audit_logs(event_type);
CREATE INDEX idx_audit_resource ON audit_logs(resource_type, resource_id);
-- Tabla de timestamps externos (anchors)
CREATE TABLE audit_anchors (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
batch_id VARCHAR(64) NOT NULL,
sequence_from BIGINT NOT NULL,
sequence_to BIGINT NOT NULL,
batch_hash VARCHAR(64) NOT NULL,
timestamp_token BYTEA NOT NULL,
tsa_provider VARCHAR(100) NOT NULL,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
CONSTRAINT unique_batch UNIQUE (batch_id)
);
7.2.3. Seguridad del Almacenamiento¶
| Capa | Medida | Implementacion |
|---|---|---|
| Transporte | TLS 1.3 | Obligatorio |
| Reposo | AES-256 | Managed encryption |
| Acceso | RBAC | Solo admin de auditoria |
| Integridad | Hash chain | Verificacion continua |
| Disponibilidad | Replicacion | Multi-AZ |
| Immutabilidad | Append-only | Triggers de BD |
7.3. Retencion¶
7.3.1. Politica de Retencion por Tipo de Evento¶
| Categoria | Hot Storage | Cold Storage | Total |
|---|---|---|---|
| Autenticacion | 90 dias | 5 anos | 5 anos |
| Sesiones | 30 dias | 2 anos | 2 anos |
| Datos (CRUD) | 90 dias | 6 anos | 6 anos (HIPAA) |
| Comparticion | 90 dias | 5 anos | 5 anos |
| ARCO | 365 dias | 10 anos | 10 anos |
| Consentimiento | 365 dias | Indefinido | Mientras aplique |
| Sistema | 30 dias | 1 ano | 1 ano |
| Seguridad | 365 dias | 10 anos | 10 anos |
7.3.2. Proceso de Archivado¶
FLUJO DE ARCHIVADO:
1. DIARIO (02:00 UTC):
- Identificar logs > 90 dias en hot storage
- Comprimir con gzip
- Cifrar con clave de archivado
- Subir a S3 con lifecycle policy
- Verificar integridad post-upload
- Eliminar de hot storage
2. MENSUAL (primer domingo):
- Verificar integridad de hash chain
- Generar reporte de anomalias
- Mover archivos > 1 ano a Glacier
- Actualizar indices de busqueda
3. ANUAL (enero 1):
- Auditar politicas de retencion
- Eliminar logs que exceden retencion
- Generar certificado de destruccion
- Revisar costos de almacenamiento
7.3.3. Destruccion Segura¶
PROCESO DE DESTRUCCION:
1. IDENTIFICACION:
- Query: logs con retention_expires < NOW()
- Generar lista de IDs a destruir
2. VERIFICACION:
- Confirmar que no hay holds legales
- Verificar que no hay investigaciones activas
- Obtener aprobacion automatizada o manual
3. DESTRUCCION:
- Hot storage: DELETE con vacuum
- Cold storage: Lifecycle policy a delete
- Glacier: Initiate vault lock deletion
4. CERTIFICACION:
- Generar certificado de destruccion
- Incluir: rango de IDs, fecha, metodo
- Firmar con clave de compliance
- Almacenar certificado por 10 anos
5. AUDIT:
- Log de la destruccion misma
- Este log se retiene 10 anos
8. Conclusiones¶
8.1. Viabilidad de Auditoria Zero-Knowledge¶
La auditoria en arquitectura zero-knowledge es viableycumple con requisitos regulatorios cuando se implementa correctamente:
| Requisito Regulatorio | Estrategia | Cumplimiento |
|---|---|---|
| LFPDPPP: Trazabilidad | Metadata + blind index | CUMPLE |
| LFPDPPP: ARCO | Usuario descifra | CUMPLE |
| HIPAA: Audit controls | Logs de metadata | CUMPLE |
| HIPAA: Integrity | Hash chain | CUMPLE |
| LGPD: DSAR | Paquete cifrado | CUMPLE |
| Todos: Retencion | Politica configurable | CUMPLE |
8.2. Trade-offs Aceptados¶
| Aspecto | Ganancia | Perdida |
|---|---|---|
| Privacidad | Maxima proteccion PHI | Soporte tecnico limitado |
| Compliance | Cumple regulaciones | Mayor complejidad operativa |
| Investigacion | Logs seguros | No se puede ver contenido |
| Usabilidad | Confianza del usuario | Recuperacion compleja |
8.3. Recomendaciones Finales¶
8.3.1. Para V1.0¶
- Implementar inmediatamente:
- Audit logs de metadata sin PHI
- Hash chain para integridad
- Timestamps RFC 3161
-
Counters ciegos para anomalias
-
Diferir a V1.1:
- Auditor tercero de confianza
-
Audit logs cifrados con PHI
-
Diferir a V2.0+:
- Searchable encryption sobre logs
- Blockchain para anchoring
8.3.2. Checklist de Implementacion V1.0¶
- Definir esquema de audit log
- Implementar hash chain
- Configurar almacenamiento hot/cold
- Integrar con TSA
- Implementar flujos ARCO
- Crear dashboard de anomalias
- Documentar politicas de retencion
- Entrenar equipo de soporte
- Auditar implementacion
9. Referencias¶
9.1. Fuentes Regulatorias¶
- Mexico Privacy Law (LFPDPPP): A 2025 Guide to Compliance
- Mexico's New Data Protection Law: A Comprehensive Analysis of the 2025 LFPDPPP Reform
- HIPAA Audit Logs: Complete Requirements for Healthcare Compliance in 2025
- Understanding HIPAA Audit Trail Requirements
- How Does GDPR Impact Log Management?
9.2. Fuentes Tecnicas - Audit Logs Criptograficos¶
- Audit Logs Security: Cryptographically Signed Tamper-Proof Logs - Cossack Labs
- Building an Encrypted and Searchable Audit Log - University of Texas
- Privacy-Preserving and Unforgeable Searchable Encrypted Audit Logs
- LogStamping: A Blockchain-Based Log Auditing Approach
9.3. Fuentes Tecnicas - Zero-Knowledge y E2E¶
- Zero-Knowledge Encryption Guide 2025 - Hivenet
- zkLedger: Privacy-Preserving Audit System - MIT DCI
- Signal Protocol Security Analysis
- Balancing Privacy Protection and Auditability: A Signal Protocol Approach
9.4. Documentos MedTime Relacionados¶
- INV-001: Cifrado E2E Zero Knowledge
- INV-008: Cifrado de Perfil e Identificacion
- MTS-AUTH-001: Autenticacion
- MTS-PRI-001: Privacidad
Documento generado por KnowledgeDrone y ComplianceDrone para SpecQueen - "En el universo zero-knowledge, la auditoria no es ver los datos, es demostrar que el proceso fue correcto. Tus logs seran asimilados... en una cadena de hashes inmutable."