《這是我最近對IBE的全部理解》(話很多版


IBE

歷史發展

自1984年shamir提出了可以用身份作為公鑰來的IBE思想之后,十多年間沒有出現比較好的實用的IBE方案,直到2001年數學上取得了突破,發現了橢圓曲線雙線性群上的雙線性配對運算e,之后各類利用雙線對的方案層出不窮,獲得了極大的發展,今天根據歷史發展順序介紹5種IBE方案(實際為3種)。

① 2001年,Boneh,Franklin根據ElGamal的思想結合weil對,提出了一種基礎簡單的IBE方案但是和ElGamal一樣不抗CCA2,和一種改進后,加入了“循環驗證”的IBE方案,CCA2安全。

② 2004年,Boneh,Boyen提出新的更高效的IBE方案,首先它采用了概率性的私鑰生成,其次它在加密階段的配對運算是固定的\(e(g_1,g_2)^t\),不隨用戶身份ID變化\(e(Q_{id},P_{pub})^t\),因此可以提前完成,不需要在加密階段做配對運算,只需要在解密階段做,這更類似於用身份去做“密鑰封裝”,而不是使用身份直接進行加解密。這是一個大的技術方法的提升,並且給出了該方案如何擴展成HIBE方案,但是該HIBE方案是低效的,公鑰PK長度和加密出來的密文C長度和身份層級有關。

2005年,Waters根據Boneh,Boyen的方案,在由身份ID去構造對應群元素\(Q_{id}\)時采用不同的方法(B將id視為整數來使用,W將id視為01比特序列來使用。),僅一點改進,將方案變成了完全安全的。完全安全和選擇id安全有何不同。選擇id安全,表明仍然可能會泄露系統中某一用戶的信息(可能是系統中某一用戶,也可能是無意義ID),但不是敵手想要攻擊的那個用戶(ID),泄露的這個ID的相關信息一般來說是對敵手沒有意義的。也就是說敵手的攻擊通常不會成功,但是也並不是一無所獲,這些在每次攻擊過程中泄露出去的其他信息就是風險所在,它就不是完全安全的。而完全安全就是說,系統滴水不漏,既不會泄露敵手想要攻擊的ID的信息,也不會泄露出任何人的信息。

③ 2004年時,Boneh,Boyen還提出一種高效IBE,與以上兩種IBE的模式都不同。

2001 Boneh,F 基本方案


非常簡潔明了的一個類似ElGamal的加密方案(ElGamal \((rP,M\oplus rP_{pub})\)),由於這里的M時01比特序列不是群元素,所以采用的模二加而不是乘法。這樣設計就和普通的ElGamal一樣面臨CCA2敵手的攻擊,容易恢復出M。

這里的舉世無雙創新點在於利用e得到的加密組件\(g_{id}=e(Q_{id},P_{pub})^r\) ,它具有良好的性質,但是對比曾經的加密組件\(rP_{pub}\)有什么不同呢?

首先e帶來的突破性作用是,曾經對於\(g^a,g^b\)這樣子的東西我們只能夠做出指數上的加法得到\(g^{a+b}\),想要得到\(g^{ab}\)需要已知一個a或者b才行,這往往是不知道的。而e的出現雖然仍然不能計算\(g^{ab}\),但是它良好性質提供了指數上乘法的構造方式,\(e(g^a,g^b)=e(g,g^{ab})=e(g,g)^{ab}\)。原本只能在元素上做乘法,指數上做加法的運算模式非常單一,e解開了這個束縛,現在不再需要知道a或者b僅僅通過,\(g^a,g^b\) 就能得到\(g^{ab}\)的形式,雖然在e中。

現在再來看,有了e的ElGamal得到了什么樣的改變。加密組件是一個一般需要至少有兩種計算方式的東西。比如說\(rP_{pub}=rsP=r*sP=s*rP\),根據不同的計算方(加密方知道r不知道s,解密方知道s不知道r)掌握的信息不同,可以從不同的方向去計算出來的組件。在老ElGamal中用戶的私鑰是s,而現在s是msk系統主密鑰,用戶也不知道s,僅知道自己的\(sQ_{id}\),那么此時是:加密方知道r不知道s,解密方不知道r也不知道s,但是知道\(sQ_{id}\),知道\(rP\),需要構建出\(srP\)的問題,很顯然e就能夠完成這個功能,故得到新的e形式加密組件\(e(Q_{id},P_{pub})^r\)

\(e(Q_{id},P_{pub})^r=e(Q_{id},sP)^r=e(Q_{id},rP)^s=e(sQ_{id},rP)=e(d_{id},rP)=e(d_{id},U)\)

直觀上看,老ElGalmal的安全核心s直接在加密一線作戰,沒有受到任何保護,而新方案的安全核心s則受到了一個層\(sQ_{id}\)的保護,沒有完全“暴露”在外。

這就是2001年weil配對發現后給密碼設計帶來的突破性進展。

2001 Boneh ,F改進方案


改進的方案和原方案在由id生成密鑰的階段都是確定性的算法,生成方式簡單明了\(d_{id}=sQ_{id}\),對於\(Q_{id}\)它是多少P並不清楚,也不需要清楚,它類似於后續方案中的g2和Q的作用,但是它是隨id變化的,因此在每次加密過程中都要運算一次配對運算e,這是低效的。

改進方案解決了前一方案的,CCA2不安全問題,改進方案通過添加了一個解密后對M的驗證,形成一個互相影響的循環,來達到抗CCA2的目的,因為如果M被惡意修改成M*M',那么它是無法通過驗證的。

改進方案中r不再是隨機產生的隨機值,而是通過M哈希得到,\(r=H(M,\sigma)\) 這里哈希需要加入隨機值σ,不然方案將會是確定性加密。而后很自然的用加密組件加密σ,用σ加密消息M,后續我們可以解密出σ,而后解密出消息M,而后進行驗證M是否被惡意篡改。

思考:這里用加密組件去加密σ的方式(簡單直接),來把σ“承諾”出來,是否可以使用其他方式給出σ呢?

承諾的方式一般有:放離散對數上,放單項哈希H中,加密承諾。承諾就是這個東西可以給你用,但是你不能知道它具體是多少,不能看見,顯然e多樣化了我們的使用方式。

2004 Boneh,B \(e(g_1,g_2)^t\)方案



這個方案是Waters2005方案的前身,這里給出的是HIBE的形式,當這里j=1的時候,是普通的IBE,該方案和Waters的IBE可以說是一摸一樣,只是\(Q_{id}\)的構造方法不一樣,該方案將ID視為整數值\(Q_{id}=g_1^{id}h\),waters將ID視為01比特序列\(Q_{id}=u^{'}\prod u_i\) 。而正是因為這兩個方案都提出了具體的自己如何去構造\(Q_{id}\)的方式,所以都沒有使用哈希,都是在無隨機諭言模型下的。

該方案雖然給出了HIBE,但是因為其密文長度和公鑰長度過長,實際是不可使用的。

對於該方案相較於2001年的方案有何提升將在waters方案下說明。

2005 Waters 完全安全\(e(g_1,g_2)^t\)方案


首先這里不用糾結對應公鑰是什么!

兩個方案的加密組件都是\(e(g_1,g_2)^t\),這一對加密組件的優化是對2001年方案的巨大改進,由每次都會變動的\(e(P_{pub},Q_{id})\)變成了固定的\(e(g_1,g_2)\)\(e(g_1,g_2)\)可以被提前計算,可以當作是系統參數之一,故加密不再需要配對運算。這里\(g_1=g^s\)相當於\(P_{pub}=sP\),未知是多少P的\(Q_{id}\)相當於這里的未知是g的幾次方的\(g_2\),曾經用於解密的與身份相關的私鑰\(d_{id}=sQ_{id}\)換成了現在的與用戶身份無關的\(msk=g_2^s\)

理解為曾經的msk=s,還不是群元素,比私鑰“低一級”,現在msk升一級,與私鑰同級,和身份元素乘在一起,而不再是作用在身份元素上。現在msk升為與私鑰同級,所以msk就可以直接起到之前私鑰(與身份相關聯)的加密作用了,代替身份(私鑰)進行加密,而身份則被除掉。

兩個方案都將密鑰生成改進成了概率性密鑰生成,\(d_{id}=(g_2^{s}Q_{id}^r,g^r)\),因為是概率算法所以給出了隨機值的承諾\(g^r\)供運算使用。\(C= (e(g_1,g_2)^tM,g^t,Q_{id}^t)\),因為要把身份除掉所以給出了帶隨機值身份組件\(Q_{id}^t\)供運算使用。

這種做法有點類似於用ID去封裝了加密組件。

2004 Boneh,B的 (x,y) 雙msk方案


這一篇,和前面的都不同,似乎是全新的方法(暫時看不出聯系),它很高效。

它的加密組件是非常優美簡單的\(e(g,g)^t\)(忽略我在描述方案的圖片中對於加密隨機值用了t,s,α,文章中統一用t),這優化了我在之前方案中能不能讓\(g_2=g_1\)疑問(很顯然在之前的方案中是不行的),那么它不僅同樣在加密階段0配對運算,並且解密僅需做一次配對運算,而不是兩次。

這是因為從直觀上講,因為這里只有g,消除身份信息這一步發生在e的括號內。這就是為什么在設計私鑰時\(K=g^{1/(id+x+ry)},d_{id}=(r,K)\)指數上為倒數形式,因為后續通過構建我們只能構建出正形式,來消除身份。

關於此方案的兩點迷思:

它首先把身份當作整數,這是否會導致問題呢?

其次它將身份考慮為和msk一個層級,整數層級,而沒有做成群元素,這是合理的嗎?其他四個方案不管是使用哈希還是自己的構造方法都將id做成了對應群元素,該方案看起來簡單高效但似乎不會那么容易?否則Waters為什么2005年沒有改進該方案而選擇了另一方案。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM