View
224
Download
0
Embed Size (px)
Citation preview
Public Key Encryption with Keyword Search Revisited
Author:Joonsang, Reihaneh Safiavi-Naini, Willy SusiloPresenter: 紀汶承
Outline
目的 改進的方法 結論
目的
在於改進原始的 PEKS 方法的缺點,以下有三
1. Server 會記錄過往的 trapdoor 進而去推算未來 trapdoor 所對應的 e-mail 種類
2. 必須在安全的 ( 加密且授權 ) 通道下作溝通
3. 改進多關鍵字搜尋
改進的方法
解決記錄 trapdoor 的問題 更新 keyword. 在經常使用的 keyword 增加時戳欄位
例如 : urgent||01/07/04, Alice||5 hours 當時效過了就刪除 keyword, 避免 server 去計
算哪些 e-mail 跟某些 trapdoor 相關
不需在安全的 channel 下也能執行 改進原始的 PEKS 演算法包含如下
KeyGenParam(K) : 產生公用參數 cp KeyGenServer(cp) : 產生 server 的公密鑰對 (p
kS,skS) KeyGenReceiver(cp) : 產生 Receiver 的公密鑰
對 (pkR,skR) SCF-PEKS(cp,pkS,pkR,w)=S : 產生可搜尋加
密關鍵字
Trapdoor(cp,skR,w) : 產生 w 的 trapdoor Test(cp,Tw,skS,S) : 驗證 S= SCF-PEKS(cp,p
kS,pkR,w’) 與 Tw 中 , 假設 w=w’ 則正確 , 否則不正確
SENDER RECEVIER
SERVER
E(pkR,M)|| SCF-PEKS(cp,pkS,pkR,w)
Trapdoor(cp,skR,w)
Test(cp,Tw,skS,S) 正確 ?
假設正確回傳 E(pkR,M)
目的 sender 要送 e-mail 給 recevier
Recevier 收信
Proposed scheme
KeyGenParam(K) : 選擇兩個 groups g1
=<P> 與 g2 其中 order 為 , 建立一個 bilinear pairing : , 兩個 hash function 公用參數 cp=(q,g1,g2,e,P,H1,H2,dw)
KeyGenServer(cp) : 隨機選擇 並計算 X=xP, 隨機選擇 ,pkS=(cp,Q,X)和 skS=(cp,x) 為 server 的公密鑰對 .
kq 2
kgHgH }1,0{:}1,0{: 22*1
*1 以及
*qZx
*1gQ
211: ggge
KeyGenReceiver(cp) : 隨機選擇 並計算 Y=yP,pkR=(pkS,Y) 和 skR=(pkS,y) 為Receiver 的公密鑰對
SCF-PEKS(cp,pkS,pkR,w): 選擇 並計算 S=(U,V) 其中 (U,V)=(rP,H2(κ)), κ= .S 為一 PEKS 產生的密文
*qZy
*qZr
rYwHeXQe ))),((),(( 1
Trapdoor(cp,skR,w) : 計算 Test(cp,Tw,skS,S) : 如果
成立 , 則回傳正確反之則不正確
)(1 wyHTw
VrPTxQeH w )),((2
安全性分析
給定攻擊者 B(q,g1,g2,e,P,aP,bP,cP),
為一 BDH 問題 .B 的工作是再去計算 BDH key: 去模擬 IND-SCF-CKA attaacker A 分成 game1(A 是 server),以及 game2(A 是外部攻擊者 )
kq 2
abcPPe ),(
Game2(A 是外部攻擊者 )
Step1: B 設定 Q=bP,X=cP 以及兩個 random oracles H1,H2. 選擇 計算 Y=yP.(q,g1,g2,e,P,H1,H2) 為公用參數 ,(Q,X) 為 server 的公鑰 .Y,y 為 recevier 的公密鑰 . 當 A 送 wi 給 H1,B 隨機選擇 計算 Li=liP, 並回傳給 A. 當 A 送 κi 給 H2,B 隨機選擇 , 並回傳給 A. B 會記錄這些 query-answer list.
*qZy
*qi Zl
kiV }1,0{
Step2: 假設 A 送 wi 給 trapdoor generation oracle,B 計算 Twi=yH1(wi) 回傳給 A( 其中 B 不曉得 y)
Step3: B 收到 A 送來的 ,B 隨機選擇 並且產生 其中 Q,X,Y 為之
前定義 , 所以得到
*1
*0 ,ww
kR }1,0{ ),(),( *** RaPVUS
)))),((),((( *2
aYwHeXQeHR
yabcaaa aPlPePPeyPlPecPbPeYwHeXQe ),(),(),(),())),((),(( *
Step4: B 回答 A 的 query 給 random oracle以及 trapdoor oracle( 在 step2 中所作 )
Step5: 當 A 回答他的猜測 .B 從 query-answer list 中選擇 κ 並回傳
為一 BDH key. 分析 : 令 AskW 為 A 發生詢問 的事件 .
若 AskW 沒發生則 β’=β 的機率最多 1/2 因此得到
}1,0{' yaPlPe ),(/
*1
*0 or
根據定義推得
若 AskW 發生則表示 B 可以解決 BDH 的問題 , 藉由選擇
並計算 ,qH 為 H2 中的 query 總數
].Pr[2
1
2
1]Pr[
2
1]Pr[
]Pr[]|Pr[]Pr[]|Pr[]Pr[ '''
AskWAskWAskW
AskWAskWAskWAskW
]Pr[)(]Pr[2
1
2
1)(
2
1
2
1 22 AskWkSuccAskWkSucc GameA
GameA
yabca aPlPePPeYwHeXQe ),(),())),((),(( *01
* yaPiPe ),(/*
得到 )(1
]Pr[1
)( 2,
22
1kSucc
qAskW
qkSucc Game
AHH
BDHAg
改進多關鍵字搜尋 簡單的概念為在加密文件後接上多關鍵字
欄位 . 例如 : E(pkR,M)||PEKS(pkR,w1)||…||PEKS(pk
R,wn) 缺點 : 在執行 PEKS 加密時, rP 會被重複計
算多次 ( 當有 n 個關鍵字就計算 n 次 ) 以及密文長度會增長 .
Proposed scheme KeyGenReceiver(k): 選擇兩個群 g1=<P> 與
g2 其中 order 為 , 建立一個 bilinear pairing : , 兩個 hash function :
,pkR=(q,g1,g2,e,P,Y,H1,H2), skR=(q,g1,g2,e,P,y,H1,H2) 為 recevier 的公密鑰對 .
kq 2
kgHgH }1,0{:}1,0{: 22*1
*1 以及
211: ggge
MPEKS(pk,w) 其中 w=(w1,….wn) : 選擇 計算 S=(U,V1,….Vn) 其中 U=rP,
S 是一個 MPEKS 的密文 Trapdoor(sk,w): 計算 Test(Tw,(U,Vi)) ,i 為 {1,…,n} : 如果 成立 , 則正確反之不正確 .
*qZr
))),(((),...,)),((( 121121r
nnr YwHeHVYwHeHV
)(1 wyHTw
iw VUTeH )),((2
結果在執行 MPEKS 之後 , 縮短了 S 的長度變成 E(pkR,M)||MPEKS(pkR,w) 其中 w=(w1,….wn) . 也減少了重複計算 rP.
結論
這方法雖然改進了 PEKS 的三個缺點,使得可以再非安全的 channel 下通訊,但是可以看出 server 儲存 trapdoor 的動作會是 PEKS 的弱點,以及在更新經常使用的關鍵字方面還可以再去改進使其更有效率且方便 .