隐藏保管库:没有人知道有多少存在
没有保管库列表。没有目录。没有计数。即使使用取证工具和物理访问,Vaultaire 也无法以加密方式确定您的设备,上存在多少个保管库。如果没有人能证明保管库存在,就没有人可以要求你打开它。
Vaultaire 将所有加密数据存储在单个无差别池中,没有保管库列表、没有目录,也没有显示存在多少保管库的元数据。无论保管库或文件数量如何,存储填充都会保持总大小恒定。应用程序本身无法枚举您设备上的保管库。
“隐藏保管库”实际上是什么意思?
大多数保管库应用程序的工作方式类似于文件柜。打开应用程序,您会看到您的保管库列表。也许他们有名字。也许他们会显示计数。也许每个旁边都有一个小锁图标。该应用程序确切地知道您有多少个保管库,并且任何打开应用程序,或检查设备的人都可以看到该信息。
Vaultaire 的工作方式不同。没有保管库列表。没有目录。没有注册表。没有为现有内容编目的元数据文件。当您绘制图案时,Vaultaire 不会在数据库里查找保管库。它会从您的图案派生出一个加密密钥,并尝试用这把密钥解密数据。如果密钥与某个现有保管库匹配,数据就会解密成您的文件。如果什么都匹配不上,解密只会产生噪声,而 Vaultaire 无法区分“这个图案对应的保管库不存在”和“保管库存在,但您画错了图案”。
这不是 UI 决定。这是一种建筑风格。Vaultaire 确实不知道您的设备上有多少个保管库。该应用程序无法对它们进行计数,无法枚举它们,也无法显示它们,因为它最初的设计目的就不是为了跟踪它们。
大多数应用只是在用户界面里隐藏保管库。Vaultaire 则把保管库连同应用自身一起隐藏。应用没有枚举保管库的机制,因为根本不存在可供枚举的记录。保管库本质上只是加密数据,只有在应用正确密钥时才会变得有意义。
这不是“隐藏文件夹”
“隐藏保管库”一词可能会让您想到将文件夹隐藏在您不易看到的地方的应用程序。也许该文件夹以点前缀命名,因此它不会显示在文件浏览器中。也许该应用程序使用“计算器”伪装来隐藏其真正目的。这些都是伪装技巧,它们都有一个致命的缺陷:隐藏的数据仍然存在,在已知的位置,等待被发现。
有权访问您设备的取证检查员可以轻松找到隐藏文件夹。文件系统工具列出每个目录。存储分析器显示磁盘空间的分配位置。即使是一位精通技术的朋友只要花五分钟时间和搜索引擎就可以找到大多数“隐藏”文件夹。
Vaultaire 不隐藏文件夹,也不隐藏文件。相反,所有保管库的加密数据都存在于一个未分化的存储池中。没有与保管库边界一一对应的文件边界。没有标头标记一个保管库在哪里结束、另一个又从哪里开始。整个存储池都是加密数据,如果没有某个特定保管库的正确密钥,就无法判断哪些字节属于哪个保管库,也无法判断这个池里到底有多少个保管库。
区别就像把书藏在高架上和把书上的墨水溶解到游泳池里的区别。一个人需要一个梯子。另一个需要准确地知道哪些分子是你的。
存储混淆:填充机制
即使没有保管库列表,聪明的对手也可能会尝试不同的方法:分析磁盘使用情况。如果 Vaultaire 今天使用 500 MB 的存储空间,明天使用 800 MB 的存储空间,则您可能添加了一个保管库。如果从一个保管库中删除照片会减少 200 MB 的存储空间,则可能存在可利用的相关性。
Vaultaire 通过存储填充克服了这一点。该应用程序通过使用加密随机字节填充其数据池来保持一致的存储占用空间。将文件添加到 Vault 时,填充会缩小。当您删除文件时,填充会增加。存储池的总大小仅在预定阈值时发生变化,而不是响应于单个文件操作。
这意味着随着时间的推移监视设备存储的观察者无法确定更改是否是由添加文件、删除文件、创建新保管库或销毁旧保管库引起的。存储空间的设计目的是提供非信息性的。这是设计造成的噪音。
填充的工作原理
填充机制的运行原理很简单:存储池始终占用落在固定步长边界上的大小。把它想象成楼梯而不是坡道。您的实际数据可能是 347 MB,但池占用 512 MB。您添加 100 MB 的照片,池仍占用 512 MB,填充吸收了差异。仅当您跨越下一步阈值时,池大小才会发生变化,并且无论您添加一个还是十个保管库,该更改都是相同的。
填充字节与加密数据无法区分。两者都是看起来随机的字节序列。没有标头,没有标记,也没有元数据来识别哪些字节是填充的,哪些是加密的保管库内容。如果没有正确的密钥,每个字节看起来都完全相同。
法医抵抗:当他们拿走你的手机时会发生什么
让我们具体了解一下威胁模型。想象一下有人可以物理访问您的设备、专业的取证工具、无限的时间以及检查每个字节的法律权限。他们可以确定您的保管库的哪些信息?
取证工具可以看到什么
取证检查员可以看到安装了 Vaultaire。他们可以看到 Vaultaire 正在使用一定量的存储。他们可以看到存储的数据是加密的。仅此而已。
取证工具无法确定的内容
- 存在多少个保管库。没有保管库计数,没有目录结构,也没有显示保管库数量的元数据。
- 是否存在任何保管库。无论存储池包含零个保管库还是一百个保管库,存储池都存在。无论哪种方式,填充都会填充空间。
- 任何保管库中都有什么。如果没有正确的密钥,加密数据与随机噪声无法区分。
- 创建或修改保管库时。时间戳与数据一起加密。文件系统时间戳反映池级别的操作,而不是保管库级别的操作。
- 存在多少真实数据。 填充会让真实数据量变得不确定。500 MB 的存储空间可以包含 10 MB 的真实数据和 490 MB 的填充,也可以包含 490 MB 的真实数据和 10 MB 的填充。
在传统取证分析中,加密数据是一个挑战,但存在的加密数据就是证据。对于Vaultaire,甚至保管库的存在也是无法证明的。检查员可以说“Vaultaire 已安装”,但不能说“该设备包含 N 个保管库”。答案始终是:我们不知道,应用程序也不知道。
隐藏保管库如何实现可否认性
隐藏保管库是 Vaultaire 的基础似是而非的推诿功能确实有效。这就是为什么两者密不可分的原因。
可否认性意味着您绘制的每个图案都会打开东西。画出你的真实图案,你就会看到你的私人文件。绘制不同的图案,您会看到一个诱饵库,您将一组无害的照片放置在那里,正是为了这个场景。对于观察者来说,这两种结果看起来是相同的。无法判断某人画的是“真实”图案还是“诱饵”图案。
但是,只有在无法检测到额外保管库的存在的情况下,合理的推诿才有效。如果检查员可以确定您的设备包含三个保管库,那么向他们展示一个保管库是不可否认的,他们知道还存在两个保管库。隐藏的保管库消除了这个漏洞。因为没有人可以计算您的保管库数量,所以没有人可以证明您拒绝访问其中任何一个。
完整链条
- 步骤 1:您可以使用不同的模式,创建多个保管库,其中一个用于真实文件,一个用于诱饵,任意数量。
- 步骤 2:如果有压力,你就会画出诱饵图案。观察者看到一个保管库,里面有无聊的照片。
- 步骤 3:观察者无法确定是否存在其他保管库。没有计数,没有清单,也没有额外保管库的证据。
- 步骤 4:您如实声明您已向他们展示了您所拥有的。他们无法证明其他情况。
如果没有隐藏的保管库,合理的否认就是戏剧。有了隐藏的保管库,那就是数学。
为什么这很重要
您可能认为法医抵抗听起来很极端。大多数人不会面临设备扣押或法院命令。但隐藏保管库背后的原理也可以在日常场景中为您提供保护。
拿起您手机的合作伙伴无法判断您是否有私人保管库。借用你的设备的同事认为没有什么值得好奇的。偷走你手机的小偷无法确定是否有任何值得提取的东西。在每种情况下,保护都是相同的:找不到的东西就不能成为目标。
这是隐私工作方式的根本转变。传统安全会问:“他们能闯入吗?”隐藏的保管库提出了一个完全不同的问题:“他们甚至能告诉有什么东西可以闯入吗?”从设计上看,答案是否定的。
常见问题解答
如果应用程序不知道存在多少个保管库,它如何找到我的?
当您绘制模式时,Vaultaire 会派生一个加密密钥并使用它尝试对存储池进行解密。如果密钥与保管库匹配,数据就会解密为有意义的文件。如果不匹配,结果就是噪音。该应用程序不会搜索您的保管库,它会根据您的模式以数学方式重建它。不需要查找,因为没有要查找的索引。
有人可以通过查看存储使用情况来判断我有多少个保管库吗?
否。Vaultaire 使用加密随机数据填充其存储池,因此总占用空间与保管库的数量或大小无关。无论您拥有一个包含 50 张照片的保管库,还是十个包含 500 张照片的保管库,存储池都可以占用相同的空间量。填充吸收了差异。
如果删除保管库会发生什么?存储空间会缩小吗?
删除保管库时,它所占用的空间将通过填充来回收。总存储占用空间不会立即改变。它仅在填充与数据之比超过预定阈值时进行调整,并且无论是什么原因导致的调整都是相同的。观察者无法确定存储是否因您删除了保管库、添加了文件或只是触发了例行重新平衡而发生了变化。
这与仅加密文件夹有何不同?
加密的文件夹仍然是文件夹。它出现在文件系统中,有名称、大小和时间戳。即使审查员无法阅读其内容,他们也知道它的存在。Vaultaire 的隐藏保管库不存在作为单独实体的文件系统。它们仅作为填充存储池中的无差别字节存在。没有什么可以指着说“那是一个保管库”。
Vaultaire 的未来更新是否会破坏隐藏的保管库?
隐藏保管库架构是 Vaultaire 存储数据的基础,而不是可以关闭的功能。无需添加保管库注册表,无需创建目录结构。改变这一点需要从头开始重建整个存储引擎。该设计故意是不可逆的,应用程序不能背叛它从未构建过的知识。
隐藏保管库是否与 iCloud 备份一起使用?
是的。当 Vaultaire 备份到 iCloud 时,整个填充存储池将被加密并作为单个 blob 上传。备份包含与本地存储相同的无差别数据。iCloud 看到一定大小的加密文件,它无法确定内部有多少个保管库、它们包含什么,或者数据是否主要是填充或主要是真实文件。