哈希链审计的实现原理
审计要支持追责,仅有可查询日志不够:写日志的进程通常也能改日志。Agent Forge 按租户把记录串成哈希链,对外提供重算校验;断点可定位到具体记录。
每条记录含:
prev_hash:上一条摘要;链首为 64 个0hash: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 --> R3GET /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 次数;两套数字须分开使用。
能力边界:链约束写入完成之后对历史的改写。若写入路径已被控制,仍可先写虚假内容再生成匹配摘要。在写入路径可信的前提下,事后改写旧记录会被校验发现。
相关阅读: