密码学系列 - 双线性对
雙線性對是一種二元映射,它作為密碼學算法的構造工具,在各區塊鏈平臺中廣泛應用,比如零知識證明、聚合簽名等技術方案大多基于雙線性對構造得來。
線性映射
一個函數f是線性的是指函數f滿足可加性和齊次性,也就是:
可加性:f(a)+f(b)=f(a+b)
齊次性:f(ka)=kf(a)
雙線性映射
和線性函數不同的點在于滿足雙線性的函數有兩個輸入,而且對這兩個輸入分別滿足線性。
一個映射e,能將G?和G?中的兩個元素映射為G?中的一個元素,并且該映射滿足雙線性。
設g?, g?分別是群G?和G?的元素,𝑒是G?×G?→G?的雙線性映射,那么有:
𝑒(ag?, bg?) = ab 𝑒(g? , g?) = 𝑒(abg? , g?) = 𝑒(g? , abg?)
𝑒(ag?, bg?) + 𝑒(cg?, dg?) = (ab+cd) 𝑒(g?, g?)
雙線性使得變量前面的系數可以靈活轉化
基于雙線性對的密碼算法
三方一輪密鑰協商
三方一輪密鑰協商是一種可以在一輪交互內完成三方的密鑰協商的密鑰協商協議,效率高于DH密鑰協商。傳統的DH密鑰協商可以完成兩兩之間的密鑰協商。雖然能夠通過兩兩之間多輪協商完成三方之間的密鑰協商,但是增加了通信復雜度。
國密SM9算法
基于身份的密碼體制(IBE)是公鑰密碼學的一個研究方向,其特點是直接用標識用戶身份的字符串作為公鑰。大家熟悉的國密SM9算法就屬于該類算法,這是目前國產密碼算法中唯一一個基于雙線性對的密碼算法。
SM9標識密碼算法包括數字簽名算法、密鑰協商算法、加解密算法三部分。不同于傳統簽名算法的由用戶隨機選擇私鑰然后計算得到公鑰的方式,SM9能夠實現用戶指定公鑰,密鑰生成中心通過公鑰計算私鑰。
這樣可以將一些有意義的字符串,例如身份證號碼、郵箱地址等作為用戶公鑰,從而能在公鑰中直接反應出用戶信息,這也是標識密碼(IBC)的含義。這樣可以將一些有意義的字符串,例如身份證號碼、郵箱地址等作為用戶公鑰,從而能在公鑰中直接反應出用戶信息,這也是標識密碼(IBC)的含義。
和一般簽名驗簽不同的地方在于,密鑰生成分為主密鑰生成和用戶密鑰生成兩部分,主私鑰由密鑰生成中心(KGC)保管。
BLS簽名算法
BLS簽名是Boneh、Lynn和Shacham三人基于雙線性映射構造的短簽名方案,其特性之一就是能用于構造聚合簽名。
可以有效縮減PBFT類共識在區塊頭中存放的簽名體積, 聚合簽名只占 32 字節, 可以在區塊中放更多筆的交易。
MOV攻擊
又稱MOV規約攻擊,是Menezes、Okamoto和Vanstone三人的論文中提出的針對特殊橢圓曲線離散對數問題(ECDLP)的一種有效解法。通過雙線性配對,將橢圓曲線上的離散對數問題規約成為某個乘法群上的離散對數問題,能夠在亞指數步驟中計算ECDLP。
MOV攻擊并非能作用于全部的橢圓曲線,而是只能對參數滿足一定條件的曲線進行攻擊。這促使人們在選擇橢圓曲線參數時更加謹慎,更加注重抗MOV攻擊。
例如國標《SM2橢圓曲線公鑰密碼算法》就充分重視了受到MOV攻擊的可能性,不僅在第一部分《總則》中用附錄A的部分篇幅介紹驗證曲線參抗MOV攻擊的方法,而且也在第五部分《參數定義》中給出了安全曲線的推薦參數。
缺點: 計算開銷較大
配對函數并不那么高效, 驗簽時間相對于傳統的ECDSA簽名上升了兩個數量級。
BLS 簽名驗證的復雜度要比 ECDSA 高上一個數量級。在驗證區塊中 1000 筆交易的聚合簽名時,仍需要進行 1000 次配對計算,這可能比使用 ECDSA 時(對 1000 個單獨簽名進行驗證)還要慢。唯一的好處在于,可以在區塊中放更多筆的交易,畢竟聚合簽名只占 32 字節。
曲線
并非基于任何橢圓曲線都可以構造配對函數,對于能有效實現雙線性對的橢圓曲線,稱為配對友好曲線(pairing-friendly curves)。
BN曲線
不再安全, 2016年的研究(https://moderncrypto.org/mail-archive/curves/2016/000740.html)指出BN曲線配對在NFS數域篩算法的攻擊下達不到宣稱的安全等級(在新攻擊方法下估計強度大約減少1/4)。
BLS曲線
BLS12_381(嵌入度為12的381位特征的BLS曲線, 128位安全級別), 零知識證明(zk-SNARK)的證明系統,主要是基于BLS12_381橢圓曲線上,實現了Groth16的零知識證明系統。
名詞解釋
DLP
離散對數問題。例如在整數模11乘法群中容易計算5×5×5×5=9 mod 11,那么求幾個5相乘的結果是9這個問題就是一個離散對數問題。當模數為很大的質數時,這個問題是困難的。
ECDLP
橢圓曲線離散對數問題。例如已知P、Q是兩個橢圓曲線點,并且4個P相加得到Q,那么已知P和Q求解幾個P相加得到Q的問題就是橢圓曲線離散對數問題。當選擇的曲線滿足一定要求時,該問題是困難的。
參考文獻:
雙線性對在密碼學中的應用(上)
雙線性對在密碼學中的應用(下)
往期精彩回顧:
總結
以上是生活随笔為你收集整理的密码学系列 - 双线性对的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 「Linux」- 安装网易云音乐(Net
- 下一篇: 我的世界游戏服务器改名