一、摘要
本文通過基于El-Gamal[1]的代理加密算法(proxy encryption algorithm)實現了多用戶對加密數據庫的上傳和下載。該方案不需要用戶共享密鑰,可以實現用戶注冊和刪除的透明性。
二、主要工作 (核心場景、框架或者算法)
本文首先提出了兩個場景,第一個是企業用戶保護商業數據的場景,第二個是個人用戶保護個人醫療隱私的場景。在介紹Multi-User的方案之前需要先介紹data和keyword各自的加密方案,具體實現如下:
(一)data加密方案PE-Encryption
- 首先由可信密鑰服務器生成密鑰 $(G,g,q,x)$,其中 $(G,g,q)$ 作為公共參數廣播,而 $x$ 作為全局唯一的主密鑰由密鑰服務器保存。
- 對于用戶 $i$ ,密鑰服務器選取素數 $x_{i1}$ ,并得到 $x_{i2}= x-x_{i1}$ ;將 $x_{i1}$ 發送給用戶 $i$ ,將 $(i,x_{i2})$ 發送給服務器。
- 用戶加密數據 $m$ 時,選取素數 $r$ ,根據密鑰 $x_{i1}$ 對 $m$ 進行半加密,生成密文 $c{’}_{i(m)}=(gr,g^{rx_{i1}}m)$ 并上傳給服務器。
- 服務器根據用戶id,找到對應的 $x_{i2}$,對密文 $c’$ 再進行加密得到最終的密文 $c$ ,存儲在服務器中。
- 當用戶 $j$ 想要獲取該文件時,服務器先根據用戶id找到 $x_{j2}$ 進行半解密,得到密文 $c’$ ,并發送給用戶 $j$ 。
-
用戶 $j$ 得到密文 $c’$ 后,根據私鑰 $x_{j1}$ 解密得到最終的數據 $m$。
enc-dec.png
(二)keyword加密方案KE-Encryption
與data加密方案類似,在keyword加密方案中,需要可信密鑰服務器將 $(G,g,q,h,H,f)$ 進行廣播,其中 $h=g^x$ ,$H$ 為哈希函數, $f$ 為偽隨機函數。該方案中,將keyword經過偽隨機函數計算之后的值記作 $σ$ ,將 $r+σ$ 作為El-Gamal方案的參數進行計算,并將半加密結果上傳給服務器,服務器根據密文進行進一步加密后生成 $(c_1,c_2)= [h{r+σ},H(hr)]=[h^r g{xσ_w},H(hr)]$ 存儲在服務器中。
(三)Multi-User可搜索加密方案SE-Encryption
- 可信密鑰服務器將 $(G,g,q,h,H,f)$ 進行廣播,并將 $x$ 作為主密鑰保留。
- 用戶新增時,可信密鑰服務器選取用戶密鑰 $K_{u_i}$,并計算得到服務器密鑰 $K_{s_i}$,分別發送給用戶和服務器。
- 用戶上傳文件時,根據data和keyword的加密方案進行加密。并上傳給服務器進行二次加密和存儲。

multi1.png
- 用戶i搜索時,根據用戶i的密鑰Kui以及隨機素數r,生成trapdoor $T_i(w)=(t1,t2)$ ,上傳給服務器。
- 服務器根據用戶 $i$ 上傳的trapdoor,以及用戶 $i$ 的密鑰 $x_{i2}$ 計算 $T=t1^{x_{i2}} t2 = g^{xσ_w}$ ,計算完成后對存儲的關鍵字集合 $(c_1,c_2) = [h^r g{xσ_w},H(hr)]$ 進行配對搜索,若 $c_2=H(c_1 T^{-1})$ 則配對成功,將該關鍵字對應的data半解密后發送給用戶 $i$。
- 用戶 $i$ 得到半解密的數據后,再用密鑰 $K_{u_i}$ 進行完全解密。
-
用戶 $i$ 的刪除過程只需要服務器刪除用戶存儲在服務器上的密鑰 $x_{i2}$ 即可。
multi2.png
三、優點(動機、算法、寫作)
- 不需要用戶共享任何密鑰
- 提到了數據的增刪改查,以往的方案中基本只涉及到增加和查詢。
四、缺點 (算法缺陷、寫作邏輯漏洞、攻擊場景漏洞、工作完成度)
- 一旦發生用戶和服務器共謀,整個服務器上的資料將全部泄露。
- 搜索效率低,$O(m)$,$m$為整個數據集
- 無法隱藏search pattern
五、鏈接
[1]【El Gamal】https://en.wikipedia.org/wiki/ElGamal_encryption