向威義,劉文林
(南昌職業大學信息技術學院,江西南昌 330500)
身份信息數據是一種需要高度保密的數據,但身份信息卻也是需要廣泛應用的一種數據,對于此項數據在數據庫內進行存儲以及數據共享全程均需要高度的保密[1-3]。高文靜等人[4]對數據進行雙層加密機制保護,通過門限秘密共享機制。劉晶等人[5]通過聯邦增量學習法將工廠的子端增量進行加權處理,形成新的數據共享模型。謝裕清等人[6]采用數據訪問以及數據共享模型,通過區塊鏈方式完成數據共享。但是上述方法均存在數據保密性不強的問題。
基于此,提出基于多數據庫網絡交易的CPABE 的身份信息數據安全存儲和自動化共享方法。首先采用CP-ABE 算法完成數據庫身份信息的加密,并利用區塊鏈完成多數據網絡的身份信息安全自動化共享,同時對共享過程進行加密。
比特幣是區塊鏈技術的產物[7],區塊鏈技術包含了如P2P 網絡[8]、共識算法等多種技術[9]。在區塊鏈中,數據區塊事件的發生是有先后順序的,根據驗證和時間戳等技術根據共識算法對事件達成一致驗證。區塊鏈技術擁有去中心化[10]、保密性好、安全性高等優勢,在各種行業擁有著極大的潛力。為此構建基于區塊鏈的身份信息數據存儲及自動化共享結構,如圖1 所示。圖1 中虛線部分表示數據流動。

圖1 數據安全存儲和自動化共享結構
為保證多數據庫身份信息數據的存儲以及自動化共享的安全性,建立多數據庫的身份信息數據安全存儲和自動化共享結構,采用區塊鏈技術將身份信息數據采用CP-ABE 加密后進行分布式存儲在多個數據庫內,保證身份信息數據安全;采用區塊鏈技術存儲身份信息數據的地址、存儲信息等數據,進一步對數據進行加密;在區塊鏈中利用安全多方計算模型完成多數據庫網絡之間的身份信息數據自動化共享。
為保障數據庫網絡交易時身份信息的安全存儲以及自動化共享,主要采用加密算法加密區塊鏈中多個數據庫中的身份信息數據。文中采用CP-ABE算法對數據庫的身份信息數據進行加密[11],進一步加強身份信息數據自動化共享和存儲的安全性,保證身份信息數據在多數據庫內交易的安全。在CPABE 算法中[12],只有滿足加密者條件才可以獲取身份信息數據解密的密鑰,因此加密者擁有強大的主動權。在該算法中總共分為三個部分:
1)屬性:設全部的用戶的屬性集合為C,屬性C?{P1,P2,…,Pn},由此可以得出若存在2N個用戶,全集為P={P1,P2,…,Pn},其中C與P的關系為僅需要N個屬性便可以區分。
2)訪問結構。設訪問結構為T,T為P非空子集,φ是對屬性進行判斷的條件,
3)訪問樹。該樹形結構可以用來進行對訪問控制策略進行敘述,屬性結構中的每一個節點便是一種屬性,內部節點分別表示不同的關系函數,通過三種不同函數of、or、and 表示,如圖2 所示。

圖2 訪問樹結構
使用CP-ABE 算法進行身份信息數據加密通常分為四步:
1)輸入身份信息數據明文M,同時輸出公開參數PK 以及主密鑰MK;
2)生成私鑰Ks,該私鑰通過輸入主密鑰MK 與屬性集合S結合生成,公式表達為:
3)根據公開參數PK、訪問控制結構T、身份信息數據明文M、輸出身份信息密文CTT,公式表達為:
4)當屬性S完全滿足訪問控制結構T時,且擁有私鑰Ks對身份信息數據密文CTT解密后Decrypt()才可以輸出身份信息數據明文M,公式為:
在CP-ABE 算法中[13],每個用戶的權限均采用一個對應的屬性進行表示[14],一個屬性集合表示一個用戶身份,若要進行解密,只有用戶在其屬性滿足身份信息數據密文訪問控制策略才可以進行[15]。CPABE 訪問控制結構如圖3 所示。

圖3 CP-ABE訪問控制結構圖
區塊鏈進行身份信息數據存儲的形式為鏈式存儲,如圖4 所示。文中采用拖鏈存儲,將區塊鏈技術與分布式存儲技術相結合的方式進行身份信息數據存儲。該存儲模型分為兩個部分,分布式存儲利用交易數據庫完成身份信息數據存儲以及身份信息數據交易,區塊鏈保證身份信息數據安全并不直接存儲身份信息數據。在區塊鏈中分為區塊頭與區塊體,在區塊體中只保存用戶名、存儲記錄,原始的身份信息數據存儲在交易數據庫內,通過區塊鏈對分布式哈希表的訪問進行引用數據。

圖4 鏈式存儲結構
對于分布式存儲的身份信息數據需要進行完整性檢驗防止身份信息數據出現缺失,對于身份信息數據的完整性,該方法采用分布式可檢索性進行檢驗,對于經過CP-ABE 算法加密的身份信息數據F由若干數據段組成,即F=F1+F2+…+Fn。采用質詢-響應協議的形式進行基本的可檢索性證明,交易服務器節點P能夠正確被檢索的事實表明其擁有身份信息數據F。建立一個挑戰c定期發送給交易服務器節點P,檢查P是否擁有身份信息數據F,當P受到挑戰時會產生響應r,當服務器節點P不再擁有F時公開驗證r。身份信息數據F的檢驗方式包含三個協議:實時驗證協議、數據比對協議和身份材料審核協議,其具體校驗公式如下:
由于在Merkle 樹中服務器節點是身份信息數據F的段并且樹根節點是摘要,通過交易服務器節點P計算,并進行摘要值的輸出。
式(5)表示交易服務器節點P受到挑戰,交易服務器返回證據,同時在證據R中的每條索引ri,在Fri和Merkle 樹的伴生路徑πi中,包含身份信息數據F。
主要對每個Fri段與進行Merkle 樹的伴生路徑πi驗證:
采用可檢索性能夠提供強大的保證,當交易服務器節點P進行了響應,便可以檢驗身份信息數據F。
區塊鏈中多個交易數據庫節點為了各種需求需要進行身份信息數據交易時,采用安全多方計算保證身份信息數據的安全[15-16]。假設存在n個交易數據庫P1,P2,…,Pn進行身份信息數據計算和交易任務。
在數據庫Pi中只能采用對應的輸入xi獲取對應的輸出yi:
安全多方計算模型中的共享模式能夠自動化共享多數據庫網絡內的身份信息數據。采用拉格朗日插值法結合文中的安全共享方式,此時設存儲在t個數據庫節點向區塊鏈發送請求交易身份信息數據d1,d2,…,dt。多數據庫網絡身份信息數據交易時的自動化共享步驟如下:
1)將數據提供方數據庫內的身份信息數據d1,d2,…,dt,使用CP-ABE 算法轉換成密文s,生成隨機數共k-1 個{a1,a2,…,ak-1},公式為:
2)采用Scatter(·)函數將節點分發給參與者pi,將密文切割為n份,表明存在n個節點以及參與者進行密文共享:
3)收集密文片段si的函數為調用函數Gather()。使用拉格朗日插值法得到的密文為si:
λi為拉格朗日乘子,根據上式可以將問題轉換為利用k個點求解f(x)。
第四步:將收集到的k份密文通過Recon()函數重構出密文s:
得到身份信息數據d1,d2,…,dt集合,即為數據庫網絡共享到的由數據提供方數據庫內提供的身份信息數據。
為驗證文中方法的身份數據安全存儲以及自動化共享效果,采用Z 省某科技公司提供的一組數據庫,并利用服務器中的數據庫網絡進行實驗。該數據庫網絡中包含10 個數據庫;數據庫存儲數據量為20~100 GB,包含了大約10 000 條左右的身份信息數據。存儲服務器使用聯想Erazer X700,CPU 為Intel Core i7 3930,時鐘頻率為3.2 GHz,數據存儲節點(DN) 總共有30 個節點,每10 個節點一組,測試時間為24 h。
為驗證文中對身份加密的CP-ABE 算法的安全性,采用目前較為流行的三種數據加密算法RSA 加密方法、DES 加密方法、指數密鑰交換加密方法進行對比實驗,測試四種數據加密方法在最常用的攻擊方式中的數據泄露百分比,結果如圖5所示。

圖5 不同加密方法抵抗攻擊效果
通過圖5 可以看出,采用DES 加密方法對于數據的保護效果是最差的,在攻擊進行10 分鐘數據泄露量變大于1.5%并在之后持續增加,當攻擊50 min時數據泄露量達到2%,采用RSA 加密方法對數據的初期保護效果較好,但隨著攻擊時間的持續增加,RSA 數據加密方法的數據泄露量成為第二名為1.8%,在四種方法中只有文中方法的數據保護效果最好,在攻擊30 min 后便不會產生數據泄露,最大泄露量始終未超過0.8%。為驗證文中方法的數據存儲效果,對應用文中方法存儲的身份信息數據進行完整性檢驗,隨著數據量的增加身份信息數據的完整性如圖6 所示。

圖6 身份信息數據完整性檢驗
通過圖6 可以看出,身份信息數據采用本文方法進行分布式存儲,其數據完整性校驗結果均達到95%以上,證明了文中方法能夠完整地存儲不同規模的身份信息數據。為驗證文中方法的數據自動化共享效果,選擇10 個數據庫組成數據庫網絡進行身份信息數據庫網絡數據自動化共享,并獲取各數據庫內的數據。信息共享率如圖7 所示。

圖7 各數據庫的共享率結果
通過圖7 可以看出,信息共享率超過80%以上,在數據共享前每個數據庫均存儲著各自的身份信息數據,當發出交易請求后,各個數據庫內的數據開始共享,將各自數據庫內的身份信息數據進行共享發送至其他數據庫內,并進行存儲,可以證明文中數據自動化共享方法是有實際應用潛力的。
測試四種數據加密方法的節點處理響應時間和網絡帶寬利用率,結果如圖8 所示。

圖8 不同加密方法對比結果
通過圖8 可以看出,三種對比方法的節點處理響應時間均高于1 s,帶寬利用率均低于90%;而文中方法的節點處理響應時間均低于1 s,帶寬利用率均高于90%,最高為97%;這是由于文中方法采用安全多方計算方法保證多數據庫網絡身份信息數據自動化共享安全,當客戶端在500 個時性能并無損失,網絡帶寬維持正常狀態,由實驗可得出文中方法具有良好的擴展性。
通過實驗可以看出,采用文中方法能夠有效地保證數據存儲以及數據自動化共享時的安全性,且在數據存儲時能夠保證數據的完整性,數據自動化共享和數據存儲的效果好,文中方法有較強的實用性。