天天看點

第五十一個知識點:什麼是基于ID的加密的安全模型,然後描述一個IBE方案

第五十一個知識點:什麼是基于ID的加密的安全模型,然後描述一個IBE方案

在公鑰密碼學中,如果Alice想要給Bob發送一條消息,她需要Bob的公鑰,一般來說公鑰都很長,就像一個随機的字元串。

假設Alice可以不用公鑰而是使用Bob的名字或者郵件位址作為他的公鑰。實際的來說,這會很友善,Alice不必記住很長的公鑰,也不用驗證這個類似于随機串的公鑰是否真的屬于Bob。為了讓這變得容易,我們需要基于身份的加密(IBE)。

在IBE中,存在一個實體叫做私鑰生成器(PKG)。PKG能夠通過Bob的ID和一個主密鑰來計算Bob的私鑰。一旦Bob已經對PKG認證過自己,那麼他就可以向PKG請求他的私鑰,一旦他獲得了自己的私鑰,那麼他就可以對任何通過他的ID加密的消息進行解密。

但是這裡有一個問題,通過主密鑰,PKG可以對任何ID都生成一個私鑰,是以PKG可以對任何消息進行解密,這叫做密鑰托管,意思就是說你必須信任PKG不會讀取你的消息或者你不在乎PKG會讀取你的消息。在公司中,進階管理者一般都有權限讀取你的郵件,是以IBE方案在這種情況下是很恰當的。

正式的,一個IBE方案包含四個算法:setup,extract,encrypt和decrypt。

setup:采用一個安全參數然後輸出主密鑰和系統參數,例如明文和密文的消息空間。

Extract:接收一個ID和主密鑰,然後傳回一個針對ID的私鑰。

Encrypt:接收一個消息和ID,然後傳回密文。

Decrypt:接收一個密文和公鑰,然後傳回一個消息。

Boneh和Franklin在2003年給出了一個IBE方案。他們證明了,在一個類似CDH問題的假設情況下,他們的方案在随機oracle模型中是IND-ID-CCA安全的。這意味着任何攻擊者在多項式時間内赢得下面的遊戲的機率最多比1/2多可忽略的機率。

首先,攻擊者:

  • 能夠對任何ID請求一個私鑰。
  • 能夠對任何ID的任何密文進行解密。

然後攻擊者選擇兩個消息\(m_0\)和\(m_1\)和一個之前沒有被問詢過的ID---\(ID^*\)。攻擊者會收到一個基于\(ID^{*}\)對消息\(m_b\)加密的消息\(c\),其中\(b \in {0,1}\)是随機選擇的。然後攻擊者:

  • 能對任何不是\(ID^{*}\)的ID請求私鑰。
  • 能夠除了\((c*,ID^{*})\)之外的對進行解密。

最後攻擊者輸出一位\(b^{'}\),如果\(b^{'}=b\),那麼我們說攻擊者赢得了遊戲。

Boneh和Franklin給出的方案依賴于一個非退化的雙線性映射$e:G_1 \times G_1 \rightarrow G_2 \(,其中\)G_1\(的階是\)q$ ,我們将運算寫成加法,而\(G_2\)的階也是\(q\),我們将運算寫成乘法。他們通過橢圓曲線上的Weil對對這個映射進行執行個體化,但是我們這裡省略這個細節。所有雙線性性質就是\(e(aP,bQ)=e(P,Q)^{ab}\),其中\(a,b \in Z_q\)。

沒有足夠的空間來描述所有的方案的細節,但是主密鑰是一個非零的\(s \in Z_q\),然後ID的私鑰是\(s \cdot H(ID)\),其中\(H\)是一個将比特流映射到\(G_1\)中元素的Hash函數。有兩個公共參數\(P\)和\(P_{pub} = s \cdot P \in G_1\)。

為了加密消息\(m\),我們能選擇一個随機的串\(\sigma\),然後将\(m\)和随機的串進行異或,得到密文\(C_m\)。然後\(m\)和\(\sigma\)一起進行hash運算獲得一個\(Z_q\)中的非零元素\(r\)。最後我們能計算出對\(e(H(ID),P_{pub]})^r\)。然後hash得到的值與\(\sigma\)進行異或,得到\(c_{ID}\)。最後三元組\((r \cdot P,c_{ID},c_m)\)就是密文。

已經獲得了私鑰\(d = s \cdot H(ID)\)的Bob可以解密密文\((U,V,W)\):首先計算\(e(d,U)\),通過雙線性的性質這個值等于\(e(H(ID),P_{pub})^r\)。是以将這個值和\(V\)進行異或得到\(\sigma\)。最後異或\(W\)得到消息\(m\)。最後一步是檢查預定資訊\(U = r \cdot P\),等式成立表明這就是預期的資訊。

繼續閱讀