双线性对在密码学中的应用(上)
導 讀
如果關心近年的密碼學成果,可以發現雙線性對作為一個基礎的密碼學工具頻頻出現。
雙線性對是一種二元映射,它作為密碼學算法的構造工具,在各區塊鏈平臺中廣泛應用,比如零知識證明、聚合簽名等技術方案大多基于雙線性對構造得來。
本次將分為上、下兩個篇章講解雙線性對在密碼學中的應用。
本文為上篇入門篇,會從概念介紹、發展歷程、實際應用三個方面展開說明,下篇為進階篇,將從原理層面深入剖析。
雙線性對的研究歷程
▲ 1946年作為一個數學工具被提出(Weil對)
1946年雙線性對首先被法國數學家Weil提出并成為代數幾何領域重要的概念和研究工具。
在最初的時候,雙線性對的概念并非為了密碼學的研究,甚至Weil在提出雙線性對時現代密碼學還未成為系統的科學(3年后C.E.香農發表著名論文《保密系統的通信理論》奠定現代密碼學理論基礎,而公鑰密碼學的發展更在30年之后)。
▲ 1996年Menezes、Okamoto和Vanstone提出利用雙線性對將ECDLP問題規約到DLP問題的MOV攻擊
在19年火熱的電影《羅小黑戰記》中,主人公擁有控制自己“領域”的能力。電影中的“領域”指自己專有的一個空間,在此空間中可以主宰一切。
不嚴謹的說,雙線性映射的功能也有幾分相似——雖然攻擊橢圓曲線系統在離散數域解決起來很難,但是如果被映射到特定的擴域從而規約為一般的離散對數問題,解決起來就相對容易。
但與攻擊橢圓曲線系統的目的恰恰相反,MOV(一種攻擊手段,詳細說明見文末)最終促進了橢圓曲線密碼學的發展。
這當然也是密碼學家去研究攻擊方法的本意——畢竟攻和防從來都是對立統一的兩個方面而已。
MOV攻擊并非能作用于全部的橢圓曲線,而是只能對參數滿足一定條件的曲線進行攻擊。這促使人們在選擇橢圓曲線參數時更加謹慎,更加注重抗MOV攻擊。
今天我們再選用橢圓曲線參數時都會考慮避開MOV攻擊的條件從而使所選的參數更安全。
例如國標《SM2橢圓曲線公鑰密碼算法》就充分重視了受到MOV攻擊的可能性,不僅在第一部分《總則》中用附錄A的部分篇幅介紹驗證曲線參抗MOV攻擊的方法,而且也在第五部分《參數定義》中給出了安全曲線的推薦參數。
▲2000年雙線性對開始在密碼學領域得到重視,成果有基于身份的密碼體制(IBE)、三方一輪密鑰協商、BLS簽名算法等
基于身份的密碼體制是公鑰密碼學的一個研究方向,其特點是直接用標識用戶身份的字符串作為公鑰。大家熟悉的國密SM9算法就屬于該類算法,這是目前國產密碼算法中唯一一個基于雙線性對的密碼算法。
三方一輪密鑰協商是一種可以在一輪交互內完成三方的密鑰協商的密鑰協商協議,效率高于DH密鑰協商。
傳統的DH密鑰協商可以完成兩兩之間的密鑰協商。雖然能夠通過兩兩之間多輪協商完成三方之間的密鑰協商,但是增加了通信復雜度。
基于雙線性對能夠在三方之間通過一輪通信完成密鑰協商,大大降低了通信復雜度。
BLS簽名是Boneh、Lynn和Shacham三人基于雙線性映射構造的短簽名方案,其特性之一就是能用于構造聚合簽名。
除了上述的代表成果,雙線性對在隱私保護方面、可證明執行、可信計算等方面也有大量成果,例如可信計算組(The Trusted Computing Group ,TCG)在可信平臺模塊規范中推薦的橢圓曲線直接匿名證明協議(ECDAA),適用于通用問題的零知識證明(zk-SNARK),intel的可信計算環境SGX以及加強隱私ID(EPID)等。
雙線性對的應用
雖然雙線性對有大量的應用案例,但是限于篇幅,本文挑選了三方一輪密鑰交換和SM9數字簽名算法作為例子。
本部分先將算法過程剝離開來,還沒有太多去分析算法的原理,這是因為在不了解雙線性對的前提下理解這些算法是有困難的。
我們建議讀者先簡單閱讀本部分了解算法能實現的功能,然后在閱讀下篇的雙線性對的性質介紹后再回來品味算法的優美。
▲三方一輪密鑰交換
密鑰交換(key exchange)又叫密鑰協商(key agreement),是一種能夠讓參與者在公共信道上通過交換某些信息來公共建立一個共享密鑰的密碼協議。
最常見的是兩方DH密鑰交換,橢圓曲線群上的DH(ECDH)依據的橢圓曲線群是循環群這個性質。
如下圖:
1.用戶A生成隨機數a,計算aG,并將aG發送給對方
2.用戶B生成隨機數b,計算bG,并將bG發送給對方
3.A和B利用手中信息分別計算出abG作為協商密鑰,原因是abG = baG
通過上述的DH算法可以輕松地完成兩方的密鑰協商,但是較難滿足需要三方密鑰協商的場景。
利用雙線性對可以僅做一輪通信完成密鑰協商。
如下圖所示:
1.A選擇隨機數a,計算aG,將結果發送給B和C
2.B選擇隨機數b,計算bG,將結果發送給A和C
3.C選擇隨機數c,計算cG,將結果發送給A和B
4.A計算a𝑒(bG, cG)
5.B計算b𝑒(aG, cG)
6.C計算c𝑒(aG, bG)
A、B、C分別計算出的結果就是協商出的密鑰。這個協議是雙線性配對在密碼學研究中的第一次正面應用。
SM9數字簽名算法
SM9標識密碼算法包括數字簽名算法、密鑰協商算法、加解密算法三部分,我們主要來關注數字簽名算法。
不同于傳統簽名算法的由用戶隨機選擇私鑰然后計算得到公鑰的方式,SM9能夠實現用戶指定公鑰,密鑰生成中心通過公鑰計算私鑰。
這樣可以將一些有意義的字符串,例如身份證號碼、郵箱地址等作為用戶公鑰,從而能在公鑰中直接反應出用戶信息,這也是標識密碼(IBC)的含義。
簽名算法包括參數生成、密鑰生成、簽名和驗簽等幾個步驟。和一般簽名驗簽不同的地方在于,密鑰生成分為主密鑰生成和用戶密鑰生成兩部分,主私鑰由密鑰生成中心(KGC)保管。
可以看到不論是在三方一輪密鑰協商中,還是在SM9簽名驗簽中,𝑒都扮演了重要的角色。當不知道𝑒是指什么的情況下要理解上面兩個算法是不現實的,而這個映射𝑒也正是本文的核心:雙線性映射。
𝑒的計算是一個計算復雜度較高的操作,我們不打算介紹關于𝑒的原理和細節,讀者只需要了解𝑒的一些屬性就足夠理解上面兩個例子的思想。
因為篇幅原因,雙線性映射的性質將在下篇介紹。在下篇的開始我們就會先幫助讀者理解什么是雙線性,然后緊接著再回顧上面的兩個算法,介紹并分析它們的思想和原理。
更多精彩敬請期待下篇
本文有任何問題歡迎與我們一起探討
名詞解釋
▲ MOV攻擊
又稱MOV規約攻擊,是Menezes、Okamoto和Vanstone三人的論文中提出的針對特殊橢圓曲線離散對數問題(ECDLP)的一種有效解法。通過雙線性配對,將橢圓曲線上的離散對數問題規約成為某個乘法群上的離散對數問題,能夠在亞指數步驟中計算ECDLP。
▲ DLP
離散對數問題。例如在整數模11乘法群中容易計算5×5×5×5=9 mod 11,那么求幾個5相乘的結果是9這個問題就是一個離散對數問題。當模數為很大的質數時,這個問題是困難的。
▲ ECDLP
橢圓曲線離散對數問題。例如已知P、Q是兩個橢圓曲線點,并且4個P相加得到Q,那么已知P和Q求解幾個P相加得到Q的問題就是橢圓曲線離散對數問題。當選擇的曲線滿足一定要求時,該問題是困難的。
參考文獻與推薦閱讀
[1] cl簽名
https://www.iacr.org/archive/crypto2004/31520055/cl04.pdf
[2] 配對友好的曲線(RFC草案)
https://tools.ietf.org/pdf/draft-irtf-cfrg-pairing-friendly-curves-07.pdf
[3] 三方一輪密鑰交換
https://xueshu.baidu.com/usercenter/paper/show?paperid=5521a92e88e750ae92df7b1cd8287452&site=xueshu_se
[4] 一個關于雙線性對的綜述
http://jos.org.cn/ch/reader/create_pdf.aspx?file_no=3651&journal_id=jos
[5] 基于bn曲線的雙線性對實現
https://cryptojedi.org/papers/dclxvi-20100714.pdf
[6] SM9標識密碼算法GMT0044
http://www.gmbz.org.cn/main/viewfile/20180110024900801385.html
作者簡介
喬沛楊
來自趣鏈科技基礎平臺部
區塊鏈密碼學研究小組
總結
以上是生活随笔為你收集整理的双线性对在密码学中的应用(上)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【数值分析】python实现四阶龙格库塔
- 下一篇: 几款不错的屏幕键盘软件~