周 亮 應 歡 戴 波 邱意民
1(中國電力科學研究院有限公司 北京 102211)2(國網浙江省電力有限公司 浙江 杭州 310007)
隨著信息網絡的不斷發展,電子商務作為新興商業模式迎來的爆炸式增長。以中國為例,2017年市場規模已達24萬億[1]。在“互聯網+”的大背景下,電子商務在國民經濟中的地位會越來越高。
然而在電子商務給社會帶來巨大變革的同時,其安全性面臨著嚴重的威脅。電子商務安全體系建設主要包含四個方面:1) 數據傳輸的安全性,通常采用數據加密技術或數字信封技術實現;2) 數據完整性,通常采用哈希函數或數字簽名技術保障;3) 身份驗證,主要采用口令技術,雙因子認證以及數字證書;4) 交易不可抵賴,通過數字簽名和數字證書保證。這些都是信息安全領域傳統的并且成熟的技術,但是無論是數字簽名還是數字證書,都要依托公鑰基礎設施(Public Key Infrastructure, PKI)[2]實現。在PKI中,由證書認證中心(Certification Authority,CA)簽發數字證書(簡稱證書),綁定用戶的身份信息和公鑰。傳統電子商務安全技術無法有效應對移動計算環境和分布式網絡環境帶來的兩方面的挑戰。
針對移動計算環境,Shedid等[3]分析了電子支付安全協議SSL和SET。研究表明,這兩個協議本身具有安全漏洞,會受到中間人攻擊和重放攻擊的威脅。Wei[4]提出引入可信第三方,保證身份和交易認證過程的數據安全,但是維護可信第三方具有工程實現方面的難度。Hassinen等[5]設計了基于PKI的支付認證系統,并給出了系統的安全性證明。但是PKI體制是一種依托可信第三方的體制,存在證書維護以及密鑰托管的問題。劉明達等[6]提出了基于手機令牌的移動支付協議,但是僅面向移動支付環境,無法推廣到電子商務的其他應用場景。
目前電子商務的網絡環境已經呈現出分布式的特點,電商平臺多,參與用戶多,集中化的身份管理機制繁瑣且困難,傳統的身份認證體制已不能完全滿足電子商務的需求。目前,PKI系統在分布式環境下面臨的最大的挑戰是CA不可信的問題[7]。CA不可信主要包括三種情況:1) CA被黑客攻擊,導致中間人攻擊的問題;2) 用戶無法驗證CA簽證的過程,導致證書不透明的問題;3) 中心化CA故障,導致所有證書不可用。針對分布式環境下PKI系統的構建問題,相關研究者同樣展開了大量的研究工作,其中最具代表性的是文獻[8-9]提出的Certcoin和文獻[10]提出的CertChain,都是基于區塊鏈技術構建分布式的PKI系統。任彥冰等[11]提出了一種基于區塊鏈的分布式物聯網信息管理方法,改變了依托可信第三方的信任管理模式,但是面向的是物聯網環境,并不能直接用于電子商務。
為了解決分布式網絡環境下電子商務系統的身份認證問題,在上述的研究基礎之上,本文提出了一種基于區塊鏈的可信電子商務身份認證系統。一方面,引入區塊鏈技術,解決中心化的CA面臨的風險;另一方面,引入基于無證書密碼體制,克服中心化環境面臨的密鑰托管問題,降低中心化的風險;最后基于可信執行技術,提高密碼計算的環境安全,增強身份認證的安全性。本文的貢獻如下:
(1) 提出基于區塊鏈的電子商務身份認證體系;
(2) 第一次將區塊鏈與無證書密碼結合,提出分布式的身份管理方法和身份認證協議;
(3) 基于可信執行技術的身份驗證環境構建。
區塊鏈[12-14]本質上是一個狀態機副本協議,屬于分布式容錯研究領域的問題。區塊鏈旨在建立一個去中心或弱中心化的數據庫系統,實現分布式環境下安全高效的共識機制。除了數字貨幣之外,區塊鏈能夠適用于在多方不信任中心之間建立互信的應用場景。
典型的區塊鏈系統由網絡層、共識層、數據層、智能合約層和應用層組成。其中:網絡層通常是基于P2P協議進行節點之間的通信,并通過Gossip等協議加速消息擴散;共識層實現共識協議,協議可以是根據實際場景自由選擇,比如基于工作量證明PoW,基于權益證明PoS以及實用拜占庭協議PBFT[15];數據層是區塊鏈的數據結構,每一個數據庫通過哈希函數,建立鏈式的數據結構,每一個計算節點負責維護自己的存儲系統;智能合約層[16]能夠對于不同的數據輸入執行不同的操作,這個過程依托代碼自動執行,并在全網達成共識;應用層是區塊鏈系統的各種基本業務,比如金融服務、保險業務等。
無證書密碼體制[17]不需要公鑰證書,是一種節約PKI體系和基于身份的密碼體制之間的一種密碼體系。在密碼系統中,通常都會維護一個密鑰生成中心(Key Generating Center,KGC),提供密鑰生成服務。無證書密碼體制中的KGC同樣用于協助雙方生成公私密鑰對,不同之處在于,KGC只擁有部分私鑰,并不擁有全部私鑰。用戶需要根據自己隨機選擇的秘密值生成完整的私鑰,而公鑰由用戶的秘密值、身份核系統參數計算得出。這樣的優勢在于,能夠降低KGC本身的安全強度要求,降低其工程實現的難度,簡化認證協議。
無證書簽密是基于無證書密碼體制的簽名和加密技術,能夠實現通信雙方的加密和數字簽名。以Barbosa和Farshim[18]提出的無證書簽密方案為例概括無證書簽密的基本原理,本文的重點在于使用無證書簽密,所以只進行概括性描述。KGC計算用戶的部分私鑰Du,用戶隨機選擇xu,作為秘密值。用戶可以計算出私鑰Su=(Du,xu),公鑰PKu=xuP。Alice對消息m進行簽密,得到密文σ=(V,c,W)。當Bob收到σ時,只需要驗證等式是否成立,就可以驗證簽名并解密得到m。在認證的過程中,通信雙方都基于無證書的原理生成公私密鑰對,而驗證成功的前提是雙方都擁有各自的正確公鑰。等式如下:
e(W,P)=e(QA,Ppub)e(H3(V,c,IDA,PKA),
V)e(H4(V,c,IDA,PKA),PKA)
密碼需要安全可信的計算的環境才能保證其安全。可信執行環境[19](Trusted Execution Environment,TEE)近年來也得到了廣泛的關注。和傳統系統結構安全技術不同,可信執行技術的核心思想是以CPU作為信任根,建立從信任根直接到應用程序的信任鏈。
TEE目前有兩種技術路線:ARM Trustzone[20]和Intel SGX技術[21]。Trustzone主要面向嵌入式計算領域,能夠在SOC內部虛擬出兩個計算環境:安全計算環境和普通計算環境。而SGX基于Intel CPU,主要面向終端和云計算領域,支持CPU直接到應用的信任傳遞。針對可信執行的研究是系統安全的熱門研究方向。SGX支持遠程證明功能,能夠互相證明程序正運行在受SGX保護的環境中。崔曉煜等[22]提出了一種基于Trustzone的密鑰管理機制,保證嵌入式設備中的密鑰安全。楊霞等[23]提出了基于Trustzone的安全指紋識別技術,提高安全驗證過程的安全性。嚴飛等[24]提出了一種基于SGX的可信環境安全增強方案,能夠增強代碼和數據安全。Arnautov等[25]提出了SCONE系統,基于SGX技術保護Docker容器的安全,使容器內進程免受外部攻擊。基于上述研究可知,在安全系統設計中,如果有涉及安全的代碼和數據需要高可信的運行環境,那么根據計算終端的形態,可以選擇Trustzone或SGX予以保護。
方案的總體框架如圖1所示。

圖1 總體框架
該方案由分布式的密鑰生成中心(Distributed Key Generating Center,D-KGC)、商家(Merchant,MC)、電商平臺(E-commerce Platform,EP)和用戶(User)組成。其中:D-KGC是密鑰生成機構,是一個基于區塊鏈系統的分布式密鑰生成中心;MC是參與電子商務系統的商家,可以是大型商家,也可以是個體商家;EP是電商平臺,如京東、淘寶和亞馬遜。
本節對協議的運行基本流程進行描述,如圖2所示。

圖2 協議流程
協議分為三個主要的階段:注冊階段、認證階段1和認證階段2。認證階段1指的是電商平臺和商家之間的認證,兩端的計算平臺是計算機或服務器,能夠實現基于SGX技術的遠程證明。階段2指的是電商平臺和用戶之間的認證,如果用戶使用的計算機,那么認證過程和階段1相似,都可以基于SGX技術增強認證過程的安全性;如果用戶使用的是移動終端,那么只能基于Trustzone技術對密碼運算過程進行額外的保護。
? 注冊階段:
(1) 各參與方與D-KGC協同計算,得到公私密鑰對,其中D-KGC負責存儲保護無證書密碼的部分私鑰,以及負責分發公鑰。
? 認證階段1:
(2) EP和MC之間發起互相的身份認證。
(3) EP和MC調用SGX的遠程證明機制,互相證明各自的密碼運算環境均受到SGX安全機制保護。
(4) EP和MC去D-KGC獲取對方的公鑰。
(5) EP和MC構造無證書簽密的消息,并發送。
(6) EP和MC驗證消息,完成身份認證過程。
? 認證階段2:
(7) EP和User之間發起互相的身份認證。
(8) EP和User去D-KGC獲取對方的公鑰。
(9) EP和User構造無證書簽密的消息,并發送。
(10) EP和User驗證消息,完成身份認證過程。
為了實現2.2節中的協議流程,需要進行三個部分的設計,也是身份認證系統的核心。分布式的身份管理:研究如何基于區塊鏈構建一個分布式的密鑰生成中心,并維護和管理用戶的部分私鑰和公鑰。基于無證書簽密的身份認證:研究如何將身份認證和無證書密碼結合,實現不基于可信第三方的快速身份認證。可信的身份驗證環境:研究如何合理運用SGX和Trustzone強大的安全機制,提高電子商務的安全。
2.3.1分布式的身份管理
分布式的身份管理如圖3所示。

圖3 分布式的身份管理
密鑰生成中心是一個基于區塊鏈的分布式的系統,這里的設計參考CertChain[10]的思路。D-KGC的主要功能有兩個:生成無證書密碼的用戶部分私鑰;管理和分發公鑰。下面對分布式身份管理的核心設計進行描述。
1) 用戶公私鑰生成與管理。用戶User_A隨機向D-KGC的一個服務器Server_A發送密鑰注冊申請DuReq={UserID,Information}。Server_A收到注冊申請后,發布智能合約,將User_A的申請共識到D-KGC的其他節點。假設此時區塊鏈的記賬節點是Server_B,此時Server_B運行密碼算法,生成User_A的部分私鑰,并打包到區塊中,寫入區塊鏈系統。記賬節點的選取和共識機制相關,如PoW共識采用挖礦,而PoS基于權益。此時,Server_A檢索到部分私鑰已生成,并發布到區塊鏈上,隨機將部分私鑰Du發送給User_A。
User_A收到部分私鑰Du后,運行密碼運算,生成自己的公鑰PA和完整的私鑰SA。其中,私鑰SA需要用戶自己妥善保存,本文的設計是基于可信執行環境。公鑰發送回D-KGC進行管理與分發。
2) 公鑰管理與分發。Server_A收到User_A計算得到的公鑰PA后,運行共識機制,將公鑰分發給D-KGC的其他服務器,并由記賬節點寫入區塊鏈系統。
當電子商務系統中的其他實體申請User_A的公鑰時。假設電商平臺EP向D-KGC的Server_C申請公鑰。此時,Server_C根據申請返回公鑰給EP,但同時將訪問信息廣播出去,由記賬節點寫入區塊鏈系統。這樣能夠建立基于區塊鏈的可信的審計證據,及時發現異常行為。
3) 區塊鏈數據結構設計。和常見的區塊鏈系統類似,本文的區塊鏈數據結構設計同樣采用哈希鏈的方式,構成一個不可篡改的數據結構。在每一個區塊中,包含區塊頭和區塊體。區塊頭的核心是記錄前向區塊、記賬節點和哈希根。區塊鏈是數據記錄的主體,這里的記錄有多種,如部分私鑰、公鑰、查詢歷史以及用戶信息等。
2.3.2基于無證書簽密的身份認證
身份認證是電子商務系統各參與方在執行交易之前,互相確認對方具有合法身份的過程。既要實現加密通信,又要進行數字簽名,以驗證各自的身份。Barbosa和Farshim提出的無證書簽密協議(以下簡稱為BF協議)本身具有加密和簽名兩個層面的功能,能夠通過一條消息實現兩種功能。問題的核心在于,如何構造BF協議傳輸的信息。基于無證書簽密的身份認證過程如圖4所示。

圖4 基于無證書簽密的身份認證
Step1MC/User發送連接請求到EP;
Step2EP收到連接請求,并發送回執到MC/User;
Step3EP和MC/User隨機選擇D-KGC服務器,申請對方的公鑰;
Step4D-KGC發送公鑰給申請方;
Step5MC/User使用自己的公私鑰和對方的公鑰,構造BF無證書簽密消息M1;
Step6MC/User將消息M1發送到EP進行驗證;
Step7若EP驗證通過,則EP構造BF無證書簽密消息M2;
Step8EP將M2發送到MC/User進行驗證;
Step9若驗證通過,則建立交易連接。
在消息的構造時,需要引入隨機數和時間戳,用于對抗重放攻擊,這也是密碼協議常用的思路。首先讓電商平臺驗證用戶或商家的身份,驗證通過以后再進行反向認證。這樣設計的原因是,電商平臺的可信度更高,被攻破的難度更大,能夠有效對抗針對電商平臺的拒絕服務攻擊。
2.3.3可信的身份驗證環境
可信的身份驗證環境如圖5所示。

圖5 可信的身份驗證環境
1) 基于SGX的可信驗證環境。在本文的設計中,處理器支持SGX硬件安全擴展,能夠創建Enclave。EPC是內存上的特殊區域,用于存放Enclave實例的代碼和數據,這一部分數據只有在CPU的內部才以明文的形式出現。在內核層,SGX驅動用于創建應用層的Enclave,修改Enclave頁面或刪除。在設計SGX程序時,程序從邏輯上可以分為可信部分和非可信部分。在本文的系統中,可信部分執行和密碼相關的機密性操作,如密碼運算、密鑰管理以及遠程證明過程。可信部分和非可信部分之間具有嚴格的隔離,不能夠直接進行數據交互,只能通過特定的接口進行交互。SGX提供了遠程證明機制,能夠使得通信雙方的應用程序能夠互相確認各自都運行在Enclave中,增強互信。
2) 基于Trustzone的可信驗證環境。Trustzone技術同樣是提供基于硬件的可信運行環境,但是實現原理和SGX不同。處理器支持Trustzone安全擴展,能夠在處理器內部虛擬成可信核與普通核,進而支持運行在兩個系統核上的普通操作系統和安全操作系統。Trustzone沒有提供遠程證明機制,所以在本文的設計中,移動終端在調用可信執行時,僅對密碼運算和密鑰管理兩個功能模塊進行保護。
原型系統旨在驗證本文提出的身份認證系統的可行性,在提供高安全性的同時,具備良好的效率。原型系統的組成結構如圖6所示,主要由三部分構成,具體實現如表1所示。由于完整的系統涉及的技術多,工作量大,本文只進行核心部分的實驗。

圖6 原型系統構成

分系統名稱模塊構成環境搭建分布式密鑰管理系統區塊鏈Hyperledger Fabric 1.1物理環境浪潮英信服務器NF5270M4,Intel CPU E5-2603V4,虛擬機管理器VMware12,虛擬機Ubuntu 18.04.1。數量:5個虛擬機組成分布式密鑰管理系統

續表1
首先,對D-KGC的基本性能進行測試,即區塊大小,共識速度以及交易吞吐量。根據Fabric 1.1[26]的性能測試結論,當區塊大小為2 MB時,吞吐量和時延的表現最優。測試結果表明,在共識節點數量為5時,區塊鏈的共識效率能夠達到約5 000 TPS。在更大規模的應用中,節點數量會更多,根據Fabric 1.1本身的測試結果,當節點數目為32時,也能夠達到3 000 TPS。總之,在Fabric的架構下實現的分布式的身份管理系統,不僅能夠實現身份準入,同時能夠提供足夠的性能支撐。
然后,對基于無證書的身份認證過程進行性能測試與分析。認證的時間消耗主要由通信開銷和密碼計算開銷構成,而通信開銷主要有網絡質量決定,非本文的研究內容。所以,本實驗將身份認證過程分解為3個階段:(1) 密鑰獲取階段;(2) 簽密信息構造階段;(3) 簽密信息驗證階段。利用每一個階段的時間節點測算時間差,經過3輪測試,記錄各環節的時間開銷。由于無證書密碼的運算量大,所以會產生更多的時間開銷。同時,移動終端的計算能力低于PC機的計算能力。在PC機上測試的性能如表2所示。在移動終端的測試結果顯示,第一階段和PC機上的性能相似。而第二第三階段涉及密碼運算,運算時間約增加40%。

表2 認證過程耗時測試 ms
接著,對身份認證的并發數量進行分析,即認證數量和性能的關系。從三個場景展開分析:(1) D-KGC支撐并發認證的能力;(2) 商家與電商平臺之間并發認證能力;(3) 用戶和電商平臺之間的并發認證能力。針對場景1,無證書密碼的引入克服了密鑰托管的問題,D-KGC只需在用戶注冊階段生成公私密鑰,并負責公鑰分發的工作,這大大降低了密鑰中心的負擔。在系統運行過程中,參與認證的雙方只有在第一次認證的時候,才需要去D-KGC申請對方公鑰,所以大部分身份認證過程D-KGC都無需參與。從這一角度,大量的認證過程不會為D-KGC帶來過多的負擔。針對場景2和場景3,電商平臺面對的是大量的用戶和商家,認證的數量和性能取決于電商平臺的網絡帶寬和計算能力。通過在商家和用戶開啟多線程的方式模擬大量用戶并行認證的過程,結果表明,在未對電商平臺產生DDoS攻擊[27]效果前,單線程的身份認證效率并未隨線程增多而明顯降低。在分布式系統中,計算能力可以依靠增加計算設備解決,網絡帶寬實際上是系統的瓶頸。無證書密碼的引入極大減少了與傳統認證中可信第三方的通信交互,實際上節約了大量的帶寬資源,同等硬件環境下,能夠支撐更大的訪問量。
最后,進行可信執行環境的效率分析。針對密碼運算和密鑰管理模塊,在普通操作系統環境和可信執行環境(SGX和Trustzone)中進行對比實驗,結果表明,調用密碼模塊增加的系統開銷不超過10 ms。對基于SGX的遠程證明的過程進行實驗,結果表明,基于SGX的遠程證明的過程的時間開銷不超過50 ms。總之,基于可信執行技術對密碼和認證過程進行保護,增加的時間開銷較低,具有很強的可行性。
基于區塊鏈的可信電子商務身份認證系統具有以下核心安全特性:
(1) 密鑰管理去中心化。由于引入了區塊鏈技術和無證書密碼體制,有效規避了傳統的身份認證過程面臨的中心化固有安全缺陷。和當前基于區塊鏈構建PKI系統的研究相比,本文提出區塊鏈和無證書密碼結合的密鑰管理機制,具有更強的安全優勢。前者是將單點化的可信中心變為分布式的可信中心,解決了單點失效的問題。本文進一步將分布式的可信中心轉變為分布式的可信弱中心,進一步降低了密碼系統的中心化程度。
(2) 可信的密碼運算環境。本節進行了安全性的實際測試,從Trustzone和SGX兩種技術入手進行攻擊性分析。首先針對Trustzone,構造一個惡意APP程序,嘗試攻擊密碼運算模塊,讀取相應的內存位置,以獲取密鑰。實驗結果表明,運行在普通世界的APP無法調用安全世界的程序模塊,也無法讀取相應的內存。在實際的應用場景中,有權限調用安全世界的程序是需要經過硬件廠家簽名認證的,普通惡意程序難以獲取這樣的權限。針對SGX,嘗試從逆向分析的角度展開,用OllyDBG這一款調試分析工具對PC端的身份認證程序進行反匯編。實驗結果表明,受到SGX機制保護的代碼段是無法成功反匯編得到匯編程序的。程序運行到SGX保護的代碼時,會直接跳過。
針對電子商務環境面臨的身份認證安全問題,本文提出了一種基于區塊鏈的可信電子商務認證系統。系統融合了信息安全領域的最新技術,即區塊鏈、無證書密碼和可信執行技術,構建了完整的身份認證體系,有效增強了認證的可信度。實驗表明,該方案安全高效,具有很強的可行性。接下來將進一步研究區塊鏈和無證書密碼結合過程中面臨的密鑰撤銷問題。