Skip to main content
QMSQMS
QMS
  • Welcome to your QMS
  • Quality Manual
  • Procedures
    • GP-001 Control of documents
    • GP-002 Quality planning
    • GP-003 Audits
    • GP-004 Vigilance system
    • GP-005 Human Resources and Training
    • GP-006 Non-conformity, Corrective and Preventive actions
    • GP-007 Post-market surveillance
    • GP-008 Product requirements
    • GP-009 Sales
    • GP-010 Purchases and suppliers evaluation
    • GP-011 Provision of service
    • GP-012 Design, redesign and development
    • GP-013 Risk management
    • GP-014 Feedback and complaints
    • GP-015 Clinical evaluation
    • GP-016 Traceability and identification
    • GP-017 Technical assistance service
    • GP-018 Infrastructure and facilities
    • GP-019 Software validation plan
    • GP-020 QMS Data analysis
    • GP-021 Communications
    • GP-022 Document translation
    • GP-023 Change control management
    • GP-024 Predetermined Change Control Plan
    • GP-025 Usability and Human Factors Engineering
    • GP-027 Corporate Governance
    • GP-028 AI Development
    • GP-029 Software Delivery And Comissioning
    • GP-050 Data Protection
    • GP-051 Security violations
    • GP-052 Data Privacy Impact Assessment (DPIA)
    • GP-100 Business Continuity (BCP) and Disaster Recovery plans (DRP)
    • GP-101 Information security
    • GP-200 Remote Data Acquisition in Clinical Investigations
    • GP-026 Market-specific product requirements
    • GP-110 Esquema Nacional de Seguridad
      • ORG Marco organizativo
      • OP Marco operacional
        • OP.PL Planificación
        • OP.ACC Control de acceso
        • OP.EXP Explotación
          • OP.EXP.1 Inventario de activos
          • OP.EXP.10 Protección de los registros de actividad
          • OP.EXP.11 Protección de las claves criptográficas
          • OP.EXP.2 Configuración de seguridad
          • OP.EXP.3 Gestión de la configuración
          • OP.EXP.4 Mantenimiento
          • OP.EXP.5 Gestión de Cambios - Procedimiento Formal ENS
          • OP.EXP.6 Protección frente a código dañino
          • OP.EXP.7 Gestión de incidentes
          • OP.EXP.8 Registro de la actividad de los usuarios
          • OP.EXP.9 Registro de la gestión de incidentes
        • OP.EXT Servicios externos
        • OP.NUB Servicios en la nube
        • OP.CONT Continuidad del servicio
        • OP.MON Monitorización del sistema
      • MP Medidas de protección
      • Sin asignar
      • Real Decreto 311/2022, de 3 de mayo, por el que se regula el Esquema Nacional de Seguridad.
  • Records
  • Legit.Health Plus Version 1.1.0.0
  • Legit.Health Plus Version 1.1.0.1
  • Licenses and accreditations
  • Applicable Standards and Regulations
  • Public tenders
  • Procedures
  • GP-110 Esquema Nacional de Seguridad
  • OP Marco operacional
  • OP.EXP Explotación
  • OP.EXP.10 Protección de los registros de actividad

OP.EXP.10 Protección de los registros de actividad

Documentos de referencia​

  • Real Decreto 311/2022 - Anexo II, Medida OP.EXP.10
  • T-024-016 - Procedimiento de protección de logs
  • T-024-017 - Arquitectura de almacenamiento seguro de logs
  • GP-013 - Gestión de Ciberseguridad
  • OP.EXP.8 - Registro de la actividad de los usuarios
  • ISO/IEC 27001:2022 - Control A.8.15 (Protección de registros)
  • FDA 21 CFR Part 11 - Integridad de audit trails

Guía de implantación​

Objetivo​

Garantizar la protección, integridad, disponibilidad y no repudio de todos los registros de actividad (logs) generados por los sistemas de información de Legit Health, asegurando que constituyan evidencia fiable para auditorías, investigaciones forenses y cumplimiento regulatorio.

Alcance​

Este procedimiento aplica a:

  • Logs de aplicaciones y sistemas
  • Registros de auditoría (audit trails)
  • Logs de seguridad y eventos
  • Registros de acceso y autenticación
  • Logs de transacciones del dispositivo médico
  • Registros de cambios y configuración
  • Logs de infraestructura y red

Amenazas a los registros de actividad​

3.1 Amenazas identificadas​

AmenazaImpactoProbabilidadControles
Modificación no autorizadaCríticoMediaWrite-once, firma digital
Eliminación accidental/maliciosaCríticoMediaBackups, replicación
Acceso no autorizadoAltoMediaControl de acceso, cifrado
Corrupción de datosAltoBajaChecksums, verificación
Pérdida por fallo hardwareAltoBajaRedundancia, cloud
Exfiltración de informaciónMedioMediaCifrado, DLP
Manipulación de timestampsAltoBajaNTP seguro, TSA

Arquitectura de protección​

4.1 Modelo de seguridad en capas​

┌─────────────────────────────────────┐
│ Capa de Aplicación │
│ - Generación segura de logs │
│ - Firma en origen │
└────────────────┬────────────────────┘
│
┌────────────────┴────────────────────┐
│ Capa de Transmisión │
│ - Cifrado TLS 1.3 │
│ - Autenticación mutua │
└────────────────┬────────────────────┘
│
┌────────────────┴────────────────────┐
│ Capa de Procesamiento │
│ - Validación de integridad │
│ - Normalización y enriquecimiento │
└────────────────┬────────────────────┘
│
┌────────────────┴────────────────────┐
│ Capa de Almacenamiento │
│ - Write-once (WORM) │
│ - Cifrado at-rest │
│ - Replicación multi-zona │
└─────────────────────────────────────┘

4.2 Flujo de protección​

  1. Generación: Log creado con timestamp certificado
  2. Firma: Aplicación de firma digital al log
  3. Cifrado: Encriptación antes de transmisión
  4. Transmisión: Envío seguro al colector
  5. Validación: Verificación de firma e integridad
  6. Almacenamiento: Escritura en storage inmutable
  7. Replicación: Copia a múltiples ubicaciones
  8. Verificación: Chequeos periódicos de integridad

Medidas de protección implementadas​

5.1 Protección de integridad​

Firma digital de logs:

def sign_log_entry(log_entry):
# Serializar el log entry
log_json = json.dumps(log_entry, sort_keys=True)

# Calcular hash
log_hash = hashlib.sha256(log_json.encode()).digest()

# Firmar con clave privada
signature = private_key.sign(
log_hash,
padding.PSS(
mgf=padding.MGF1(hashes.SHA256()),
salt_length=padding.PSS.MAX_LENGTH
),
hashes.SHA256()
)

# Añadir firma al log
log_entry['signature'] = base64.b64encode(signature).decode()
log_entry['hash'] = base64.b64encode(log_hash).decode()

return log_entry

Hash chain (blockchain-like):

def create_hash_chain(current_log, previous_hash):
# Incluir hash del log anterior
current_log['previous_hash'] = previous_hash

# Calcular nuevo hash incluyendo el anterior
combined = f"{previous_hash}{json.dumps(current_log)}"
new_hash = hashlib.sha256(combined.encode()).hexdigest()

current_log['current_hash'] = new_hash
return current_log, new_hash

Verificación periódica:

  • Verificación automática cada 6 horas
  • Validación completa semanal
  • Auditoría de integridad mensual
  • Alertas inmediatas ante discrepancias

5.2 Protección de confidencialidad​

Cifrado en reposo:

Storage Configuration:
Encryption: AES-256-GCM
Key Management: AWS KMS
Key Rotation: Automatic (90 days)
Access: IAM Role-based
Audit: CloudTrail enabled

Cifrado en tránsito:

Transport Security:
Protocol: TLS 1.3
Cipher Suites:
- TLS_AES_256_GCM_SHA384
- TLS_CHACHA20_POLY1305_SHA256
Certificate: EV SSL
Mutual Auth: Required for critical systems
Perfect Forward Secrecy: Enabled

Anonimización de datos sensibles:

def anonymize_sensitive_data(log_entry):
# Hasher para datos PII
if 'patient_id' in log_entry:
log_entry['patient_id'] = hash_pii(log_entry['patient_id'])

# Ocultar IPs internas parcialmente
if 'ip_address' in log_entry:
log_entry['ip_address'] = mask_ip(log_entry['ip_address'])

# Eliminar datos de tarjetas
log_entry = remove_card_numbers(log_entry)

return log_entry

5.3 Protección de disponibilidad​

Arquitectura de alta disponibilidad:

┌──────────────┐     ┌──────────────┐     ┌──────────────┐
│ Zona AZ1 │ │ Zona AZ2 │ │ Zona AZ3 │
│ │◄────┤ │◄────┤ │
│ Log Storage │ │ Log Storage │ │ Log Storage │
│ Primary │ │ Replica 1 │ │ Replica 2 │
└──────────────┘ └──────────────┘ └──────────────┘
│ │ │
└────────────────────┴────────────────────┘
│
┌────────┴────────┐
│ Load Balancer │
│ (Active-Active)│
└─────────────────┘

Configuración de replicación:

  • Replicación síncrona a zona secundaria
  • Replicación asíncrona a zona terciaria
  • Backup diario a S3 Glacier
  • Snapshot cada 4 horas

5.4 Control de acceso​

Modelo de permisos:

Roles:
log-reader:
permissions: [read]
scope: [non-sensitive-logs]
mfa: required

log-analyst:
permissions: [read, search, export]
scope: [all-logs]
mfa: required
approval: manager

log-admin:
permissions: [read, search, export, configure]
scope: [all-logs, configuration]
mfa: required
approval: ciso
dual-control: required

system:
permissions: [write]
scope: [assigned-source]
authentication: certificate

Registro de accesos a logs:

{
"access_timestamp": "2024-11-15T10:30:00Z",
"user": "analyst@legithealth.com",
"action": "search",
"query": "error_level:critical AND timestamp:[2024-11-14 TO 2024-11-15]",
"results_returned": 42,
"justification": "Investigating incident INC-2024-1115",
"approved_by": "manager@legithealth.com",
"session_id": "sess-uuid-12345"
}

Almacenamiento seguro​

6.1 Tecnología WORM (Write Once Read Many)​

Configuración AWS S3 Object Lock:

Bucket: legit-health-immutable-logs
ObjectLock:
Mode: COMPLIANCE
RetentionPeriod: 2555 days (7 years)
LegalHold: Available when required
Versioning: Enabled
MFADelete: Enabled
Replication: Cross-region to eu-central-1

Prevención de modificación:

  • Una vez escrito, no se puede modificar ni eliminar
  • Ni siquiera el root account puede bypassear
  • Cumple con SEC 17a-4, FINRA 4511, CFTC 1.31

6.2 Segregación de almacenamiento​

/logs/
/security/ [CRITICAL - 7 years]
/authentication/
/authorization/
/incidents/
/clinical/ [HIGH - 10 years]
/patient-access/
/diagnoses/
/treatments/
/operational/ [MEDIUM - 3 years]
/performance/
/errors/
/debugging/
/compliance/ [CRITICAL - 10 years]
/audit-trails/
/regulatory/
/data-processing/

Sincronización temporal​

7.1 NTP seguro​

Configuración NTP:

NTP Servers:
Primary: time.google.com
Secondary: time.cloudflare.com
Tertiary: pool.ntp.org

Security:
Authentication: Symmetric key
Protocol: NTPv4
Stratum: Maximum 3
Drift tolerance: ± 100ms

Monitoring:
Check interval: 5 minutes
Alert threshold: ± 1 second drift
Auto-correction: Enabled

7.2 Timestamp Authority (TSA)​

Integración con TSA:

def get_certified_timestamp(data_hash):
# Crear solicitud RFC 3161
req = TimeStampReq()
req['messageImprint']['hashAlgorithm'] = id_sha256
req['messageImprint']['hashedMessage'] = data_hash
req['certReq'] = True

# Enviar a TSA
response = requests.post(
'https://tsa.legithealth.com/timestamp',
data=req.encode(),
headers={'Content-Type': 'application/timestamp-query'},
cert=('/path/to/client.crt', '/path/to/client.key')
)

# Validar y almacenar respuesta
tst = TimeStampResp(response.content)
if tst['status']['status'] == 0: # Success
return tst['timeStampToken']
else:
raise TimestampError(f"TSA error: {tst['status']['statusString']}")

Procedimientos de verificación​

8.1 Verificación de integridad​

Verificación automática (cada 6 horas):

def verify_log_integrity():
errors = []

# Seleccionar muestra aleatoria
sample_size = max(1000, total_logs * 0.01)
logs_sample = select_random_logs(sample_size)

for log in logs_sample:
# Verificar firma digital
if not verify_signature(log):
errors.append(f"Signature failed: {log['id']}")

# Verificar hash chain
if not verify_hash_chain(log):
errors.append(f"Hash chain broken: {log['id']}")

# Verificar timestamp
if not verify_timestamp(log):
errors.append(f"Timestamp invalid: {log['id']}")

if errors:
alert_security_team(errors)
initiate_forensic_analysis()

return len(errors) == 0

8.2 Auditoría forense​

Procedimiento de análisis forense:

  1. Aislar logs sospechosos
  2. Crear copia forense certificada
  3. Analizar metadatos y timestamps
  4. Verificar cadena de custodia
  5. Reconstruir secuencia de eventos
  6. Identificar punto de compromiso
  7. Documentar hallazgos
  8. Preservar evidencias

Recuperación y restauración​

9.1 Procedimiento de recuperación​

Recovery Procedure:
1. Identify Failure:
- Type: Corruption / Deletion / Hardware failure
- Scope: Time range and systems affected
- Impact: Critical / High / Medium / Low

2. Select Recovery Source:
- Primary: Hot standby replica
- Secondary: Recent backup (< 24h)
- Tertiary: Archive storage

3. Validate Backup:
- Verify checksums
- Check signatures
- Confirm completeness

4. Restore Process:
- Isolate affected storage
- Restore from validated source
- Verify hash chains
- Re-establish replication

5. Verification:
- Compare with known-good hashes
- Validate time continuity
- Check for gaps

6. Documentation:
- Document incident
- Record recovery actions
- Update disaster recovery plan

9.2 Tiempos de recuperación​

FuenteRTORPODisponibilidad
Réplica hot standby< 5 min099.99%
Backup reciente< 1 hora< 24h99.9%
Archivo (Glacier)< 12 horas< 7 días99.99%
Cinta (offsite)< 48 horas< 30 días99.999%

Cumplimiento regulatorio​

10.1 Requisitos FDA 21 CFR Part 11​

  • ✓ Audit trails seguros y automáticos
  • ✓ Firma electrónica en registros críticos
  • ✓ Imposibilidad de modificación
  • ✓ Timestamps certificados
  • ✓ Backup y recuperación validados
  • ✓ Controles de acceso documentados

10.2 Requisitos ENS​

  • ✓ Protección acorde a categoría ALTA
  • ✓ Integridad garantizada mediante firma
  • ✓ Disponibilidad 99.9% mínimo
  • ✓ Retención mínima 2 años
  • ✓ Sincronización temporal certificada
  • ✓ Segregación por nivel de sensibilidad

Métricas y monitorización​

11.1 KPIs de protección​

MétricaObjetivoActualTendencia
Integridad logs100%99.999%→
Disponibilidad sistema99.9%99.95%↑
Tiempo verificación< 10 min7 min↓
Logs perdidos/mes00→
Intentos modificación-3/mes↓
Recuperaciones exitosas100%100%→

11.2 Dashboard de protección​

┌─────────────────────────────────────────────────┐
│ LOG PROTECTION DASHBOARD │
├─────────────────────────────────────────────────┤
│ Storage Status: [██████████] 100% Healthy │
│ Replication: All zones synchronized │
│ Last Integrity: 2024-11-15 10:00:00 ✓ │
│ Signatures Valid: 15,234,567 / 15,234,567 │
│ Access Attempts: 342 (3 blocked) │
│ Archive Status: On schedule │
│ Alerts: 0 Critical, 2 Warning │
└─────────────────────────────────────────────────┘

Procedimientos de emergencia​

12.1 Respuesta a compromiso de logs​

  1. Detección (T+0)

    • Alerta automática de integridad fallida
    • Activación equipo de respuesta
  2. Contención (T+15min)

    • Aislar sistemas afectados
    • Detener escritura a logs comprometidos
    • Activar almacenamiento alternativo
  3. Análisis (T+1h)

    • Determinar alcance del compromiso
    • Identificar período afectado
    • Evaluar impacto regulatorio
  4. Recuperación (T+4h)

    • Restaurar desde fuente confiable
    • Revalidar integridad completa
    • Restablecer operaciones normales
  5. Notificación (T+24h)

    • Informar a autoridades si requerido
    • Documentar para auditoría
    • Actualizar procedimientos

Formación y concienciación​

  • Administradores: Gestión segura de logs (semestral)
  • Desarrolladores: Implementación de logging seguro
  • Analistas: Uso de herramientas de verificación
  • Auditores: Validación de cadena de custodia

Documentación y evidencias​

  • T-024-016: Procedimiento detallado de protección
  • T-024-017: Arquitectura técnica de seguridad de logs
  • Informes de integridad: Generados automáticamente
  • Certificados TSA: Almacenados con cada lote de logs
  • Registros de acceso: Audit trail de consultas a logs
  • Informes de recuperación: Documentación de cada restore

Signature meaning

The signatures for the approval process of this document can be found in the verified commits at the repository for the QMS. As a reference, the team members who are expected to participate in this document and their roles in the approval process, as defined in Annex I Responsibility Matrix of the GP-001, are:

  • Author: Team members involved
  • Reviewer: JD-003, JD-004
  • Approver: JD-001
Previous
OP.EXP.1 Inventario de activos
Next
OP.EXP.11 Protección de las claves criptográficas
  • Documentos de referencia
  • Guía de implantación
    • Objetivo
    • Alcance
    • Amenazas a los registros de actividad
      • 3.1 Amenazas identificadas
    • Arquitectura de protección
      • 4.1 Modelo de seguridad en capas
      • 4.2 Flujo de protección
    • Medidas de protección implementadas
      • 5.1 Protección de integridad
      • 5.2 Protección de confidencialidad
      • 5.3 Protección de disponibilidad
      • 5.4 Control de acceso
    • Almacenamiento seguro
      • 6.1 Tecnología WORM (Write Once Read Many)
      • 6.2 Segregación de almacenamiento
    • Sincronización temporal
      • 7.1 NTP seguro
      • 7.2 Timestamp Authority (TSA)
    • Procedimientos de verificación
      • 8.1 Verificación de integridad
      • 8.2 Auditoría forense
    • Recuperación y restauración
      • 9.1 Procedimiento de recuperación
      • 9.2 Tiempos de recuperación
    • Cumplimiento regulatorio
      • 10.1 Requisitos FDA 21 CFR Part 11
      • 10.2 Requisitos ENS
    • Métricas y monitorización
      • 11.1 KPIs de protección
      • 11.2 Dashboard de protección
    • Procedimientos de emergencia
      • 12.1 Respuesta a compromiso de logs
    • Formación y concienciación
    • Documentación y evidencias
All the information contained in this QMS is confidential. The recipient agrees not to transmit or reproduce the information, neither by himself nor by third parties, through whichever means, without obtaining the prior written permission of Legit.Health (AI LABS GROUP S.L.)