◆徐冠寧 趙桂芬
(1.北京市科學技術情報研究所 北京 100044;2.網絡密碼認證北京市重點實驗室 北京 100044)
目前,國內外的區塊鏈都是采用公鑰體系(如:PKⅠ)來實現,但是,由于公鑰算法運行效率較低,造成現有區塊鏈運行速度較慢,如:比特幣每秒只能完成7 筆交易,這影響并阻礙了區塊鏈實現規模化并發交易的應用,同時,用戶的私鑰容易被黑客獲取,其安全等級較低,造成現有區塊鏈的安全事件頻發,如:比特幣每半年就出現一次信息安全事件,給用戶帶來較大損失,總之,現有的區塊鏈技術產品不能滿足市場的需求。
近幾年,區塊鏈技術也在進行安全升級,陸續為用戶客戶端提供帶CPU 芯片的U 盾,帶CPU 芯片的U 盾是采用價格低廉的加密芯片,將用戶的私鑰放在U 盾的芯片里。但是,這些廉價的CPU 芯片安全等級較低,容易被不法分子通過破壞性解剖拿到用戶的私鑰,再來克隆用戶的U 盾,盜取用戶賬戶里的資金。即使在客戶端為用戶提供的是合規的U 盾,而PKⅠ技術的公鑰是以明文形式存儲在網絡公鑰服務器中,也容易受到黑客的攻擊。
為一勞永逸徹底解決現區塊鏈的安全問題,我們提出一種基于“垂直認證”技術的區塊鏈安全升級方案,其中:“垂直認證”技術是基于“密鑰種子”集中生成,集中灌裝,集中分發,集中銷毀,并采用單鑰密碼算法(SM1 或SM4 算法)和組合密鑰(CSK,combined secret key)生成算法,實現單鑰密鑰一次一變,建立認證、簽名和加密協議,在客戶端為用戶提供合規的加密芯片(如:U 盾或手機端TF 卡、SⅠM 卡),在加密芯片里寫入認證、簽名和加密協議,在節點服務器端嵌入帶加密芯片加密硬件設備,在加密芯片里寫入認證、簽名驗證和解密協議,建立“芯片”對“芯片”的簽名協議,且簽名密鑰一次一變,亦即:新一代簽名協議,采用單鑰算法建立區塊鏈的安全體系,對比公鑰體系安全性較高,且并發認證的速度大約能提高100 倍,并發簽驗的速度大約能提高200 倍,可以解決目前存在的區塊鏈安全體系漏洞而帶來的資金被盜的問題。
區塊鏈系統存在多種安全隱患,我們這里主要是闡述采用公鑰體系建立區塊鏈數字貨幣系統存在的安全隱患。
區塊鏈數字貨幣交易系統是采用公鑰算法(如:PKⅠ)建立安全架構,PKⅠ已經問世近30 年了,PKⅠ采用公鑰體系建立認證體系,即:采用公鑰算法(公鑰密碼算法如:RSA 或ECC),實現身份認證、數字簽名和密鑰交換,并采用單鑰密碼算法(如:SM1、SM4等)實現數據的加/解密。
1.1“軟錢包”存在的安全隱患
所謂“軟錢包”就是采用軟件方式開發的認證協議,如:軟件開發的PKⅠ認證/簽名協議,實現身份認證后登錄用戶的賬號(錢包),通過簽名協議對支付單進行簽名。軟件開發的PKⅠ認證/簽名協議,存在安全隱患。
(1)“軟錢包”容易被破解,黑客可以通過病毒獲得用戶在客戶端(PC 機或手機等)中的私鑰,再使用盜來的用戶私鑰登錄用戶的錢包,從而,盜用數字貨幣,其中:私鑰就是一串數字,如:RSA算法的密鑰對的長度為1024、2048、4096 比特;ECC 算法密鑰對的長度為256 比特。
黑客還可以篡改數字貨幣社區公鑰服務器中的用戶證書,其中,證書含:用戶標識、實體證書公鑰、中級證書公鑰、根證書公鑰,以及上一級證書的私鑰對下一級證書的數字簽名等,即:黑客使用偽造的證書來替代用戶存儲在公鑰服務器中的證書,黑客采用自己的私鑰來通過身份認證協議登錄用戶的錢包。
(2)“軟錢包”受攻擊的原理,在建立“軟錢包”的過程中,公鑰密碼算法(如:RSA 或ECC 算法)是公開的,PKⅠ身份認證協議(雙向認證、單向認證、或挑戰/應答式認證)是公開的,數字簽名的協議是公開的,證書(含:公鑰)也是公開的,且能在數字貨幣社區的證書服務器里下載。可見,除了用戶的私鑰,所有的認證/簽名協議及其數據黑客都知道。黑客可偽造一組密鑰對和證書,在客戶端采用偽造的私鑰,對證書和一組隨機數進行加密(舉例:挑戰/應答式認證協議),生成認證口令,數字貨幣社區的證書服務器對應黑客偽造的證書,對口令進行認證,實現黑客登錄用戶的賬戶(錢包)。
同時,黑客在客戶端,采用偽造的私鑰對數字貨幣的交易單進行簽名,數字貨幣社區的證書服務器對應黑客偽造的證書(含:公鑰),對交易單的數字簽名進行簽名驗證,從而,完成數字貨幣的交易,盜用用戶的數字貨幣。
通過以上攻擊方式,黑客可以實現“張冠李戴”式攻擊進入用戶的賬戶(錢包),從而盜取用戶錢包里的數字貨幣。
1.2“硬錢包”存在的安全隱患
(1)所謂“硬錢包”就是采用PKⅠ建立認證/簽名協議,在用戶的客戶端使用U 盾(智能卡加密芯片)或帶加密芯片的SD 卡(插入手機里),將密碼算法、摘要算法、私鑰、證書、身份認證協議和數字簽名協議存放在U 盾或SD 卡中,用戶使用U 盾或SD 卡硬件設備,實現身份認證后可登錄用戶的賬號(錢包)。
數字貨幣交易所采用“硬錢包”,要比“軟錢包”安全等級高得多。但是,為數字貨幣交易所提供PKⅠ服務的開發商,若采用劣質U 盾芯片,造成智能卡中被封裝的芯片容易受到黑客破壞性破解,讀出芯片里用戶的私鑰;或者,用戶丟失U 盾或SD 卡后,通過設備初始化生成的記憶,重新將相同的私鑰寫入新U 盾或SD 卡的過程中,造成用戶的私鑰外泄。
總之,劣質的U 盾或SD 卡容易被破解,用戶的私鑰會被讀出,無法保證“硬錢包”的安全。
(2)“硬錢包”與“軟錢包”一樣,存儲在數字貨幣社區公鑰服務器上的用戶證書容易受到黑客攻擊,即使用戶不將自己的證書(含:公鑰)存儲在數字貨幣社區公鑰服務器上,黑客也容易在節點服務器端獲得用戶的證書(含:公鑰)。黑客通過偽造用戶證書(公、私鑰),來替代用戶的證書(含:公鑰)(存儲在公鑰服務器中),黑客采用自己的私鑰來通過身份認證協議登錄用戶的賬戶(錢包),并對交易單進行數字簽名來盜取用戶的數字貨幣。
目前,數字貨幣交易系統的節點服務器端,處理區塊鏈數字貨幣交易記錄為:7 筆/秒。數字貨幣交易系統的區塊鏈,是使用公鑰算法建立認證體系如:PKⅠ,數字貨幣社區的證書認證服務器,并發認證或并發簽驗的速度都較慢,直接制約了數字貨幣交易系統的效率,無法支撐較大量用戶的并發認證,或較大量支付單的并發簽驗。
ⅠBM 曾經發出豪言壯語:他們公司開發的區塊鏈,節點服務器處理交易記錄的速度能達到:10000 筆/秒。但是,每個節點端的設備成本他們沒有闡述。
因此,若想提高節點端交易速度,只能不斷增加節點端服務器設備的投入,從而,增加了數字貨幣交易所建立數字貨幣區塊鏈系統的成本。
“垂直認證”技術的定義:密鑰集中生成,集中灌裝,集中分發,集中注銷。“垂直認證”技術的特征:是采用單鑰算法如:SM1、SM4、AES 算法,完成身份認證、數字簽名、密鑰交換和數據加密4 個功能。國際通用“第三方認證”技術如:PKⅠ,是采用公鑰算法(如:ECC或RSA),與單鑰算法(如:SM1 或SM4)相結合,完成身份認證、數字簽名、密鑰交換和數據加密等4 項功能。
“垂直認證”技術是在認證中心端使用硬件設備作為仲裁者,使用組合對稱密鑰生成算法,實現認證、簽名和加密密鑰,一次一變,解決了單鑰算法的密鑰更新管理的難題,其中:采用組合密鑰生成算法更新密鑰,是一種智能合約式密鑰更新方式,PKⅠ是人工更新密鑰方式。
客戶端采用獲得國家密碼管理局頒發商密產品證書的U 盾或SD卡,該U 盾或SD 卡、SⅠM 卡通過密碼管理局商密產品測試中心的安全檢測,認證/簽名協議和密鑰數據不能被讀出,可抗破壞性解剖分析,U 盾或SD 卡中芯片的安全得到保證。或者,與芯片廠商深入合作,在U 盾或SD 卡芯片的ⅠP 內,寫入“垂直認證”技術的組合密鑰生成算法和認證、簽名和加密協議(國密算法SM1、SM2、SM3、SM4 算法,也寫入芯片的ⅠP 核中),其中:采用SM1 保密算法(算法不公開),芯片的ⅠP 核可以保證各種密碼算法、協議和密鑰數據的運行和存儲安全。
在客戶端嵌入加密芯片如:U 盾或SD 卡、SⅠM 卡,在客戶端加密芯片里寫入單鑰算法、摘要算法、組合密鑰生成算法、一組“密鑰種子”表i 的元素、身份認證協議、簽名協議、加密協議、解密協議,從而,建立“芯片級”區塊鏈的客戶端。
在區塊鏈系統中建立j 個節點,在節點的服務器端部署加密芯片硬件設備,寫入單鑰算法、組合密鑰生成算法、一組“存儲密鑰”K、身份認證協議、簽名驗證協議、解密協議,在節點服務器端建立“密鑰種子”數據庫,將全體用戶的標識、賬號、“密鑰種子”表i 的元素密文,一并存儲在節點服務器端的“密鑰種子”數據庫中,從而,建立“芯片級”的區塊鏈節點(見下圖),其中:分別用“存儲密鑰”K,加密全體用戶的“密鑰種子”表i 元素,j=100~10 萬,j 為區塊鏈全部節點的總數。

圖1 數字貨幣交易區塊鏈系統拓撲圖
在區塊鏈系統中建立1~3 個密鑰管理服務器,在密鑰管理服務器端也部署加密芯片硬件,在加密芯片里寫入單鑰算法、一組“存儲密鑰”K、組合密鑰生成算法、加密協議,在密鑰管理服務器端建立“密鑰種子”數據庫,將全體用戶的標識、賬號、對應的“密鑰種子”表i的元素密文,一并存儲在密鑰管理服務器端的“密鑰種子”數據庫中,從而,建立“芯片級”的區塊鏈的密鑰管理服務器(見圖2),其中:用“存儲密鑰”K,分別加密全體用戶的“密鑰種子”表i 元素,i=1~n,n≤20 億,n 為全體區塊鏈用戶總數,不同節點服務器端和密鑰管理服務器的“存儲密鑰”K,都兩兩相同。

圖2“芯片級”的區塊鏈的密鑰管理
(1)組合密鑰生成算法,是由一組時間戳和隨機數組成的選取參數,來對一組“密鑰種子”表的元素進行選取,將選出的Y 個元素,并合成一組認證密鑰RK、簽名密鑰QK,或加密密鑰JK,因為,區塊鏈加密系統采用單鑰算法,則:客戶端的認證密鑰RK=節點服務器端的認證密鑰RK,簽名密鑰QK=簽名驗證密鑰QK,加密密鑰JK=解密密鑰JK,其中:Y=16 或32,認證、簽名和加密密鑰一次一變。
(2)當用戶客戶端的加密芯片丟失時,由密鑰管理單位負責更新用戶客戶端加密芯片,在新的加密芯片里寫入一組新的“密鑰種子”表元素,其他內容與原用戶客戶端加密芯片里內容完全相同,同時,更新密鑰管理服務器端的“密鑰種子”數據庫里對應用戶的記錄,再由密鑰管理服務器端加密系統,對所有節點服務器端的“密鑰種子”數據庫里對應用戶的記錄進行自動更新。
(1)當用戶A 支付一筆款給用戶B 時,用戶A 和用戶B 客戶端加密芯片里的簽名協議,根據組合密鑰生成算法,分別產生用戶A的簽名密鑰QKa 和用戶B 的簽名密鑰QKb,對用戶A 和用戶B 的交易單進行簽名,所有節點服務器都將已被用戶A 和用戶B 簽名的交易單,分別收入一個區塊里,每個節點服務器端加密芯片里,根據組合密鑰生成算法,分別生成用戶A 的簽名驗證密鑰QKa1 和用戶B的簽名驗證密鑰QKb1,對已經被用戶A 和用戶B 簽名的交易單進行簽名驗證,若通過簽名驗證,則各個節點服務器端加密系統,將用戶A 和用戶B 的交易單寫入區塊中,否則,則用戶A 和用戶B 的交易單無效。
在經過時間T 后,各個節點服務器端加密系統,根據“共識算法”,確認某個用戶對區塊進行記賬,將時間T 內所有通過簽名驗證的交易單登記在一個區塊里,智能合約將上一個區塊的摘要信息寫入本區塊“頭部”,形成區塊鏈中的一個區塊,并對本區塊進行摘要得到摘要信息M,其他節點服務器端加密系統對摘要信息M 進行驗證,通過驗證后也在其他所有節點服務器端記錄該區塊,從而,完成用戶之間的交易單在區塊鏈里的登記。
(2)當用戶A 發送一張現金支票給用戶B 時,用戶A 客戶端加密芯片里的簽名協議,根據組合密鑰生成算法,產生用戶A 的簽名密鑰QKa,對用戶A 發送給用戶B 的現金支票進行簽名,用戶B客戶端加密芯片里的加密協議,產生用戶B 的加密密鑰JKb,將用戶A 發送給用戶B 的現金支票加密成密文,所有節點服務器都將已被用戶A 簽名和用戶B 加密的交易單,分別收入一個區塊里,每個節點服務器端加密芯片里,分別生成用戶A 的簽名驗證密鑰QKa1和用戶B 的解密密鑰JKb1,對已經被用戶A 簽名的現金支票進行簽名驗證,若未通過簽名驗證,則現金支票不可信,若查詢通過,則用戶A 發送給用戶B 的現金支票有效,各個節點服務器端加密系統將用戶A 發送給用戶B 的現金支票寫入一個區塊中。
在經過時間T 后,各個節點服務器端加密系統,根據“共識算法”,確認某個用戶對區塊進行記賬,將時間T 內所有通過簽名驗證的現金支票登記在一個區塊里,智能合約將上一個區塊的摘要信息寫入本區塊“頭部”,形成區塊鏈中的一個區塊,并對該區塊進行摘要得到摘要信息M,其他節點服務器端加密系統,對摘要信息M 進行驗證,通過驗證后,也在其他所有節點服務器端記錄該區塊,從而,完成用戶現金支票在區塊鏈的登記。只有用戶B 才能調用自己的密鑰,對用戶A 發送給用戶B 的現金支票密文進行解密,并使用該現金支票。
這樣能實時產生認證、簽名和加密密鑰,一次一變。同時,在客戶端、節點服務器端和密鑰管理服務器端,都部署加密芯片里,實現“芯片”對“芯片”的身份認證協議、簽名協議和簽名驗證協議,也是新一代數字簽名協議,從而,建立一種“芯片級”可信區塊鏈系統,可大幅度提高區塊鏈數字貨幣應用系統的安全等級。
教科書闡述:在芯片里,單鑰算法比公鑰算法的運行速度快1000倍,在計算機內存里,單鑰算法比公鑰算法的運行速度快100 倍,這是公理。由此可見,采用單鑰算法建立認證/簽名協議,可充分發揮單鑰算法具有加/解密速度快的優勢,能大大提高區塊鏈節點服務器端并發簽名驗證的效率。
PKⅠ技術簽名和加密協議過程圖如圖3、圖4。
通過對比“垂直認證”技術與PKⅠ的簽名和加密協議的流程圖,可見:PKⅠ多調用了2 次公鑰算法,同時,多調用了2 種公鑰,一次是加密數據文件的“摘要”(即:數字簽名),一次是加密過程密鑰K,實現過程密鑰K 的交換。而“垂直認證”技術少調用2 次公鑰算法,且少調用了2 次密鑰(私鑰和公鑰)。
因此,“垂直認證”技術的并發認證/簽驗對比PKⅠ,大約能提高區塊鏈認證速度100 倍,對比PKⅠ大約能提高區塊鏈簽名驗證速度200 倍(詳見4.3 測試報告數據對比)。采用新一代簽名協議,能有效解決現有區塊鏈系統每秒只能完成7 筆交易,運行效率較低的難題。

圖3 PKⅠ技術簽名和加密協議過程圖

圖4“垂直認證”技術的簽名和加密協議過程圖
經過權威的國內第三方產品性能檢測,單座認證中心,可管理3億用戶,并發認證達到1228.50 次/秒,并發簽名驗證達到823.93 次/秒。

圖5“垂直認證”技術的認證中心測試報告
由圖5 可見:“垂直認證”技術產品,經過第三方權威部門的檢測報告:可管理用戶規模達3 億,并發認證:1228.50 次/秒,并發簽驗:823.93 次/秒。“垂直認證”技術的技術性能,遠遠超過2020 年國家該領域的技術指標(見:“網絡空間安全”重點專項2016 年度項目申報指南)。
用“垂直認證”技術的檢測報告,來對比國家《“網絡空間安全”重點專項2016 年度項目申報指南》中的認證技術指標,其中:并發認證的速度比PKⅠ快1000 倍有余,遠遠超過100 倍。由此可推算出,并發簽驗的速度比PKⅠ快200 倍以上。[注:《“網絡空間安全”重點專項2016 年度項目申報指南》3.1 網絡可信身份管理技術研究(重大共性關鍵技術類)考核指標:1.身份管理系統應支持億級規模的身份管理,百萬級并發、1000 個應用條件下,單個身份鑒別延時不大于3秒,身份鑒別應采用國產密碼算法]。
總之,采用“垂直認證”技術建立區塊鏈數字貨幣交易安全系統,通過組合密鑰生成算法解決單鑰算法密鑰管理的難題,可實現認證、簽名和加密密鑰,一次一變。每個用戶對應的“密鑰種子”,兩兩不同,一個用戶的“密鑰種子”不慎泄露,不影響其他用戶“密鑰種子”的安全,并通過建立客戶端、節點服務器端和密鑰管理服務器端的“芯片級”認證、簽名和加密協議,能提高區塊鏈的安全等級。不法分子無法攻克新一代簽名協議——簽名密鑰一次一變的“芯片級”簽名協議。同時,“垂直認證”技術采用的單鑰算法,具有加/解密速度快的優勢,能提高區塊鏈數字貨幣交易的效率,對比PKⅠ大約能提高區塊鏈認證速度100 倍,對比PKⅠ大約能提高區塊鏈簽名驗證速度200 倍,能解決現有區塊鏈系統每秒只能完成7 筆交易,運行效率較低的難題。另外,“垂直認證”技術產品已經通過的國家密碼管理局頒發的商密產品證書——《SRZ06 身份認證系統》和《SRT1101 數據簽名驗證系統》,技術合規且成熟,能較好應用于區塊鏈領域,保證區塊鏈系統運行安全高效。