Logs inmutables para NIS2, ISO 27001 y ENS: cómo anclar syslog en una blockchain pública
Equipo Proovik · 17 sep 2026 · 9 min lectura
Un log inmutable es un registro de actividad cuya integridad puede comprobar alguien distinto de quien lo administra. Se consigue encadenando cada bloque de registros con el hash del anterior y anclando periódicamente ese hash en una blockchain pública de prueba de trabajo: alterar o borrar una entrada antigua rompe la cadena y contradice una marca temporal que nadie controla. NIS2, ISO/IEC 27001 y el ENS exigen registros protegidos; el anclaje demuestra esa protección.
Este artículo amplía Logs de auditoría inmutables con blockchain con lo que piden los tres marcos de cumplimiento más habituales en España y la UE, y con una arquitectura concreta. Pertenece al clúster de verificación independiente de Proovik; el fundamento del sello está en ¿Qué es un sello de tiempo blockchain?.
Por qué los logs son lo primero que un atacante toca
Quien entra en un sistema y quiere permanecer borra o edita los registros. Quien tiene privilegios de administrador y comete un error, o algo peor, tiene la misma tentación. Y cuando llega una auditoría o una notificación de incidente, la pregunta no es si tienes logs, sino si son los mismos que se generaron. Un SIEM con permisos de escritura para el equipo de sistemas no responde a esa pregunta; solo repite lo que ese equipo puede haber cambiado.
La integridad de un log tiene dos componentes: que cada entrada no se haya modificado (integridad de contenido) y que no falte ninguna ni se haya insertado ninguna a posteriori (integridad de secuencia). Un hash por fichero cubre la primera; una cadena de hashes anclada cubre las dos.
Qué pide cada marco
| Marco | Requisito sobre registros | Qué añade el anclaje |
|---|---|---|
| NIS2 (Directiva (UE) 2022/2555), artículo 21 | Medidas de gestión de riesgos, incluidas la gestión de incidentes y políticas para evaluar la eficacia de las medidas | Evidencia de que los registros usados en la investigación de un incidente son los originales |
| NIS2, artículo 23 | Alerta temprana en 24 horas, notificación en 72 horas e informe final en un mes desde que se conoce un incidente significativo | Fecha verificable de cuándo se detectó el incidente y de qué registros existían entonces |
| ISO/IEC 27001:2022, anexo A, control 8.15 | Producir, almacenar, proteger y analizar los registros de actividades, excepciones, fallos y eventos relevantes | Protección demostrable, no solo declarada, frente a alteración y borrado |
| ISO/IEC 27001:2022, controles 8.16 y 8.17 | Supervisar redes y sistemas; sincronizar los relojes con una fuente de tiempo aprobada | Una referencia temporal externa (la marca del bloque) contra la que contrastar los relojes internos |
| ENS (Real Decreto 311/2022), op.exp.8 | Registro de la actividad de los usuarios, con fecha, hora y actividad realizada | Lo mismo que 8.15: el registro existe y es completo |
| ENS, op.exp.10 | Protección de los registros de actividad: integridad, control de acceso y conservación | Integridad verificable por el auditor sin acceso privilegiado a la plataforma |
Ninguno de los tres marcos exige blockchain. Los tres exigen que los registros estén protegidos y que se pueda demostrar. Un mecanismo de solo escritura (WORM), un servidor de logs separado o un HSM cumplen parte; ninguno permite que un auditor externo verifique la integridad sin fiarse de quien administra ese mecanismo.
Arquitectura: encadenar y anclar
El diseño es el mismo con rsyslog, syslog-ng, journald o un SIEM en la nube. Lo que cambia es dónde se ejecuta el paso de cálculo.
- Rota por ventanas cortas. Cierra un fichero de log cada hora (o cada cinco minutos si el volumen o el riesgo lo piden). Una ventana corta reduce el intervalo en el que una alteración pasaría inadvertida.
- Calcula el hash de cada fichero cerrado. SHA-256 sobre el fichero comprimido y ya inmutable en disco.
- Encadena. Cada manifiesto de ventana incluye el hash del fichero, el número de secuencia y el hash del manifiesto anterior. Un manifiesto sin predecesor válido es una señal de alarma.
- Ancla. Envía el hash del manifiesto a una blockchain pública de prueba de trabajo. La marca temporal del bloque es la cota superior de cuándo existía ese estado de la cadena.
- Conserva ficheros, manifiestos y pruebas en un almacenamiento separado del que administra el equipo de sistemas. Las pruebas son pequeñas: se pueden replicar en varios sitios.
Un manifiesto de ventana puede ser tan simple como este:
{
"window": "2026-09-19T10:00:00Z/2026-09-19T11:00:00Z",
"sequence": 4127,
"file": "syslog-2026-09-19T10.log.gz",
"file_sha256": "3b8f1c0c4c2e7a9d5f6b1a2c3d4e5f60718293a4b5c6d7e8f9a0b1c2d3e4f5a6",
"prev_manifest_sha256": "9e107d9d372bb6826bd81d3542a419d6b0f2a1c3d4e5f60718293a4b5c6d7e8f",
"entries": 184233,
"host": "log-collector-01",
"anchor": {
"network": "kaspa",
"txid": "pending",
"block_timestamp": null
}
}
Tras el anclaje, el campo anchor se completa con el identificador de la transacción y la marca temporal del bloque, y el manifiesto se guarda junto al certificado de prueba.
Cómo verifica un auditor sin fiarse de ti
- Toma un fichero de log cualquiera y su manifiesto.
- Recalcula el hash del fichero y lo compara con file_sha256.
- Recalcula el hash del manifiesto y comprueba que aparece en la transacción anclada, que la transacción está en el bloque y que la cabecera del bloque cumple la prueba de trabajo. Todo eso está en el paquete de prueba.
- Comprueba que prev_manifest_sha256 coincide con el hash del manifiesto anterior, y repite hacia atrás hasta donde quiera.
Si alguien editó una entrada de hace tres meses, el hash del fichero no coincide. Si alguien borró un fichero entero, falta un eslabón de la secuencia. Si alguien reescribió toda la cadena, los hashes ya no coinciden con lo que hay en los bloques, y los bloques no se pueden cambiar sin rehacer el trabajo de todos los bloques posteriores.
Complementos: firma y sincronización de reloj
El anclaje prueba integridad y fecha, no origen. Para saber que el fichero lo generó un colector concreto y no otro, firma cada manifiesto con una clave del colector; RFC 5848 define además la firma de mensajes syslog individuales. Y mantén los relojes sincronizados (NTP o PTP con fuente de confianza): la marca del bloque es la referencia externa, pero las entradas del log llevan la hora local, y una desviación grande resta valor a la correlación.
Qué dice la norma
Directiva (UE) 2022/2555 (NIS2), artículo 23, apartado 4: las entidades esenciales e importantes presentarán una alerta temprana sin demora indebida y, en cualquier caso, en el plazo de 24 horas desde que tengan conocimiento del incidente significativo; una notificación del incidente en el plazo de 72 horas; y un informe final a más tardar un mes después de la notificación del incidente. El artículo 21 enumera las medidas de gestión de riesgos, entre ellas la gestión de incidentes y las políticas y procedimientos para evaluar la eficacia de las medidas.
ISO/IEC 27001:2022, anexo A: el control 8.15 (registro de eventos) requiere producir, almacenar, proteger y analizar registros de actividades, excepciones, fallos y otros eventos relevantes; el 8.16 (actividades de supervisión) y el 8.17 (sincronización de relojes) completan la exigencia. La norma es de pago y sus textos no se reproducen aquí.
Real Decreto 311/2022 (Esquema Nacional de Seguridad), anexo II: la medida op.exp.8 (registro de la actividad) exige registrar las actividades de los usuarios en el sistema, y la op.exp.10 (protección de los registros de actividad) exige proteger esos registros, incluida su integridad, con el nivel de exigencia creciente según la categoría del sistema.
Reglamento (UE) 910/2014 (eIDAS), artículo 41.1: no se pueden negar efectos jurídicos ni admisibilidad como prueba a un sello de tiempo electrónico solo por ser electrónico o no cualificado. El anclaje de un manifiesto es un sello de tiempo electrónico no cualificado sobre ese manifiesto.
Cómo hacerlo con Proovik
La API de Proovik recibe el hash SHA-256 del manifiesto (nunca el fichero) y lo inscribe en una transacción de la red Kaspa, que produce unos diez bloques por segundo, así que el sello suele confirmarse en segundos; devuelve el identificador de la transacción y la marca temporal del bloque, y permite descargar el paquete de prueba PVK-PROOF/1 y un certificado PDF. La verificación se hace sin Proovik con la especificación y el verificador de referencia de la página verificar. Para un primer ensayo manual, la página certificar acepta cualquier fichero. Si quieres que revisemos tu arquitectura de anclaje, escríbenos desde contacto.
Lo que acredita: que ese manifiesto, y por tanto ese fichero de log, existía no más tarde de la marca temporal del bloque y no ha cambiado. Lo que no acredita: que el log sea completo o veraz (una entrada que nunca se escribió no deja huella), ni que cumplas NIS2, ISO 27001 o el ENS; esos marcos exigen políticas, procedimientos y auditorías. El anclaje es la evidencia de integridad que esas auditorías piden.
Preguntas frecuentes
¿Hay que anclar cada línea de log?
No. Se ancla el hash de cada ventana (por ejemplo, cada hora). Una alteración en cualquier línea cambia el hash del fichero y, con él, el del manifiesto. El coste es una transacción por ventana, no por entrada.
¿Qué pasa con los logs entre dos anclajes?
Durante la ventana abierta, el fichero todavía no está sellado. Por eso la ventana debe ser corta y el fichero debe cerrarse y sellarse en cuanto rota. Una alteración dentro de la ventana en curso no se detectaría por el anclaje, solo por otros controles.
¿Los logs salen de mi red?
No. Solo el hash de 32 bytes viaja a la API. El contenido de los registros, que puede incluir datos personales, se queda donde está.
¿Sustituye a un sistema WORM o a un SIEM?
No. Los complementa. El SIEM analiza; el WORM impide la escritura; el anclaje permite que un tercero compruebe que nada cambió, sin fiarse ni del SIEM ni del WORM ni de quien los administra.
Fuentes
- Directiva (UE) 2022/2555 (NIS2): eur-lex.europa.eu/eli/dir/2022/2555/oj
- Real Decreto 311/2022, Esquema Nacional de Seguridad (BOE): boe.es/eli/es/rd/2022/05/03/311/con
- ISO/IEC 27001, página oficial de ISO: iso.org/standard/27001
- RFC 5848, Signed Syslog Messages: rfc-editor.org/rfc/rfc5848
- RFC 5424, The Syslog Protocol: rfc-editor.org/rfc/rfc5424
- Reglamento (UE) 910/2014 (eIDAS): eur-lex.europa.eu/eli/reg/2014/910/oj
Equipo Proovik. Publicado el 19 de septiembre de 2026; última revisión el 6 de septiembre de 2026.