由於種種原因,本來應該是准備其他事情的我最近又開始看可搜索加密技術。結果發現兩三個月前看的內容都被我忘得差不多了,果然“好記性不如爛筆頭”,更何況我的記性還不好qwq。因此,還是打算將學到的東西記錄下來,所以有了這篇簡陋的筆記。
引言
- 為什么需要可搜索加密技術?
其實,這個問題的答案是顯而易見的。現在隱私泄露問題備受關注,大家肯定都希望自己的信息以密文的形式上雲,而不是以明文的形式上雲。但是這就會有個問題,如果需要對數據進行搜索,那怎么辦?總不能把雲上所有的加密數據都下載下來,然后對其一一解密,再進行搜索吧。如果真是這樣,效率顯然會很低。因此,可搜索加密技術應運而生。
- 什么是可搜索加密技術?
可搜索加密技術是搜索技術和加密技術的結合。可搜索加密能夠實現將用戶的數據進行特殊的加密后上傳到雲服務器上, 並且可以實現根據關鍵字進行檢索的功能, 有些可搜索加密方案更能實現范圍查詢或布爾查詢等高級檢索功能。在方便用戶使用的過程中, 也保護了文件的隱私安全[1]。
- 可搜索加密技術的分類:
目前, 可搜索加密技術一般分為對稱可搜索加密(Searchable Symmetric Encryption, SSE)和非對稱可搜索加密(Asymmetric Searchable Encryption, ASE),非對稱可搜索加密目前一般又稱為公鑰可搜索加密(Public Key Encryption With Searching, PEKS)。兩者有不同的應用場景和構造方式[1]。
對稱可搜索加密一般考慮單用戶使用的情況, 相當於建立個人加密雲盤, 依賴對稱加密算法進行方案構造。
公鑰可搜索加密一般考慮多用戶使用的場景例如郵件系統或者多人文件共享系統, 主要依賴公鑰加密算法進行構造。
關於 “ 非對稱可加密 ” 的那些事
2004年,Boneh等[2]將公鑰加密應用到可搜索加密中,基於BDH(BilinearDiffie-Hellman)困難問題假設,首次提出了非對稱可搜索加密(PEKS)的概念,其主要目的是為了解決“多對一”的多用戶郵件模型。例如Bob,Carol等多人向Alice發送郵件,這些郵件通過Alice的公鑰進行加密,Alice可以根據私鑰在郵件系統中進行關鍵字搜索並解密郵件內容並保證郵件服務器對內容一無所知。PEKS算法描述如下:
定義1 一個PEKS系統由如下四個多項式時間的算法組成:
(這里就偷個懶,直接放我在word打好的截圖,(#^.^#))
實際上,Boneh等人的PEKS方案可以視為在加密文件后附上加密的關鍵字清單,用戶可以通過私鑰和Test算法與所檢索關鍵字進行匹配,以此進行關鍵字的搜索。隨后2006年Byun[3]發現當前PEKS方案存在安全隱患:由於關鍵字空間遠小於密鑰空間,敵手可以通過離線關鍵字猜測攻擊輕松破解PEKS體制。隨后,這一安全性問題由Tang等人[4]提出注冊關鍵字得以解決。
由於我主要看的是對稱可搜索加密,就不再展開說了,感興趣的可以自己找來看看。
關於 “ 對稱可加密 ” 的那些事
2000 年, 對稱可搜索加密由 Song 等[5]第一次
提出, 用來解決“一對一”單用戶進行雲存儲模型的
方案, 即主要應用場景是個人用戶將數據加密存儲
於雲服務器, 並能在之后對加密數據進行檢索。
這是可搜索加密的概念被首次提出,這為后面的研究奠定了基礎。
- 可搜索加密的構建方法:
SSE 的構建方法一般分為基於存儲結構和基於
索引兩種方式。(我主要看的是基於索引的)
基於存儲結構的 SSE 方案[5-7]的構
建方法一般通過特殊的加密手段將數據存儲於特定
的位置。例如 Song 等人[5]的方案是應用流密碼加密
將密文在服務器內進行線性存儲, 而 Naveed 等人[7]
的方案是利用偽隨機函數和偽隨機序列生成器將文
件加密並“隨機”分配到特定的隨機位置, 只有擁有
隨機生成器“種子”的用戶能准確找到文件的位置。
然而, 基於存儲結構構建 SSE 方案的效率往往比較
低, 在搜索時需要服務器對整個存儲器進行線性掃
描並依次進行匹配, 而且對服務器的存儲拓撲進行
了嚴格要求。
因此,基於索引構建 SSE 方案是目前公
認的主流方法, 絕大多數方案都是基於索引來構造
的。
基於索引的構建方法的優勢在於
不需要特定的加密手段和存儲結構, 並且在搜索時
有很高的效率, 其主要流程可以描述如下:
1. 用戶選擇安全通用的對稱加密算法SKE例如
AES, 對數據文件加密, 保存密鑰;
2. 用戶根據文件內容構建索引結構, 保證索引
內容與加密文件可以進行“鏈接”;
3. 將索引結構進行特殊加密, 和加密的數據文
件一起發送給服務器;
4. 服務器存儲加密索引和加密文件, 等待用戶
發送陷門進行操作。
如上所述, 這一類型的SSE構建方法中, 不同方
案的核心在於第 2 步的索引結構的建立以及密文與
索引進行“鏈接”的方式, 以及第 3 步對索引結構的
特殊加密。而用戶加密文件的手段使用的對稱加密
算法 SKE 和服務器存儲文件的方式都是可選的, 具
有靈活性。雖然基於索引的 SSE 相較於基於存儲結
構的 SSE 方案需要額外的索引構建過程, 以及額外
存放索引的存儲代價, 但是在效率上, 基於索引的
SSE 方案具有非常大的優勢, 這在應用層面上決定
了基於索引來構建 SSE 方案是最佳的[1]。
在文獻[1]中參考 Curtmola 等[8]第一次正式
定義的 SSE 的算法框架(一算法框架是基於索引
的) 給出了其定義。定義如下:
定義2 SSE
一個單用戶的 SSE 方案的參與
者包含一個用戶和一個服務器, 假設Δ是關鍵字字典,D
⊆2Δ是文件集合, 用戶希望將文件集合 D 存儲於
服務器上, 並且服務器可以提供對字典Δ的搜索服務,
一個基於索引的對稱可搜索加密體制是指一個多項
式時間算法的集合 SSE=(Gen, Enc, Trpdr, Search,
Dec)如下:
K←Gen(1λ):一個密鑰生成的概率算法, 通過
用戶運行以建立系統, 以安全參數λ作為輸入, 輸出
密鑰 K。
(I,c)← Enc(K,D): 由用戶運行的一個概率
加密算法, 以密鑰
K 和文件集合D = (D1,...,Dn)
作
為輸入
, 生成一個安全索引
I 和一系列密文 c = (c1,...cn).
t ← Trpdr(K,w
):由用戶運行的一個確定性算法,根據希望檢索的關鍵字
w
以
及密鑰
K
作為輸入,
輸出一個陷門
t。
X ← Search(I,t): 由服務器運行的一個確定性
算法,
根據索引
I 和陷門
t 來查找文件集 D 中含有
關鍵字
w
的文件
,並返回文件標識符集合
X
。
Di ← Dec(K,ci): 由用戶運行的一個確定性算
法, 根據
X
中標識符得到對應密文
, 用密鑰
K
進行解
密輸出最終明文文件。
之后, Kamara[9]在
Curtmola[8]的方案上稍加改
進, 增加了方案動態性以支持添加文件或刪除文件
的操作, 根據這兩篇文章的工作, 可以把對稱可搜
索加密過程簡化為歸為以下 4 個步驟:
步驟 1. 建立和密鑰生成過程: 用戶對文件集合
進行某種特殊加密后上傳至服務器並生成密鑰和加
密數據庫;
步驟 2. 陷門生成過程: 用戶根據密鑰和將要檢
索的內容生成特定陷門, 分為生成檢索陷門和生成
更新陷門, 並都上傳給服務器;
步驟 3. 檢索過程: 用戶提交陷門, 由服務器根
據陷門對加密數據庫進行安全搜索和返回結果, 用
戶收到密文后解密得到最終結果;
步驟 4. 更新過程: 對於支持動態更新的可搜索
加密, 可以通過將加密文件和更新陷門上傳到服務
器進行文件添加或刪除操作, 注意添加操作和刪除
操作是區分開來的。
// 到飯點了,先不往下寫了,溜了溜了~
參考文獻
[1] 劉文心,高瑩.對稱可搜索加密的安全性研究進展[J].信息安全學報,2021,6(02):73-84.
[2] Boneh D, Crescenzo G, Ostrovsky R, et al. Public key encryption with keyword search[C]. Proceedings of Eurocrypt 2004, Interlaken, Switzerland, 2004. 506-522.
[3] Byun J W, Rhee H S, Park H A, et al. Off-Line Keyword Guessing Attacks on Recent Keyword Search Schemes over Encrypted Data[M]. Lecture Notes in Computer Science. Springer Berlin Hei delberg, 2006: 75-83.
[4] Tang Q, Chen L Q. Public-Key Encryption with Registered Keyword Search[M]. Public Key Infrastructures, Services and Applications. Berlin, Heidelberg: Springer Berlin Heidelberg, 2010:163-178.
[5] Song D X, Wagner D, Perrig A. Practical Techniques for Searches on Encrypted Data[C]. SP '00: The 2000 IEEE Symposium on Security and Privacy. 2000: 44-55.
[6] Chang Y C, Mitzenmacher M. Privacy Preserving Keyword Searches on Remote Encrypted Data[J]. Applied Cryptography and Network Security, 2005: 442-45. DOI:10.1007/11496137_30.
[7] Naveed M, Prabhakaran M, Gunter C A. Dynamic Searchable Encryption via Blind Storage[C]. SP '14: The 2014 IEEE Symposium on Security and Privacy. 2014: 639-654.
[8] Curtmola R, Garay J, Kamara S, et al. Searchable Symmetric Encryption: Improved Definitions and Efficient Constructions[J].Journal of Computer Security, 2011, 19(5): 895-934.
[9] Kamara S, Papamanthou C, Roeder T. Dynamic Searchable Symmetric Encryption[C]. The 2012 ACM conference on Computer and communications security - CCS '12, 2012: 965-976.