默认行为
这一页列出容易忽略、但会直接影响结果的默认行为。每条只说它做什么、会导致什么。
身份和文档
keygen --spec没有默认值。 DID 由坐标和公钥算出,坐标必须写在规格文件里。工具不会替你挑身份位置。- 规格文件拒收未知字段。 拼错的键会报错,不会被静默忽略。
spec --host拒收 IP 字面量。 did:wba 要求域名。- 根密钥的 fragment 不写进规格文件。 它是工具内部识别根密钥的名字,不是文档声明。
publish不带--spec时沿用本地文档的声明。 重发不会清掉已有 service 条目。publish --spec的坐标必须和--did一致。 不一致直接拒绝。keygen的 24 个词只显示一次。 词在铸任何东西之前显示,只写 tty;之后没有导出路径。import-mnemonic恢复四类钥匙。key-1、hot、{device}-sign、{device}-agreement;后铸的设备键不在词里,只能靠归档带走。
Linux v2 的默认边界
- 重启后旧 grant 全部作废、钥匙锁定。
- 签名必须绑定到指定的热钥匙。
- grant 的绝对期限不会因为持续调用而延长。
- 配额在签名前预留,失败也可能已经扣次。
- 超时先查原
request_id,不自动重签。 - 策略检查和签名使用同一份规范化请求。
详见设计说明。
数据面新签名路默认关
SIGN_ORIGIN_PROOF、SIGN_PURPOSE、ECDH、SIGN_OBJECT_PROOF、SIGN_DOCUMENT_PROOF 各自一个开关,默认关:
- 开关在服务配置的
features里,逐路独立;SIGN_PURPOSE还按用途再分,只有列出来的用途能签。 - 关着时操作不出现在
operations,发过去是OPERATION_DISABLED;客户端不能降级到别的操作。 - 每开一路,启动时往审计链追加一条事件(
FEATURES、SIGN_PURPOSE_ENABLED、ECDH_ENABLED、SIGN_OBJECT_PROOF_ENABLED、SIGN_DOCUMENT_PROOF_ENABLED)。 ECDH是唯一输出秘密的操作:共享密钥不落库,同一个request_id重放拿不到第二次。
开关只决定数据面收不收这个操作,不改变 SIGN_HTTP 的行为。完整字段和默认关清单见仓库 ADAPTER.md §11.7。
能力令牌默认关
features.agent_capability_signing默认false:capability.sock不监听,目录可以不建,请求不可能命中。- 打开和关闭都要重启一次,因为监听集合变了;这次重启同样锁钥匙、作废 grant。
- 令牌按
(principal_id, did)收窄,一张令牌只绑一个 DID,没有通配符。 - 服务端只存
SHA-256;明文只在capability mint的回包里出现一次,库里、审计里、日志里都没有。 - 重启后令牌仍可解析,grant 照旧全部作废:恢复要解锁并刷新 grant,不需要重签令牌。
- 撤销和到期在每条请求上重查,立即生效;撤销后继续使用返回
CAPABILITY_INVALID。 - DID 不匹配返回
CAPABILITY_SCOPE_DENIED,在扣配额之前裁决。
细节见能力令牌。
开发守护进程
serve --idle 0表示立刻上锁,不是永不。 想要永不,不要写 0。serve默认在后台运行,stop靠 pid 文件找到它。 pid 文件会被核对:里面的进程不是这个二进制,就拒绝操作。serve --system不给--allow-binary会拒绝启动。 二进制白名单不区分同账号的两个 Agent,也不能替代 v2 的主体和 grant。
任意字节签名默认关闭
两条路径默认都关,而且都属于旧开发协议:
sign --raw需要serve --development --allow-raw-signing。sign --challenge需要serve --development --allow-challenge-signing。--allow-raw-signing是更宽的门:开了它,challenge 也一起打开;反过来不成立。- 两条路径都不能和
--system同用。 - 启用后日志会明确警告,而且不构成受保护模式。
nonce
- 不传
--nonce时,上游会随机生成一个。 签名里仍有一行nonce=,但那个值和请求体无关。 - 只防重放时,随机 nonce 可以用;验证方仍要检查有效期和重放记录。
- 服务要求 nonce 与请求体一致时,必须由调用方传入。
- nonce 最多 256 字节,只接受可打印 ASCII,拒绝双引号、反斜线和控制字符。
URL
开发模式的 sign --url 会规范化:host 转小写,默认端口去掉。https://example.com:443/x 按 https://example.com/x 签。
v2 使用更严格的 HTTPS 域名子集,拒绝 fragment、百分号编码、点路径等含混目标,并按策略精确检查 path 和 query。
迁移和硬件
migrate --allow-different-subject默认关。 默认放行会让一次打错字的--to变成无人察觉的冒名。--hardware默认none。 指定了硬件但不可用时是错误,不会降级。- 导入默认有,导出默认没有。 恢复自己的身份不需要特殊构建;把身份交出去需要。
归档
归档口令必须和日常口令不同,导出只执行一次,没有重试循环。归档文件可以被离线暴力破解,强度取决于口令和 Argon2id 成本。详见信封与归档。