四态锁
按资产可变性分四种语义:不可变、版本可变、仅追加、根锚。语义写错会立刻在校验里暴露,不会静默放过。
智能类产品的能力主张无法被客户独立证伪;完整性类产品的主张可以被客户在五分钟内复现或推翻。后者的信任成本低一个数量级。
按资产可变性分四种语义:不可变、版本可变、仅追加、根锚。语义写错会立刻在校验里暴露,不会静默放过。
每个熔断位绑定上一位的哈希。改中间任何一条记录,链就断,而不是只报一处异常。
Ed25519(RFC 8032)纯 Python 实现,用官方向量自测。可对度量根 + 随机数签名,第三方离线可验。
对一组文件算聚合根,与基线比对,输出具体漂移清单。只报告,不写回、不自动修复。
| 语义 | 适用资产 | 判定规则 |
|---|---|---|
IMMUTABLE | 配置、策略、公钥 | 全文哈希必须不变;变了即 DRIFT |
VERSIONED | 会升级的代码与规则集 | 允许演进,但必须登记新位并以 supersedes 关联,旧位显示 SUPERSEDED_PASS |
APPEND_ONLY | 台账、审计库(SQLite) | 锁历史前缀的 max_seq 与前缀哈希;尾部追加放行,行数回退即 TRUNCATED |
ROOT_ANCHOR | 聚合根文件 | 只锁根字段,避免聚合账本自我引用导致永远误报 |
十条命令,五到十分钟。前六条证明它能检出篡改,后四条证明它没有偷偷放水。标红的是负向用例——只会报 PASS 的守护器没有价值。
| # | 动作 | 预期结果 |
|---|---|---|
| 1 | python3 selftest.py | RESULT: ALL PASS(含 RFC 8032 三组官方向量) |
| 2 | ig_cli.py add <file> IMMUTABLE | 输出 efuse_id 与 registry_root_hash |
| 3 | ig_cli.py verify | VERIFY: PASS |
| 4 | 改动该文件一个字节,再 verify | 该位 ok=false,detail 含 DRIFT |
| 5 | add <db> APPEND_ONLY,追加 10 行,再 verify | prefix_ok rows:50→60 (+10),判定 PASS |
| 6 | 把该库重建为 20 行,再 verify | TRUNCATED(rows 50→20),判定 FAIL |
| 7 | 手工改 license.json 的 edition 字段 | 状态变 invalid / signature_invalid |
| 8 | 把 trial_state.json 的 first_run 改成 40 天前 | 状态变 trial_expired |
| 9 | bash install.sh --verify-only | SIGNATURE_OK + 包哈希一致 |
| 10 | 篡改包里任意一字节,再 --verify-only | 哈希不符,退出码非 0,不落盘 |
第 4、6、7、8、10 条任何一条没有按预期失败,说明这个版本不该被采购。
安装即进入试用态,不需要填表。全部只读端点可用;试用与授权状态独立存放,重装不重置。需要一把签名的正式许可时,用机器指纹在线申领。
首次启动写入 trial_state.json,30 天,无人工介入。
measure / bits / prove 全部可用,不做功能阉割。
状态目录独立于安装目录,升级与回滚都不清除试用剩余天数。
用 /api/ig/pubkey 的 key_fp 作为设备指纹,签发对应授权文件即可转正。
安装器内嵌发布公钥,用纯 Python 验 Ed25519 签名,不依赖 openssl。信任链顺序写死在脚本里,任何一步失败立即退出,绝不落盘。
# 安装(会自动 30 天试用计时) curl -fsSL https://www.huodouai.com/product/integrity-guard/install.sh | bash # 只验证包,不安装(采购前建议先跑这条) bash install.sh --package ig-1.0.0.tar.gz --manifest manifest.json \ --sig manifest.sig --verify-only # 登记要守护的资产 python3 /opt/integrity-guard/ig/ig_cli.py add /etc/nginx/nginx.conf IMMUTABLE python3 /opt/integrity-guard/ig/ig_cli.py baseline python3 /opt/integrity-guard/ig/ig_cli.py verify # 回滚到上一版(不还原授权状态) bash install.sh --rollback
安装器约定:覆盖前整份备份为 <prefix>.prev;端口从 8790 起自动顺延;有 systemd 用 systemd,无 systemd 降级后台进程并明确告知「非常驻」;不以 systemctl 返回 0 判定成功,改为轮询健康端点。
边界不清的产品,最后都死在边界上。以下四条写在文档里,也写在合同里。
无 TEE/TPM 的机器上,root 可改文件也可改本服务。它保证「改动会被发现」,不保证「改不动」。
发现漂移只报告。自动写回会掩盖事故,也会破坏证据链。
单客户单机。要集群一致性,请另配编排层。
只判断资产有没有变。规则对不对,是裁决内核的职责,不是这一层的。