Velcrypt 如何加密你的保险箱
加密正是保险箱不只是一个隐藏文件夹的原因。在 Velcrypt 中,每张照片、每段视频和每份文档在存储之前都会先在你的 iPhone 上加密,使用的密钥只能由你的图案重新生成。本页逐步介绍这些密钥是如何生成和使用的。
密钥链,逐步拆解
Velcrypt 采用分层密钥模型,每一层只负责一件事。
- 你的图案。 你在 5×5 网格上绘制它。这是你唯一需要记住的秘密。
- 用 PBKDF2-HMAC-SHA512 拉伸密钥。 图案与一个随机盐一起,经过基于 SHA-512 的 PBKDF2 处理至少 600,000 次迭代。密钥拉伸是一种刻意让每一次猜测都变慢的技术,使逐个尝试图案的代价变得高昂。
- 钥匙串中每台设备独立的盐。 盐是随机的,在你的设备上生成并保存在 iOS 钥匙串中。它确保同一个图案在另一部手机上会生成不同的密钥,让预先计算好的猜测表毫无用处。
- 保险箱主密钥。 每个保险箱都有自己的随机 256 位主密钥。拉伸后的图案密钥并不直接加密文件,而是用来解锁这把主密钥。
- 用 HKDF 生成逐文件密钥。 HKDF(一种标准的密钥派生函数)从主密钥为每个文件派生出独立的密钥。没有两个文件共用同一把密钥。
- AES-256-GCM。 每个文件都通过 Apple 的 CryptoKit,以 GCM 模式的 AES-256 用各自的密钥加密。
| 层级 | 作用 |
|---|---|
| 图案 | 只有你知道的秘密 |
| PBKDF2-HMAC-SHA512,600,000+ 次迭代 | 让每次猜测都变慢 |
| 每台设备独立的盐(钥匙串) | 让密钥在设备上独一无二 |
| 随机 256 位主密钥 | 每个保险箱一把,使保险箱彼此分离 |
| HKDF | 每个文件一把独立密钥 |
| AES-256-GCM | 加密并认证文件 |
| iOS 数据保护 | 第二层,系统级保护 |
由于每个保险箱都有自己的主密钥,保险箱之间在密码学上是彼此分离的。正因如此,隐藏保险箱才不只是视觉上的小把戏。
什么是认证加密
认证加密是一种同时保护机密性和完整性的加密方式。AES-256-GCM 一次完成两件事:它打乱文件内容,使没有密钥就无法读取;同时附加一个认证标签,证明文件没有被篡改。
Velcrypt 打开文件时会检查这个标签。哪怕只有一个字节被改动,无论是因为损坏还是篡改,解密都会失败,而不是悄悄返回损坏或被操纵的数据。只加密、不认证的旧模式无法发现这种问题。如需通俗易懂地了解这一加密算法本身,请参阅 AES-256 加密详解。
iOS 数据保护作为第二层
在自身加密之上,Velcrypt 存储保险箱文件时还会将 iOS 数据保护设为完全保护级别。在这一级别下,只要手机处于锁定状态,iOS 就会用与设备密码绑定的密钥让文件保持加密。
这两层保护相互独立。即使其中一层被以某种方式绕过,另一层仍然挡在锁定的手机和你的文件之间。
为什么其他地方都没有密钥
Velcrypt 完全离线、无需账户。没有服务器,没有上传,你的手机之外也没有任何密钥副本。这种设计消除了一整类风险:没有可被攻破的数据库,也没有能解密你文件的公司员工。
但它也有代价。由于密钥只存在于设备上,且只能通过你的图案生成,一旦忘记图案或丢失手机,任何人都无法恢复保险箱。加密备份选项已在计划中,但第一个版本中尚不提供。
加密无法覆盖的情况
强加密保护的是静态存储的文件。如果有人看到你绘制图案、你递出手机时保险箱还开着,或越狱设备上运行着恶意软件,加密都无能为力。它也无法触及 Velcrypt 之外的副本,比如仍留在「照片」中的原件。安全概览完整介绍了威胁模型,包括 Velcrypt 无法防范的情况。
常见问题
Velcrypt 使用什么加密?
AES-256-GCM,一种认证加密模式,通过 Apple 的 CryptoKit 框架实现。每个文件都用各自的密钥加密,这些密钥由保险箱随机生成的 256 位主密钥派生而来。
我的图案会保存在手机上吗?
你的图案不会被直接用作密钥。它会经过 PBKDF2-HMAC-SHA512 拉伸,至少 600,000 次迭代并加入每台设备独立的盐,得到的结果用于解锁保险箱的主密钥。
Velcrypt 能解密我的文件吗?
不能。Velcrypt 没有服务器,也没有你的密钥副本。密钥只能在你的手机上根据你的图案重新生成,这也是忘记图案后无法重置的原因。
为什么还要使用 iOS 数据保护?
它增加了一个独立的保护层。文件采用完全保护级别,因此在手机锁定期间,除了 Velcrypt 自身的加密,iOS 还会用与设备密码绑定的密钥让文件保持加密。