隐私和加密
这些词在应用程序描述中被广泛使用,它们之间的差异正是价值所在。隐藏未锁定。锁定未加密。而别人持有的钥匙其实并不属于你。
-
ChaCha20-Poly1305
-
一种现代加密算法,既隐藏数据又检测篡改数据。在手机上速度很快,但旧版本的手机并不总是具有硬件加速功能。
ChaCha20 进行加密; Poly1305 生成一个标签来验证数据是否未被更改。它们共同构成了所谓的经过身份验证的加密——在修改后的文件上解密会明显失败,而不是产生看似合理的垃圾。
它与 TLS 和现代安全消息传递中使用的结构相同。在没有 AES 加速的硬件上,它比 AES 更快,这就是为什么手机更喜欢它。
-
密钥包装
envelope encryption -
使用一个密钥加密文件,然后单独加密该密钥的每种方式。更改密码会重新包装一个小密钥,而不是重新加密所有内容。
使用设备上生成的密钥对文件进行一次加密。然后该密钥被密码包装(加密),并再次被恢复代码包装。两个信封,每个信封里面有一把钥匙。
后果都是实际的。密码更改会重写几百字节而不是一百吉字节。生物识别解锁是另一个包装副本,而不是第二个安全模型。丢失每个包装就会丢失密钥,因为密钥不存在于其他地方。
另请参阅: 恢复码ChaCha20-Poly1305
-
恢复码
-
一个一次性字符串,可以在忘记密码时解开主密钥。没有人可以重新发布它,因为没有其他人曾经拥有过它——包括编写该应用程序的人。
它在设置时显示一次,并且是两扇门中的第二扇。如果将密码写下来并保存在设备以外的地方,忘记密码就会带来不便。
如果忘记密码并且丢失恢复代码,则任何人都无法解密文件。 这不是一个可以争论的支持政策;这就是没有密钥副本的意思。尽可能小心地保存文件。
-
诱饵保险箱
plausible deniability -
第二个密码可以打开另一个无害的保险箱。有人试图解锁该应用程序,但打开的并不是他们想要的东西。
两个密码都是真实的,并且都可以打开一个真实的保险箱。屏幕上没有任何内容表明存在另一个应用程序,并且无法询问应用程序正在显示哪一个。
它的存在是为了拒绝解锁不是一种选择的情况——边界、需求、有人站在你身边。单独加密并没有什么帮助,因为问题不在于密钥,而在于被迫使用它。
-
钥匙链
-
系统受保护的小秘密存储,由设备的安全硬件支持。这是密钥和令牌所属的地方,并且不应放置任何大的东西。
其中的项目可以携带条件:仅在设备解锁时可读、仅在该设备上、仅在生物识别或密码确认后。这些条件是由硬件强制执行的,而不是由应用程序礼貌地询问。
它存储秘密,而不是数据。钥匙、代币和包装材料都放在那里;加密文件本身位于磁盘上,大小不是问题。
-
休息时与运输途中
-
静态加密意味着在磁盘上无法读取。传输中加密意味着在网络上不可读。它们是单独的保护,产品可能诚实地主张其中一项,但不采取另一项。
HTTPS 是传输中加密:对任何观察网络的人来说都是安全的,并且一旦到达,另一端的服务器就可以完全读取。静态加密与存储的副本有关,这在设备丢失或磁盘映像时很重要。
仔细阅读隐私声明通常意味着弄清楚它是关于两者中的哪一个。 “你的数据已加密”没有附加任何一个词,这是一个已选择不说的句子。
另请参阅: ChaCha20-Poly1305零知识
-
零知识
-
在这种设计中,操作员无法读取其存储的内容,因为密钥永远不会离开用户的设备。测试很简单:他们可以重置您的密码并仍然向您提供您的数据吗?
如果一项服务可以在你忘记一切后恢复访问权限,那么它就拥有可以解锁你的数据的东西——这意味着它可以被迫使用它,并且任何破坏该服务的人都会继承相同的能力。
交易是真实的,应该明确说明,而不是作为纯粹的利益出售:真正的零知识意味着当最后一把钥匙丢失时真正失去访问权限。没有第三种选择,操作员可以营救您,但其他人却无法营救。
-
生物识别技术
Face ID, Touch ID -
设备(而非应用程序)确认您的身份;该应用程序被告知是或否。指纹或面部数据不会到达应用程序,也都不是密码。
生物识别解锁是一种围绕秘密的便利,而不是替代品。它保护的是存储的密钥,这就是为什么密码总是存在于其后面——生物识别可能会失败,而后备措施必须是您知道的东西。
比较发生在专用硬件内,并且模板永远不会离开它。提供 Face ID 的应用程序只是向系统询问问题,而不是收集任何信息。