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