姚英英 常曉林 甄平
摘? ?要:SM9是國內商用密碼體系的重要組成部分,它是基于標識的密碼體制,可以避免PKI系統(tǒng)中復雜的證書管理難題,為物聯(lián)網安全應用提供了新的解決方案。但SM9需要可信第三方KGC為用戶生成和管理密鑰,密鑰更新極為不便。為了解決SM9密鑰更新的難題,文章利用區(qū)塊鏈技術,提出一種去中心化的身份認證及密鑰管理方案。在該方案中,用戶僅需要首次由IGC(Identity Generator Center)為其生成身份標識符和密鑰,隨后用戶可以自動對密鑰更新,在此過程中身份標識符作為公鑰保持不變,僅對私鑰和參數(shù)更新,以便于身份認證。文章重新定義了交易的數(shù)據(jù)結構,并且更新過程以交易的形式記錄在區(qū)塊鏈上,通過區(qū)塊鏈數(shù)據(jù)的不可篡改性保證了其真實可信。文章的研究為去中心化的物聯(lián)網應用場景下身份認證及密鑰管理提供了新的解決方案。
關鍵詞:去中心化;身份認證;密鑰管理;SM9;區(qū)塊鏈
中圖分類號:TP309? ? ? ? ? 文獻標識碼:A
Abstract: SM9 is an important part of China's commercial cryptosystem. It is an identity-based cryptosystem, which can avoid complex certificate management problems in PKI (Public Key Infrastructure) systems and provide a new solution for IoT security applications. However, SM9 requires a trusted third party KGC (Key Generator Center) to generate and manage keys for users, which is extremely inconvenient to update. In order to solve the problem of SM9 key update, this paper proposes a decentralized identity authentication and key management scheme by using blockchain technology. In this scheme, the user only needs to generate the identity identifier and key for the first time by the IGC (Identity Generator Center), and then the user can automatically update the key, in the process, the identity identifier remains unchanged as the public key, only Update private keys and parameters for identity authentication. This paper redefines the data struc-ture of the transaction, and the update process is recorded in the blockchain in the form of transactions, which guaran-tees its authenticity through the irreversible modification of the blockchain data. The research in this paper provides a new solution for identity authentication and key management in the decentralized IoT application scenario.
Key words: decentralization; identity authentication; key management; SM9; blockchain
1 引言
隨著物聯(lián)網和5G技術的發(fā)展,萬物互聯(lián)的時代即將來臨,預計到2020年,聯(lián)網設備達250億臺,并將持續(xù)增長。大規(guī)模物聯(lián)網在給人生活帶來便利的同時,也提出了更高的安全需求[1]。傳統(tǒng)的PKI(Public Key Infrastructure)認證機制并不適用于這種海量設備認證信任問題,否則將導致CA(Certificate Authority)證書管理異常復雜,一旦網絡收到終端請求超過了資源處理能力,則容易導致網絡服務出現(xiàn)問題。
基于身份的密碼學IBC(Identity-Based Crypto-graphy)由Shamir首次提出[2],其中每個實體具有一個有意義的、唯一的標識作為公鑰,無需數(shù)字證書將身份信息與公鑰綁定,能夠避免PKI中復雜的證書管理難題。2001年,Boneh和Franklin利用雙線性實現(xiàn)了IBC加密算法構造[3]。2013年國際上發(fā)布了關于IBC的密碼體系標準IEEE Std1363.3[4]。國內也已啟動了基于身份的密碼體制的標準化工作,國家密碼管理局于2016年3月正式發(fā)布《GM/T 0044-2016 SM9標識密碼算法》,對于完善中國商用密碼體系具有重要意義。SM9算法可以使用用戶的手機號碼或郵件地址作為標識,簡單易用,無需申請數(shù)字證書,非常適用于電子郵件、智能終端安全、物聯(lián)網安全、云存儲安全等熱門應用。
但是,IBC認證機制需要可信第三方KGC(Key Generation Center)為用戶分發(fā)和管理密鑰,其中密鑰更新是一個難題,需要KGC重新生成密鑰,進而更新網絡中所有用戶的密鑰,管理非常不便。在KGC系統(tǒng)參數(shù)不變的情況下,用戶的公鑰,如姓名、E-mail等,則需額外添加或修改諸如日期等相關參數(shù)[5],以實現(xiàn)私鑰的更新,這將出現(xiàn)密鑰更新后用戶公鑰自證性降低的問題。為解決這些難題,去中心化的認證機制提供了一個良好的選擇,具有更快并且更安全的IoT接入,較低的認證代價,另外還能避免認證節(jié)點堵塞的瓶頸。區(qū)塊鏈技術目前的研究熱點,提供了物聯(lián)網去中化心應用的良好解決方案[5],研究人員相繼提出了基于區(qū)塊鏈的去中心化數(shù)據(jù)隱私保護方案[5],例如固件升級模型[7]、電子商務交易模型[8]、身份管理模型[9]。
受此啟發(fā),本文提出了基于區(qū)塊鏈的去中心化身份認證及密鑰管理方案,旨在解決國密SM9算法密鑰更新難題。在本方案中,用戶節(jié)點僅在首次注冊時需要IGC(Identity Generator Center)為其頒發(fā)身份和生成密鑰信息。隨后,用戶節(jié)點可以自動更新密鑰,不再依賴于IGC,并且密鑰更新過程以交易的形式記錄在區(qū)塊鏈上,通過區(qū)塊鏈數(shù)據(jù)的不可篡改性,保證了密鑰更新過程的安全可信。
2? 背景知識
2.1? SM9算法
國密SM9算法是一種基于標識的公鑰密碼算法,是基于身份的密碼學IBC范疇的一個典型例子,這類公鑰密碼算法的公鑰數(shù)據(jù)可以采用代表用戶身份的任意數(shù)據(jù),如手機號碼、電子郵件地址等信息。SM9標準分為總則、數(shù)字簽名算法、密鑰交換協(xié)議、密鑰封裝機制和公鑰加密算法和參數(shù)定義五部分,詳見《GM/T 0044-2016 SM9標識密碼算法》。本文主要對SM9公鑰加密算法和數(shù)字簽名算法進行研究。
2.1.1? 公鑰加密方案
設為橢圓曲線加法循環(huán)群的生成元,為橢圓曲線加法循環(huán)群的生成元,為Hash函數(shù),為密鑰推導函數(shù),和為分別為分組加密和解密算法,為帶密鑰的消息認證碼,為雙線性對。SM9公鑰加密算法,如表1所示。
由于篇幅限制及描述方便,表1中對SM9公鑰加密算法進行了適當?shù)暮喕幚?,下面對SM9數(shù)字簽名方案的描述也類似。
2.1.2? 數(shù)字簽名方案
SM9數(shù)字簽名方案如表2所示,它主要用于對區(qū)塊鏈上的交易進行簽名,保證交易信息的不可偽造性。
2.2 區(qū)塊鏈
區(qū)塊鏈( Blockchain)技術起源于2008年日本名為中本聰(Satoshi Nakamoto)學者的奠基性論文《比特幣:一種點對點電子現(xiàn)金系統(tǒng)》[10]。區(qū)塊鏈是一個分布式賬本,它基于密碼學原理而不是基于信用,使得任何達成一致的雙方直接支付,從而不需要第三方中介的參與,解決了數(shù)字加密貨幣領域長期以來所必需面對的兩個重要問題:雙重支付問題和拜占庭將軍問題。區(qū)塊鏈具有去中心化、時序數(shù)據(jù)、集體維護、可編程和安全可信等特點。區(qū)塊鏈的結構如圖1所示。
圖1是區(qū)塊鏈的簡化結構,每個區(qū)塊中都包括一個或多個交易,通過Hash計算,根據(jù)Merkle樹的形式最終得以Merkle根,保存在區(qū)塊頭上。每個區(qū)塊頭都保存著上一個區(qū)塊的Hash值,由此形成一個鏈式結構。這意味著若修改某個區(qū)塊上的交易信息,必須修改該區(qū)塊后面的所有區(qū)塊信息。交易通過共識機制寫入到區(qū)塊鏈中,以一種稱為工作量證明(Proof of Work, PoW)的方式實現(xiàn)。
區(qū)塊鏈的交易是由一個或由多個輸入和輸出組成,同樣是由鏈式結構組成,比特幣也是通過一個交易轉到另一個交易上,即當前交易的輸入是上一個交易的輸出,一個交易可以有多個輸出,但每個輸出只能作為一個輸入,以防止雙重支付。區(qū)塊鏈交易的形式如圖2所示,其表示交易0輸入是100k(Satoshi是比特幣的單位,1 BTC=108 Satoshi),有兩個輸出,其中輸出0作為交易1的輸入,金額為40k,輸出1是交易2的輸入,金額為50k,減少的10k為交易手續(xù)費,作為挖礦者的收入。
區(qū)塊鏈技術是構建比特幣網絡與交易信息加密傳輸?shù)暮诵募夹g,具有去中心化的關鍵優(yōu)勢,在節(jié)點無需互相信任的分布式系統(tǒng)中實現(xiàn)基于去中心化信用的點對點交易,為解決中心化機構普遍存在的高成本、低效率和不安全等問題提供了解決方案。
3? 去中心化的身份認證及密鑰管理方案
本文所提出的去中心化的身份認證及密鑰管理方案如圖3所示,其中所涉及的實體主要為用戶U_i和用戶身份生成中心(Identity Generation Center,IGC),IGC為用戶生成唯一身份信息標識符,例如用戶的郵箱、手機號碼等,同時為用戶生成初始密鑰對。
本文基于區(qū)塊鏈提出了一種去中心化的身份認證及密鑰管理方案,用戶的每一次的密鑰更新都作為一條交易記錄保存在區(qū)塊鏈上,仿照比特幣的交易形式,重新定義的交易結構如表3所示。不同于比特幣中的交易,本方案中的每個交易分別僅有一個輸入和輸出,以保證密鑰更新過程的單向性。
表3的交易數(shù)據(jù)結構中,首先給出的是交易發(fā)布者的身份信息,輸入中的索引指示其作為上個交易輸出所在的位置,即指示密鑰更新前的身份標識符和參數(shù),Hash值為對上個交易Hash運算后的結果,以對其完整性進行驗證。輸出表示密鑰更新后的身份標識符和參數(shù),有效期表示密鑰更新后的有效期。本方案密鑰更新主要是私鑰和參數(shù)的更新,身份標識符通常情況下保持不變。最后對整個交易信息進行簽名,簽名密鑰為更新前的密鑰,以保證整個交易信息的有效性。
方案分為四個階段:一是參數(shù)初始化階段主要生成SM9系統(tǒng)參數(shù),同時各個IGC節(jié)點生成各自的密鑰對;二是用戶身份信息生成階段,IGC為用戶生成唯一的身份信息標識符和密鑰對;三是密鑰更新包括用戶密鑰更新和IGC密鑰更新,通過區(qū)塊鏈實現(xiàn)SM9密鑰更新過程;四是用戶身份信息注銷階段,當用戶的密鑰泄露時,由IGC實現(xiàn)對其身份信息注銷過程。為了便于對方案進行描述,表4給出了方案中所使用的符號。
(1) 參數(shù)初始化階段
方案主要采用SM9公鑰算法,需要首先確立基點,,IGC產生隨機數(shù)作為私鑰,計算中的元素作為公鑰,則IGC的公私密鑰對為。IGC秘密保存,公開。為了能夠利用SM9簽名算法,IGC需要根據(jù)生成另一個私鑰,即在有限域上計算,然后計算,得到,主要用于IGC的簽名功能。將此過程通過共識機制寫入到區(qū)塊鏈上,交易如表5所示,其輸入為空,輸出為生成的公鑰以及有效期 ,并對其進行簽名。
(2) 用戶身份標識符生成階段
當用戶首先向IGC申請注冊時,通過認證之后,IGC為其生成唯一身份標識符作為公鑰,為產生用戶的私鑰,IGC首先在有限域上計算,然后計算,得到。該過程通過離線方式進行,因此可將IGC可以將密鑰安全傳送給用戶,并將此作為交易信息能過共識機制寫入區(qū)塊鏈中,如表6所示,該交易輸入同樣為空,輸出為用戶身份標識符、參數(shù)和有效期,最后IGC對交易信息進行簽名。
(3) 密鑰更新階段
1) 當用戶需要進行密鑰更新時,自身充當IGC的角色。即用戶選擇隨機數(shù)作為私鑰,計算中的元素作為公鑰,然后在有限域上計算和,得到。此時用戶的身份信息保持不變,更新后的私鑰為,參數(shù)為。同進將其作為交易通過共識機制寫入區(qū)塊鏈中,交易如表7所示,交易輸入為索引和Hash值,指示其更新前參數(shù)所在的上一個交易位置,輸出為密鑰更新后參數(shù)以及有效期,并利用更新前的密鑰對其進行簽名。
2) 當IGC需要對密鑰進行更新時,類似于參數(shù)初始化階段,重新生成隨機數(shù)作為私鑰, 作為公鑰,同進還需要重新生成簽名私鑰。將此作為交易信息和密鑰有效期信息通過共識機制寫入區(qū)塊鏈中,交易如表8所示,輸入為索引和Hash值,指示其更新前公鑰所在的上一個交易位置,輸出為更新后公鑰及有效期,并利用更新前密鑰對其簽名。
(4) 密鑰更換階段
當用戶因密鑰泄露導致自身無法對密鑰進行更新時,需向IGC申請更換密鑰,該過程類似于用戶身份標識符生成階段。用戶的身份標識符保持不變,IGC在有限域上計算,再計算,得到。該過程通過離線方式進行,因此IGC可以將密鑰安全傳送給用戶,并將此作為交易信息通過共識機制寫入區(qū)塊鏈中,如表9所示,交易輸入為索引和Hash值,指示在密鑰泄露前其參數(shù)所在的交易位置,輸出為用戶身份標識符、參數(shù)(IDC的公鑰)和有效期,最后IGC對交易信息進行簽名。
(5) 身份信息更換階段
當用戶需要更換身份標識符時,需要向IGC進行申請,該過程同樣類似于用戶身份標識符生成階段,IGC重新為其生成唯一身份標識符作為公鑰,以及私鑰為,并將此作為一條交易通過共識機制寫入區(qū)塊鏈中,如表10所示,交易輸入為索引和Hash值,指示在身份標識符更換前其參數(shù)所在的交易位置,輸出為用戶身份標識符、參數(shù)(IDC的公鑰)和有效期,最后IGC對交易信息進行簽名。若用戶想要注銷身份信息,只需將輸出置為空即可。
上述方案中,用戶只需要首次由IGC認證其身份信息,并為其生成私鑰。隨后由用戶本身充當IGC的角色,通過區(qū)塊鏈完成其密鑰更新過程,實現(xiàn)去中心化的密鑰管理過程。若用戶密鑰泄露,只能通過IGC對其密鑰進行更換。為了保證身份信息的唯一性,用戶不允許私自更換其身份標識符,也只能由IGC認證后重新為其生成新的身份標識符。所有的過程都通過交易的形式記錄在區(qū)塊鏈上,由區(qū)塊鏈的不可篡改性保證了身份認證及密鑰管理過程的安全性。
4? 安全及效率分析
本文方案采用SM9標準算法實現(xiàn)基于身份的加密和簽名體制,利用區(qū)塊鏈實現(xiàn)去中心化的身份認證及密鑰管理。SM9算法的安全主要依賴于橢圓曲線離散對數(shù)難題,對于有限域上的橢圓曲線 和其上的兩點、,計算整數(shù),使得 ,其目前仍是公認的NP難題。影響SM9算法效率的主要是雙線性對的計算,可通過不斷優(yōu)化提升其效率。Beuchat等[12]人開發(fā)出BN曲線上O-Ate雙線性對的快速運算軟件庫,在Intel i7 2.8GHz的處理器上,一次雙線性對計算僅需要0.832ms,具有重用的實用價值。
區(qū)塊鏈的安全性依賴于哈希函數(shù),據(jù)估計[11],以天河二號的算力來說,產生比特幣SHA256哈希算法的一個哈希碰撞大約需要 年,充分說明了區(qū)塊鏈的安全性。隨著未來量子計算機的發(fā)展,給現(xiàn)有的密碼算法造成安全威脅,可以采用抗量子攻擊的密碼算法,例如采用格密碼算法替代SM9算法,這并不影響方案的實用性?;赑oW共識機制的區(qū)塊鏈目前主要面臨51%攻擊問題,即攻擊者通過控制網絡中51%的算力就有能力篡改和偽造區(qū)塊鏈上的數(shù)據(jù)。研究者已經提出同進依靠高算力和高內存的PoW共識算法來解決51%攻擊問題[10],更加安全有效的共識機制有待于更加深入的研究和設計。
區(qū)塊鏈要求每個節(jié)點保存一份數(shù)據(jù)備份,隨著海量用戶接入網絡,必然導致海量數(shù)據(jù)的擴張,可通過關鍵節(jié)點保存所有數(shù)據(jù)備份,其它的節(jié)點保存需要數(shù)據(jù)的方式解決,或者在保證安全性的前提下,舍棄那些陳舊的歷史數(shù)據(jù)以減少數(shù)據(jù)容量。比特幣交易的確認時間約為10分鐘,對于本文所提出的基于區(qū)塊鏈的身份認證及密鑰管理方案,其交易時間的確定可根據(jù)其實際場景的應用需要來定。
5? 結束語
本文利用區(qū)塊鏈技術,提出一種去中心化的身份認證及密鑰管理方案,以解決SM9中密鑰更新的難題。在本方案中,用戶僅在首次注冊時由可信第三方IGC為其生成身份標識符和密鑰,隨后的密鑰更新過程完全由用戶操作,不再依賴于IGC,更新過程以交易的形式保存在區(qū)塊鏈上,能過共識機制保證了更新過程數(shù)據(jù)的真實可信。
本文提出了方案設計的基本框架,未來仍需要更加深入的研究,實現(xiàn)其在去中心化的(比如車聯(lián)網等)物聯(lián)網應用場景下身份認證及密鑰管理中的應用。
基金項目
中央高校基本科研業(yè)務費專項資金資助(項目編號:2018YJS023)。
參考文獻
[1] 劉志誠.物聯(lián)網網絡信息安全生態(tài)體系構建新論[J].網絡空間安全,2018,9(12):85-89.
[2] IEEE Standard for Identity-Based Cryptographic Techniques using Pairings[C]// IEEE P1363.3/D9, May 2013. IEEE, 2013.
[3] Shamir A. Identity-based cryptosystems and signature schemes[C]//Workshop on the theory and application of cryptographic techniques. Springer, Berlin, Heidelberg, 1984: 47-53.
[4] Beuchat J L, González-Díaz J E, Mitsunari S, et al. High-speed software implementation of the optimal ate pairing over Barreto–Naehrig curves[C]//International Conference on Pairing-Based Cryptography. Springer, Berlin, Heidelberg, 2010: 21-39.
[5] Boneh D, Franklin M. Identity-based encryption from the Weil pairing[C]//Annual international cryptology conference. Springer, Berlin, Heidelberg, 2001: 213-229.
[6] Christidis K, Devetsikiotis M. Blockchains and smart contracts for the internet of things[J]. Ieee Access, 2016, 4: 2292-2303.
[7] Zyskind G, Nathan O. Decentralizing privacy: Using blockchain to protect personal data[C]//2015 IEEE Security and Privacy Workshops. IEEE, 2015: 180-184.
[8] Lee B, Lee J H. Blockchain-based secure firmware update for embedded devices in an Internet of Things environment[J]. The Journal of Supercomputing, 2017, 73(3): 1152-1167.
[9] Zhang Y, Wen J. The IoT electric business model: Using blockchain technology for the internet of things[J]. Peer-to-Peer Networking and Applications, 2017, 10(4): 983-994.
[10] Nakamoto S. Bitcoin: A peer-to-peer electronic cash system[J]. 2008.
[11] Yuan Y, Wang F Y. Blockchain: the state of the art and future trends[J]. Acta Automatica Sinica, 2016, 42(4): 481-494.
[12] Buterin V. A next-generation smart contract and decentralized application platform[J]. White Paper, 2014, 3: 37.