在 Seny Kamara 的帶領(lǐng)下,微軟專家成功地從存儲在 CryptDB (PDF) 中的健康記錄中獲取了大量數(shù)據(jù),這是一種使用多層加密的數(shù)據(jù)庫技術(shù),允許用戶在不暴露內(nèi)容的情況下進行搜索。
由 MIT 開發(fā)的 CryptDB 作為標準結(jié)構(gòu)化查詢語言 (SQL) 數(shù)據(jù)庫的補充,允許應(yīng)用程序與加密數(shù)據(jù)進行交互。類似于具有多層的洋蔥,CryptDB 結(jié)合了舊形式的加密,其中一些允許進行計算。覆蓋不同層的數(shù)據(jù)庫允許用戶剝離到允許數(shù)學(xué)運算的加密,例如分析算法。數(shù)據(jù)的所有點都使用不同的密鑰進行加密。
雖然 CryptDB 旨在防止對數(shù)據(jù)庫服務(wù)器應(yīng)用程序的破壞,但它的創(chuàng)建并不是為了防止對用于訪問信息的聲明的攻擊。它通過限制可能泄露的密鑰可訪問的數(shù)據(jù)泄露,部分限制了這種類型的攻擊。為了破解加密,還需要 SQL 服務(wù)器處理數(shù)據(jù)。攔截發(fā)送到服務(wù)器的查詢可能會泄露數(shù)據(jù),具體取決于它們的結(jié)構(gòu)。
為了破解加密數(shù)據(jù)庫,微軟專家研究了 CryptDB 中最薄弱的環(huán)節(jié):保序加密 (OPE) 和確定性加密 (DET 或 DTE) 結(jié)構(gòu)。OPE 使諸如“ORDER BY”之類的 SQL 查詢能夠執(zhí)行,而 DTE 允許數(shù)據(jù)庫“通過確定性地為相同的明文生成相同的密文”來搜索匹配值,正如開發(fā)人員在他們的研究論文中所描述的那樣。“這個加密層 (DTE) 允許服務(wù)器執(zhí)行相等檢查,這意味著它可以使用相等謂詞、相等連接、GROUP BY、COUNT、DISTINCT 等執(zhí)行選擇。” 這兩種方案是 CryptDB 中最容易發(fā)生數(shù)據(jù)泄露的。
伊利諾伊大學(xué)厄巴納香檳分校的 Kamara、Muhammad Naveed 和波特蘭州立大學(xué)的 Charles Wright 使用了一個簡單而古老的技巧來破解加密:頻率分析。使用與目標內(nèi)容相似的數(shù)據(jù)源,專家分析了文本中字符的重復(fù)率,并將其與 DTE 加密數(shù)據(jù)列中數(shù)據(jù)的規(guī)律性進行匹配。正如研究論文中所寫,他們還使用了他們自己的三種新攻擊,這些攻擊來自數(shù)百年的頻率分析:
Lp 優(yōu)化:是我們引入的一個新的攻擊系列,用于解密 DTE 加密的列。該族由 lp 規(guī)范 [對值之間的預(yù)期差異的分析] 參數(shù)化,并基于組合優(yōu)化技術(shù)。
排序攻擊:是一種對 OPE 加密列進行解密的攻擊。這種民間傳說攻擊非常簡單,但正如我們所展示的,在實踐中非常強大。它適用于“密集”的列,因為消息空間的每個元素都出現(xiàn)在加密列中。雖然這似乎是一個相對強的假設(shè),但我們表明它適用于許多現(xiàn)實世界的數(shù)據(jù)集。
累積攻擊:是我們引入的一種新攻擊,用于解密 OPE 加密的列。這種攻擊甚至適用于低密度列,并且還利用了組合優(yōu)化技術(shù)。
為了測試這些攻擊,研究人員使用來自醫(yī)療保健成本和利用項目 (HCUP) 的國家住院患者樣本 (NIS) 數(shù)據(jù)庫的真實患者數(shù)據(jù),使用 OPE 和 DTE 對數(shù)據(jù)進行加密。頻率分析和 Lp 攻擊揭示了“200 家最大醫(yī)院中至少 99% 的 100% 患者的死亡風(fēng)險和患者死亡”屬性,以及數(shù)據(jù)中 200 家醫(yī)院中 51% 的 100% 疾病嚴重程度數(shù)據(jù)放。除了這些信息,微軟專家還能夠獲得 200 家醫(yī)院中大多數(shù)患者的入院月份、死亡風(fēng)險和入院類型。
前 CryptDB 開發(fā)人員 Raluca Ada Popa 回應(yīng)說,OPE 和 DTE 方案旨在用于“高熵”值,其中數(shù)據(jù)不會透露太多信息,而不是大量患者死亡率百分比等信息。“我接觸過的每個使用過 CryptDB 的人都對 OPE 的使用非常小心,”他指出。
評論
查看更多