Encryption
搜尋加密數據
正如標題所說,我正在研究如何搜尋加密數據。而且,我看到 cryptDB 使用了 Song 等人的文章Practical Techniques for Searches on Encrypted Data中的加密方案來搜尋加密數據上的單詞。但是為什麼他們不對每個單詞使用 DET 加密,而搜尋一個單詞只是加密一個單詞並進行比較呢?
如果你用ECB模式加密的話,就會洩露我們稱之為頻率攻擊的資訊。攻擊者可以看到哪些單詞在行中重複,並嘗試提取資訊,特別是如果攻擊者對數據庫中包含的數據有一定的了解。
如果使用 ECB 模式加密,我們可以在一個小的 SEARCH 列中看到這一點;
| ID |...| SEARCH | | x01 |...| 0xF41, 0x650, 0x086, 0x331 .... | | x02 |...| 0xF41, 0x165, 0x086, 0x63f, 0x754 .... | | x03 |...| 0x650, 0x331, 0x1E6, 0x12f, 0x004 .... |
如您所見,如果您直接使用 ECB 模式,您可以從 SEARCH 行中提取資訊。在 CryptDB 中使用
ECB
列是您的選擇。如果您認為數據容易受到攻擊,請不要使用該ECB
模式。他們用標準分隔符分割單詞,刪除重複,隨機排列重複的單詞,將每個單詞填充成相同的大小,然後加密。
他們聲稱他們的模式
SEARCH
幾乎和他們的模式一樣安全RND
,CBC 模式對每個加密都具有隨機 IV。他們還聲稱,DBMS 伺服器無法區分一個單詞是否在多行中重複,它只會通過比較RND
列和SEARCH
列的大小來洩漏不同單詞的數量。從他們的文章中不清楚這對性能有何影響。實際上,很明顯,每行使用不同密鑰的加密不是在數據庫上執行的。整個系統的負擔都基於Proxy-Server,本文沒有衡量到代理伺服器的成本。