王 祥,羅 亞,丁紅發(fā)
(貴州財經(jīng)大學(xué),貴州 貴陽 550025)
區(qū)塊鏈是目前計算機技術(shù)中最全面也是最安全的數(shù)據(jù)庫[1],在此數(shù)據(jù)庫中包含多種計算機技術(shù),例如點對點網(wǎng)絡(luò)技術(shù)、數(shù)據(jù)加密算法、智能合約技術(shù)以及共識機制技術(shù)等,避障系統(tǒng)區(qū)塊鏈就是將機器人系統(tǒng)中的有用數(shù)據(jù)進行分布式保存[2],同時在智能合約的基礎(chǔ)上生成系統(tǒng)機器人與外界物體之間的關(guān)聯(lián)[3],進而完成避障。在數(shù)據(jù)量較大且系統(tǒng)結(jié)構(gòu)十分復(fù)雜的避障系統(tǒng)中利用區(qū)塊鏈技術(shù)得出的私鑰安全性更高,區(qū)塊鏈私鑰通常以錢包的形式進行保存,且區(qū)塊鏈的錢包共劃分成冷錢包、在線錢包以及本地錢包幾種,但這種私鑰存儲方法具有安全性較低以及成本較高的問題,因此針對避障系統(tǒng)區(qū)塊鏈私鑰的保存方法展開研究。
文獻[4]在共識節(jié)點的協(xié)助下利用門限算法處理區(qū)塊鏈中的私鑰數(shù)據(jù),然后在共識節(jié)點的基礎(chǔ)上將私鑰數(shù)據(jù)進行分類,同時將私鑰劃分到各個相應(yīng)節(jié)點進行保存,最后當(dāng)用戶需要提取私鑰時,直接利用分片的私鑰在拉格朗日插值算法下提取出私鑰,完成私鑰的存儲,實現(xiàn)區(qū)塊鏈私鑰的分片存儲。文獻[5]將系統(tǒng)內(nèi)數(shù)據(jù)進行加密后,立即將私鑰分配給用戶,為加強私鑰的安全,首先對區(qū)塊鏈中的惡意節(jié)點進行攻擊度的概率計算,以及攻擊節(jié)點數(shù)量的計算,其次在所有被攻擊節(jié)點中選取出概率最大的節(jié)點,進而計算出每個節(jié)點可進行分配的私鑰數(shù)量,從而實現(xiàn)區(qū)塊鏈私鑰的分片存儲。以上兩種方法在對私鑰進行存儲前沒有對用戶身份進行驗證,加大私鑰被盜取的風(fēng)險,使得私鑰不完整,進而降低私鑰的恢復(fù)率,也加長嵌入時間,使得私鑰嵌入波動幅度大。無法保證私鑰存儲過程的安全,極易暴露私鑰的存儲位置。文獻[6]首先利用區(qū)塊鏈技術(shù)并結(jié)合數(shù)字簽名方法進而限制用戶訪問,排除可能為不法分子的用戶,在此基礎(chǔ)上使得系統(tǒng)內(nèi)節(jié)點保持一致,最后通過有序數(shù)組對私鑰進行存儲,實現(xiàn)區(qū)塊鏈私鑰的分片存儲,該方法雖對用戶進行限制,但篩選過程過于籠統(tǒng),極大概率漏掉一些偽裝極強的違法用戶,導(dǎo)致在存儲過程中需要抵抗盜取私鑰的用戶以及尋找缺失的私鑰,進而加長存儲時間,存在私鑰儲存延時長的問題。
為了解決上述方法中存在的問題,提出清掃機器人避障系統(tǒng)區(qū)塊鏈私鑰分片存儲方法。區(qū)塊鏈保障數(shù)據(jù)安全性和完整性的核心就是密碼學(xué)技術(shù),該技術(shù)就是針對數(shù)據(jù)庫中每個節(jié)點生成節(jié)點專屬的私鑰。研究表明,所設(shè)計方法具有較好的分片存儲性能。
為保證數(shù)據(jù)庫的安全,現(xiàn)通過參與者間的合作生成私鑰并完成簽名,進而極大降低單點攻擊問題,首先對用戶的身份進行篩選,將不安全因素進行初步排除[7],在環(huán)簽名的基礎(chǔ)上將區(qū)塊鏈中用戶劃分成簽名者、PKG(Private Key Generation,私鑰生成)群成員以及簽名環(huán)者三種身份,且每個用戶身份均代表系統(tǒng)中的節(jié)點,其中簽名者代表的是在避障系統(tǒng)中區(qū)塊鏈必須進行簽名的節(jié)點,并將所有可用的已簽名節(jié)點與其他兩種身份進行連接構(gòu)成環(huán)簽名,簽名環(huán)代表的是在避障系統(tǒng)區(qū)塊鏈中任意抽取可幫助簽名者進行環(huán)簽名的身份,但這種身份的用戶不了解自己可在哪種節(jié)點下進行簽字,PKG 群成員指得是在避障系統(tǒng)區(qū)塊鏈中任意挑選的可為前兩種身份分配密鑰的身份,此算法的流程圖,如圖1所示。
圖1 基于環(huán)簽名的區(qū)塊鏈隱私保護算法架構(gòu)圖Fig.1 Architecture of Blockchain Privacy Protection Algorithm Based on Ring Signature
根據(jù)圖1 可知,在該算法中首先需要將參數(shù)進行初始化處理,并進行系統(tǒng)選取以及簽名等共計三步計算,其過程為:
假設(shè)此算法中q階的循環(huán)加法和乘法群分別為G1和G2,其中G1的生成元為E,生成元E中含有雙線性映射e,其表達式為:
循環(huán)群中包含哈希函數(shù)H1和H2,則兩函數(shù)分別為:
由于避障系統(tǒng)區(qū)塊鏈內(nèi)的各個節(jié)點均可形成PKG 群,所以此過程中各個據(jù)點均需要有專屬的私鑰Si,繼而計算出相應(yīng)的公鑰Pi,表達式為:
假設(shè)避障系統(tǒng)區(qū)塊鏈節(jié)點與PKG 之間存在聯(lián)系,針對區(qū)塊鏈中第i個節(jié)點的PKG,該節(jié)點與PKG關(guān)系如下所示:
若區(qū)塊鏈中的簽名者為IDi,真實的簽名者可任意抽取成員列表內(nèi)的n個成員簽名環(huán)L,其表達式為:
同時在PKG 集合內(nèi)任意抽取m個密鑰,將其組合形成集合C,在抽取過程中不可重復(fù)抽取,否則需要重新選取。
(1)當(dāng)PKG集合表示環(huán)L內(nèi)各個節(jié)點ID的公鑰時,其表達式為:
同時將其公鑰利用安全信道傳輸給各個節(jié)點ID。
(2)當(dāng)PKG集合表示實際簽名者的節(jié)點時,其ID表達式為:
式中:Qu—相應(yīng)ID的公鑰;Si—區(qū)塊鏈中的相應(yīng)私鑰。
(3)針對需簽名的信息m,簽名者的節(jié)點ID需要提前為環(huán)成員選取n-1個整數(shù)xi,并將xi視為秘密值Ui,其表達式為:
式中:Ui—秘密值;xi—隨機整數(shù);E—生成元。
在選取秘密值的過程中需要保證Ui內(nèi)不能出現(xiàn)重復(fù)的xi值,否則需要重新選取。
則哈希函數(shù)的輸出值為:
式中:Yi—哈希函數(shù)的輸出,且i∈{1,2,…,n} 。
(4)在節(jié)點IDu中隨機選取整數(shù)xu,并求解出秘密值Uu,其表達式為:
式中:Uu—節(jié)點IDu的秘密值;Ui—節(jié)點IDi的秘密值。
式(10)中的整數(shù)xu不可重復(fù)出現(xiàn),否則需要重新選取。則節(jié)點IDu的哈希函數(shù)輸出值為:
(5)為節(jié)點IDu任意選取出一個半徑r,且半徑的取值范圍為r∈{0,1}*,則節(jié)點IDu的公共系統(tǒng)參數(shù)P的公式為:
區(qū)塊鏈的體積為:
式中:Dk—環(huán)成員中的參數(shù)。
(1)為用戶分配完身份后需要對用戶簽名進行驗證,在驗證過程中,若簽名成立則驗證成功,該簽名為真實有效。
(2)簽名驗證通過后需對簽名者身份進行驗證,若身份驗證通過,則將秘密信息等數(shù)據(jù)透露給驗證通過的簽名者,完成簽名驗證。
經(jīng)過加密后的系統(tǒng)數(shù)據(jù)需要用特定的私鑰進行解密從而獲取信息,如何保存私鑰是一大問題,為將私鑰的安全性提升到最高,需要對私鑰的儲存方式進行加強,因此將私鑰嵌入到載體圖像的水印信息中進行保存從而實現(xiàn)安全加強,該方法的基本流程,如圖2所示。
圖2 私鑰嵌入圖像流程圖Fig.2 Flow Chart of Private Key Embedded Image
該方法可能被不法分子發(fā)現(xiàn)并提取秘密信息,從而泄露秘密信息,因此需要對水印部分的信息增加隨機數(shù)進而加強防范,同時將其轉(zhuǎn)化為二進制矩陣的形式并增加糾錯碼,進而將私鑰進行隱藏,使得該方法在傳輸中降低誤差,且極大地提高私鑰的安全性。
將私鑰嵌入水印區(qū)域前,其位置的選取十分重要,必須選擇安全性較高以及對載體質(zhì)量無影響的位置,因此需要排除可輕易被不法分子提取私鑰的位置以及嵌入私鑰后圖像會出現(xiàn)失真等影響圖像質(zhì)量的位置[8]。
為保證嵌入的質(zhì)量,選取魯棒性較好的離散小波變換進行嵌入,圖像經(jīng)過一級小波變換隨之生成水平HL1、垂直LH1、對角線HH1以及低頻分量LL1等4個小波系數(shù)矩陣,其中,1代表一級的小波變換,由于低頻部位具有較好的魯棒性,所以選取低頻部位進行信息嵌入,為降低數(shù)據(jù)量,需進一步進行小波分解處理[9-10]。
為忽略噪聲以及圖像壓縮等帶來的影響,可利用魯棒性較優(yōu)越的信號處理方法—量化索引調(diào)制算法(QIM)進行信號處理,此算法的過程為:
第一步,將經(jīng)過離散后的低頻系數(shù)為a×b的矩陣標(biāo)記為LL3,其中3 為三級小波變換,將LL3 進行轉(zhuǎn)換,轉(zhuǎn)換成維數(shù)是N的行向量,并將其分成n組,生成維數(shù)為n的組行向量為防止組數(shù)對算法的魯棒性產(chǎn)生影響,經(jīng)過多次迭代后生成的行向量表達式為:
第二步,在行向量uk內(nèi)將偶數(shù)項記為向量x,奇數(shù)項標(biāo)記為向量y,則向量x和y模的表達式分別為:
式中:lx—向量x的模;
ly—向量y的模。
第三步,假設(shè)QIM量子因子為z,且z=lx/ly,則QIM量化函數(shù)表達式為:
式中:m—圖像中的水印信息;Δ—QIM 量化函數(shù)的參數(shù)量化長度;Q—QIM。
第五步,將所有可進行分組的系數(shù)和向量視為具有水印信息圖像的低頻分量,最后將已進行處理和未進行任何處理的水印圖層進行融合生成私鑰水印圖像,這種嵌入方式即可保證私鑰安全性最高又可分層儲存私鑰。
私鑰的嵌入和提取是相對稱算法,因此在提取私鑰過程中仍需對載體圖像進行三級變換處理,進而生成奇數(shù)項向量和偶數(shù)項向量
由于在儲存途中私鑰在水印信息中經(jīng)過偽裝,因此從水印信息中提取出私鑰后還需對其進行糾錯碼的解碼處理,此時的水印信息仍是矩陣形式,還需要將其轉(zhuǎn)換為私鑰的原本形式,排除格式中的隨機數(shù)即可。
具體的提取過程為將載體圖像的圖層進行小波變換處理,利用結(jié)果建立向量化比生成水印信息,針對水印信息計算出糾錯碼并將其轉(zhuǎn)換成水印格式,最終提取出私鑰。
為了驗證清掃機器人避障系統(tǒng)區(qū)塊鏈私鑰分片存儲方法的整體有效性,分別采用所提方法、文獻[4]方法和文獻[5]方法進行嵌入時間波動程度、私鑰恢復(fù)率以及私鑰儲存延時的測試,測試結(jié)果如下:
將私鑰嵌入到圖層中需要一定時間,但時間的長短決定嵌入的優(yōu)劣,嵌入時間過短會出現(xiàn)嵌入不完全,安全性過低等問題,嵌入時間過長會大大降低效率也會導(dǎo)致圖像出現(xiàn)失真等情況,經(jīng)過多次迭代后計算出嵌入的平均嵌入時間,即最優(yōu)嵌入時間,利用三種方法對私鑰進行水印嵌入,比較三種方法得出的時間與最優(yōu)嵌入時間之間的波形情況,實驗結(jié)果具體情況,如圖3所示。
圖3 三種方法嵌入時間波動結(jié)果Fig.3 Embedding Time Fluctuation Results of Three Methods
根據(jù)圖3經(jīng)比較后發(fā)現(xiàn),文獻[5]方法完全偏離最優(yōu)嵌入時間,且遠遠高于最優(yōu)嵌入時間,文獻[4]方法的嵌入時間雖強于文獻[5]方法,且一直在最優(yōu)嵌入時間附近波動,但該方法的嵌入時間上下浮動較大,不利于嵌入效果,反觀所提方法,不僅一直圍繞最優(yōu)嵌入時間波動,且所提方法在各個實驗樣本下的嵌入時間均無較大差別,時間幅度也很小,這是因為所提方法在進行私鑰分層存儲前對用戶的身份進行驗證,未通過驗證的用戶不可進區(qū)塊鏈數(shù)據(jù)庫,進而加強數(shù)據(jù)庫的安全,不必擔(dān)心在嵌入途中被不法分子盜取密鑰,從而減少防范時間,提高嵌入效率,降低嵌入時間波動。
私鑰的儲存包含儲存以及提取兩部分,因此判斷私鑰儲存性能的優(yōu)劣不僅需要看存儲的性能,也要測試最后私鑰的恢復(fù)程度。在區(qū)塊鏈中節(jié)點會不斷更新出全新的節(jié)點,節(jié)點的增加會影響私鑰的恢復(fù)程度,選取不同程度更新率通過三種方法進行私鑰恢復(fù),判斷三種方法在各個更新率下的私鑰恢復(fù)率,得出最優(yōu)存儲方法。不同方法的私鑰恢復(fù)率結(jié)果,如圖4所示。
圖4 不同方法的私鑰恢復(fù)率結(jié)果Fig.4 Private Key Recovery Rate Results of Different Methods
根據(jù)圖4可知,文獻[4]方法和文獻[5]方法隨著節(jié)點更新率的升高,其私鑰恢復(fù)率越來越低,這兩種方法在更新率為16%時的私鑰恢復(fù)率已經(jīng)為0,說明文獻[4]方法和文獻[5]方法在16%更新率時私鑰存儲方法已經(jīng)失效,無法從水印信息中提取私鑰,所提方法隨著更新率的增加其私鑰恢復(fù)率雖有所下降,但該方法最低恢復(fù)率為也高達0.79,遠高于其它兩種方法,可證明所提方法是三種方法最可取的私鑰儲存方法,即所提方法的私鑰恢復(fù)率最高。
在存儲私鑰的過程中,為進一步提升私鑰的安全性,私鑰通常是分成多個碎片進行保存,當(dāng)身份通過驗證的用戶進行存儲私鑰時,此時區(qū)塊鏈中會互相告知其它節(jié)點,各節(jié)點相對應(yīng)的私鑰碎片會相互分享,進而在完美偽裝私鑰的同時保證私鑰儲存的完整性,碎片在分享過程中會出現(xiàn)延時,即在一定大小節(jié)點下需要跳躍的數(shù)量。
選取一定數(shù)量不同規(guī)模的網(wǎng)絡(luò)節(jié)點,測試在所提方法、文獻[4]方法以及文獻[5]方法下的所需的跳數(shù),如圖5所示。
圖5 三種的私鑰儲存延時結(jié)果Fig.5 Storage Delay Results of Three Kinds of Private Keys
根據(jù)圖5數(shù)據(jù)可知,網(wǎng)絡(luò)節(jié)點的大小對延時有一定影響,隨著節(jié)點的增大跳數(shù)會越來越高,延時會隨之增加,存儲效率隨之下降,其中文獻[5]方法的時間延時尤為嚴重,文獻[4]方法對比文獻[5]方法延時雖有所改善,但延時結(jié)果仍不理想,還會極大影響載體圖像的質(zhì)量,所提方法是三種方法延時最少的,不會過度影響圖像質(zhì)量,也不會太過降低存儲效率,因此證明所提方法的優(yōu)越性。
目前數(shù)據(jù)的加密技術(shù)日益完善,其中私鑰的存儲還需進一步提高,因此提出清掃機器人避障系統(tǒng)區(qū)塊鏈私鑰分片存儲方法,該方法首先對用戶身份進行篩選,其次基于圖像水印形式將私鑰進行嵌入,實現(xiàn)區(qū)塊鏈私鑰分片存儲,解決了嵌入時間波動大、私鑰的恢復(fù)率低以及私鑰儲存延時長的問題,使得加密技術(shù)登上一個全新的臺階。