陳儒玉,戴 歡,,高玉建,付保川,陳 潔
(1.蘇州科技大學 電子與信息工程學院,江蘇 蘇州 215009;2.教育部學位與研究生教育發(fā)展中心,北京 100083;3.華東師范大學 軟件工程學院,上海 200241)
學位證書是教育部門對學位獲得者專業(yè)能力與受教育水平達到規(guī)定要求而頒發(fā)授予的一種憑證。近年來,由于傳統(tǒng)紙質證書具有共享性低、傳遞性差等缺點,電子證照已經成為一種趨勢。盡管使用電子學位證照可以有效提高學位證書的便捷性,但仍無法從根本上解決學位的造假問題。而集中式的證照管理系統(tǒng)存在信息泄露問題,中心化系統(tǒng)的所有功能權限均集中在一點,在遭受惡意入侵后,存儲信息即可被隨意讀取、篡改或刪除。例如在2016 年8 月19 日發(fā)生的“徐玉玉電信詐騙案”中,犯罪嫌疑人通過技術手段惡意入侵了“山東省2016 高考網上報名信息系統(tǒng)”,導致大量考生的學位信息泄露。因此,學位信息管理方迫切需要一種新技術,在服務端為用戶提供個人學位信息保護并解決學位造假問題。
引入安全可信且不可篡改的區(qū)塊鏈技術是解決上述問題的最有效方案之一。此外,我國多角色、多節(jié)點、多功能的學位授予流程與區(qū)塊鏈的分布式結構相吻合,因此在學位授予中引入區(qū)塊鏈技術擁有更高的契合度和更大的發(fā)展?jié)摿Γ?]。
區(qū)塊鏈技術在2008 年由[2]提出,是一種多方共同維護,使用加密技術保證信息傳輸和訪問安全的分布鏈式結構數據庫。所有事務數據被壓縮并存儲到不同的區(qū)塊中,且可以在不需要第三方驗證者的情況下進行驗證。所有節(jié)點的運行遵循共識算法規(guī)則,并利用相關密碼學技術保證存儲數據的不可篡改,具有去中心化、高安全性、高可信度等特點[3]。
本文基于區(qū)塊鏈技術的可信環(huán)境,利用智能合約與加密算法,設計電子學位證照的數據保護及共享方法。該方法基于權威證明(Proof of Authority,POA)共識算法搭建多角色聯盟鏈,提出一種權威身份評估機制,對節(jié)點的相應操作進行積分獎勵或懲罰以規(guī)范各節(jié)點行為,并基于節(jié)點的可信度分數選舉權威用戶節(jié)點,負責聯盟鏈的事務打包與校驗。基于智能合約技術,構建面向電子學位證照管理的分布式合約架構,存儲電子學位證照的加密信息,并控制各合約的訪問權限,保證數據安全與操作可信。在此基礎上,設計基于聯盟鏈的批量數據共享方案,數據共享雙方基于多種加密方式保證數據的安全與可追溯,以驗證共享數據的真實性,最終基于以太坊建立基于POA 共識算法的電子學位證照數據保護及共享系統(tǒng),以對模型系統(tǒng)進行可行性與性能分析。
2016 年10 月,工信部頒布的《中國區(qū)塊鏈技術和應用發(fā)展白皮書》[4]指出:區(qū)塊鏈系統(tǒng)的透明化、數據不可篡改等特征,完全適用于學生征信管理、升學就業(yè)、學術、資質證明、產學合作等方面,對教育就業(yè)的健康發(fā)展具有重要的價值。2019 年10 月24 日,中共中央政治局就區(qū)塊鏈技術發(fā)展現狀和趨勢進行第十八次集體學習,習近平總書記在主持學習時強調,要把區(qū)塊鏈作為核心技術自主創(chuàng)新的重要突破口,加快推動區(qū)塊鏈技術和產業(yè)創(chuàng)新發(fā)展。將區(qū)塊鏈技術應用于教育領域,應用于學位信息的安全保護已經成為一種具有可行性的研究方向,這也是時代發(fā)展的勢趨。
近年來,國內外的研究人員與相關機構已經運用區(qū)塊鏈技術進行學位信息的保護與驗證,并得到了一定范圍的應用與推廣。2015 年,麻省理工學院基于比特幣區(qū)塊鏈平臺開發(fā)了一個完整的區(qū)塊鏈教育認證系統(tǒng)Blockcerts[5-7]。英國開放大學知識媒體學院是歐洲率先使用區(qū)塊鏈技術的大學之一,該學院與英國電信合作創(chuàng)建了一個基于Ethereum 的區(qū)塊鏈平臺OpenBlockChain[8],旨在通過智能合約自主管理并記錄學生學習過程,構建一個永久保存且持續(xù)更新的學生成長檔案館。2018 年,HUHAMED等[9]提出一個基于區(qū)塊鏈的全球高等教育學分平臺EduCTX,使用ECTX token 作為課程學分的記錄憑證,為學生、教育機構以及其他組織提供一個全球信任的分布式高等教育信用評分系統(tǒng)。2019 年,LI等[10]提出一種基于區(qū)塊鏈的教育記錄存儲與共享方案EduRSS,其具有更低的計算成本,可在多個機構中共享檔案記錄,簡化教育檔案移交流程,為學生提供一個可靠傳輸和驗證學習檔案的區(qū)塊鏈系統(tǒng)。2020 年,RASOOL 等[11]提出一種基于區(qū)塊鏈學位證書驗證方法docschain,可同時執(zhí)行多筆數據提交,實現批量審核學位證書的工作流程,并通過光學字符識別對紙質學位證書進行數字圖像掃描,允許學生按照傳統(tǒng)的物理方式提交學位認證材料。
區(qū)塊鏈在比特幣網絡中作為底層技術,提供高度安全可信的記賬手段,也因其在金融領域的這一成功應用,故被稱為一種分布式賬本技術。在脫離作為金融賬本的應用后,仍易于在缺少可信第三方的應用場景下使用。在區(qū)塊鏈網絡中,不再由單一的中心節(jié)點進行數據存儲與記錄,其網絡中存在大量的全節(jié)點,每個全節(jié)點地位相同并均記錄了數據庫中的所有數據,由所有全節(jié)點共同負責系統(tǒng)運行維護與數據安全[12]。
非對稱加密算法使用密鑰生成協議創(chuàng)建在數學上相互連接的公私鑰密鑰對,以滿足安全性和所有權驗證需求。公鑰是區(qū)塊鏈賬戶地址的重要依據,作為公開顯示的部分,而私鑰則僅由賬戶持有人保存。非對稱加密在使用其中一個密鑰加密信息后,只能通過另一個對應密鑰進行解密,具有安全性高、傳輸速度快、不易密鑰泄露等特點,常用于實現區(qū)塊鏈中的信息加密與數字簽名。
數字簽名技術主要用于確認數據發(fā)送者的身份真實性與數據完整性。數據發(fā)送者使用自身私鑰對待發(fā)送數據的哈希值進行加密,作為唯一的身份標識。數據接收方通過發(fā)送者的公鑰進行解密,若解密的數據哈希值與真實數據哈希值完全一致,則可證明消息發(fā)送者身份,且數據完整未被篡改。
智能合約是一段可以按照預先設定好的規(guī)則自動執(zhí)行的代碼程序,廣泛應用于執(zhí)行交易條款,可以減少人為錯誤,避免合同糾紛。智能合約根據寫入其中的觸發(fā)條件作為判斷機制,當寫入條件被觸發(fā)時,將自動執(zhí)行符合該條件的合約動作[13]。此外,部署在區(qū)塊鏈中的智能合約被復制到每個節(jié)點,避免合約內容被篡改。智能合約屬于事務處理模塊與狀態(tài)機構成的系統(tǒng),事務的執(zhí)行與狀態(tài)的改變不會對智能合約的內容進行修改,只通過數字化形式的條款,遵從編寫者的意志正確而自主地執(zhí)行。
本文針對電子學位證照(Electronic Degree Certificate,EDC)的認證與查詢過程,擬建立一個包含高校用戶(College User,CU)、教育管理用戶(Education Administration User,EAU)、學生用戶(Student User,SU)以及外部用戶(External User,EU)的多角色信息聯盟。以此為基礎,搭建一個基于POA共識算法[14]的聯盟鏈,并設計一種權威身份評估機制用于選舉權威用戶節(jié)點[15]。在POA共識算法中,權威用戶節(jié)點主要負責產出區(qū)塊并控制出塊效率,共同維護區(qū)塊數據的存儲。其中教育管理用戶由于功能的特殊性,在系統(tǒng)初始化時,即作為POA預先設置的權威用戶節(jié)點存在,并結合權威性與節(jié)點穩(wěn)定性等因素進行考慮,學生用戶與外部用戶不參與權威用戶節(jié)點選舉。因此,權威身份評估機制主要面向高校用戶作為權威用戶節(jié)點的資格審查,并提供一種動態(tài)的權威分數(Authority Score,AS)排名規(guī)則作為評判節(jié)點權威性的標準。
高校用戶執(zhí)行對電子學位證照的授予或撤銷操作時,由權威用戶群組共同審核高校用戶的操作行為是否規(guī)范合格。當包含該操作的事務被公開上鏈時,證明高校用戶執(zhí)行了合格操作行為,權威身份評估機制為該高校用戶增加一定的權威分數以提高高校用戶的身份權威性權重。當某高校用戶的權威分數達到設定的閾值時,該節(jié)點即可候選成為權威用戶,參與聯盟鏈的維護與運行。而進行不合格操作行為的高校用戶,具有破壞網絡穩(wěn)定性與發(fā)布虛假信息的潛在威脅,減去相應的權威分數,此時權威用戶群組依然將相關信息上鏈存儲,但不公開顯示,用于追溯追責執(zhí)行操作的相關節(jié)點。最終根據各節(jié)點的權威分數進行分類,以評估當前節(jié)點的狀態(tài)信息(積極、中立或惡意)。
此外,基于聯盟鏈建立了一個多角色用戶體制,各身份用戶對應不同的操作權限與職能職責,如圖1 所示。高校用戶負責學位信息的存儲與保護,可授予和撤銷電子學位證照,定期更新節(jié)點數據信息并指定分享給教育管理用戶。教育管理用戶負責對高校節(jié)點完成授予的電子學位證照進行審核,合格的證照相關信息通過后端與聯盟鏈交互,對證照進行上鏈存儲。學生用戶基于去中心化應用(Decentralized Application,DApp)接入聯盟鏈系統(tǒng),可下載電子學位證照,對證照進行驗證與查詢,并查詢與證照相關的上鏈事務信息。外部用戶在獲得學生用戶的授權后,可使用電子學位證照的Hash 值或電子學位證照原件,前往DApp 應用進行真?zhèn)悟炞C。
圖1 系統(tǒng)整體架構Fig.1 Overall system architecture
本文智能合約架構如圖2 所示,該架構主要由用戶身份管理合約(User Identity Management Contract,UIMC)和電子學位保護合約(Electronic Degree Protection Contract,EDPC)兩大合約共同構成。其中UIMC 合約主要用于合格電子學位證照上鏈過程中,對消息發(fā)送者身份的審核與驗證,包括權威賬戶存儲合約(Authoritative Account Storage Contract,AASC)和賬戶身份驗證合約(Account Authentication Contract,AAC)。EDPC 則用于對電子學位證照及相關信息的存儲,包括電子學位擬授予合約(Electronic Degree Confer Contract,EDCC)、電子學位審核合約(Electronic Degree Audit Contract,EDAC)、電子學位驗證合約(Electronic Degree Verification Contract,EDVC)和電子學位撤銷合約(Electronic Degree Revoke Contract,EDRC)。
圖2 智能合約架構Fig.2 Smart contract architecture
在初始權威用戶節(jié)點設置完成后,系統(tǒng)為每個節(jié)點分配唯一的賬戶地址作為標識符。管理員部署AASC,將權威用戶的賬戶地址存儲在該合約中,并將賬戶地址與多個屬性相鏈接,以表明具有該賬戶地址的節(jié)點擁有這些屬性,如節(jié)點所屬的教育機構(Organization,Org)、當前的權威分數(AS)以及節(jié)點的狀態(tài)信息。當權威用戶群組新增或剔除節(jié)點時,AASC 將實時更新存儲的賬戶地址。AAC 存儲所有高校與教育管理用戶的賬戶地址,以驗證調用電子學位保護合約的請求者具有相應操作權限且身份真實可信,該合約通過與其他智能合約交互來實現訪問控制。
EDCC 僅可由高校用戶執(zhí)行,通過調用AAC 驗證請求者身份后,存儲電子學位證照的Hash 值、相應高校用戶數字簽名(Sig_Certifier)以及證照持有人的姓名(Name)、學位編號(DipNo)、身份證號(IDNumber)等相關信息。EDAC 僅可由教育管理用戶調用,用于對EDCC 完成授予的電子學位證照及相關信息進行審核,審核通過后,對高校用戶發(fā)送的相關信息進行二次數字簽名,并將完成審核的電子學位證照相關信息存儲在EDPC 中。EDVC 為學生用戶與外部用戶提供驗證ABI,驗證者提供電子學位證照Hash 值或證照原件,對比存儲在EDPC 中的合格證照,并返回相關證照的真?zhèn)巍⑾嚓P信息及上鏈事務信息。EDRC 向高校用戶和教育管理用戶開放使用,對合格電子學位證照執(zhí)行撤銷追回操作,并為已寫入EDPC 中的合格證照添加撤銷標識符(Tag)。
為了實現對電子學位證照的數據保護與共享,本文方法基于POA 共識算法,建立一個聯盟鏈網絡。所有節(jié)點都使用相同的創(chuàng)世區(qū)塊(Genesis Block)和包含權威用戶地址的JSON 文件加入網絡,聯盟鏈網絡的具體實現步驟如下:
1)System←Initialize(P,L,A)。任何區(qū)塊鏈網絡的初始化都涉及創(chuàng)世區(qū)塊的創(chuàng)建,需要為其提供重要的初始化配置參數。其中:P 表示POA 共識算法中創(chuàng)建新區(qū)塊的區(qū)塊周期;L 表示一個區(qū)塊中允許事務消耗的最大燃料限制;A 表示在創(chuàng)世區(qū)塊中預先設置的權威用戶賬戶地址。
2)(Pk,Sk)←Register(user)。user 使用web3.js 命令生成私鑰Sk,并通過橢圓曲線加密(Elliptic Curve Cryptography,ECC)[16]算法隨機映射出唯一對應的公鑰Pk。
3)UIMC/EDPC←Transact(balance,Cre-Addr,Con-Addr)。系統(tǒng)管理員在這一階段提出一個部署智能合約的事務上鏈請求,將合約余額(balance)、合約創(chuàng)建者地址(Cre-Addr)與擬建合約地址(Con-Addr)作為輸入,并返回事務上鏈狀態(tài)(status),完成UIMC 和EDPC 的鏈上部署。
4.2.1 權威用戶選舉
除初始化預設的權威用戶外,新節(jié)點成為權威用戶需要遵循基于權威身份評估機制的節(jié)點選舉規(guī)則。根據系統(tǒng)中各節(jié)點的權威分數排位順序,邀請高權威身份的節(jié)點成為新的權威用戶,參與事務的處理與區(qū)塊的打包。為了保證系統(tǒng)的可信性與安全性,權威用戶群組的總權威分數應超過整個系統(tǒng)總權威分數的50%,且權威用戶的加入或剔除都應獲得超過50%的權威用戶允許。此外,權威用戶的身份應是動態(tài)持有的,以實時評估當前節(jié)點的可信度。如果權威用戶宕機或執(zhí)行可疑操作,都會導致權威分數下降,當某個非權威節(jié)點的權威分數超過權威用戶節(jié)點時,系統(tǒng)將在下一次刷新時間內調整雙方的權威身份標識。
如算法1 所示,當某個用戶的權威分數達到系統(tǒng)設定的用戶閾值Thr-U 時,表明該用戶的權威權重已達到權威用戶標準,按照權威分數順序寫入等待列表waiting-list 中。循環(huán)持續(xù)檢查當前權威用戶總分數TSAU 是否達到系統(tǒng)閾值Thr-S,即整個系統(tǒng)權威分數的50%,以及是否存在非權威用戶分數高于權威用戶AU 的情況,以判定系統(tǒng)是否仍需接收新權威用戶。當循環(huán)為真時,選舉waiting-list 列表中權威分數最高的用戶為權威用戶候選人Candidate。若超過半數的權威用戶同意這一選舉提案時,Candidate 成為新的權威用戶New-AU,將其賬戶地址存入合法權威地址庫(Legal Authority Address,LAA),并將New-AU 相應的權威分數加入權威用戶總分數TSAU 中。之后,指針會指向waiting-list 中下一個等待成為Candidate 的用戶,直到權威用戶總權威分數符合要求。
算法1加入或剔除權威用戶
同時系統(tǒng)會根據當前權威用戶分數進行排序,得到權威分數最低的權威用戶Last-AU。若權威用戶的總權威分數TSAU 在不包含Last-AU 分數的情況下依然高于系統(tǒng)閾值Thr-S,則證明Last-AU 為不必要的權威用戶。系統(tǒng)提案剔除Last-AU 的權威身份,若提案通過,則刪除其在LAA 中的記錄,并在TSAU 中減去Last-AU 的權威分數。
4.2.2 權威用戶群組工作流程
為避免權威用戶群組中存在拜占庭節(jié)點惡意添加大量無效區(qū)塊破壞網絡,每個權威用戶只允許在每N/2+1 個塊中創(chuàng)建其中的1 個區(qū)塊,且在同一時刻最多允許N-(N/2+1)個權威用戶創(chuàng)建新的區(qū)塊?;贕HOST 協議[17],同一時刻有權限創(chuàng)建新區(qū)塊的權威用戶共同構成一個決策小組,并選舉一個用戶作為領導節(jié)點,具有創(chuàng)建區(qū)塊的優(yōu)先性。
圖3 所示為基于POA 共識算法的權威用戶基本工作流程。當LAA 中存在8 個權威用戶時,同時最多允許3 個權威用戶創(chuàng)建新區(qū)塊。在第一階段中,LAA-1 作為決策小組的領導節(jié)點創(chuàng)建了區(qū)塊1,并在下一階段中不再被允許創(chuàng)建新區(qū)塊,而LAA-4 則加入了決策小組,并在組內重新選舉了LAA-2 作為新的領導節(jié)點。在新的決策小組中,LAA-2和LAA-3各自創(chuàng)建并廣播了新的區(qū)塊2,而LAA-3 和LAA-4 先接收到LAA-3 發(fā)送的新區(qū)塊,其他權威用戶則相反,因此區(qū)塊鏈中出現分叉現象。由于LAA-2 作為領導節(jié)點,具有更高的決策地位,LAA-3 和LAA-4 將舍棄LAA-3所發(fā)送的新區(qū)塊,并接收LAA-2 發(fā)送的新區(qū)塊,從而保證區(qū)塊鏈網絡的一致性。
圖3 基于POA 共識算法的工作流程Fig.3 Working procedure based on POA consensus algorithm
在對電子學位證照的保護中,存在兩個對立性的目標需要實現:一方面,電子學位證照中存儲著學生的隱私信息,本文方法不希望驗證者在系統(tǒng)中隨意獲取電子學位證照文件原件,造成隱私泄露;另一方面,對頒發(fā)的合格證照文件能夠實現真?zhèn)悟炞C。因此,由高校用戶收集符合學位授予條件的學生信息,將合格學生信息按照統(tǒng)一規(guī)定格式生成電子學位證照文件。對電子學位證照文件實行加密操作,僅將加密信息與學生部分信息上鏈。驗證者通過對加密信息的驗證,既保證了電子學位證照本身的真實可信性,又確保惡意驗證者無法通過加密信息得到任何學生的有效信息。此外,在電子學位證照上鏈存儲后,當學生出現學術不端等行為時,高校用戶擁有對已授予的證照進行撤銷追回的權限。
如算法2 所示,CU 根據學生信息生成統(tǒng)一標準規(guī)格的電子學位證照(EDC)文件,并向EDCC 發(fā)送擬授予操作請求。CU 對EDC 執(zhí)行SHA3-256 哈希算法加密,輸出一個固定長度的哈希散列值H(EDC)。這一輸出散列值具有不可逆向推導,對EDC 原件的任意字節(jié)篡改都會引起雪崩效應,導致最終生成的H(EDC)完全不同。為申明信息發(fā)送者的身份可信性,CU 使用自身私鑰Sk 對H(EDC)進行數字簽名,并提取EDC 中的部分信息作為關鍵詞索引KI。將關鍵詞KI、加密信息H(EDC)和簽名后信息SigCU(H(EDC))發(fā)送至AAC合約。
算法2CU 擬授予和撤銷
在AAC 中,基于ecrecover()函數解密數字簽名,驗證簽名地址真實可信。在身份確認通過后,還需要CU 提供原始文件file重新執(zhí)行哈希加密,并與H(EDC)進行對比,保證EDC 及H(EDC)未被篡改。驗證通過后,將KI、H(EDC)和SigCU(H(EDC))一起存儲到EDCC中,完成高校用戶擬授予操作。此外,EDCC 中設置了學位撤銷函數revoke(),當撤銷條件觸發(fā)時,EDCC 將指定的EDC 相關信息初始化,并標記為“revoked”。
在節(jié)點間進行數據共享與教育管理用戶的審核過程是本文方法的核心功能之一,如圖4 所示,高校用戶在完成授予過程后,將相應的電子學位證照及相關信息共享至教育管理用戶,并由教育管理用戶完成對電子學位證照的審核與上鏈存儲。該過程可以保證數據共享發(fā)起方與接收方的身份可信,數據傳輸過程的信息安全,以及用于審核的電子學位證照原件未被作任何修改。
圖4 電子學位證照共享與審核流程Fig.4 Procedure of electronic degree certificate sharing and verification
電子學位證照共享與審核流程具體步驟如下:
1)CU 完成對EDC 的授予流程,需要將該EDC 共享至EAU 進行審核。為保證數據傳輸安全,將EDC 文件切割為n個子塊,對n個塊分別執(zhí)行哈希加密,設塊集合N={H(EDC1),H(EDC2),…,H(EDCn)},其中各子塊的字符數集合為Ω={l1,l2,…,ln}。CU 對N基于Merkle Tree方式加密[18],得到Merkle根散列值MR(N)。
2)CU 基于高級加密標準(Advanced Encryption Standard,AES)算法對EDC 進行對稱加密并存儲在本地數據庫,返回存儲地址addr 及加密密鑰mk。
3)CU使用自身私鑰Sk對MR(N)進行數字簽名μ,并向EDAC 發(fā)起交互請求。EDAC 合約調用AAC,驗證μ 簽名者身份存在后,由CU 節(jié)點發(fā)送{KI,addr,mk,μ,MR(N),Ω}到EDAC 的待分享列表sharelist中,其中KI 作為該分享請求的索引關鍵詞組。
4)EAU 監(jiān)聽CU 發(fā)送的KI-X,并向AAC 驗證自身身份后,基于屬性KI-X 檢索sharelist 列表中的相應信息,返回該待分享消息列{KI,addr,mk,μ,MR(N),Ω}。
5)EAU 使用接收到的{addr,mk}檢索本地數據庫,并獲取到CU 分享的EDC 文件原件。
6)EAU基于Ω對EDC重新切割并進行Merkle Tree加密,得到Merkle 根散列值MR’(N),并驗證MR’(N)與MR(N)是否一致,以證明EDC文件未被篡改。在EAU完成審核后,使用私鑰Sk.EAU 對μ 執(zhí)行二次簽名ε[19],將{KI,H(EDC),μ,ε,addr,mk}存儲在EDPC 中作為最終合格證照數據存儲庫,其中H(EDC)為用于快速驗證真?zhèn)蔚腅DC 散列值。
學生用戶(SU)在本文方法中可以獲取電子學位證照原件,并對證照進行真?zhèn)悟炞C。當第三方的外部用戶(EU)提出驗證學生用戶的電子學位證照真?zhèn)涡詴r,需向學生用戶發(fā)起申請。學生用戶根據外部用戶的可信性,可選擇提供電子學位證照原件或僅提供包含EDC 哈希值的相關信息,用于外部用戶驗證。
如算法3 所示,SU 或EU 通過基于javascript 的DAPP 與區(qū)塊鏈系統(tǒng)交互,提出調用EDVC 申請,將電子學位證照原件EDC 或證照相關信息RM 發(fā)送到EDVC。當合約接收到EDC 原件時,則對其重新執(zhí)行哈希加密,與存儲在EDPC 中的已認證EDC 進行對比,若存在完全一致的哈希值,則證明驗證文件為真,并返回該EDC 的相關信息。當合約接收到RM 時,驗證機制相同,但驗證發(fā)起者僅可驗證證照真?zhèn)?,而無法獲取任何有效返回信息,以防隱私泄露。
算法3SU/EU verify EDC
本文方法實現了一套基于聯盟鏈的電子學位證照保護與共享系統(tǒng),包括數據存儲系統(tǒng)、聯盟鏈開發(fā)、智能合約開發(fā)、DAPP 開發(fā)4 個部分:
1)數據存儲系統(tǒng)。電子學位證照均需要完成二次寫入才可以完成認證審核,寫入數據量較大,寫入延遲一般較高,對寫入能力需求較高。考慮系統(tǒng)偏重對高寫入能力的需求,本文系統(tǒng)使用基于Key-Value 模型的非結構化數據存儲系統(tǒng)LevelDB[20],采用基于硬盤磁盤的LSM-tree 數據結構,主要側重于隨機寫能力的提升,系統(tǒng)的事務寫入量的可達到7~10 Transactions/s。
2)聯盟鏈。使用go-ethereum 客戶端搭建聯盟鏈[21],各個權威成員通過使用geth 命令創(chuàng)建新賬戶,成為電子學位證照系統(tǒng)中的初始權威用戶節(jié)點。通過puppeth 創(chuàng)建genesis.json 配置文件,生成創(chuàng)世區(qū)塊,將權威用戶賬戶地址加入到聯盟鏈中,Clique proof-of-authority[22]權威證明作為聯盟鏈的共識算法。
3)智能合約?;赟olidity 語言編寫設計,并通過Remix-Ethereum IDE 在線開發(fā)環(huán)境完成功能開發(fā)。使用SmartCheck[23]對智能合約代碼的安全性進行評估,檢測交易順序假設、時間戳依賴、可重入性、短地址攻擊等潛在安全漏洞,并部署在Ethereum 基于POA 共識機制的測試網絡Rinkeby 中進行功能測試。
4)DAPP。Web 前端使用HTML5 以及Javascript開發(fā),后端服務器通過node.js 調用web3 命令初始化聯盟鏈,并編譯與部署智能合約,提供API 接口供前端頁面調用部署在聯盟鏈中的智能合約。
如圖5 所示,學生用戶及外部用戶可通過登錄電子學位證照驗證頁面,選擇輸入需要驗證證照的相關信息,或直接將證照文件拖放到指定區(qū)域進行驗證。系統(tǒng)響應后,返回驗證真?zhèn)谓Y果,并提供部分學生信息及上鏈事務信息。而高校用戶與教育管理用戶則需要進行身份注冊,使用賬號密碼登錄管理頁面,如圖6 所示,在提供數字簽名驗證用戶身份后,方可對電子學位證照進行授予或審核操作。
圖5 電子學位證照驗證與查詢界面Fig.5 Interface of electronic degree certificate verification and inquiry
圖6 電子學位證照擬授予界面Fig.6 Interface of electronic degree certificate confer
本文方法基于geth 與Node.js 搭建聯盟鏈系統(tǒng),并通過Trebuchet-Box 框架運行負載仿真測試。模擬各用戶調用智能合約,進行電子學位證照的授予、審核、驗證等操作。測試過程在Ganache 開發(fā)環(huán)境下進行,測試賬戶數默認為10,設定并發(fā)虛擬用戶閾值為10,最大事務并發(fā)數為10,隨機進行部署智能合約、事務上鏈和合約調用等不同操作,分析系統(tǒng)運行60 s 過程中事務執(zhí)行時間,評估系統(tǒng)的穩(wěn)定性。事務執(zhí)行時間如下式[24]所示:
其中:TET 表示事務執(zhí)行時間;TETAVG表示在聯盟鏈存在N個權威用戶節(jié)點的情況下的平均事務執(zhí)行時間;Tx 表示在聯盟鏈中發(fā)起的事務;tTxEXESTART表示聯盟鏈中一次測試事務發(fā)起的時間;tTxEXEDONE表示測試事務完成時的時間;(ti,tj)表示對事務執(zhí)行時間進行測試的時間區(qū)間;Count 記錄在測試時間內完成的事務數量。
如圖7(a)所示,在60 s 內,系統(tǒng)共完成1 609 次事務測試,平均虛擬用戶并發(fā)數為8.94,平均事務執(zhí)行時間為332.84 ms,最大事務執(zhí)行時間為828 ms,最小事務執(zhí)行時間為153 ms。如圖7(b)所示,在同一時間段,完成相同的1 609 次測試事務處理,系統(tǒng)的事務并發(fā)數為7.38,平均事務執(zhí)行時間為263.54 ms,最大事務執(zhí)行時間為695 ms,最小事務執(zhí)行時間為98 ms。由于在在測試過程中涉及智能合約的變量賦值、參數返回等操作增加了本機處理時間,占用了壓力測試的部分計算資源,使得系統(tǒng)設定每秒請求數略小于設定的并發(fā)數閾值。根據用戶并發(fā)數、事務并發(fā)數分別對事務執(zhí)行時間的測試結果可以看出,事務并發(fā)數對系統(tǒng)的影響較小,平均事務執(zhí)行時間更短。而事務執(zhí)行時間中存在波動情況,且圖7(a)和圖7(b)中的波動趨勢相似,表明網絡延遲的不穩(wěn)定性對系統(tǒng)的事務執(zhí)行時間產生了較大的影響。
圖7 系統(tǒng)性能的仿真測試結果Fig.7 Simulation test results of system performance
此外,區(qū)塊大小的動態(tài)變化影響著并發(fā)事務數的波動。在基于Ethereum 的環(huán)境下,使用gasLimit衡量區(qū)塊的事務容納能力,且這一指標可自適應地動態(tài)調整,以適應網絡變化,其調整機制可描述為:
其中:ggasLimit表示新區(qū)塊的區(qū)塊大小限制;pparent.gasLimit表示其父區(qū)塊的區(qū)塊大小限制;pparent.gasUsed表示父區(qū)塊實際使用的區(qū)塊容量;BBoundDivisor表示影響區(qū)塊大小增長率的敏感度參數。當父區(qū)塊的實際使用率超過其區(qū)塊大小限制的2/3 時,則提高新區(qū)塊的區(qū)塊大小限制,反之則降低該限制值,以此保證系統(tǒng)性能實時調整以適應交易需求。
綜上仿真結果分析可以看出,系統(tǒng)整體的事務執(zhí)行時間較為穩(wěn)定,在進行電子學位證照授予與審核的調用請求時,產生的事務執(zhí)行時間相對較長,而系統(tǒng)的硬件配置與網絡延遲也是影響事務執(zhí)行時間的重要影響因素。
當前基于go-ethereum 搭建的聯盟區(qū)塊鏈主要以POW 和POA 作為主流共識算法。本文提出的學位數據保護與共享方法面向對象主要為高校與教育管理部門,具有特定群體針對性,且其身份均真實可信,權威性高。以上特性與基于POA 共識算法的聯盟鏈適用情況高度契合,且無需依靠算力獎勵機制維持系統(tǒng)運行,大幅降低方法成本,并減小能耗。
為了測試在不同共識算法下調用系統(tǒng)各部分智能合約的響應速度,分別基于POA 與POW 共識算法搭建聯盟鏈并使用Aleth 測試工具進行評估測試,對實驗數據進行記錄比對,具體劃分以下5 個部分進行響應測試:
A:部署智能合約。
B:EDC 擬授予。
C:EDC 撤銷。
D:EDC 二次審核。
E:EDC 驗證查詢。
如圖8 所示,在A~D 部分中,由于POA 共識算法的特性決定了其事務驗證者被事先指定且數量有限,而POW 共識算法則由于節(jié)點數量的不斷增加,導致事務信息廣播到全部驗證者節(jié)點需要等待更久的時間,因此基于POA 共識算法的聯盟鏈延遲時間遠小于POW 共識算法。此外,POA 通過選舉權威用戶節(jié)點處理上鏈事務的共識特點,也使得其在事務的處理速度上優(yōu)于采用運算能力規(guī)則的POW 算法。在E 部分驗證查詢操作中,POA 聯盟鏈延遲時間略小于POW 聯盟鏈,性能差距不大,延遲時間均在200 ms 內,遠小于前4 個部分延遲時間。這是由于智能合約中驗證查詢函數設置為view 函數,當請求驗證時,調用該函數僅對存儲在聯盟鏈中的數據進行讀取與對比,未改變存儲在聯盟鏈中的數據,無需創(chuàng)建上鏈事務與事務廣播。
圖8 POA 和POW 共識算法對智能合約調用延遲的影響Fig.8 Impact of POA and POW consensus algorithm on smart contract invocation latency
6.3.1 本文方法復雜度分析
在基于Ethereum 的區(qū)塊鏈中可以通過execution gas 交易費用來衡量執(zhí)行一筆事務所需的操作量。而在基于POA 共識的聯盟鏈環(huán)境中,gas不具備實際流通價值,但部署智能合約及相應ABI所需的gas 費用可以反映其復雜度與工作量大小。
除去打包交易與部署合約所需的gas 費用外,智能合約的gas 消耗成本主要來源于編碼成本Codecost、存儲成本Storagecost 與初始化成本Initcost,即[25]:
基于此,對本文方法中的電子學位證照擬授予、撤銷與數據共享過程進行gas 成本評估,相關參數及其意義如表1 所示。
表1 相關參數及其含義Table 1 Relevant parameters and their meanings
1)EDC 的擬 授予
由于對EDC 的擬授予過程涉及在智能合約中實現授予功能與存儲數據,因此gas 成本取決于編碼成本與存儲成本,其gas 消耗上限為:
其中:ω表示存儲一個字符所需的gas 成本;ω×Ea×Ec表示擬授予過程相關屬性的存儲成本;Code(Ea)表示編碼成本,且編碼成本由Ea決定。例如,CU 完成擬授予過程后,發(fā)送EDC 相關消息列{KI,H(EDC),SigCU(H(EDC))}至EDCC 合約,該過程中所含屬性數量為Ea=3,單一屬性中SigCU(H(EDC))具有最大字符數Ec=130,存儲一個字符所需的gas 為ω=625,編碼成本Code(Ea)=197 619。
2)更新與撤銷EDC 的相關信息
CU 對已授予的EDC 更新某一屬性時,不涉及屬性數量的改變,但存儲成本由更新屬性的字符數決定;而撤銷某一EDC 不涉及存儲內容的改變,該操作僅消耗編碼成本。因此,更新EDC 信息與撤銷EDC 消耗gas 可分別表示為:
其中:ω×Ec表示存儲成本;Code(1)表示更改1 個屬性所需的編碼成本;Code(Ea)表示撤銷一個已授予EDC 相關信息所需的編碼成本。
3)EDC 相關信息的共享
當CU 面向EAU 進行數據共享時,首先需要在sharelist 列表中檢索擬共享消息是否已存在,檢索完成后將新的數據共享消息添加到sharelist 列表中等待EAU 發(fā)送共享請求。因此,此過程gas 成本由檢索過程與添加共享消息過程組成。
檢索過程成本如下:
其中:Code(Sa)表示編碼成本;γ為sharelist 列表的待分享消息列數;δ為KI 中的單一屬性檢索成本;γ×δ×KIa表示檢索某一消息的成本;ω×Sa×Sc表示存儲成本。
添加共享消息過程成本如下:
其中:Code(Sa)表示編碼成本;ω×Sa×Sc表示存儲成本;init×1first表示第一次執(zhí)行sharelist 列表時所消耗的初始化成本。
當CU 同時向EAU 進行批量數據共享時,需要檢索并添加n個共享消息到sharelist 中,其gas 成本可表示如下:
其中:pk=,p表示sharelist 列表接收新共享消息的數量,初始接收數量p0為0,當檢索第k個待共享消息未存在于sharelist 時,證明其為新的待共享消息,在上一輪次中的pk-1上增加1 個新共享消息,當檢索到第k個消息已存在時,不計入pk統(tǒng)計。
6.3.2 權威身份評估機制分析
現有用于證明可信度的積分機制通常將其他節(jié)點對目標節(jié)點的反饋分數求和來評估該節(jié)點的可信度。但這一方式具有一定缺陷:一個執(zhí)行多次可信事務但周期性執(zhí)行一次惡意事務的節(jié)點信譽會高于執(zhí)行事務次數較少但完全可信的節(jié)點,大量的誠實行為可以使得節(jié)點隱藏其較少的惡意行為;此外,其他節(jié)點的反饋分數無法完全可信,可信節(jié)點可能因為惡意節(jié)點的負反饋分數導致其被判定為低可信度節(jié)點。
因此,本文提出一種有效的權威身份評估機制,防止具有隱藏性惡意行為的出現,并保證反饋分數的可信性,權威分數評判的主要因素有以下2 點:
1)擬授予EDC 事務請求的可信度。在CU 對EDC 的擬授予相關事務上鏈過程中,事務發(fā)送至權威用戶群組進行打包與校驗,各權威用戶通過分數反饋對該事務上鏈請求的可信性。
2)EDC 最終的審核結果。當EDC 最終經EAU審核合格時,相應的CU 將獲得適當的權威分數增加;而EDC 審核不合格時,則該CU 被認為進行了虛假或錯誤的授予行為,該節(jié)點的權威分數將大幅下降。
基于以上兩點評判因素,權威分數的計算標準如下:
式(11)第1 部分為各權威用戶對擬授予事務的評判階段,T(x)表示CU 發(fā)起的擬授予事務總數,P(C,j)表示參與打包校驗CU 第j個擬授予事務的權威用戶,B(C,j)表示CU 的第j個擬授予事務從P(C,j)中接收到的反饋分數,Tr(y)表示第y個權威用戶提交反饋分數的可信度,α表示擬授予階段權威用戶分數評價的權重因子。
式(11)第2 部分為審核結果的反饋階段,M表示EDC 審核合格時的反饋分數,β表示合格時的動態(tài)權重因子,隨著經審核后合格事務數x的增加,β提供的反饋分數權重比例會提高,但反饋激勵不會無限制增加,始終在0~2M之間,N表示EDC 審核不合格時的反饋分數,λ為不合格時的動態(tài)權重因子,用于監(jiān)測不合格事務的數量,當不合格事務數n逐漸增加時,反饋懲罰會顯著提升,以盡快降低節(jié)點的權威分數。其中,δ(δ>1)、ρ(ρ>0)、ω(ω>1)為預定義的權重調節(jié)參數。
本文基于區(qū)塊鏈技術,提出一種新的電子學位證照數據存儲、共享、驗證與查詢方法。該方法利用密碼學相關技術實現電子學位證照的加密存儲,且所有操作均具有可追溯性。設計面向學位管理的智能合約架構,自主管理電子學位證照授予、審核、驗證等操作,實現節(jié)點間的數據共享,通過建立聯盟鏈網絡,形成“高校-教育管理部門-學生-外部”的多角色模式,賦予各角色相應的權限操作,并基于POA共識算法,使具有高度可信性與權威性的高校與教育管理節(jié)點負責聯盟鏈的運行與維護,提高系統(tǒng)性能,節(jié)省經濟成本。最終構建基于POA 共識算法的電子學位證照數據保護及共享系統(tǒng),并對其可行性、性能、復雜度等進行評估與分析。實驗結果表明,該方法可行性高,共識性能優(yōu)異,智能合約構建合理。下一步將改進屬性基加密算法,設計具有細粒度共享能力的訪問控制方法,提高電子學位證照數據保護的安全性與共享的高效性。