在 Seny Kamara 的带领下,微软专家成功地从存储在 CryptDB (PDF) 中的健康记录中获取了大量数据,这是一种使用多层加密的数据库技术,允许用户在不暴露内容的情况下进行搜索。
由 MIT 开发的 CryptDB 作为标准结构化查询语言 (SQL) 数据库的补充,允许应用程序与加密数据进行交互。类似于具有多层的洋葱,CryptDB 结合了旧形式的加密,其中一些允许进行计算。覆盖不同层的数据库允许用户剥离到允许数学运算的加密,例如分析算法。数据的所有点都使用不同的密钥进行加密。
虽然 CryptDB 旨在防止对数据库服务器应用程序的破坏,但它的创建并不是为了防止对用于访问信息的声明的攻击。它通过限制可能泄露的密钥可访问的数据泄露,部分限制了这种类型的攻击。为了破解加密,还需要 SQL 服务器处理数据。拦截发送到服务器的查询可能会泄露数据,具体取决于它们的结构。
为了破解加密数据库,微软专家研究了 CryptDB 中最薄弱的环节:保序加密 (OPE) 和确定性加密 (DET 或 DTE) 结构。OPE 使诸如“ORDER BY”之类的 SQL 查询能够执行,而 DTE 允许数据库“通过确定性地为相同的明文生成相同的密文”来搜索匹配值,正如开发人员在他们的研究论文中所描述的那样。“这个加密层 (DTE) 允许服务器执行相等检查,这意味着它可以使用相等谓词、相等连接、GROUP BY、COUNT、DISTINCT 等执行选择。” 这两种方案是 CryptDB 中最容易发生数据泄露的。
伊利诺伊大学厄巴纳香槟分校的 Kamara、Muhammad Naveed 和波特兰州立大学的 Charles Wright 使用了一个简单而古老的技巧来破解加密:频率分析。使用与目标内容相似的数据源,专家分析了文本中字符的重复率,并将其与 DTE 加密数据列中数据的规律性进行匹配。正如研究论文中所写,他们还使用了他们自己的三种新攻击,这些攻击来自数百年的频率分析:
Lp 优化:是我们引入的一个新的攻击系列,用于解密 DTE 加密的列。该族由 lp 规范 [对值之间的预期差异的分析] 参数化,并基于组合优化技术。
排序攻击:是一种对 OPE 加密列进行解密的攻击。这种民间传说攻击非常简单,但正如我们所展示的,在实践中非常强大。它适用于“密集”的列,因为消息空间的每个元素都出现在加密列中。虽然这似乎是一个相对强的假设,但我们表明它适用于许多现实世界的数据集。
累积攻击:是我们引入的一种新攻击,用于解密 OPE 加密的列。这种攻击甚至适用于低密度列,并且还利用了组合优化技术。
为了测试这些攻击,研究人员使用来自医疗保健成本和利用项目 (HCUP) 的国家住院患者样本 (NIS) 数据库的真实患者数据,使用 OPE 和 DTE 对数据进行加密。频率分析和 Lp 攻击揭示了“200 家最大医院中至少 99% 的 100% 患者的死亡风险和患者死亡”属性,以及数据中 200 家医院中 51% 的 100% 疾病严重程度数据放。除了这些信息,微软专家还能够获得 200 家医院中大多数患者的入院月份、死亡风险和入院类型。
前 CryptDB 开发人员 Raluca Ada Popa 回应说,OPE 和 DTE 方案旨在用于“高熵”值,其中数据不会透露太多信息,而不是大量患者死亡率百分比等信息。“我接触过的每个使用过 CryptDB 的人都对 OPE 的使用非常小心,”他指出。
评论
查看更多