Order-Preserving Encoding(OPE 保序加密)

An Ideal-Security Protocol for Order-Preserving Encoding
來自 2013 IEEE Symposium on Security and Privacy

Order-Preserving Encoding(OPE):OPE是一種加密方案,它的密文的排序順序與相應的明文順序相匹配。在本文中,作者主要寫了兩種方案:一種是在半可信模型下(即服務器是honest-but-curious);一種是在惡意模型(即服務器是malicious)
在這裏插入圖片描述
1. 半可信服務器
(1)mutable order-preserving encoding(mOPE)
OPE Tree的結構:

OPE Tree: 左孩子小於父節點,右孩子大於父節點
例如:將69,32,20,10,25的密文存儲到服務器上
① 將69的密文放入OPE Tree的根節點,[]100-------4
② 向服務器請求根結點69的密文,解密後比較,32<69,放在69左結點,更新encoding:[0]10--------2
③ 向服務器請求根結點69的密文,解密後比較,20<69,再向服務器請求左結點32的密文,解密後比較20<32, 將20的密文放到32的左結點上,更新encoding:[00]1-----1
rebalance:這時發現已經有3個結點沒有右結點,對OPE Tree進行rebalance,即將中間結點32放在根節點,20放在左結點,69放在右結點,更新OPE Table
④ 向服務器請求根結點32的密文,解密後比較:10<32,再請求32的左結點20,解密後發現 10<20,再請求20的左結點,發現20沒有孩子,將10插入20的左結點,並更新encoding
⑤向服務器請求根結點32的密文,解密後比較:25<32,再請求32的左結點20,解密後發現 25>20,再請求20的右結點,發現20沒有右孩子,將25插入20的右結點,並更新encoding
mOPE 加密方案:

a. 密鑰生成:客戶端執行
b. 初始化服務器:即初始化OPE Tree和 OPE Table(僅包含±∞),返回一個初始狀態的st(代表服務器的狀態)
c. 加密(插入):
客戶端:將明文v進行加密(加密算法可以是任意的算法, eg:AES),密文爲c,並將c 發送到服務器端
服務器端:
①查詢是否c在OPE Tree中,如果在則返回沒有改變的st,否則在OPE Tree中插入在c,並計算c的OPE encoding,更新OPE Table
② 如果OPE Tree需要去平衡,平衡OPE Tree,並更新所有的受影響的節點的OPE encoding。
③ 服務器返回一個新的狀態st,
d. 解密:在客戶端執行,將c解密爲v
e. 查找排序:如果c在OPE Table 中,將OPE Table相應的編碼返回,否則返回error

(2)storage-aware OPE (stOPE)

same-time OPE security:執行order詢問時,服務器只需要知道目標值的順序關係,當前值和舊的值之間的關係不應該泄露。例如:20,32,69 ,如果先刪除32,再插入55,那麼32和55之間的大小關係不應該泄露。
storage-aware OPE (stOPE):考慮了一個存儲系統的模型(不僅是數據庫類型的存儲)

a. 初始化:(Initialization): 客戶端生成一個密鑰,而服務器也初始化它的狀態。
b. 插入(Insert):(RND代表對稱加密)
     客戶端: 計算c ← RND.Enc(sk, v),並將c發送到服務器
     服務器:遍歷OPE Tree,如果存在c,說明已經c之前被加過了,計算相應的OPE編碼e。如果對於v的密    文c_t 存在,服務器增加它的ref-count(表示這個值被插入的次數),如果v已經不在這個OPE Tree中,將c插入到OPE Tree並且ref-count=1。
c. 刪除(Remove):
    客戶端: 計算c ← RND.Enc(sk, v) ,並將c發送到服務器.
    服務器:遍歷OPE Tree,
	如果c不存在,返回error;
	如果c存在且ref-count >1, 則ref-count = ref-count -1;
	如果c存在且ref-count =1,將c從OPE Tree和OPE Table中移除;
	如果節點刪除觸發樹平衡,服務器也會類似地更新OPE Table和任何包含那些OPE Encoding的存儲器。  
d. 查詢(Query): 查找到最貼近v的v_1,v_2,使得v_1≤v< v_2
客戶端: 計算c ← RND.Enc(sk, v) ,並將c發送到服務器.
服務器:遍歷OPE Tree,按照性質3來定位最鄰近的間隔。
查找排序:如果c在OPE Table 中,將OPE Table相應的編碼返回,否則返回error

性質3:對於包含±∞的B-tree中的任何節點v來說,v_left≤v 的最大值v_left是:
1) v的左子樹中最右邊的孩子或者
2) 從v到根節點路徑上的第一個值,右邊界是v右子樹中最左邊的孩子(這是我推測的,原文沒有看太懂)
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章