區塊鏈密碼基礎之簽名演算法(一)

語言: CN / TW / HK

閱讀: 3

一、引言

在國家的十四個五年規劃和2035年遠景目標綱要中的第五篇《加快數字化發展 建設數字中國》中第二節中提出培育壯大人工智慧、大資料、區塊鏈、雲端計算、網路安全等新興數字產業:區塊鏈部分明確要求通過推動區塊鏈的技術創新,進一步為區塊鏈服務平臺和金融科技,供應鏈管理,政務服務等應用方案做好基礎服務,並進一步完善管理機制。最新的《“十四五”數字經濟發展規劃》提到,“構建基於區塊鏈的可信服務網路和應用支撐平臺”。作為數字經濟時代重要底層技術之一,區塊鏈對推動企業數字化轉型,促進產業數字化發展,推進數字中國建設都起著強大支撐作用。當前,政策疊加效應深度釋放,我國區塊鏈產業發展駛入“快車道”,已經成為驅動數字經濟高質量發展的重要引擎。

簽名演算法是區塊鏈的重要技術之一,簽名演算法同時也是區塊鏈安全的重要研究點之一,區塊鏈的地址,公鑰,私鑰,錢包管理等都和簽名演算法相關。區塊鏈的交易系統中使用了一個假名,但是如何允許使用者和多個機構使用不同的假名在匿名條件下進行互動,且使用者和機構之間共謀不能識別出其他使用者是否是同一個使用者?私鑰是證明使用者擁有數字資產的唯一憑證,所以私鑰的安全性對於區塊鏈來說尤為重要,現有的區塊鏈公鏈中,有利用多籤機制或者閾值簽名機制來解決使用者部分私鑰丟失的問題。區塊鏈中私鑰的生成,儲存,恢復,銷燬等全生命週期的在使用者端完成,在保證使用者端能抵禦私鑰的丟失和被盜的風險同時又保證使用者對賬戶中的數字資產擁有完全的控制權。但是在使用者端完全控制數字資產和解決私鑰丟失問題上沒有一個完美的解決辦法。下面通過進一步分析簽名演算法,和大家一起探索適合各種應用場景的區塊鏈如何選擇合適的簽名演算法。

二、區塊鏈地址的生成過程

區塊鏈的所有權是通過私鑰、區塊鏈地址和數字簽名來實現的。私鑰只有使用者自己擁有,只儲存在使用者端,管理使用者私鑰的軟體或者硬體我們一般稱他為錢包,錢包並行與區塊鏈網路,錢包的管理如私鑰生成,簽名過程等都不需要網路連線。錢包的構建不需要任何第三方信任機構,所有權的認證和管理都是基於密碼學可證明的安全模型,因此也可以說區塊鏈的信任是建立在密碼學的可證明安全基礎上的。

以比特幣為例,比特幣的數字資產存放在和私鑰相關的地址上,只有通過此私鑰簽名的交易才是一個有效的交易,只有有效的交易才會經過節點驗證後寫入區塊中上鍊。比特幣採用的是橢圓區塊簽名演算法,私鑰是一個數字,通常隨機產生,此處需要注意,需要產生一個熵比較大的隨機數推薦採用密碼演算法中的隨機數生成演算法,有些錢包設計中採用了一般語言的隨機數生成,這樣就會很容易被爆破,也就是我們所說的短地址攻擊。比特幣的地址生成如圖所示。

三、Schnorr簽名演算法和DSA

數字簽名由公鑰密碼發展而來,數字簽名能夠使驗證者相信訊息的完整性,簽名者的不可偽造性,同時也說明的簽名者對簽名的不可抵賴性。

  • Schnorr簽名演算法

  • DSA簽名演算法

DSS(Digital Signature Standard)是由美國NIST 1991年公佈的一種簽名技術,也稱為DSA(Digital Signature Algorithm),隨後美國政府對其做了一些修改,現已成為一個應用廣泛的國際標準。

四、基於橢圓曲線的簽名演算法

大部分割槽塊鏈專案使用的是橢圓曲線演算法ECDSA(Elliptic Curve Digital Signature Algorithm),使用橢圓曲線離散對數問題構建的簽名演算法,是對數字簽名演算法DSA的模擬,只是使用的數學困難問題不同。ECDSA在1998年被ISO接收,1999年成為ANSI標準,並於2000年成為NIST和IEEE標準。橢圓曲線離散對數問題與普通的離散對數問題和大數分解不同,沒有亞指數時間的解決方法。

  • ECDSA演算法

  • 區塊鏈的簽名演算法選擇

橢圓曲線簽名演算法只是給出了一種演算法,可是橢圓曲線的引數選擇是多樣的。一般而言,橢圓曲線被分為兩類,“偽隨機曲線”和Koblitz曲線,NSA在橢圓曲線簽名演算法中提出的secp256r1是隨機數引數:

這個隨機引數來自於一個種子,但是這個種子怎麼來的,為何這個種子不是一個單純的數字?另外根據斯諾登揭露美國國家安全域性密碼標準的訊息中,一個很重要的點是說這個種子是以某種方式精心選擇的,NSA知道這條曲線的弱化方法。因此絕大多數區塊鏈都沒有選擇這條曲線,而是選擇了Koblitz曲線,secp256k1(a=0,b=7),如果傳聞為真,如果NSA掌握了secp256r1的弱化方法,那麼區塊鏈的曲線引數的選擇使他們躲過了NSA的陷阱。

  • 區塊鏈中籤名演算法的安全問題

2014年2月24日,Mt. Gox暫停交易並下線。最終,人們發現 Mt. Gox 的基礎設施在幾年內多次被攻擊者利用,他們通過操縱部分交易資料(一種稱為交易延展性的特徵)慢慢搶劫了其比特幣的交易所,這導致了 Mt. Gox 的攻擊。這個持續的慢慢搶劫最後具統計超過 744,000 個比特幣被盜,當時價值約 3500 萬美元,現在價值近 300 億美元。

那麼什麼是橢圓曲線ECDSA的延展性,攻擊者如何利用ECDSA的延展性進行攻擊的呢?我們可以看到上面的橢圓曲線簽名演算法,整個計算過程中和驗證過程中可以在使用者簽名基礎上,訊息不變的情況下,可以構造另一個簽名(r,-s)這樣驗證也可以通過。

如下圖所示是區塊鏈延展性攻擊的節點網路結構。

具體的攻擊步驟如下:

  1. 攻擊者啟動一批攻擊節點包圍交易所節點;
  2. 攻擊者發起一筆提現請求,交易所構造交易TX(包含簽名)併發送到區塊鏈網路中;
  3. 攻擊者擷取TX後不轉發TX,而是將交易的簽名的(r,s)更改為(r,-s),交易改變為TX’;
  4. 攻擊者把TX’傳送到區塊鏈網路中,誠實節點轉發TX’到整個區塊鏈網路中,礦工節點驗證通過後將交易TX’寫入區塊鏈中完成交易,數字資產轉入了攻擊者賬戶;
  5. 交易所查詢交易TX,發現沒有寫入區塊,使用者提幣沒有成功,使用者在交易所的數字資產還在交易所的賬本上,完成攻擊;
  6. 攻擊者再次進行提幣交易重複上述過程。

經過了大量的安全事件後,比特幣改進協議中提出隔離驗證,來規避ECDSA簽名的交易延展性攻擊。現在隔離驗證已被比特幣主網使用。另外比特幣改進協議也有提出適用Schnorr簽名演算法替代ECDSA,這是因為Schnorr具有線性關係,可以構建區塊鏈簽名的特殊需求。

  • 國密SM2替代

SM2是國家密碼管理局於2010年12月17日釋出的橢圓曲線公鑰密碼演算法,其中包含5個部分,總則、數字簽名演算法、金鑰交換協議、公鑰加密演算法、引數定義。

  • SM2的引數選擇

SM2選擇的曲線方程和引數如下:

  • S M2 簽名演算法

使用上面SM2橢圓曲線公鑰密碼演算法推薦引數,提出了SM2簽名演算法可滿足多種密碼應用中的身份鑑別和資料完整性、真實性的安全需求。同時使用了SM3密碼雜湊演算法,國家密碼管理局批准的隨機數發生器。具體SM2簽名演算法如下:

  • SM2和ECDSA的應用於區塊鏈的比較

SM2和ECDSA都是使用橢圓曲線的簽名演算法,其思想來源都是來自於DSA,但是由於演算法的設計不同,其特性還是有一些差異,下面對ECDSA和SM2進行比較。

相同點:

  • 都是以r,s為簽名(來源於DSA的啟發)
  • 都是隨機簽名演算法(利用了隨機數k通過橢圓曲線上的點產生r)
  • 安全性在同一個級別

不同點: 兩者在演算法和特徵上還是有些許不同的

  • 簽名的生成r不同;
  • 簽名生成的s不同
  • 簽名的hash內容不同
  • SM2數字簽名增加了合理性檢查,檢查r+k是否等於n
  • SM2數字簽名的s具有線性關係,可以構造特殊需求的簽名

綜合以上分析SM2簽名演算法與ECDSA演算法相比較,雖然安全性在同一個級別上,但是SM2演算法具有更好的合理性檢查提高了安全性,並且可以更高效的計算。SM2在區塊鏈專案中替代現有的ECDSA,是一個可行的且可以提高區塊鏈安全性的選擇。而且由於SM2的簽名引數s具有線性關係,可以結合區塊鏈實際應用進行一些特殊需求的簽名演算法設計,滿足區塊鏈特殊的需求。

五、總結

區塊鏈的簽名演算法是區塊鏈應用和區塊鏈安全的重要研究點之一,通過對區塊鏈的需求和簽名演算法的瞭解可以更好的選擇適用自身業務需求籤名演算法,這樣在安全性和效率方面都會事半功倍;另外通過對通用密碼演算法在區塊鏈中的瞭解使得開發者在國密替代做一個基礎。

區塊鏈雖然天然具有匿名性,但是其匿名性是通過假名實現的,可以通過對交易資料的啟發式聚類分析,把使用者的地址關聯起來,這樣弱化了區塊鏈的匿名性,如何增強區塊鏈的匿名性?區塊鏈滋生了很多違法活動,因此,區塊鏈的監管問題同時也是一個棘手的問題。如何實現既保護使用者的身份隱私又實現交易的不可連結性,同時對監管又友好的區塊鏈交易系統是一個值得深入探討的問題,下一篇將通過環簽名和群簽名介紹,進一步討論其在區塊鏈系統中的應用。

參考文獻

  1. 《中華人民共和國國民經濟和社會發展第十四個五年規劃和2035年遠景目標綱要》公佈[J];都市快軌交通;2021年02期
  2. 楊波. 現代密碼學 : 第4版[M]. 清華大學出版社, 2017.
  3. Antonopoulos A M. Mastering Bitcoin: Programming the Open Blockchain.  2017.
  4. Hankerson D, Hernandez J L, Menezes A. Software Implementation of Elliptic Curve Cryptography over Binary Fields[C]// International Workshop on Cryptographic Hardware & Embedded Systems. Springer, Berlin, Heidelberg, 2000.
  5. GB/T 32918.2-2016 資訊保安技術 SM2橢圓曲線公鑰密碼演算法[S].

版權宣告

本站“技術部落格”所有內容的版權持有者為綠盟科技集團股份有限公司(“綠盟科技”)。作為分享技術資訊的平臺,綠盟科技期待與廣大使用者互動交流,並歡迎在標明出處(綠盟科技-技術部落格)及網址的情形下,全文轉發。