图案锁、PIN 码、密码和 Face ID:哪个更安全?
每一把锁都是在三件事之间取舍:有多难猜、有多容易被看到、别人有多容易逼你打开。大多数比较只看第一点。这篇指南三点都看,有数字的地方给出真实数字,没有数字的地方给出坦诚的说明。
四位竞争者
- PIN 码 是一串短数字,在 iPhone 上通常是 4 位或 6 位。
- 字母数字密码 是由字母、数字和符号组成、长度不限的字符串。
- 图案 是在点阵上画出的一条路径。Android 让 3×3 的九宫格流行起来;Velcrypt 的图案锁 使用 5×5 点阵。
- 生物识别(Face ID、Touch ID)用你的脸或指纹解锁,并以密码作为后备。
搜索空间:要猜多少次?
搜索空间是攻击者在最坏情况下需要尝试的所有可能“秘密”的数量。它是比较各种锁最清晰的数字,但前提是你要记住:人们并不是随机选择“秘密”的。
PIN 码
4 位 PIN 码有 10 × 10 × 10 × 10 = 10,000 种可能。6 位 PIN 码有 1,000,000 种。这 100 倍的跃升,是大多数人能做的最简单的安全升级。
问题在于分布。对泄露 PIN 码的分析一再表明,少数几个代码(1234、0000、1111、出生年份、123456)就覆盖了现实中很大一部分选择。攻击者会先试这些。
字母数字密码
每个位置大约有 70 种可能的字符,每增加一个字符大约增加 6 比特。一个真正随机的 10 位密码,组合数比任何 PIN 码或实用图案都多。问题在于好不好记:人们会选单词、名字和可预测的替换,而且长密码在手机上一天输入很多次非常繁琐。
图案:理论与人性
这里最需要坦诚。图案的理论数量听起来可能非常庞大。在经典的 Android 3×3 九宫格上(4 到 9 个点,每个点只能用一次),共有 389,112 种有效图案,比 5 位 PIN 码还多。在有 25 个点的 5×5 点阵上,理论数量要大得多。
真实的图案远比这些数字所暗示的弱。关于 Android 图案的研究一再发现,人们会:
- 从左上角起笔的频率远高于随机概率,
- 画接近最短长度的短图案,
- 描出字母(L、Z、S、C、U、N)或简单的方框,
- 按阅读习惯从左到右、从上到下移动。
因此,一个典型的人选 3×3 图案,其实际强度更接近短 PIN 码,而不是它的理论最大值。更大的点阵只有在你真正用上它时才有帮助:5×5 点阵上一个 6 个点的“L”仍然很容易被猜到。
让图案变强的,和让任何“秘密”变强的是同一件事:长度和不可预测性。在 5×5 点阵上,一个 8 到 12 个点、多次改变方向、不从角落起笔、不构成字母、最好还与自身路径交叉的图案,是真正难以猜到的。你可以用 图案强度检测器 测试一个类似的形状(千万不要用你真正的图案)。
猜测速度和猜测次数同样重要
组合数只是故事的一半。另一半是攻击者能以多快的速度尝试。在 iPhone 上,安全隔区会对设备密码施加逐步递增的延迟。在 App 内部,防御通常依靠密钥派生:Velcrypt 让每个图案都经过至少 600,000 次迭代的 PBKDF2,刻意让每次猜测都变慢。AES-256 加密详解 解释了为什么这一步比加密算法本身更重要。
偷看与油迹
偷看(肩窥)是指有人看着你解锁。这是现实中针对手机锁最常见的攻击,因为最想进入你手机的人,往往就坐在你旁边。
- 图案 最容易被看到。一个形状扫一眼就能记住,哪怕隔着一张桌子。
- PIN 码 比较容易被看到,尤其是用一只拇指输入的 4 位 PIN 码。
- 密码 看一次很难记全,因为它更长,而且键盘会在不同布局之间切换。
- 生物识别 根本无法被偷看。
油迹攻击 读取的是你的手指留在玻璃上的油腻痕迹。在这方面,图案比 PIN 码更容易暴露,因为一条连续的线会留下连续的痕迹。自身交叉、折返,或以不明确的顺序经过点的图案,要从痕迹中还原就难得多。
实用的防御方法:把屏幕侧向一边、用另一只手遮住、时不时擦一下屏幕,以及在独处时解锁敏感 App。
被迫解锁:大多数比较都跳过的问题
生物识别有一个再多工程设计也无法消除的弱点:它们不需要你的参与。别人可以在你睡着时把手机举到你脸前,把你的手指按在传感器上,或者直接用武力强迫你。在家庭冲突、聚会或抢劫中,这是现实存在的风险。
在一些地方,执法机关还可以依法要求你提供指纹或面容,而对记在脑子里的密码则另作对待。各国的法律情况差别很大,而且随时间变化,所以本指南不提供法律建议。技术上的要点很简单:记在脑子里的“秘密”需要你做出决定;身体部位则不需要。
如果你依赖 Face ID,就要知道“紧急出口”。在 iPhone 8 及更新机型上,同时按住侧边按钮和任一音量按钮,直到出现关机/SOS 紧急联络界面(然后取消),就会暂时停用 Face ID 和 Touch ID,直到输入密码为止。什么时候需要这样做,请看 过境时的手机隐私。
并排对比
| 4 位 PIN 码 | 6 位 PIN 码 | 长密码 | 图案(5×5,8 个点以上) | Face ID / Touch ID | |
|---|---|---|---|---|---|
| 可能的组合数 | 10,000 | 1,000,000 | 随机时非常大 | 理论上非常大;可预测的形状则低得多 | 不适用 |
| 现实中被猜中的可能性 | 高(常见代码) | 中等 | 随机时低 | 不规则时低,像字母时高 | 很低 |
| 偷看 | 容易 | 中等 | 难 | 容易 | 不可能 |
| 油迹泄露 | 有一些 | 有一些 | 低 | 高,除非路径自身交叉 | 无 |
| 能否在未经你同意时被使用 | 否 | 否 | 否 | 否 | 是 |
| 速度与舒适度 | 快 | 快 | 在手机上慢 | 快 | 最快 |
为每一层选对锁
你不必为所有东西只选一把锁。对大多数人来说,合理的设置是:
- 设备: 6 位(或更长)密码;如果你的处境允许,再配上 Face ID 或 Touch ID 图个方便。
- 私密内容: 一个不同于设备密码的独立“秘密”,这样即使有人知道或偷看到你的密码,也不会自动拿到一切。
- 知道如何快速关闭生物识别,以便在可能受到压力的场合使用。
Velcrypt 的定位
Velcrypt 做了一个有意的选择:进入保险箱的唯一方式,是在 5×5 点阵上画出图案,即一条至少经过 6 个点、至少改变一次方向的连续线。推荐使用 8 到 12 个点的更长图案。它不支持 Face ID 或 Touch ID,因为图案无法从你身上“取走”。
这种设计也改变了“猜测”的含义。每个图案都是一个独立的保险箱,Velcrypt 从未见过的图案只会打开一个空保险箱,不会有任何错误提示。这意味着猜错了并不会暴露自己是错的,你也可以用第二个图案保留一个 诱饵保险箱。隐藏保险箱 页面解释了这个模型,安全概览 则列出了它无法防范的情况,包括有人看着你画图案。
常见问题
图案锁比 PIN 码更安全吗?
要看具体的图案和 PIN 码。大点阵上又长又不规则的图案可以胜过 6 位 PIN 码,但形状像字母的短图案,比随机的 6 位 PIN 码更容易被猜到。长度和不可预测性比锁的类型更重要。
Face ID 比密码更安全吗?
Face ID 很难用照片骗过,也不可能被偷看,所以能很好地防范随意窥探。它的弱点在于“同意”:别人可以把手机举到你脸前。而密码只有你输入时才有效。
6 位 PIN 码有多少种组合?
6 位 PIN 码有 1,000,000 种可能的组合(000000 到 999999),而 4 位 PIN 码只有 10,000 种。123456 或生日这类常见选择会让实际数量大幅减少。
别人能从屏幕上的指纹痕迹猜出我的图案吗?
有时可以。在合适的光线下,玻璃屏幕上的手指痕迹可能暴露图案的路径。擦拭屏幕、使用磨砂贴膜,以及选择自身有交叉的图案,都能让这类攻击更难成功。
Velcrypt 为什么不提供 Face ID?
这是有意为之。脸或指纹可以在未经你同意的情况下被用来解锁设备,而图案只存在于你的记忆中。Velcrypt 选择图案,是为了让打开保险箱永远需要你自己决定打开它。