LifeVeil 如何保护您的文件

本页用通俗的语言说明 LifeVeil 做了什么,也说明它做不到什么。我们宁愿让您了解它的局限,也不愿让您相信一个过大的承诺。

简而言之

从图案到密钥

您在 5×5 网格上绘制图案,至少使用 6 个点,且每个点只能用一次。LifeVeil 通过 Argon2id 将图案转换为密钥,该算法来自 libsodium(Android 上为 1.0.20 版)。

文件如何加密

恢复短语

指纹

指纹解锁是可选的。指纹由 Android 验证,而不是 LifeVeil;应用从不接收您的指纹。主密钥由 Android Keystore 中的一个密钥解锁,这个密钥只有在刚刚通过强生物识别验证后才能使用。如果有人在手机上添加了新指纹,这个密钥就会失效,您必须重新使用图案。

备份文件

应用内的其他保护

AI 与图案猜测

您应该了解的局限

没有任何应用能防范一切。以下是 LifeVeil 如实说明的局限。

简单的图案可能被猜中

简短或常见的形状(L 形、Z 形、一条直线)可能被人通过偷看您操作或屏幕上的指痕猜出,也可能几次尝试就被猜中。实际使用的图案比可能的图案总数所显示的要容易猜得多。请使用更多的点和更多的转折。应用会对非常简单的图案发出警告。

猜测可能需要多长时间

在应用内,每次尝试大约需要一秒,输错 5 次后等待时间会越来越长。但如果有人拿到了您的备份文件,或者从已 root 的手机中取得了设备盐值,就可以改在电脑上猜测,而且无需等待。Argon2id 会减慢这一过程,但图案的可能组合远少于长密码。以下是一块高端显卡(RTX 4090 级别)以每秒约 1,000 次猜测计算的粗略估算:

猜测对象可能组合数所需时间(一块显卡)
最常见的 10,000 个图案104约 10 秒
所有 6 点图案1.28 × 108约 1.5 天
所有 7 点图案2.42 × 109约 28 天
所有 8 点图案4.36 × 1010约 1.4 年
恢复短语(92 位)4.95 × 1027约 1.6 × 1017 年

以上为估算值,而非实测值。图案数量是上限;实际使用的图案要少得多。硬件越多或越快,猜测速度就会按比例提高。

请勿让他人获得您的备份文件

备份文件不包含设备盐值,因此任何拿到它的人都可以像上面所示那样离线尝试图案。请只把它存放在只有您自己能访问的地方,例如您自己的云账号,并使用更长的图案。

已 root 或被感染的手机

如果有人能以应用的权限运行代码(例如在已 root 的手机上,或通过拥有完全控制权的恶意软件),就能解锁设备盐值并离线猜测。保险箱打开期间,密钥位于内存中,可通过 root 权限或调试器读取。Android 和 Flutter 内部生成的一些副本,以及屏幕上显示的照片,无法立即从内存中清除。

有些信息是可见的

应用存储空间中加密文件的数量、大致大小,以及它们的创建或修改时间都不会被隐藏。已安装 LifeVeil 这一事实也不会被隐藏。

空保险箱只能骗过屏幕

能读取应用文件的人(例如在已 root 的手机上)可以数出保险箱文件夹的数量,也能看到这个设置已打开。另外,图案错误 5 次后应用会要求等待,这说明之前的图案什么也没打开。

更换图标只改变主屏幕

指纹是较弱的途径

指纹解锁会跳过 Argon2id。它的强度取决于您手机的指纹传感器和 Android Keystore。您可以随时在“设置”中关闭它。

入侵者照片

应用不会播放快门声,但在某些国家销售的手机(例如日本和韩国)总会播放快门声。如果其他应用正在使用相机,或手机没有前置摄像头,就不会拍照。在您解锁自己创建的第一个保险箱之前,这些照片会用 Android Keystore 密钥封存。

照片详细信息

系统界面打开期间暂停锁定

当系统界面打开时(权限请求、删除确认、照片或文件选择器、指纹提示),以及导入或导出正在进行时,应用会暂不锁定。如果您已离开应用,它会在这些操作结束 2 秒后锁定。

所有保险箱共用一个设备盐值

一部手机上的所有保险箱都使用同一个设备盐值。如果有人拿到了这个盐值,一次猜测就能同时测试所有保险箱。攻击单个保险箱的成本不变。

任何应用都无法阻止的情况

有人看着您绘制图案,或有摄像头拍下您的屏幕。

两者都丢失时,任何人都帮不了您

如果您同时丢失了图案和恢复短语,任何人都无法找回您的文件,包括我们。