上锁保险库解决不了的问题
想象你走廊里有一个保险箱。无论锁多好,保险箱本身就在宣告:里面有贵重物品。看到它的任何人都可以要求打开——小偷、施暴的伴侣、检查站的官员。加密本身就是那个走廊里的保险箱。内容受保护;内容的存在却在广播。
可否认存储把保险箱从走廊移走了。正确实现后,没有可见的锁箱,没有锁箱的数量记录,也没有办法证明存在一个。"打开剩下的"这一要求会失败——不是因为你抵抗了它,而是因为"剩下的"无法被证明存在。
可否认保险库如何工作
三个属性必须同时成立。第一,每个保险库是独立的:每个都用从各自 PIN、图案或密码短语派生的密钥加密,因此打开一个不会告诉你关于其他任何保险库的信息。第二,没有注册表:任何地方都不存储保险库的索引、列表或计数器——软件本身不知道有多少个存在。第三,密文看起来像噪声:未揭示的保险库与未使用的随机数据无法区分,无论是肉眼浏览还是取证工具分析。
结果颠覆了通常的解锁仪式。在 Sealby 中,PIN 不是"解锁应用"——它选择一个保险库。正确的 PIN 揭示其保险库;任何其他输入都会以完全相同的方式打开一个全新的空保险库。就连输错的 PIN,也与打开一个本来就是空的保险库无法区分,因为它们本来就是同一回事。
简短的历史
这个想法比智能手机还要古老。桌面工具——最著名的是 TrueCrypt 及其后续项目——提供了隐藏卷:在另一个容器的空闲空间内的加密容器,两个密码揭示两个不同的现实。研究者将这一属性形式化为可否认加密。最近改变的是风险的所在:最私人的设备现在是你口袋里的手机,而它正是人们真正被施压要求解锁的东西。
可否认性不是什么
诚实的局限,坦率地说明。可否认性保护的是静态数据免于检查。如果有人看着你输入 PIN、你自己确认了保险库的存在,或者明文副本存在于其他地方——同步的照片库、聊天记录、做保险库之前的备份,它都无法保护你。而且它不是违法的借口;它是在不应该由压力来决定的情况下保护私人生活隐私的一种方式。