陳洪鈞
(廣東技術(shù)師范大學(xué)天河學(xué)院 廣東省廣州市 510540)
在高校信息化建設(shè)當中,每一部門都建設(shè)了不同功能、性質(zhì)、技術(shù)的系統(tǒng)。這些系統(tǒng)之間沒有任何的聯(lián)系這就預(yù)示著每一個用戶在使用這些系統(tǒng)的時候需要注冊這一次用戶名和密碼,一旦密碼丟失、錯誤就需花費大量的時間重置或者找回密碼。其次每一套系統(tǒng)的安全性是不同的,軟件危險性是不可估計的,在運行的過程中還有不可預(yù)知的安全問題。最后不同標準系統(tǒng)的混用,導(dǎo)致升級、功能拓展和新系統(tǒng)開發(fā)變得幾乎不可能[1]。大數(shù)據(jù)時代下高校校園網(wǎng)絡(luò)建設(shè)已經(jīng)成為我國各大高校運營發(fā)展的重要組成內(nèi)容,而注重校園網(wǎng)絡(luò)建設(shè)安全問題也是其能夠順利開展進行的基本條件[2]。
由此可見,隨著全球數(shù)字化時代的到來,高校數(shù)據(jù)的存儲及處理需求日益豐富,同時數(shù)據(jù)安全、個人隱私的保護也面臨著嚴峻的挑戰(zhàn)。如何挖掘高校大數(shù)據(jù)的價值的同時來實現(xiàn)用戶身份隱私的保護,是本文希望研究的問題。從某種角度來講,如今的校園生活中數(shù)字世界與現(xiàn)實世界交錯,校園中的每人每天面對的信息紛繁復(fù)雜而多彩,工作、學(xué)習(xí)、生活中方方面面都會面臨著向一個群體交待“我是誰”的問題,使用區(qū)塊鏈技術(shù)設(shè)計高校身份認證相關(guān)的服務(wù),對于在師生及職工的身份快捷、方便安全認證有著積極的意義。
二十一世紀前二十年,面向我國各高校教職員工及學(xué)生的教務(wù)管理、人事管理、科研管理、學(xué)工管理、協(xié)同辦公、圖書管理、論文管理等多個系統(tǒng)逐步完善。早期各系統(tǒng)身份認證相互獨立,信息交流困難,形成信息孤島。后來雖然使用了統(tǒng)一門戶的方式解決信息孤島的問題,使用SSL 協(xié)議保護數(shù)據(jù)的傳輸安全,但是在身份信息數(shù)據(jù)存儲的信息安全仍然沒有很好的得到解決。
從國內(nèi)高校各系統(tǒng)的身份認證分類上來看,大到有以下幾種:
(1)使用用戶名/密碼的基于信息私密的身份認證;
(2)使用手機號/驗證碼、身份證、學(xué)生證等基于信任物體的身份認證;
(3)使用指紋、人臉等基于生物特征的身份認證。
這些身份認證在保障校園工作、教學(xué)、生活正常運轉(zhuǎn),預(yù)防校園欺詐方面至關(guān)重要。但是,現(xiàn)有的身份認證技術(shù)也存在著以下兩個缺陷:
(1)很難保證用戶隱私的保護。例如學(xué)生校園卡充消費、掛失、考試、考勤、畢業(yè)設(shè)計身份證、電話號碼等個人隱私的保護。
(2)由于高校大多數(shù)系統(tǒng)中沒有留存指紋、人臉等基于生物特征的信息,對于已經(jīng)離職的教職員工、已經(jīng)畢業(yè)的學(xué)生的身份認證困難。
圖1:年度區(qū)塊鏈索引單鏈表
圖2:年度區(qū)塊鏈二叉平衡搜索樹
區(qū)塊鏈作為一種新生科學(xué)技術(shù),本質(zhì)上是一種價值互聯(lián)網(wǎng)[3]。區(qū)塊鏈記載了從原始區(qū)塊到最新產(chǎn)生區(qū)塊的全部歷史數(shù)據(jù),是分散和開放的數(shù)據(jù)庫系統(tǒng)?!皡^(qū)塊+鏈+時間戳”形式的區(qū)塊鏈結(jié)構(gòu)可追蹤溯源到任一交易,具有開放性、匿名性、難以篡改、難以偽造等特點。高校的身份認證本身需要應(yīng)用于多種場景、為多個系統(tǒng)提供服務(wù)、對于信息本身的安全及個人隱私的保護日益加強[4]?;诟餍畔⑾到y(tǒng)中身份認證缺陷及區(qū)塊鏈技術(shù)的特點,本系統(tǒng)將采用區(qū)塊鏈技術(shù)進行設(shè)計。
區(qū)塊鏈可以分為公有鏈、私有鏈、聯(lián)盟鏈。公有鏈面向所有人開放,所有人都可以參與區(qū)塊鏈系統(tǒng)架構(gòu)開發(fā)應(yīng)用;私有鏈針對個體開放,只有個體才有權(quán)使用;聯(lián)盟鏈面向既定的聯(lián)盟團體組織,公眾可以查閱信息和進行交易,但不能參與驗證交易,若要參與驗證則必須獲得聯(lián)盟許可[3]。基于區(qū)塊鏈技術(shù)的高校身份認證系統(tǒng)其本身的創(chuàng)建目前還只能應(yīng)用于高校內(nèi)部,為其他系統(tǒng)提供服務(wù),所以本系統(tǒng)從設(shè)計屬于私有鏈的設(shè)計。該系統(tǒng)的基本設(shè)計思想如下:
在數(shù)據(jù)結(jié)構(gòu)的設(shè)計上,我并沒有使用比特幣所的Merkle tree,而是使用了單鏈表+二叉平衡搜索樹AVL。這是由于高校的身份認證系統(tǒng)數(shù)據(jù)的增、刪、改、查特點比較鮮明。數(shù)據(jù)新增集中發(fā)生在每年秋季入學(xué)階段,數(shù)據(jù)修改很少發(fā)生,數(shù)據(jù)刪除幾乎不可能發(fā)生?;诖?,對于單鏈表及AVL 樹數(shù)據(jù)結(jié)構(gòu)的增、刪、改、查定義如下:
(1)每一年度學(xué)生入學(xué)完成后,創(chuàng)建一次該年度的AVL 樹,該AVL 樹創(chuàng)建完成后,不應(yīng)單獨刪除單個結(jié)點(塊),即使該某用戶的身份證信息錄入錯誤,也只需要在該樹中插入一個新的結(jié)點,然后做旋轉(zhuǎn)平衡處理。AVL 樹創(chuàng)建完成后,需要在單鏈表中創(chuàng)建一個新的結(jié)點,該結(jié)點的block header 部分指向單鏈表表頭,block body 部分指向創(chuàng)建好的AVL 樹。
(2)單鏈表的結(jié)點只會發(fā)生增加、查詢操作,不會發(fā)生修改、刪除操作。樹中的每個結(jié)點的block body 部分的數(shù)據(jù)是可以被修改的,但是block body 部分數(shù)據(jù)的修改需要使用安全性更高身份驗證機制,例如使用本系統(tǒng)設(shè)計的第二種身份驗證機制(見3.3 身份驗證機制)。
(3)單鏈表的數(shù)據(jù)量較小,查詢時的時間復(fù)雜度為O(n),這里的n 為單鏈表中結(jié)點的個數(shù)。AVL 樹中的查詢使用h(ID),即身份證的哈希值進行查詢,所耗費的時間為o(log2n),這里的n 表示樹中結(jié)點的個數(shù)。
(4)單鏈表增加一個結(jié)點的耗時為o(1)。AVL 樹增加一個結(jié)點可能需要通過一次或多次樹旋轉(zhuǎn)來重新平衡這個樹,旋轉(zhuǎn)樹的同時,可能需要修改某一個或某幾個的block header 的值。當然,這種情況發(fā)生的概率比較小。
為保證數(shù)據(jù)的有效性、完整性及數(shù)據(jù)查詢的效率,數(shù)據(jù)結(jié)構(gòu)為兩級結(jié)構(gòu)。第一級為年度區(qū)塊鏈索引單鏈表(如圖1 所示),第二級為年度區(qū)塊鏈二叉平衡搜索樹(如圖2 所示),即AVL 樹。
年度區(qū)塊鏈表的每個結(jié)點是一個相對比較簡單的塊。每個結(jié)構(gòu)的block header的保存上一個塊的block header的哈希值(水平指針),也保存了一個二叉平衡搜索樹的根塊指針。其數(shù)據(jù)結(jié)構(gòu)如圖1 所示。
年度區(qū)塊鏈二叉平衡搜索樹的每個塊的block header 部分保存兩個指針和一個哈希值。兩個指針分別為p(左子)和p(右子),其中p(左子)表示左子塊的指針,p(右子)表示右子塊的指針,h(ID)表示個人身份證的哈希值,該值是AVL 樹的關(guān)鍵字,該值一端生成,不能修改。每個塊的block body 部分保存了該用戶的加密的公鑰,用戶名,密碼,人臉加密信息,指紋加密信息及學(xué)號等信息的哈希值。
數(shù)據(jù)加密包括數(shù)據(jù)傳輸?shù)臄?shù)據(jù)加密和存儲的數(shù)據(jù)加密。本部分講到的數(shù)據(jù)加密設(shè)計主要指存儲的數(shù)據(jù)加密。即存儲的單鏈表和AVL 中的每個結(jié)點,即每個塊的數(shù)據(jù)加密。而傳輸?shù)臄?shù)據(jù)加密會在身份驗證機制中介紹。
年度區(qū)塊鏈索引單鏈表的每塊的block header 部分保存了所指向塊的block header 的哈希值。
年度身份驗證區(qū)塊鏈表的每塊的block header 部分保存身份證的哈希值,并且身份證的哈希值為AVL 樹的關(guān)鍵字。每塊的block body 部分保存所有需要存儲信息的哈希值,包括用戶名、密碼、加密的指紋信息、加密的人臉數(shù)據(jù)信息。而用戶的公鑰,需要使用本校的公鑰進行加密存儲。
對于數(shù)據(jù)驗證的方便性、安全性要求不同,驗證方式也不應(yīng)一樣。本系統(tǒng)設(shè)計使用兩種方式進行驗證。
第一種驗證方式,不使用用戶公鑰和用戶私鑰。身份認證信息先進行哈希運算,在傳輸之前使用本校的對稱密鑰加密后,再使用本校的公鑰進行二次加密。數(shù)據(jù)在驗證時,使用本校的私鑰對密文進行解密后再使用對稱密鑰進行二次解密。
第二種驗證方式,使用用戶公鑰和用戶私鑰。身份認證信息數(shù)據(jù)在傳輸之前使用用戶私鑰進行第一次加密,然后本校的對稱密鑰進行二次加密,最后使用本校的公鑰進行第三次加密。數(shù)據(jù)在驗證時,先使用本校的私鑰進行第一次解密,然后使用本校的對稱密鑰進行二次解密,最后使用用戶的公鑰進行第三次解密,當然在得到用戶的公鑰前仍然需要使用本校的私鑰進行解密。
以上兩種驗證方式,解密完成后驗證的是身份認證信息的哈希值。從兩種方式的驗證過程,可以看到第一種驗證方式不使用用使用戶的公私鑰對,更方便,安全性稍微差一些。第二種驗證方式使用用戶的公私鑰對,安全性更高。這樣可以在不同的場景下選用。
高校身份認證系統(tǒng)為高校其他各系統(tǒng)提供微服務(wù)的子系統(tǒng),本系統(tǒng)利用區(qū)塊鏈中私有鏈的一些技術(shù)進行初步的設(shè)計,主要使用了對稱加密、非對稱加密及哈希算法來保證數(shù)據(jù)的安全性,使用單鏈表+AVL 樹提高驗證效率。但是目前的設(shè)計仍然是有缺陷的,目前的身份驗證只能驗證該身份是否合法,返回的信息過于單調(diào)。另外本系統(tǒng)并沒有實現(xiàn),無法進行驗證。
后期設(shè)計工作主要分兩方面。一方面,需要充分調(diào)研的基礎(chǔ)上在塊中設(shè)計更多關(guān)于高校身份認證時可以公開的信息進行存儲,當然仍然需要加密。另一方面,使用設(shè)計語言及工具實現(xiàn),進而進行測試,運行后驗證。在具體的實現(xiàn)過程中,具體加密算法、分布式數(shù)據(jù)存儲都有待進一步研究。