协议
TRIP 到底规定了什么
GyID 实现 IETF RATS 工作组的 draft-ayerbe-trip-protocol-04。草案刻意收窄范围:它规定证据,不规定传输、命名与锚定——那些留白正是本实现贡献 companion 草案的地方。
baseline: draft-ayerbe-trip-protocol-04 · IETF RATS
01
面包屑 Breadcrumb
证据的基本单元。一个九字段的 CBOR map,用 Ed25519 签名;块哈希是完整编码的 SHA-256。
- ▸ index —— 链内序号,从 0 起连续
- ▸ identity —— Attester 的 Ed25519 公钥
- ▸ timestamp —— Unix 秒
- ▸ h3 cell + 分辨率 —— 7 到 10,默认 10
- ▸ context digest —— 对 h3/时间桶/Wi-Fi/基站/IMU 分量做 SHA-256
- ▸ prev hash —— 上一块哈希,创世为 null
- ▸ meta flags —— 含探索会话标志
- ▸ signature —— 覆盖字段 0–7 的确定性 CBOR
02
链规则
让伪造变得昂贵的规则,端上与验证方执行完全相同的判定。
- ▸ 相邻面包屑落在同一 H3 网格必须拒绝
- ▸ 单个网格累计上限 10 条
- ▸ 最小间隔 15 分钟;显式的探索会话可缩短至 5 分钟
- ▸ index 必须连续,且每条都引用上一块哈希
- ▸ 每条面包屑各自携带 Ed25519 签名
03
Epoch 与锚定
面包屑永远不上链,它们被封进 Merkle 根,只有根被锚定。
- ▸ 默认每个 epoch 100 条面包屑
- ▸ 根承诺有序集合,并记录唯一网格数
- ▸ 根由身份密钥签名
- ▸ 锚定目标与链无关;本实现使用 Base
04
人类存在证明证书(PoH)
依赖方真正消费的产物。15 个 CBOR 字段,由验证方签名,只含统计量。
- ▸ 身份、签发时间、epoch 数、面包屑数与唯一网格数
- ▸ α、β、κ、π 与临界置信度
- ▸ 信任分与有效期
- ▸ RP nonce —— 必填,把证书绑定到某一次请求
- ▸ 链头哈希 —— 必填,把它绑定到某一份确切证据
05
主动验证 Active Verification
本部署主推的唯一模式。预先录制的轨迹无法回答一个当时并不存在的挑战。
- ▸ 依赖方生成 16 字节 nonce
- ▸ 验证方通过实时通道下发挑战
- ▸ Attester 把 nonce 与链头、期望序号一起签名
- ▸ 验证方校验应答后,签发绑定该 nonce 的 PoH
06
多验证方设计
任何合规实现都可以用自己的 Ed25519 密钥充当验证方;Attester 可以同时提交给多个,依赖方自行选择信任谁。
- ▸ 协议中不存在特权验证方
- ▸ 验证方在 well-known 地址公布自己的公钥与策略
- ▸ 本项目的定位是「第一个公开验证方」,而不是唯一验证方