跳转到内容

哈希链审计的实现原理

审计要支持追责,仅有可查询日志不够:写日志的进程通常也能改日志。Agent Forge 按租户把记录串成哈希链,对外提供重算校验;断点可定位到具体记录。

每条记录含:

  • prev_hash:上一条摘要;链首为 64 个 0
  • hash:sha256(prev_hash + "\n" + canon(body))

canon 对正文键排序并去掉 undefined,使计算形态与落盘后再读出的形态一致,降低假阳性。写入按时间接到链尾;校验按序重算,任一步失败即停止。

flowchart LR
G[创世 prev_hash] --> R1[记录1 hash]
R1 --> R2[记录2]
R2 --> R3[记录3]
V[verify] --> R1
V --> R2
V --> R3

GET /audit/verify(企业版治理·信任能力)响应形态示例:

{ "ok": true, "checked": 50, "broken_at": null }
{ "ok": false, "checked": 12, "broken_at": "aud_…" }

checked 为已重算条数;broken_at 非空指向断点。开源可查询审计流水;完整验真与重算修复受许可门禁。POST /audit/rehash 仅 admin,用于修复序列化假阳性,不用于掩盖真实篡改。

会产生外部副作用的路径应落链(权限/审批决定、熔断、保留删除、会话删除、协作升级等)。只读操作不强制审批。checked 统计的是已落链可重算记录,不等于业务侧全部 mutating 次数;两套数字须分开使用。

能力边界:链约束写入完成之后对历史的改写。若写入路径已被控制,仍可先写虚假内容再生成匹配摘要。在写入路径可信的前提下,事后改写旧记录会被校验发现。

更完整的指标叙述见可靠性·指标。选型主张见可验证审计。


相关阅读: