密码学审计追踪:工作原理,以及监管机构为何开始强制要求

普通审计日志可以被修改,密码学审计追踪则不能。本文介绍两者的区别,以及这一区别对合规为何重要。

作者ROOTKey
6分钟阅读合规 · 技术 · 信任
博客文章横幅:密码学审计追踪:工作原理,以及监管机构为何开始强制要求

普通审计日志的问题

每个企业系统都会生成审计日志。用户访问日志、变更管理记录、API 调用历史、管理操作记录,这些数据都已存在。监管机构要求保留这些数据,审计人员审查这些数据,事件响应人员依赖这些数据。

但有一个几乎无人提及的问题:普通审计日志是可变的。

拥有相应权限的数据库管理员可以编辑日志条目。配置错误的日志轮转流程可能删除记录。老练的攻击者一旦攻陷管理员账户,就可以在任何人查看之前,有选择地删除其操作留下的证据。

当 NIS2 第 21 条第 2 款 (g) 项要求“日志文件的安全”,DORA 第 9 条第 4 款 (d) 项要求 ICT 运营日志的完整性,欧盟《人工智能法》第 12 条要求记录人工智能系统的运行情况时,监管机构要的并不是普通的可变日志,而是事后无法篡改的日志。

密码学审计追踪正是满足这一要求的技术方案。

密码学审计追踪的工作原理

密码学审计追踪在普通日志的基础上增加了两项技术特性:

哈希链。 每个日志条目都包含前一条目的哈希值。由此形成一条链,对任何历史条目的修改都会使其后的所有条目失效,因此任何追溯性修改都能被立即发现。这与区块链使用的机制相同,只是专门用于保障审计日志的完整性。

外部锚定。 系统定期(每分钟、每小时或每批事件)将当前的链哈希锚定到一个独立且不可变的账本上。由此形成一个带时间戳的外部参照点,即使主日志系统遭到入侵,它也无法被修改。

这两项特性结合起来意味着:

  • 对任何历史日志条目的任何修改都会破坏这条链,并能被立即发现
  • 即使攻击者销毁了主日志,外部锚点仍会保留一份可验证的记录,表明日志在每个锚定点包含哪些内容
  • 监管机构和审计人员可以独立验证日志未被修改,而无需依赖组织自身的声明

这就是借助 ROOTKey 简化审计在实践中的样子:把“我们有日志”变成“我们能证明日志准确无误”。

typescript
import { createHash } from 'crypto';

interface AuditEntry {
  timestamp: string;
  eventType: string;
  actorId: string;
  resourceId: string;
  action: string;
  previousHash: string; // Hash of the previous entry in the chain
  entryHash: string;    // Hash of this entry including previousHash
}

function createAuditEntry(
  event: Omit<AuditEntry, 'previousHash' | 'entryHash'>,
  previousHash: string
): AuditEntry {
  const entry: Omit<AuditEntry, 'entryHash'> = {
    ...event,
    previousHash,
  };

  const entryHash = createHash('sha256')
    .update(JSON.stringify(entry))
    .digest('hex');

  return { ...entry, entryHash };
}

function verifyAuditChain(entries: AuditEntry[]): boolean {
  for (let i = 1; i < entries.length; i++) {
    const expected = entries[i].previousHash;
    const actual = entries[i - 1].entryHash;

    if (expected !== actual) {
      console.error(`Chain break detected at entry ${i}: log has been tampered with`);
      return false;
    }

    // Verify the entry's own hash
    const { entryHash, ...entryWithoutHash } = entries[i];
    const computed = createHash('sha256')
      .update(JSON.stringify(entryWithoutHash))
      .digest('hex');

    if (computed !== entryHash) {
      console.error(`Entry ${i} hash invalid: entry content has been modified`);
      return false;
    }
  }

  return true;
}
哈希链审计追踪的实现:任何修改都会破坏这条链

这对您的合规计划意味着什么

实施密码学审计追踪可带来三项直接的合规收益:

满足法律条文的要求。 NIS2、DORA 和欧盟《人工智能法》都要求保障日志完整性。密码学审计追踪是这一要求在技术上站得住脚的实现方式,而普通日志则可能被 DBA 修改。

缩短审计准备时间。 当审计人员或监管机构要求提供日志未被篡改的证据时,密码学审计追踪会自动提供证明。普通日志则需要对安全控制措施作出证明,这一过程既耗时又带有责任风险。

加强事件调查。 一旦发生安全事件,密码学审计追踪提供的取证证据无法以“事后被修改”为由受到质疑。这对保险理赔、监管通报以及可能的诉讼至关重要。

ROOTKey 的审计用例以托管服务的形式提供密码学审计追踪,并与您现有的系统集成。开始免费试用,立即生成您的第一条密码学审计追踪。

共享 LinkedIn X
所有文章

保持关注

在您的邮箱中获取
网络韧性洞见。

关于数据完整性、合规与业务连续性的实用、可直接用于审计的指南,发布即送达。