麥超,鐘林峰,楊振國,胡振宇,劉文印,3
(1.廣東工業大學計算機學院,廣州510006;2.廣東工業大學網絡身份安全實驗室,廣州510006;3.鵬城實驗室網絡空間安全研究中心,深圳518000)
當前高速發展的互聯網已經深入到社會生活的各個方面,極大地促進了社會經濟的發展。然而在享受信息的高度網絡化帶來的各種便利時,網絡安全方面的挑戰也隨之而來,各種網絡身份信息泄露事件愈演愈烈,使個人和企業遭受巨大損失。網絡安全公司Shape Security發布的2018Credential Spill Report[1]顯示,來自51個不同組織的23億份證書發生過泄漏;在傳統的網絡身份認證機制中,主要包含了客戶端和網站服務器。用戶通過操作客戶端填充相應的登錄信息(例如賬號密碼、短信驗證碼等)與網站服務器交互。但因為網站服務器都是相對孤立,不同的網站服務器安全防護程度參差不齊,又因為用戶存在著密碼疲勞、密碼復用等問題,攻擊者往往會從安全防護程度低的服務器作為突破口進行網絡身份的攻擊,轉而利用所得數據攻擊安全防護高的系統。所以目前傳統的網絡身份認證機制中存在著明顯的安全木桶短板問題。如何對眾多繁雜的賬號密碼進行有效的管理認證及安全保護成為了身份認證技術所面臨的新挑戰。
目前流行的密碼管理器有登錄易[2]、Password?Box、1Password等,專注解決使用密碼時“燒腦”“密碼疲勞”等問題。tiQr項目研究組推出的基于Android/iOS平臺的tiQr軟件[3-4]除了實現對于用戶網絡身份保存、管理等基本功能外,還實現了通過掃描網站登錄頁顯示的二維碼登錄的功能。SQRL(Secure,Quick,Reliable Login)項目研究組正在研發的SQRL軟件[5]也包含了掃描獲取網站信息的功能。聯合單點登錄技術是目前比較流行的企業業務整合的解決方案之一,常見的單點登錄技術有OpenID[6]、SMAL[7]等。網絡電子身份證eID作為公安部第三研究所的科研成果[8],依托國家公安部全國人口庫,在確保個人信息身份真實性的同時,有效避免了用戶身份信息被保留在網絡運營商時潛在的泄露風險[9]。與eID類似,王娟等[10]提出了基于虛擬卡技術的移動互聯網身份認證系統ID-Vcard,將虛擬卡作為一種身份管理的形式,從而更好地保護用戶的身份隱私。
在互聯網保險領域,目前,包括各銀行、360、騰訊、支付寶、蘇寧金融等,推出的都是對自己平臺賬戶的安全保險,很少有第三方保險公司參與其中。在傳統的保險行業中,各保險類型都更加偏向實體與民生的保護,關于網絡身份的保險研究較少。但是,愈演愈烈的網絡身份被盜事件讓網絡身份保險成為當下
網絡身份管理領域迫切的需求之一。本文貢獻:
(1)本文利用密碼管理器賬號密碼管理功能,提出了基于區塊鏈的網絡身份登錄認證機制,結合了區塊鏈點對點交互、分布式存儲、去中心化共識等特點,解決了網絡身份安全的木桶短板,提高了網絡身份認證的整體安全水平和用戶身份操作記錄的可信任性。
(2)本文提出基于區塊鏈網絡身份保險機制,結合智能合約功能,可應對理賠判別難度大、憑證可信任程度不足、過程繁雜、時間長等問題,保證了用戶身份操作記錄的可信任性、不可篡改和實現自動理賠。
比特幣(Bitcoin)的概念最初由中本聰在2008年提出,一種P2P形式的去中心化的支付系統。以太坊(Ethereum)是一個開源的有智能合約功能的公共區塊鏈平臺,提供去中心化的以太虛擬機(Ethereum Virtual Machine)來處理點對點合約。作為加密貨幣與去中心化應用平臺,開發者可以在智能合約中搭建屬于自己的應用。但更多情況下,智能合約往往不能滿足開發者的實際需求,如果修改底層源碼則面臨著增加更多與業務本身無關的工作量。NULS[11]是全球性區塊鏈開源社區項目,設計的技術架構由微內核和功能模塊組成,提供可升級的業務、共識、網絡、賬本、賬戶、區塊管理、鏈管理、交易管理、事件總線等功能模塊,開發者可以在業務模塊中快速開發自己的業務邏輯,同時根據實際需求相對獨立地修改某一功能模塊,這樣可以方便公司或企業更好地搭建開發和使用區塊鏈系統。如圖1所示,Nulstar模塊負責管理所有的模塊,各模塊之間通過WebSocket進行通信。本文提出的基于區塊鏈的網絡身份認證及保險機制的基本邏輯主要在業務模塊和智能合約模塊中實現。

圖1 NULS模塊化架構
SM2算法是我國自主研發基于橢圓曲線離散對數問題(ECDLP)的非對稱密鑰算法。2010年,國家密碼管理局發布了SM2橢圓曲線公鑰密碼算法標準[12],包括數字簽名算法、密鑰交換。根據相關研究,256位SM2加密算法的安全性遠勝于主流RSA-1024算法,且密鑰生成速度和簽名速度也優于RSA算法[13]協議和公鑰加解密算法。本文中SM2加密算法用于網絡身份認證和保險機制通信信息的加密。
區塊鏈共識機制的目標是使分布式網絡中所有節點保存的數據滿足一致性和有效性[14]。常見的共識算法有工作量證明(proof of work,POW)[15]、股益證明(POS)[16]、權威證明(proof of authority,POA)[17]共識機制。本文機制中使用信用證明(proof of credit,POC)[18]算法,在節點信用達標的情況下,鎖定一定數量的代幣即可加入共識,共識節點排序后每輪輪流出塊。生成的區塊不需要依靠算力競爭記賬權,在保證系統安全可信任的情況下,有效地減少了資源浪費,提高了區塊的生成速度。
從技術層面來說,智能合約相當于一種計算機程序,可以自動執行全部或者部分合約相關操作,同時生成被驗證的證據,以此來證明合約操作執行結果的有效性,并且此過程不需要人為干預。區塊鏈的去中心化特性、共識算法等要素,使得智能合約允許在無信任的環境下用戶不需可信第三方中心的保障就可完成交易。因此,部署在區塊鏈上的智能合約具有匿名性、去中心化、防竄改和可追溯等特性。以太坊是目前應用最廣泛的智能合約開發平臺[19]。在本文的基于區塊鏈的網絡身份保險機制中,將使用智能合約功能,實現保險機制的申請理賠和自動理賠功能,保證數據及操作的可信仍性及有效性,提高理賠的效率。
如圖2所示,認證機制中主要包含了三大部分,傳統身份認證機制、去中心化密碼管理器輕節點、區塊鏈系統。其中,區塊鏈系統中包含了NULS鏈本身的基礎模塊,如網絡模塊提供網絡連接通信支持,區塊模塊存儲區塊鏈共識數據。特別的,我們提出去中心化密碼管理器作為區塊鏈輕節點,去中心化網站服務器作為區塊鏈的全節點,具體分別如下介紹。
DPM除了兼容傳統密碼管理器幫助用戶進行密碼管理,解決密碼燒腦、疲勞、復用等問題外,還可以作為區塊鏈網絡中的一個輕節點,通過構建廣播區塊鏈交易的方式,直接地利用點對點技術與區塊鏈系統進行通信,降低了傳統密碼管理器中心化服務器轉發的風險,實現網絡身份的去中心化管理。
DServer是各種網站在區塊鏈系統中的聯盟全節點,作為傳統網站服務器(TServer)與區塊鏈溝通的橋梁和“防火墻”,可以傳遞和檢查并過濾來自DPM的注冊、登錄、修改密碼、投保理賠等請求,以此提高網絡身份服務器的整體安全性和可信任性。
如圖2所示,用戶打開客戶端獲取二維碼信息,然后使用DPM掃描二維碼。DPM根據二維碼信息和本地存儲的賬號密碼等信息加密后生成登錄請求交易廣播到區塊鏈中。區塊鏈中的DServer接收到共識后的交易將其包含的登錄信息轉發到TServer,TServer驗證登錄信息正確性后,返回加密后的令牌給DServer。DServer根據令牌廣播允許登錄交易。客戶端從允許登錄交易中獲取登錄令牌解密后重定向登錄。
相關的符號描述如下:

表1符號和方法描述

圖2基于區塊鏈的網絡身份認證機制
身份認證算法過程描述如下:


如圖3所示,在基于去中心化網絡身份認證機制的結構下,區塊鏈系統部分增加了保險公司節點和監督節點、智能合約模塊。
保險公司節點主要由保險公司組成,主要負責為用戶提供相應的網絡身份保險業務。不同的網絡身份保險公司通過部署智能合約的方式提供服務。用戶通過DPM申請購買網絡身份保險或申請自動理賠。
監督節點主要由網絡安全審計公司或第三方中立平臺或機構組成,網絡安全公司主要負責對用戶的網絡身份和網頁安全程度進行評估,生成相應的證明可供用戶或保險公司作為網絡身份保險的考核數據。其次,網絡安全公司同時會對區塊鏈數據進行監測,保證數據的去中心化,可信任和不被篡改。

圖3去中心化網絡身份保險機制
如圖3所示,基于區塊鏈的網絡身份保險機制可分為預保險階段、申請保險階段和申請理賠階段。
4.3.1 預保險階段
預保險階段用戶需要修改登錄密碼、保險公司上傳保險智能合約、網站服務器公司需要上傳登錄憑證。
針對網絡身份保險中用戶網絡身份丟失難判別的情況,即用戶的網絡身份是丟失后的異常登錄還是用戶本身的假丟失然后登錄的情況,例如告知他人進行登錄而獲取理賠。本文中提出了用戶本身都不知道賬號密碼的思想,通過DPM修改為強密碼后返回其隱藏值(本文中返回強密碼的哈希值)作為網絡身份投保的前提條件。過程如圖3,步驟1.1~1.5所示,DPM廣播申請修改密碼交易到DServer,DServer轉發密碼信息到TServer,TServer驗證密碼信息的正確后,返回強密碼隱藏值到DServer,DServer廣播允許修改密碼交易。DPM從允許修改密碼交易獲取隱藏后強密碼更新DPM本地存儲。
修改密碼算法流程如下:

在基于區塊鏈的網絡身份保險中,主要包括了兩個登錄哈希憑證HashProof1和HashProof2。由Algo?rithm 1第9步可知,HashProof1在網絡身份認證過程中由DServer廣播分布式共識存儲于登錄許可交易中,具有可信任性可不可篡改性。HashProof2=Hash(Account,Hash(UID)),當UID不為去中心化密碼管理器登錄時,UID為0;由TServer以日志記錄的形式調用區塊鏈接口存儲于智能合約中。HashProof2則記錄了所有登錄形式(此時也包括去中心化密碼管理器登錄的方式),例如賬號密碼手動登錄或其他方式登錄,則被認為時網絡身份異常或丟失的情況。步驟如圖3,0.1~0.2所示,TServer上傳HashProof2到智能合約中,智能合約從區塊中獲取HashProof1。
保險公司業務邏輯通過一定規范進行智能合約編碼后,上傳到智能合約中為用戶提供購買服務。過程如圖3,步驟2.1所示。
4.3.2 申請保險階段
用戶在修改了網絡身份密碼后,返回了密碼的隱藏,此時達到了申請為網絡身份投保的條件。操作流程如圖3,步驟2.2所示:用戶通過去DPM廣播申請投保交易,調用相應的保險公司的智能合約,根據其內部邏輯實現投保。

4.3.3 申請理賠階段
用戶為該賬號購買了相應的網絡身份保險并發現該賬號異常或造成損失時,可通過去DPM申請理賠,該機制可以利用智能合約自動理賠。
智能合約HashProof1與HashProof2的比對情況如下:

如發生異常情況,則智能合約自動發起理賠通過交易,實現自動理賠。

本節實現基于區塊鏈網絡認證及保險的功能,并且從單次登錄所需時間,多節點共識丟塊及智能合約自動理賠所需時間三方面驗證系統的可行性、穩定性。本實驗是在10臺PC配置為Intel Core i7-7700HQ 3.60 GHz CPU、16 GB內存和3臺不同品牌類型的手機端上進行的。通過開啟Linux系統VM虛擬機,部署了100個去中心化服務器節點作為共識節點并搭建了網站的前后端。
單次登錄所需時間測試為用戶使用去中心化密碼管理器掃碼登錄到客戶端獲取登錄的session和token重定向并登錄成功所需的時間。在實驗中,總共進行了1000次登錄操作,其結果如圖4所示,單次登錄時間在1.5~3 s之間波動,平均登錄時間的2.2628 s。同時也進行了傳統網絡身份單次登錄所需時間測試,傳統單次登錄時間在0.8-1.5 s之間波動,平均登錄時間為1.2954 s。由結果所示,基于去區塊鏈的網絡身份認證系統單次登錄結果在用戶登錄體驗所承受的時間范圍之內,證明了該系統的可行性。

圖4單次登錄所需時間統計
丟失率=(本輪共識節點總數-本輪正常出塊數)/本輪共識節點總數。
在實驗中,使用POC共識算法對基于區塊鏈的網絡身份認證系統進行丟塊率測試。在測試過程中,總共部署了100個節點進行1000輪測試。每輪將會由100節點輪流出塊。因此,總的測試出塊數量約為100×1000=100000塊,出塊間隔為3 s。如圖5(a)所示,塊丟失率在0-0.05之間波動,部分塊丟失率為0,小部分塊丟失率為0.01。如圖5(b)所示,在1000輪測試中,約700輪塊丟失數量為0,約150輪塊丟數量為1,其余丟失情況在2到5塊之間。從實驗結果來看,絕大多數情況(每輪塊丟失數量少于3),基于區塊鏈的網絡身份認證系統處于穩定狀態,并不會影響用戶的登錄及其他操作,證明了該系統的穩定性。

圖5多節點共識塊丟失測試
智能合約自動理賠所需時間為:用戶在申請了網絡身份保護投保后,在后續使用過程中發現網絡身份異常,通過如圖3所示的去中心化密碼管理器申請理賠界面申請自動理賠到獲取到相應理賠代幣所需要的時間。在實驗過程中,總共進行1000次申請理賠測試。如圖6所示,單次成功獲得理賠的時間在1~2.5 s之間波動,平均理賠時間為2.1457 s。實驗證明,基于區塊鏈的網絡身份保險系統,實現網絡身份保險的去中心化及高效性。

圖6智能合約理賠所需時間
本文提出了基于區塊鏈的網絡身份認證及保險機制,在傳統的網絡身份認證的機制下(由客戶端及服務器組成),增加了去中心化密碼管理器和區塊鏈系統,在兼具解決密碼疲勞、復用等問題情況,實現去中心化,直接與網絡身份認證系統點對點交互,無需經過中心化機構或插件處理轉發,保證了管理器的可信任性。從獨立服務器方面分析,各網站在區塊鏈中部署網站服務器全節點,對用戶與網站服務器通信數據進行過濾與篩選,充當防火墻的作用,進一步保護了網站服務器。從網絡身份認證及保險整體分析,各網站服務器全節點部署在相同的區塊鏈系統,有利于提高通信系統的整體安全性,解決安全木桶短板問題。同時也為保護用戶隱私、網絡身份保險創造了去中心化、可信任的條件。
本文針對密碼管理器中心化,傳統網絡身份認證機制孤島、安全木桶短板問題,網絡身份保險憑證可信任性不足,理賠手續繁瑣等問題提出基于區塊鏈的網絡身份認證及保險機制。該機制實現密碼管理器去中心化,身份認證服務器節點組成聯盟鏈,通信數據分布式共識存儲等;并通過實驗證明該機制認證的可行性、穩定性和理賠的高效性。