深藏青色的表面上并排放着三件物品:一个半透明的青绿色立方体,顶面是一个五乘五的小圆点网格,一条发光的线穿过其中六个点;一个低矮的托盘,上面放着五块一模一样的空白圆角瓷砖;还有一束狭窄的青绿色光柱落在一个空荡荡的基座上。

图案锁 vs PIN vs Face ID:到底哪个更安全

这个问题听起来该有一个明确答案,而且几乎确实如此,直到你问一句:你要防的是谁。在地铁上捡到手机的陌生人,午餐时坐在你对面的同事,以及早已知道你密码的伴侣,这是三种完全不同的威胁,三种锁定方式面对它们时会以不同的顺序失守。下文将给出完整排名、背后的研究依据,以及比这一切都更重要的一点:哪种锁该用在手机本身,哪种锁该用在手机里的照片上。

面对有人在旁偷看你解锁,图案锁在三者中明显最弱。在一项单次观察偷窥的对照研究中,攻击者能重现带可见轨迹线的图案的概率约为 64%,而六位数 PIN 码被破解的概率约为 11%。图案锁还会留下物理痕迹:最早提出油渍攻击的研究发现,在光线有利的条件下,通过屏幕上手指留下的油渍能在 68% 的测试中还原出完整图案,在 92% 的测试中还原出部分图案。Face ID 不会向旁观者泄露任何信息,这也是它在理论上胜出的原因,Apple 估计随机一张陌生人脸与你的脸匹配的概率约为百万分之一。但它的弱点在别处:它在你熟睡时也能生效,在有人把手机举到你脸前时也能生效,而且在 iPhone 上 Face ID 只是通往密码的捷径,并非替代密码,所以一旦密码被人看到,Face ID 的防护也就失效了。图案面板的大小同样关键。几乎所有被广泛引用的图案统计数据说的都是三乘三的网格,而至少六个点起步的五乘五面板处于完全不同的数量级。给设备本身设置一个足够长的密码并搭配 Face ID 使用,再给存放你不愿交给陌生人查看的内容的应用单独设置一套凭证。

简要排名,以及会颠覆它的那个问题

如果只看在被人观察时的表现,排名很清楚:Face ID 第一,长 PIN 码第二,图案锁垫底。Face ID 不会向旁观者泄露任何东西,因为这个凭证从未离开过你的脸。PIN 码是在一小块可以被手挡住的区域输入的,每多一位数字,猜测空间就扩大十倍。图案锁则是横跨屏幕大部分区域的大幅度手势,通常还带一条随手指移动的亮线,是三者中唯一能被隔两个座位的人直接记住的方式。这在研究数据里不是个小差距,而是抛硬币式的概率和几乎不可能猜中之间的差距。

接下来换个问题问:真正未经允许打开别人手机的是谁。绝大多数情况下不是拿着相机的陌生人,而是已经在同一个房间里的人:伴侣、室友、同事、亲戚。这个人通常已经知道你的密码,看你解锁手机看了成百上千次,根本不需要任何攻击手段。面对这种人,上面的排名毫无意义,因为三种锁其实都已经是开着的。唯一还能守住的,是那个人从未见过的第二重凭证,放在存有真正值得保护的内容的应用里。我们关于如何在 iPhone 上用 Face ID 给单个应用加锁的指南介绍了系统自带功能的这一半,值得和本文一起阅读。

每种锁在被人偷看时各会泄露什么

研究者对此做过实际测量,而非单纯猜测。在一项单次观察偷窥研究中,带可见轨迹线的图案被观察者成功重现的概率约为 64%,而六位数 PIN 码被重现的概率约为 11%。关掉轨迹线能明显提升图案锁的安全性,遮住数字键盘也能提升 PIN 码的安全性,但即便如此差距依然存在。原因在于几何结构:PIN 码是在密集网格上进行的一连串小幅点按,一位数字看错就会毁掉整个猜测;而图案锁是一个连续的整体形状,形状恰恰是人类记忆在看一眼后最擅长记住的东西。

图案锁事后还会留下证据。最早提出油渍攻击的研究在受控光线下拍摄手机屏幕,能从手指油渍痕迹中在 68% 的测试里还原出完整图案,在 92% 的测试里还原出部分图案。PIN 码键盘同样会留下油渍,但油渍不会显示顺序,攻击者只能知道用到了哪些数字,猜不出输入顺序。Face ID 既不会在屏幕玻璃上留下痕迹,也不会在房间里留下任何线索。它的问题在于,只要你的脸出现在摄像头前它就会起作用,包括你熟睡的时候,这是一个真实且具体的弱点,而不是纸上谈兵。Apple 通过在重启后、连续 48 小时未解锁后,以及连续五次人脸识别失败后要求输入密码来缓解这一问题,并针对窃贼已经看到你输入密码的情形推出了失窃设备保护功能。

背后的数学原理,以及面板大小为何改变一切

几乎每一个被广泛引用的图案统计数据说的都是安卓的三乘三网格,其中四到九个点组成的路径总共有 389,112 种可能。这个数字比四位 PIN 码的 10,000 种多,比六位 PIN 码的 1,000,000 种少,而且这两个数字都高估了实际难度,因为无论是图案还是 PIN 码,人们的选择都远远算不上随机。人们从左上角开始画图案的比例远高于随机概率,还会画出自己熟悉的字母。人们会选 1234、0000,或者出生年份。先尝试常见选项的攻击者,试探的并不是整个可能空间,而只是其中最拥挤的一小块。

没人提起的变量是面板大小,而它主导了其余一切。只统计使用六个不同点的路径,五乘五面板在应用任何绘制规则筛选之前就能提供 127,512,000 种排列,远超六位 PIN 码的 1,000,000 种。Vaultaire 正是出于这个原因采用五乘五面板,要求至少六个点、至少两次转折,并在你画出的图案是连续直线、螺旋或可辨认字母时发出提示。这些都无法解决被偷看的问题,因为那是当着别人的面在玻璃屏幕上作画这件事本身带来的问题,与网格大小无关。但这确实说明,图案锁只有在被人偷看时才是弱选项,在无人偷看时它是强选项。

哪种锁该用在哪扇门上

把手机本身和其中的隐私内容当作两扇不同的门来对待。在手机这一层,用 Face ID 搭配一个足够长的密码,并打开失窃设备保护,这会在你离开常去地点时,对敏感操作强制要求 Face ID 验证且不允许用密码代替。这套组合能应对陌生人、扒手,以及在咖啡馆拍下你解锁过程的人。它应付不了的,是已经知道密码的人,或者你把已解锁的手机递给别人看一张照片,对方却顺手继续往下翻的那一刻。要防住这种情况,你需要一把不会因为手机开了就跟着开的锁。

这就是第二扇门,也是图案锁真正派上用场的地方。在 Vaultaire 中,图案不会与任何存储的副本进行比对,因为根本不存在可供比对的存储副本。你画出的点会被序列化,与保存在 iOS 钥匙串中、绑定该设备的盐值一起,经过 600,000 次 PBKDF2 配合 SHA-512 的迭代运算,得到用于解密文件的 AES-256 密钥。图案画错并不会收到服务器返回的拒绝提示,而是会生成一把打不开任何东西的密钥。这里没有账户,没有密码重置,也没有保险库副本存放在任何其他地方,这也是设置时会生成一条恢复短语、并且值得把它离线保存的原因。我们关于AES-256 加密实际保护的是什么的说明文章讲解了加密算法这一面,我们对保险库应用安全宣传的审查文章讲解了如何判断一款应用是真的做到了这些,还是只是隐藏了一个文件夹。Vaultaire 最多支持 5 个保险库免费使用。

相关指南

参考来源

常见问题

有人真的能通过屏幕上的油渍看出我的图案吗

在条件合适的情况下确实可以。提出油渍攻击这一说法的研究在受控光线和拍摄角度下拍摄屏幕,在 68% 的测试中还原出完整图案,在 92% 的测试中还原出部分图案。日常使用会让玻璃表面留下混杂的油渍,从而增加还原难度,擦拭屏幕则会把痕迹完全清除,但这种攻击是真实存在的,而且只适用于图案锁。PIN 码键盘留下的痕迹只会暴露用到了哪些数字,不会暴露输入顺序。

在 iPhone 上 Face ID 比密码更安全吗

两者不是互相替代的关系。Face ID 只是通往同一个密码的快捷方式,密码始终是底层的真正凭证,这也是为什么 iOS 会在重启后、连续 48 小时未解锁后,以及连续五次人脸识别失败后要求输入密码。面对偷看,Face ID 明显更安全,因为根本没有东西可看。面对有人能把手机举到你脸前的情况,密码更安全。两者都该用,并且把密码设得长一些。

如果有人已经知道我的 iPhone 密码,单独的保险库图案还有用吗

这正是它存在的主要意义。知道你密码的人能拿到整部手机的内容:照片、信息、隐藏相册,以及网页版 iCloud。拥有独立凭证的保险库是唯一不会跟着一起打开的部分,前提是你从未在这个人面前画过这个图案,也从未把密码的数字直接拿来当图案的形状。选一个你从没在这个人面前输入过的图案,因为熟悉感才是这里真正的攻击手段。

如果我忘记了图案怎么办

在一款由图案推导出加密密钥的应用里,除了图案本身或者设置时发放的恢复短语,没有任何办法能找回文件。这是这种设计的直接后果:没有服务器保存副本,任何客服流程都无法帮你重置。把恢复短语写在纸上,放在远离手机的地方保管。下方链接的关于忘记照片保险库密码的指南,介绍了剩下还能尝试的办法,以及哪些所谓的恢复方案不值得信任。