景 雯, 張 杰
(山西大同大學 計算機與網絡工程學院, 山西 大同 037009)
當訪問量較高的網絡遭到黑客攻擊時,容易出現數據丟失[1-2]、數據竄改和網絡失效等問題,這些問題無疑會給企業帶來巨大的損失.以區塊鏈框架為基礎的企業網絡為了避免上述問題,設計了抗攻擊區塊鏈,以此提升網絡抗攻擊能力,防止企業內部數據被竄改.但黑客攻擊手段也隨著技術的進步不斷增強,對于“難以攻克”的網絡,黑客會采用更加隱秘的技術竊取數據.為了預防竊取問題的發生,相關的數據防竄改識別方法引起了學者的廣泛關注.
孫中軍等[3]采用深度報文檢測技術識別網絡中的數據,將包含誤差數據在內的所有識別數據輸入到分類器中,根據分類評估結果實現加密數據的識別.楊許亮[4]采用區塊鏈技術對缺陷數據進行加密,加密后構建一個用戶群,調用該類數據時需要各個用戶對公鑰進行認證,以此達到提升數據安全性的目的,但該方法的記錄結果存有誤差,識別準確率較低.蔣彤彤等[5]根據流量層次整合加密數據特征,同時對整合后的特征采用多頭注意力機制,以此提升數據特征的區分度,但是該方法的整合效果仍有欠缺,存在誤識個數較多的問題.
為了進一步提高抗攻擊區塊鏈的安全性,本文提出了抗攻擊區塊鏈滲入數據防竄改識別方法.在設定抗攻擊區塊鏈滲入數據特征評判準則的基礎上,加密滲入數據特征,并利用支持向量機算法對數據進行分類識別,實現區塊鏈滲入數據防竄改識別.
為了有效提升滲入數據識別效果,設定抗攻擊區塊鏈滲入數據特征評判準則,提取滲入數據特征,并以此為依據,設計抗攻擊區塊鏈滲入數據防竄改流程.
設R為抗攻擊區塊鏈多維空間,同時該空間存儲滲入數據特征提取后的映射值,抗攻擊區塊鏈滲入數據集合表示為(xi,yi)|xi∈R,yi∈R.其中,(xi,yi)表示在多維空間中滲入數據的節點位置,i=1,2,…,n,n為滲入數據樣本量.
根據抗攻擊區塊鏈滲入數據集合可以得到抗攻擊區塊鏈滲入數據特征子集的差異度,其表達式為
(1)

式(1)中,分母部分代表不同類別滲入數據的主要分布趨勢,所以在對應的數據中,分母值越小,說明滲入數據的特征差異越小.由此可見,只有Di的值相對較大時,才能有較強的識別能力.
根據稀疏表示思想按照稀疏分數值大小對抗攻擊區塊鏈滲入數據特征進行提取[6].若想獲取滲入數據向量的稀釋度,需要對數據向量Xn進行重構,將其轉換為最小線性規劃形式,其表達式為
Y=minsi(Xn)
(2)
式中:Y為最小線性規劃求解結果;si(·)為線性規劃函數.計算重構矩陣中各個滲入數據特征的差異值,并將所有計算結果進行匯總與解析,以此取得滲入數據的目標函數Q,即
(3)

加密抗攻擊區塊鏈滲入數據前,首先需要檢驗獲取的數據特征是否遭到竄改,從而利用監控代碼對滲入數據關鍵特征狀態進行監控,取得監控狀態后把監控代碼放置到固定位置,以此避免改變數據結構.
由于滲入數據的加密方式不同[7],所以對不同的加密方式要選擇適當的密鑰.密鑰生成時要滿足
Kj=Ej(Ij,Pj,Hj,C)
(4)
式中:Kj為解碼密鑰生成函數[8];Ej為密鑰生成函數;Ij為解碼用戶代碼;Pj為解碼注冊碼;Hj為滲入數據特征函數值;C為數組.
滿足密鑰生成條件后,即可對抗攻擊區塊鏈滲入數據特征進行防竄改操作,具體的防竄改流程如圖1所示.

圖1 防竄改流程圖Fig.1 Anti-tampering flow chart
根據圖1可知,當抗攻擊區塊鏈滲入數據中的第一個特性分類出現在整體數據分類中時,若對該特性進行加密計算,則會自動生成一個用于檢查密鑰[9-10]特征的函數.若檢驗期間密鑰發生錯誤,滲入數據就有被竄改的可能,此時需要返回到函數生成步驟重新獲取,直至密鑰完全正確為止.該流程可以有效防止抗攻擊區塊鏈滲入數據遭到竄改,提升了滲入數據密鑰特性,進一步保證了滲入數據的安全性.
在實施滲入數據特征防竄改流程后,為了進一步優化抗攻擊區塊鏈滲入數據防竄改識別效果,使用相對熵與蒙特卡洛仿真方法作為滲入數據的分類測度,利用支持向量機[11-12]對數據進行分類識別,實現滲入數據防竄改識別.
將相對熵作為與滲入數據特征相對應的特征向量,以此獲取滲入數據加密后的熵.將加密的滲入數據重新組合并計算,得到新集合的熵值,即
(5)
式中:hk為加密的滲入數據集合所對應的相對熵;fk為加密的滲入數據數量;gik為元素出現頻數;m為特征向量的維數.
根據式(5)得到滲入數據相對熵集合[13],即{h1,h2,…,hn}.由于滲入數據特征之間具有依賴性,所以為了提升滲入數據防竄改識別效果,需要對冗余數據特征進行剔除,以此在提高識別效率的同時,減少系統運行時間.
通常情況下抗攻擊區塊鏈滲入數據為長字符數據,將冗余數據剔除后可以節省較多空間[14],所以依據壓縮技術,將抗攻擊區塊鏈數據中各個滲入數據字符N作為蒙特卡洛仿真點.
設在一個正方形中存在一個內切圓,則該正方形的橫坐標軸由滲入數據的前N/2個字符表示,而縱坐標軸則由后N/2個字符進行表示.
依據各個數據節點中內切圓的個數,對滲入數據的估計值進行計算.根據估計值與實際值之間的誤差可知,進行加密后的滲入數據估計值誤差相對較小.由此可見,蒙特卡洛仿真方法[15-16]可以利用估計值誤差對滲入數據是否加密的狀態進行區分,便于對滲入數據進行有效識別.
本文利用支持向量機對加密后的數據進行分類,以此實現滲入數據防竄改識別.設數據的特征空間表示為{v0,v1,v2,v3,perror},其中,v為特征子空間,perror為估計誤差值,該特征空間屬于一個四維空間.采用支持向量機方法對特征值進行訓練,以此實現對滲入數據的檢測判斷.依據訓練流程對加密數據進行分類,從而實現抗攻擊區塊鏈滲入數據防竄改識別.
為了驗證抗攻擊區塊鏈滲入數據防竄改識別方法的整體有效性,將提出的抗攻擊區塊鏈滲入數據防竄改識別方法(方法1)與文獻[4]基于區塊鏈的缺陷度量數據防竄改識別方法(方法2)、文獻[5]基于層次時空特征與多頭注意力的惡意加密流量識別方法(方法3)進行對比測試.
實驗前搭建抗攻擊區塊鏈平臺,其主要包括區塊鏈通用模塊、終端側區塊鏈模塊、通用節點模塊與核心層模塊.其中,區塊鏈通用模塊主要實現區塊鏈中的基礎操作;終端側區塊鏈模塊通過類與類的組合以及類之間的繼承實現終端層的DAG式區塊鏈、邊緣層的多鏈平行區塊鏈;通用節點模塊中包含了邊緣、終端、存儲等多個節點類;核心層模塊實現了節點的注冊、智能合約的備案等功能.
實驗在兩臺PC機上完成,并設置了100 MB的交換機,操作系統為Windows 2000serber,服務器軟件為IIS5.0,信息數據庫為sQI Server 2000,調試工具為Microsoft V isual C++6.0.
實驗所需計算數據由模擬仿真得到,其中包括第j類滲入數據的樣本量aj為5 000個,實驗樣本數量l為1 500個,數據差異度Di為1.7,密鑰生成函數報頭編碼為(16,7),消息字編碼為(31,15),碼元寬度為8,相對熵hk為0.8.方法2的參數設置:安全系數為8,迭代次數為50次.方法3的參數設置:嵌入維度為128,隱藏神經元個數為128,激活函數為tanh和Relu,卷積核尺寸分別為3、4、5,卷積核個數為128,步長為1,最小變化量為0.01,迭代次數為10.
3.2.1 識別性能測試
采用3種方法分別對5 000個數據的可用度進行測試,設μ為抗攻擊區塊鏈中數據的可用度,其計算表達式為
(6)
式中:κ為可信數據總數;?為抗攻擊區塊鏈中數據總數.數據可用度越高,代表相應方法的抗攻擊區塊鏈滲入識別性能越好,具體測試結果如圖2所示.

圖2 不同方法的識別性能測試結果Fig.2 Identification performance test results of different methods
由圖2可知,3種方法在測試時數據可用度均高于85%,從整體上看,方法1的可用度均處于90%以上,方法1的識別效果明顯要優于對比方法,因為方法1提取了滲入數據的特征,以此提升了識別性能,提高了數據安全性.方法3的識別效果雖然與方法2的識別效果相近,但在樣本數量為4 000和5 000時,數據可用度差異相較于其他樣本數量時較為明顯.
3.2.2 防竄改性能測試
在仿真軟件中搭建抗攻擊區塊鏈平臺,并將其在某電力企業中進行測試,將平臺同時接入電動汽車公司、負荷聚合商、調度中心、售電公司等共50個市場主體節點.在實驗過程中,以電力調控平臺市場主體名稱、用戶崗位、用戶申請3個方面的數據作為抗攻擊區塊鏈滲入數據,利用方法1對其進行加密.表1和表2分別是加密前后的數據統計結果.

表1 加密前數據統計Tab.1 Data statistics before encryption

表2 加密后數據統計Tab.2 Statistics of encrypted data
方法2和方法3在解密表2數據時需要超過70 s才可以完成,由此證明算法加密后的數據復雜度較高,防竄改性能更好.由于方法1通過相對熵與蒙特卡羅仿真方法對滲入數據進行了分類,并采用抗攻擊區塊鏈滲入數據特征評判準則,濾除了冗余及無效數據,實現了高性能的抗攻擊區塊鏈滲入數據防竄改識別.
越來越多的黑客對網絡進行攻擊,出現了較為嚴重的數據丟失、竄改等問題,對此本文提出了抗攻擊區塊鏈滲入數據防竄改識別方法.方法利用抗攻擊區塊鏈滲入數據特征提取準則提取滲入數據特征,并根據提取結果對滲入數據特征進行加密,再利用支持向量機分類加密技術實現了抗攻擊區塊鏈滲入數據防竄改識別.測試結果表明,該方法具有較好的識別性能與防竄改性能,為今后抗攻擊區塊鏈滲入數據防竄改識別研究提供了參考借鑒.