安全

加密模型

.rkvey v5 格式:序言、按隔间 AEAD、仅追加提交与密钥隔离。

.rkvey v5 格式(Rust Key Vault)按 HKDF 与 AEAD 最佳实践实现多层加密模型。概念模型:主密码 → 主密钥 → 子密钥 → 加密隔间

每个条目分为 隔间(元数据、受保护密钥、清单与附件文件),各自拥有独立 HKDF 密钥。解密一个隔间不会暴露其他隔间。

QubKey v5 加密模型

主密码

用户输入 (UTF-8) — 从未以明文形式存储

韩国发展基金

氩气2id

16 字节(前导码)

记忆

64MB

迭代

3

并行性

4

输出

256位

万能钥匙

256 位·保险库根密钥

HKDF-SHA256

信息=“人类发展报告”

标题键

标头键

HKDF-SHA256

信息=“idx”

索引键

索引键

HKDF-SHA256

信息=“车厢”

车厢钥匙

隔间钥匙

每个条目 (v5)

HKDF(master_key, salt=file∥entry_id, info=kind∥sub_id) → 分区密钥

元数据
秘密
注意。显现
AES-256-GCM

加密隔间

密钥派生

派生将主密码转换为可用的密码学密钥。Argon2id 有意消耗时间与内存(约 500 ms、64 MB)以限制离线暴力破解。在 v5 中,每个条目隔间随后通过 HKDF 获得独立密钥。

用户输入 → 主密码(UTF-8)

Argon2id → 带随机 Salt 的 master_key(256 位)

HKDF-SHA256 → B-Tree 的 index_key

HKDF-SHA256 → 按条目与隔间类型(元数据、密钥、附件…)的 compartment_key

参数说明默认
VariantArgon2idOWASP 推荐的混合变体 —— 抗 GPU 与侧信道
Memory64 MB每次派生占用内存 —— 提高并行攻击硬件成本65536 KB
Iterations3内存遍历次数 —— 安全/性能(约 500 ms)
Parallelism4并行线程
Output32 bytes派生密钥长度
Salt16 bytes序言中的随机 Salt

AEAD 加密

AES-256-GCM(默认)

  • 现代 CPU 的 AES-NI 硬件加速
  • Nonce:12 字节,认证标签:16 字节
  • 理论上限:每密钥约 64 GB 加密数据

适用场景:具备 AES 硬件加速的机器、日常使用。

多数平台上的默认算法,性能最优。

XChaCha20-Poly1305(可选)

  • 扩展 Nonce:24 字节(碰撞概率可忽略)
  • 不依赖硬件 —— 所有 CPU 上性能稳定
  • 推荐用于长期存档保险库

适用场景:归档保险库、无 AES-NI 的机器、偏好 ChaCha20。

可在高级保险库设置中启用。

文件结构

preamble
header.enc
btree_root.enc
btree_nodes.enc
core_meta.enc
protected_secrets.enc
attachment_manifest.enc
attachment_blob_*.enc
commit_N
footer (validated)

结构说明(v5):

  • preamble —— 魔数、格式版本、Argon2id Salt
  • header.enc —— 加密的保险库元数据(名称、创建日期、设置)
  • index/ —— 加密 B-Tree,O(log n) 搜索且无需解密密钥
  • compartments/ —— 按类型的 AEAD 块:元数据、受保护密钥、清单、附件
  • append/ —— 提交区域:新隔间 + 索引快照 + 已验证页脚

完整性与提交

容错能力

仅追加提交 保证中断时的完整性:

  1. 将新隔间追加到文件末尾
  2. 写入加密索引快照
  3. 同步到磁盘(fsync)
  4. 已验证页脚 完成提交(一致性点)

真实场景:编辑条目时断电导致写入中断。重启后 QubKey 找到最新有效页脚 —— 无数据丢失、无静默损坏。过时空间过多时定期压缩写入干净文件。

按隔间隔离

通过 HKDF-SHA256,每个隔间拥有从主密钥按条目 ID 与隔间类型派生的独立 compartment_key。实际效果:

  • 查看条目仅解密 元数据;密钥保持掩码直至显式显示
  • 附件 单独加载(下载/预览),打开保险库时不加载
  • B-Tree 索引使用与数据分离的 index_key
  • 修改密钥时不一定重写未变更的附件文件

该隔离原生内建于 .rkvey v5 格式。

密码学原语

原语用途
Argon2id密码 → 密钥派生argon2 (RustCrypto)
HKDF-SHA256密钥 → 子密钥派生hkdf (RustCrypto)
AES-256-GCMAEAD 加密aes-gcm (RustCrypto)
XChaCha20-Poly1305AEAD 加密(备选)chacha20poly1305 (RustCrypto)
HMAC-SHA256文件完整性hmac (RustCrypto)
CSPRNG随机数生成getrandom (OS)