简单说:Senvra 不是把你输入的密码直接拿来加密每一张照片、每一段视频或每一个文件。
创建私密空间时,Senvra 会先生成一个随机的空间主密钥。用户密码和 Space Access Key 是两条不同的路径,用来打开这个主密钥。真正的内容仍然处在空间密钥和项目密钥体系下面,所以换密码时可以只替换密码包装层,而不是重新写一遍所有加密文件。
如果你在判断 Senvra 的安全设计,关键不只是“有没有加密”,而是密钥怎么分层、换密码到底换了什么,以及恢复边界在哪里。更完整的产品模型可以看 Senvra 产品说明。
密码不是文件密钥
一个简单的私密相册,可以把用户密码用得过于直接。但这并不是理想设计。人能记住的密码通常熵不如随机密钥高,也不适合长期作为每个文件的直接加密材料。
Senvra 采用的是另一种结构:
- 每个私密空间先生成自己的随机 256-bit 主密钥。
- 用户输入的密码会结合该空间的独立盐,通过 PBKDF2-HMAC-SHA256 派生。当前生产参数为 600,000 次迭代。
- 派生出的密码密钥用来打开主密钥的加密包装。
- 空间解锁后,主密钥再进入空间状态和项目密钥体系。
这层区别很重要。密码是打开空间主密钥的权限材料,不是复制到每个加密对象里的长期文件密钥。
左右滑动查看完整图表
图表暂时无法生成,下方仍可查看源代码。
查看图表源代码
flowchart LR
P[用户输入密码] --> KDF[PBKDF2-HMAC-SHA256 + 空间盐]
AK[Space Access Key] --> HKDF[HKDF-SHA256 + Access Key 盐]
KDF --> PW[密码包装层]
HKDF --> RW[恢复包装层]
PW --> MK[256-bit 空间主密钥]
RW --> MK
MK --> IK[项目密钥与加密空间状态]
IK --> DATA[AES-256-GCM 保护的媒体、元数据和缩略图]
Space Access Key 做什么
Space Access Key 不是密码提示。它是该私密空间独立生成的随机恢复材料,通常以分组十六进制文本展示,方便用户保存在手机之外的位置。
在内部,Space Access Key 走的是和密码不同的派生路径。它可以打开同一个空间主密钥的另一层加密包装。这样用户可以拥有恢复路径,而不需要 Senvra 保存服务器端重置密码的后门,也不需要把空间密钥交给账号系统。
这也是为什么 Space Access Key 可以用于重设忘记的密码。只要 Access Key 仍然有效,Senvra 就可以先通过恢复包装打开空间主密钥,再用新密码重新包装这个主密钥。
真正保护内容的是什么
空间主密钥定义了这个私密空间的边界。每个受保护项目在这个边界下还有自己的加密密钥材料。大媒体文件会被拆成有界分片,每个分片使用 AES-256-GCM 认证加密。元数据和缩略图也会被保护,而不是作为明文旁路信息留下。
认证加密的意义不只是把内容藏起来,还要拒绝被篡改、截断、乱序或移动到错误上下文里的密文。Senvra 会把受保护数据绑定到它所属的空间、项目、元数据角色或分片顺序上,让这些验证有明确边界。
为什么换密码很快
更换私密空间密码时,Senvra 会先验证当前权限能够打开现有主密钥。然后它用新密码和新的盐派生新的密码包装密钥,再把同一个空间主密钥重新密封到新的密码包装里,并提交更新后的凭据描述。
媒体文件不需要逐个解密再写回,因为它们底下的空间密钥和项目密钥没有改变。改变的是密码包装层,不是内容加密层。
这也是很多成熟加密系统使用 key wrapping 的实际原因:人的凭据可以轮换,而不必强迫系统重写所有大文件。
这不代表什么
这套设计让密码轮换变得实际可用,也让恢复路径掌握在用户自己手里。但它不是“任何情况下都绝对安全”的承诺。
如果设备或系统已被攻破、密码在解锁状态下被看到、用户主动把文件导出到其他 App,或者密码和 Space Access Key 同时丢失,这些都超出了简单一句“加密保护”的范围。Senvra 不保存私密空间的服务器端恢复后门。
更准确的承诺是:私密内容在本地处理,由独立密钥和认证加密保护,恢复只依赖用户自己掌控的凭据。