CipherFS
开发中 · 未发布 · 格式可能变化

算法注册表

本表定义 ADR 005 的稳定算法号与文本值。编号按类别独立,签名和公钥使用两套枚举;编号与文本名永不重新分配。0 表示未指定,不能选中算法。注册允许表达该值,实际执行还须支持所请求的用途。

当前所有条目均为 active,没有截止时间。deprecated_after 中的 — 表示未设(None)。protobuf 持久化、仓库策略检查和能力通告已实现;当前边界见架构,验证见实现记录。

哈希

ID算法文本标识值字节数状态deprecated_after(UTC)当前用途
1BLAKE3b332active—正文哈希与协议身份
2SHA-256sha25632active—可表达的摘要值;正文与协议身份拒绝此算法
3SHA-512sha51264active—可表达的摘要值;正文与协议身份拒绝此算法

AEAD

ID算法文本标识nonce 字节数tag 字节数状态deprecated_after(UTC)当前用途
1XChaCha20-Poly1305xchacha20poly13052416active—正文、本机保护、索引段/快照和密钥封装
2AES-256-GCMaes256gcm1216active—正文
3ChaCha20-Poly1305chacha20poly13051216active—正文

签名

ID算法文本标识值字节数状态deprecated_after(UTC)当前用途
1Ed25519ed2551964active—设备与恢复权限签名

公钥

ID算法文本标识值字节数状态deprecated_after(UTC)当前用途
1Ed25519ed2551932active—设备身份与签名验证
2X25519x2551932active—非对称封装的接收者与临时公钥

KDF

ID算法文本标识状态deprecated_after(UTC)当前用途
1Argon2idargon2idactive—从密码派生封装密钥;盐、线上 memory_cost_bytes、迭代数、并行度、输出长度与版本是显式参数

Rust VaultConfig.argon2_m_cost 仍以 KiB 表示,protobuf codec 严格校验对齐和边界后与 memory_cost_bytes 转换。现有按用途区分的密钥派生标签保持原义。

分块

ID算法文本标识状态deprecated_after(UTC)当前用途
1FastCDC 2020fastcdc-2020active—正文写入策略,含最小/平均/最大块大小参数
2固定边界fixedactive—正文写入策略,含块大小参数

这些编号分配给已有写入策略;读取方按保存的单元边界读取。

规范文本与验证

Digest、Signature、PublicKey 的文本为 <文本标识>.<base58值>。算法前缀必须是注册的小写名字;值区分大小写,使用比特币 base58 字母表 123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz。直接编码原始字节,不附加校验和,每个前导零字节保留为一个前导 1。解码后须满足本类别的精确字节数,重新编码须与输入逐字相同;空白、别名、未知前缀、空值、非法字符或非规范编码均拒绝。AEAD、KDF 与分块的文本标识用于指定算法,本身不编码一个值。

DeviceId 与公开对端 NodeId 使用 ed25519.;VersionId、RetirementId、KeyEpoch 使用 b3.。FileId、SubtreeId、StoreId、VaultId 是精确 16-byte 的随机身份,使用无前缀 base58,不是摘要或公钥。公开 JSON 使用规范字符串,拒绝旧 hex 别名;私有恢复密钥与配对 ticket 的表达不变。

Genesis 钉仓库允许的算法。能解析注册值不代表获准执行,还须通过策略、已实现用途和截止时间检查。当前本机保护、索引封装及密钥封装使用 XChaCha20-Poly1305,其余 AEAD 只用于正文。运行中策略切换尚未实现;配对保留 keyed BLAKE3 MAC/SAS,不增加独立签名。

deprecated 表示计划退役;截止前或未设截止时间时,在已实现用途内仍可使用。截止时间是可选的 UTC 时刻,以带 Z 的 RFC 3339 表示;代码存为 deprecated_after_epoch_ms: Option<u64>(Unix 纪元毫秒)。注册表通过 ensure_usable_at(scope, now_epoch_ms) 检查;now_epoch_ms >= deprecated_after_epoch_ms 即拒绝过期条目,包含等于截止时刻的边界。未知算法或所请求用途尚未实现的算法也明确失败。能解析 SHA 摘要文本不代表允许它用于正文或协议身份;失败不选择其他算法,也不忽略截止时间。

复制或手工构造的注册元数据也须与静态注册项的类别、ID 和文本标识一致;只能收紧支持用途和截止时间,不能启用未实现用途或延后注册表截止时间。

仓库中的源文件