普通审计日志的问题
每个企业系统都会生成审计日志。用户访问日志、变更管理记录、API 调用历史、管理操作记录,这些数据都已存在。监管机构要求保留这些数据,审计人员审查这些数据,事件响应人员依赖这些数据。
但有一个几乎无人提及的问题:普通审计日志是可变的。
拥有相应权限的数据库管理员可以编辑日志条目。配置错误的日志轮转流程可能删除记录。老练的攻击者一旦攻陷管理员账户,就可以在任何人查看之前,有选择地删除其操作留下的证据。
当 NIS2 第 21 条第 2 款 (g) 项要求“日志文件的安全”,DORA 第 9 条第 4 款 (d) 项要求 ICT 运营日志的完整性,欧盟《人工智能法》第 12 条要求记录人工智能系统的运行情况时,监管机构要的并不是普通的可变日志,而是事后无法篡改的日志。
密码学审计追踪正是满足这一要求的技术方案。
密码学审计追踪的工作原理
密码学审计追踪在普通日志的基础上增加了两项技术特性:
哈希链。 每个日志条目都包含前一条目的哈希值。由此形成一条链,对任何历史条目的修改都会使其后的所有条目失效,因此任何追溯性修改都能被立即发现。这与区块链使用的机制相同,只是专门用于保障审计日志的完整性。
外部锚定。 系统定期(每分钟、每小时或每批事件)将当前的链哈希锚定到一个独立且不可变的账本上。由此形成一个带时间戳的外部参照点,即使主日志系统遭到入侵,它也无法被修改。
这两项特性结合起来意味着:
- 对任何历史日志条目的任何修改都会破坏这条链,并能被立即发现
- 即使攻击者销毁了主日志,外部锚点仍会保留一份可验证的记录,表明日志在每个锚定点包含哪些内容
- 监管机构和审计人员可以独立验证日志未被修改,而无需依赖组织自身的声明
这就是借助 ROOTKey 简化审计在实践中的样子:把“我们有日志”变成“我们能证明日志准确无误”。
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 的审计用例以托管服务的形式提供密码学审计追踪,并与您现有的系统集成。开始免费试用,立即生成您的第一条密码学审计追踪。
