每个 .cvp 数据卷是独立可读的单元:
- 一个卷 = 一个自包含的加密数据块,提取该卷数据不需要其他卷在场
- 文件尽量完整放入单卷;仅当单文件超过卷大小或当前卷剩余空间无法存放完整数据时才跨卷分段
- 丢失/损坏某个卷,只影响该卷内的数据,其他卷完全几乎不受影响(跨卷数据例外)
- 适合分布式存储、离线传输、不完整集合也能部分提取
.cvp— 数据卷,CEK 加密.cvk— 密钥信封,包裹 CEK,自身可用密码/公钥保护- 换密钥保护、加接收者不动数据卷(
rekey命令的基础) - 块级重加密:不解压,仅用新 CEK 重加密数据块(
convert命令的基础)
数据产出命令(pack、convert)均支持两种密钥来源:
| 方式 | 说明 |
|---|---|
--key-file <cvk> |
复用已有 .cvk 的 CEK,跳过密钥生成 |
--mode / --password |
生成新 CEK + 新 .cvk |
打包流程:扫描 → 预分配 → [读文件 → 压缩/加密 → 按卷写入],基于 Channel 的多级流水线,读写和计算并行。
| 模式 | CEK 保护方式 | 解密需要 |
|---|---|---|
None |
数据明文,无 .cvk |
— |
PlainKey |
CEK 明文存 .cvk |
.cvk 文件 |
Password |
Argon2id + AES-256-GCM 包裹 | 密码 |
Asymmetric |
RSA 公钥包裹 | 对应私钥 |
.cvp— 加密数据卷,<前缀>.<卷号>.cvp.cvk— 密钥信封,<前缀>.cvk,Base64 编码
| 命令 | 功能 | 层级 |
|---|---|---|
pack |
打包为加密卷 | 数据产出 |
extract |
从卷还原文件 | 数据消费 |
browse |
浏览卷内文件列表 | 数据消费 |
info |
查看密钥文件元数据 | 密钥查询 |
verify |
校验卷完整性 | 数据消费 |
repair |
尝试修复损坏卷 | 数据修复 |
rekey |
重新封装密钥信封(CEK 不变) | 密钥层 |
convert |
块级密钥轮换(旧CEK→新CEK) | 数据层 |
- GZip 压缩(可选),级别 0-9
- 压缩在加密之前进行
- 打包时可选嵌入 CRC32(块级)/ SHA256(文件级/卷级)
verify命令逐块验证repair命令利用校验信息定位损坏区域