韋智勇 周立廣



摘? 要:隨著區塊鏈技術的高速發展,該技術已運用到各行各業中,而身份認證也成為全球科學界關注的熱點。本文主要使用超級賬本技術,對區塊鏈的身份認證系統進行設計與實現,首先對系統進行需求分析,確定系統功能,包括用戶模塊、信息查詢與修改、信息認證與授權、區塊信息查詢等,然后對系統進行深入的分析,對各功能模塊進行詳細的設計,最后通過功能測試,各功能模塊達到預定的目標,而且系統運行穩定高效,對于用戶而言系統操作簡便、快捷,整個系統安全有效。
關鍵詞:區塊鏈技術;超級賬本;身份認證
中圖分類號:TP311.5? ? ?文獻標識碼:A
Abstract: With its rapid development, blockchain technology has been applied to all aspects of life. Identity authentication has also become a hot topic in the global scientific community. This paper proposes and implements an identity authentication system based on blockchain by using super account technology. Firstly, system requirements are analyzed to determine system functions, including user module, information query and modification, information authentication and authorization, block information query, etc. Then, the system is analyzed in depth, and each functional module is designed in detail. Finally, results of function test show that each function module achieves the design goal, and the system runs stably and efficiently. For users, the system is easy to operate and the whole system is safe and effective.
Keywords: blockchain technology; super book; identity authentication
1? ?引言(Introduction)
隨著互聯網技術的發展,網絡技術已在應用于各個領域中,也走進了老百姓生活當中,基于互聯網技術的研究猶如雨后春筍般的快速增長,同時在網上進行的各種業務與日俱增,例如:網上在線辦理各種業務需要進行個人身份認證,認證方式一般可用企業提供的賬號通過微信、身份證信息等方式進行身份認證,但是由于企業提供的賬號本身具有虛假性,輸入的信息也有可能存在被修改的風險,而開具實體證明又給工作帶來諸多不便[1]。另外,信息造假是一個普遍的現象,好多求職的人對學歷信息進行造假,開具一些假的工作簡歷證明文件,以達到魚目混珠的目的,雖然一些用人單位通過調查的方式查詢求職者身份的真實性,但由于查找方式較為煩瑣而且成本較高,背景查詢也無法做到萬無一失。
伴隨著區塊鏈技術的問世,為解決這一難題指明了方向。為了解決身份認證問題,在系統設計時可建立區塊鏈技術的網絡架構,對于后臺數據庫的構建也采用這一方式進行,區塊鏈技術的核心就是去中心化,數據存儲可通過共識去信任化的方式進行。區塊鏈是一種點對點的存儲傳輸模式,具有分布式存儲的特點,存儲后的數據是通過區塊鏈網絡的節點進行統一管理,不會被某一節點進行修改[2]。
目前,區塊鏈在社會運用已非常廣泛了,例如比特幣,其后臺技術就是區塊鏈,在全球的許多金融機構業務都包含有區塊鏈技術的應用,此外在一些領域,例如通信、物流、防偽設計、期貨交易、企業信息管理、政務信息發布、醫療救助等,這些都使區塊鏈技術在各行業得到了快速的發展。
2? ?相關技術(Related technology)
2.1? ?區塊
在基于區塊鏈技術的數據存儲中,數據存儲是以區塊作為主體而進行的,每個區塊鏈結點的結構一般都包含區塊頭和區塊體兩部分,區塊頭主要存放該節點唯一的標志識別信息和服務版本信息,同時也包含了前一結點的哈希值,這樣可通過哈希值,把所有的數據都通過鏈式存儲的結構方式進行數據存儲[3]。區塊體主要用于數據的載體,數據單元主要存放各種信息及類別,不同的區塊鏈應用都對應不同的數據類型,例如,金融交易類則存放交易信息、轉賬人、金額數量、交易時間等。每個結點的哈希值主要是通過Merkle樹進行計算生成,對于每個結點,如果數據信息要更改,則所有的區塊信息都要進行修改,否則無法進行數據更新操作,因此,區塊鏈的這個結構可有效確保數據的安全性。
2.2? ?共識機制
共識機制是區塊鏈的各個結點為了達到共同的目標而采取的同一口徑,每個結點都必須遵循這一規定,這些規定中標明了各種事務是否合法有效,一般都以區塊鏈的協議方式存在,共識機制主要是通過共識算法來實現,隨著區塊鏈技術的不斷深入研究,各種共識算法層出不窮,例如,Pow算法、PBFT算法、POS算法和DPOS算法等,Pow算法主要是通過計算哈希值來確定該工作量;POS算法是基于代幣的共識算法,新區塊鏈的生成都由最高股權參與者進行維護,提高區塊鏈的可靠性;DPOS算法是對POS算法的一種改進,維護者通過投票選舉的方式進行產生,這樣可節省的交易的時間,提高了效率;PBFT算法主要是先選出一個主節點,一般要在取得共識前進行,由于主結點與其他結點進行交互,達成共識后由主結點生成新的區塊[4]。
2.3? ?智能合約
智能合約是用區塊鏈的技術進行的一種數字化合約方式,一般通過程序代碼寫入區塊鏈中,主要通過特定的運行機制來保障交易的進行,該合約的操作不受外界的干擾,智能合約的方式首先通過雙方的合約內容進行協商,如果雙方達成一致認可,系統將通過程序代碼按照合約邏輯把合約內容發布在系統中。合約一旦確立,寫入系統后,合約將自動生效,外界將無法進行修改[5]。因此,訂立合約時雙方必須要嚴謹,另外合約雙方無須到場進行面簽,只要雙方在網上通過智能合約系統便可完成,這就保證了智能合約的安全性和高效性。
2.4? ?超級賬本
超級賬本是區塊鏈技術的一個開發框架,框架的選取是區塊鏈技術系統的基礎和關鍵核心,關系系統開發的成敗。例如在比特幣交易中,交易過程需要虛擬代幣,這種方式可以實現去中心化,但由于浪費資源、效率低下,所以不適合響應市場需求,而超級賬本不需要代幣,交易雙方可以加入共識機制進行記賬、驗證交易信息即可,這種方式對本系統的開發更加切合實際[6]。
3? ?系統設計分析(System design analysis)
3.1? ?系統設計原則
由于區塊鏈具有防止數據篡改、提高系統安全性及去中心化的特點,故本系統也是根據區塊鏈技術的這些特性進行系統設計,同時就遵循以下原則:
(1)數據錄入必須安全有效。必須保證數據錄入系統過程中的安全性及有效性,如果數據錄入錯誤,數據在系統中的轉換將會出錯,則會導致后面的各功能模塊出現數據錯誤[7]。
(2)確保數據的安全性。對于所有交易信息,做到數據操作的可追溯性,同時利用區塊鏈數據不可篡改的特點,確保后臺數據庫的數據安全,防止被篡改。
(3)合約的流程化。對于交易雙方如果達成一致,則可以通過智能合約進行簽訂合同,在此,必須要保證整個交易流程的邏輯透明,防止外界各種因素的干擾[8]。
3.2? ?系統需求分析
本系統需求分析,主要根據數據錄入和修改、系統授權、信息認證、系統管理和后臺存儲等功能模塊進行探討。對于數據信息的錄入,用戶首先必須通過系統注冊才能登錄到本系統,系統用戶主要包括個人用戶和機構用戶,用戶通過賬號登錄到系統,賬號要嚴格管理;數據修改主要是對數據庫的相關信息進行修改,這個操作必須通過“補丁”的形式進行數據更新,不能直接修改數據,操作記錄都將保存在賬本中;系統授權主要是用戶登錄系統時通過用戶定制信息的認證授權,用于通過身份管理系統注冊用戶身份信息,即可直接授權登錄使用;信息認證主要對用戶的個人信息進行認證,如學歷學位信息、職稱、身份證信息、學習及工作履歷等,對于比對進行用戶的真實身份認證,如果信息是真實存在的,系統會自動給用戶傳遞密鑰和電子簽名,通過信息授權的方式給用戶使用該系統[9];系統管理主要對用戶的賬號信息進行增加或刪除,對區塊鏈的數據進行永久的保存,對歷史數據進行必要的維護;后臺存儲主要對把用戶的數據、簡歷信息、履歷信息、身份認證信息等,在進行數據校驗后,以區塊的形式保存到后臺數據庫中。
對于系統功能需求外,系統的性能需求也要求同步跟上,主要包括兩個方面,一是系統的處理信息的效率,當用戶操作該系統時,當該業務處理正常通過時系統才能授權給用戶進行下一步的業務操作,這里如果系統的性能差或效率低,則會導致進程卡死在系統內部,嚴重影響各功能的正常使用。二是系統響應速度[10]。用戶在操作該系統時,通過操作流程向系統發出指令,系統必須要規定的時間內響應該指令,如果響應時間太長,同時也會造成系統效率低而影響業務進行,由于本系統設計是基于聯盟鏈技術開發的,響應的速度應更加快一些。
3.3? ?系統架構設計
本文所設計的系統主要采用分層的架構進行設計,主要有基層平臺、合約層、業務管理層和用戶層,共四層結構。系統架構圖如圖1所示。
基層平臺由用戶端結點、CA結點、賬本數據塊組成的分布式區塊鏈網絡,對于CA節點而言,只有PKI權限的用戶才能對該結點進行維護,另外還有基于賬本數據存儲的狀態數據庫系統,該系統把賬本的區塊數據存儲在該數據庫中,同時包括各類用戶數據信息、區塊鏈內部代碼等[11]。
合約層主要是用戶雙方進行的信息操作,根據鏈碼來實現的,該層主要對雙方信息進行認證比對,正確后才能進入下一層操作[12]。
業務管理層主要是為客戶端提供后臺服務的,主要功能是進行區塊鏈的網絡傳輸,由合約層請求后調入鏈碼,完成交易雙方的合約操作,同時也給用戶層提供接口,處理來自用戶支的指令。
用戶層主要是提供用戶的交互應用,通過網頁界面與用戶進行交互,該層基于WEB開發,主要運用網絡編程語言進行編寫程序代碼,該層主要面對用戶提供系統登錄、授權審核等,并向下一層提供接口。
3.4? ?系統運行流程設計
本系統開發設計,主要采用Java++語言進行前端網頁開發,對于智能合約方面,主要solidity語言,同時也包括了網絡接口及網絡構建等,具有運行流程如圖2所示。
在系統的運行流程圖中,智能合約代碼用solidity語言實現,合約文件的后綴名為.sol,通過合約接口程序將數據傳輸入智能合約編譯器中,把合約內容轉換為數字代碼,然后將合約的數字代碼傳輸到系統前端,將合約的內容部署到網絡中,可通過這個結果進行系統測試,當完成身份認證后,將合約的內容保存到后臺的數據庫中[13]。
3.5? ?系統功能模塊
基于區塊鏈的身份認證系統功能模塊主要分成用戶模塊、查詢與修改模塊、認證與授權管理、數據存儲模塊四大功能。
(1)用戶模塊。用戶使用本系統一般都要通過自己的賬號及密碼輸入后登錄,作為新用戶而言,必須要先注冊自己的賬號,把自己的個人身份及相關信息輸入系統中,這樣才可獲得相應的系統賬號,本系統的用戶主要包括個人用戶和單位用戶,對于單位用戶,除了個人用戶的所有功能外,還可給個人用戶進行信息認證,兩種用戶的使用系統的流程大體一致,但由于數據結構不相同,程序的接口也不一樣。
(2)查詢與修改模塊。查詢功能主要包括系統的數據及相關信息查詢,一些公開的信息無須操作權限,可直接輸入關鍵字進行查詢,但有關數據信息必須要求有訪問權限才能進行查詢,獲取權限通過請求后,由管理員分配權限,各用戶的權限范圍均可在系統首頁中查詢;修改功能主要是對原來的數據進行更新,該功能實現主要通過記賬的方式進行,這時,為了確保數據安全,系統要驗證其操作合法性,對修改的操作都保存在賬本中,便于今后進行數據追溯,同樣該功能也必須有相應的權限方可操作。
(3)認證與授權管理。認證功能主要是對用戶身份信息、工作履歷等個人信息,對于單位用戶而言,首先要對本單位的員工信息也進行認證,認證通過后,也要提交到系統進行認證,這樣可確保用戶身份的真實性,有效地防止了信息造假行為發生;授權功能主要是用戶提供一個身份認證的接口程序,用戶可通過該接口進行數字簽名,確保簽名的用戶與系統中的用戶是同一用戶,確保數據真實有效,系統授權主要通過密鑰簽發來實現。
(4)數據存儲模塊。主要是存儲用戶的個人數據及相關信息,個人用戶信息一般包括證件信息、居住地址、學習經歷、工作履歷、聯系方式、電子郵箱等,本系統的數據的存儲在區塊鏈的狀態數據庫中,而存儲時的鏈碼則通過超級賬本進行保存,對數據進行存儲操作時,都通過接口向賬本發出請求即可,同時方便系統管理員對數據的維護。
4? ?系統的實現(Implementation of the system)
4.1? ?系統的運行環境
本系統的運行環境是使用Ubuntu 16.04.1 LTS操作系統,開發工具選擇VS Code,同時Node.js版本使用8.16,電腦配置方面,處理器為雙核,內存64G,網絡方面,所有的終端都連接在區塊鏈的配置網絡中。
4.2? ?系統的功能實現
4.2.1? ?網絡節點構建
區塊鏈網絡構建主要包括兩個部分,一是區塊鏈網絡部署,另外一個是智能合約系統的部署。區塊鏈網絡的部署首先利用證書生成工具CP,生成MSP證書,進而可以生成創世區塊,通過啟用超級賬本部署其他的網絡節點,注冊節點為區塊鏈的網絡管理節點,從而可實例化鏈碼,可通過接口向外界提供[14]。
4.2.2? ? Node程序的實現
由于業務層需要提供網絡頁面服務,用Node的SDK與其他層進行數據傳輸,因此必須設計一些Node的應用程序,使系統的各模塊提供必需的信息服務,由于身份認證系統使用express作為服務框架,先將URI請求的路由處理SDK與區塊鏈網絡底層平臺交互,定義路由的方法,這樣可達到了系統的功能服務。
4.2.3? ?合約設計
智能合約是實現雙方交易的系統核心功能,交易雙方身份數據的修改均由智能合約模塊來完成,這樣可能防止外界的各種干擾,確認交易信息的安全性,用戶通過操作界面與區塊鏈系統進行交互,交互的過程由系統后臺的程序與區塊鏈層對接與溝通,業務邏輯的實現要通過后臺程序調用的方式提供鏈碼,把運行的結果存儲在超級賬本內。
4.2.4? ?Web應用開發
Web開發主要是使操作者通過頁面交互對系統進行操作與管理,本文為個人用戶與系統管理員設計移動端的前置頁面功能,實現Web開發主要通過交互式協議與接口開發。個人用戶端主要通過賬號登錄,系統授權方式可通過系統生成的二維碼進行操作后登錄系統使用;單位用戶則需要通過API接口進行認證后才能訪問系統;對于系統管理員,主要是通過Vue.js單頁應用認證后,其中頁面還包括審批注冊信息的功能。
4.3? ?系統測試
4.3.1? ?測試環境
本系統通過臺式電腦中運行系統程序,進行各功能測試,運行環境是Windows 10操作平臺,電腦硬件配置為I5四核處理器,8G內存,開發工具為VS Code,Node.js版本為10.15.0,使用谷歌瀏覽器。
4.3.2? ?功能測試
系統測試一般包括有白盒測試與黑盒測試,本文主要使用黑盒測試法,對系統的核心功能模塊進行測試,檢測是否能正常運行,核心功能主要包括用戶模塊、查詢與修改模塊、認證與授權管理等。
用戶模塊功能測試主要是通過用戶在交互界面中輸入合法與非法的用戶信息,輸入后進行提交,系統則對合法的用戶信息有“提交成功”的提示,而對于非法的用戶信息時則系統顯示“提交失敗”的提示;對于數據信息修改功能測試,主要是輸入聯系方式的信息,例如:電話號碼等,分別輸入合法的和非法的電話號碼,合法的顯示“修改成功”,而非法的顯示“信息無法保存”,而對于重復使用的身份證號碼,系統顯示“該證件已注冊,保存失敗”;對于數據查詢功能,測試方法為用已授權和沒有授權的賬號分別登錄系統測試,已授權的可以正常顯示所要查詢各種數據信息,沒有授權的顯示“該功能沒有授權,無法查詢”;對于信息認證功能測試,主要在系統中輸入用戶的工作履歷信息,則在系統誰后,系統會添加到用戶的個人資料當中;授權功能測試,主要是測試系統對用戶身份是否授權,用戶輸入個人信息后,系統會自動生成二維碼,用戶使用手機掃描二維碼后,系統會要求用戶進行電子簽名,完成后系統會彈出“授權成功”的提示。
通過用戶模塊、查詢與修改模塊、認證與授權管理這幾項功能進行系統測試,根據各項數據表明系統各項功能界面交互友好、系統運行穩定,運算數值正確,沒有發現明顯的錯誤,達到了預期的效果。
4.3.3? ?性能測試
系統在進行了功能測試后,同樣也要對系統的整體性能進行測試,本文主要測試系統的響應時間。測試主要是在區塊鏈的讀寫端口通過接口程序進行,本文測試工具采用Apache公司開發的Jmeter軟件,對用戶接口和查詢接口分別進行測試,測試中采用多線程單次操作的方式進行。測試結果如圖3所示。
5? ?結論(Conclusion)
由于區塊鏈技術具有分布式存儲、防止篡改、中心化的特點,基于區塊鏈技術的一系列優點,本文將區塊鏈技術和WEB開發技術結合一起設計實現了身份認證系統,通過把目前的身份認證系統存在的問題進行剖析,把超級賬本技術作為本系統開發的框架,本系統通過融入區塊鏈技術,無論從哪個方面,都解決了身份認證的難題,例如信息造假現象,該系統的設計取得了一定的成果,但由于目前區塊鏈技術仍處于一個的發展階段,技術尚不成熟,還有待改進,例如對不同環境的系統安全問題,必須有相應的安全策略,另外對于智能合約雙方不能不能修改業務邏輯及數據信息,但是不能根據業務需要定制相應的功能等,這些問題在今后都要逐步加以完善。
參考文獻(References)
[1] 周平,杜宇,李斌,等.中國區塊鏈技術與應用發展白皮書[M].中國區塊鏈技術和產業發展論壇,2018:42-44.
[2] 袁勇,王飛躍.區塊鏈技術發展現狀與展望[J].自動化學報,2019(4):481-494.
[3] Zhu XY, Badr Y. Identity Management Systems for the Internet of Things:A Survey Towards Blockchain Solutions[J]. Sensors, 2018,18(12)83-86.
[4] 張亮,劉百祥,張如意,等.區塊鏈技術綜述[J].計算機工程,2019,45(05):1-12.
[5] 歐陽麗煒,王帥,袁勇,等.智能合約:架構及進展[J].自動化學報,2019,45(03):445-457.
[6] 謝輝,王健.區塊鏈技術及其應用研究[J].信息網絡安全,2019(9):192-195.
[7] 顧燕.基于區塊鏈的身份認證系統的設計與實現[D].北京郵電大學,2018.
[8] 任安軍.運用區塊鏈改造我國票據市場的思考[J].南方金融,2018,24(03):39-42.
[9] 王皓,宋祥福,柯俊明,等.數字貨幣中的區塊鏈及其隱私保護機制[J].信息網絡安全,2017,17(7): 32-39.
[10] 潘維,黃曉芳.基于智能合約的身份管理及認證模型[J]. 計算機工程與設計,2020(04):915-919.
[11]? Kubilay M, Kiraz M, Mantar H. CertLedger: A new PKI model with Certificate Transparency based on blockchain[J]. Computers & Security, 2019,85:333-334.
[12]? Lee J. BIDaaS: Blockchain Based ID As a Service[C]. IEEE Access, 2018(6):2274-2278.
[13] Chen YL, Li H, Li KJ, et al. An improved P2P file system scheme based on IPFS and Blockchain[C]. IEEE International Conference on Big Data. IEEE, 2017:2652-2657.
[14] 郭良俊.HUE-Cloud身份認證系統的設計與實現[D].江蘇:東南大學,2018.
[15] Tse? D,? Zhang? Bowen,? Yang? Yuchen,? et? al.? Blockchain? application? in? food? supply? information security[C].? IEEE? International? Conference? on? Industrial? Engineering? and? Engineering Management (IEEM).IEEEE,2018:1357-1361.
作者簡介:
韋智勇(1983-),男,碩士,信息系統項目管理師.研究領域:區塊鏈應用,大數據技術.
周立廣(1974-),男,碩士,高級工程師.研究領域:云計算,大數據分析.