房照東 李永忠
(江蘇科技大學計算機學院 鎮江 212003)
數據安全是構建工業互聯網安全系統的關鍵。針對邊緣數據中的指令數據,由于邊緣數據安全要求較高,通常采用數字簽名技術保證數據的完整性和來源。文獻[1]提出了采用雙私鑰、雙基點的方式改進數字簽名算法,提高了數字簽名中私鑰的安全性,但是仍采用模逆操作,簽名和驗簽速度較慢。文獻[2]針對去除模逆操作在安全性上的不足,提出了使用隨機數和私鑰結合的方式生成數字簽名,同時去除模逆操作,但是該方式并未考慮到私鑰的安全性問題。
本文針對以上問題,在數字簽名過程中采用雙私鑰和雙基點以保證私鑰的安全性,加入一個隨機數以提高數字簽名的安全性,去除模逆操作以提高數字簽名速率。使用改進ECC和AES混合加密算法對邊緣數據進行加解密操作。實現邊緣數據的安全存儲和傳輸。
AES(Advanced Encryption Standard,高級數據加密標準)算法[3]是美國聯邦政府采用的一種區塊加密標準,旨在取代DES(Data Encryption Standard)算法,成為新一代加密標準。該算法安全、快速、易于實現且能在各個平臺上實現。AES算法是一種對稱密鑰的分組迭代加密算法,分組長度固定為128bit,密鑰長度分為128bit、192bit和256bit三種不同的長度,密鑰長度不同,加密輪數也不同。
ECC(Elliptic Curve Cryption System,橢圓曲線密碼)算法[4]是利用橢圓曲線來實現的密碼技術的統稱。160bit長度的橢圓曲線算法密鑰與1024位的RSA密碼技術安全性相同,且具有在私鑰加解密速度上比RSA[5]、DSA[6]等速度更快,存儲空間更小,帶寬要求更低等優點。
將橢圓曲線定義在有限域上,使之變成離散的點,即轉化為橢圓曲線離散對數問題[7]。這個性質是橢圓曲線密碼體制的基礎,可根據這個性質實現公鑰密碼、數字簽名和密鑰交換。
在使用ECC算法進行數字簽名過程中,私鑰并非絕對安全,由于ECC的公鑰是公開傳輸的,某些攻擊手段可以根據公鑰推算出私鑰。其次ECC加解密過程中的模逆操作會降低算法加解密速度。
安全哈希算法(SHA-1)[8]是MD4算法家族中使用最廣泛的信息摘要函數。該算法基于Merkle-Damgard結構[9]。在壓縮函數過程中,最大消息長度為264位,輸出長度160位,計算過程中將消息分成512位的分組進行處理。壓縮函數總共有80輪,而這80輪又分成每組20輪的不同階段。最終得到160位消息摘要。
本文提出了一種采用雙私鑰和雙基點,在簽名和驗簽過程中加入一個隨機數并去除模逆操作的改進方案。具體改進過程如下:
1)改進的數字簽名過程
改進的數字簽名過程如圖1所示。

圖1 生成數字簽名過程
具體實現過程如下:
step1:選擇一個隨機數或偽隨機數r,r∈[1,n-1];
step2:基于基點G1、G2計算

step3:計算x≡xR(modn),其中xR為R的橫坐標(如果x=0,則轉步驟(1));
step4:對需要簽名的消息M通過散列函數計算其散列值,H=Hash(M,x),將H轉換成整數;
step5:生成簽名:

(若s1=0或s2=0,則轉步驟(1));
step6:客戶端B將x,s1,s2和M拼接,使用AES加密生成密文c發送給服務器A。
2)改進的驗證簽名過程
改進的驗證簽名過程如圖2所示。

圖2 驗證數字簽名過程
具體實現過程如下:
step1:服務器A接收到密文消息c,使用對稱密鑰解密,得到x,s1,s2和消息M;
step2:判斷x,s1,s2是否屬于[1,n-1],否則簽名無效;
step3:服務器A使用客戶端B相同的散列算法H=Hash(M,x);
step4:計算

若Q=0,則簽名無效;
step5:計算

step6:比較v和x,若相等,則驗證成果,否則簽名無效。
在AES算法實現中,首先將明文分組得到數據塊,數據塊經過多層轉換操作,每次轉換產生一個中間結果,稱為狀態(State)[10]。加解密過程在4×4的字節矩陣上重復執行字節替代、行變換、列混合和輪密鑰加四個不同的變換[11],算法流程如下:
step1:輪密鑰加,將當前分組和擴展密鑰的一部分進行按位異或操作;
step2:字節替代,使用s盒[12]中與數據塊對應行和列的數據替換原數據,即完成分組的字節到字節的代替;
step3:行位移,數據塊第一行不變,第二行左移一位,第三行左移兩位,第四行左移三位;
step4:列混合,將數據塊每列的字節通過線性函數結合起來。
128bit密鑰長度的AES算法需要進行10輪迭代,加解密過程中除了輪密鑰加不同,其余操作均取逆。
SHA-1算法流程如下。
step1:假設有長度為l位消息M。為了使消息長度是512的整數倍,需要將消息進行填充操作。將一個1、k個0和l的二進制表示的64位追加到消息后面。如式(6)所示:

在使用壓縮函數前,需將消息分割為長度512位的分組M1,M2,…,Mn,每個512位分組分為16個32位的單詞。如式(7)所示:

step2:在哈希函數計算中,對每個消息分組Mi進行四個階段處理,每個階段20輪,每輪都計算一個32位 單 詞[13],即W0,W1,…,W79。最 終 得 到160bit消息摘要值。
混合加解密算法過程如圖3所示。

圖3 混合加解密算法流程圖
具體混合加解密算法流程如下:
step1:使用SHA-1哈希算法生成消息摘要H,再使用改進ECC數字簽名算法私鑰加密生成數字簽名s1和s2,并生成驗證值x;
step2:將明文M、數字簽名s1、s2和x拼接,使用AES算法加密生成密文C;
step3:將密鑰kB使用ECC算法公鑰加密生成密鑰密文kBe,將kBe和密文C發送給接收端;
step4:接收端收到消息后,使用ECC私鑰解密密鑰密文kBe,得到對稱密鑰kB,使用AES算法解密密文C,得到明文M、簽名s1、s2和x;
step5:使用SHA-1驗證明文M完整性,使用改進ECC公鑰驗證簽名,驗證成功,則所得到的明文M有效可用。
首先使用哈希函數對工業互聯網中設備信息、實時數據等進行哈希操作,獲得消息摘要,再使用改進ECC私鑰加密消息摘要生成數字簽名。最后使用AES算法對已簽名明文進行加密[14]。圖4為生成數字簽名和混合加密結果的終端打印信息,圖的上方為明文信息,中間為數字簽名的摘要值和簽名信息,下方為密文信息。

圖4 生成數字簽名并加密結果圖
圖5為驗證簽名和解密結果的終端打印信息,圖的上方為密文信息、中間為驗證簽名的摘要值和驗簽成功提示,下方為解密后明文信息。

圖5 驗證數字簽名并解密結果圖
1)加密性能分析
表1列出了加密不同大小數據包時,使用AES加密、RSA+AES混合加密和ECC+AES混合加密的加密耗時。從表格可以看出,AES算法的耗時最短,而其他兩個混合算法的加密耗時區別較小。但是ECC算法在安全性上比RSA算法更好,且密鑰更易于管理。數據波動圖如圖6所示。

表1 不同算法加密時間比較表

圖6 不同算法加密時間對比圖
2)解密性能分析
表2列出了不同算法解密時間值,從表格可以看出,三種算法的解密時間與加密時間相比差距較小,其中AES算法解密耗時最短,而其他兩種混合算法的解密耗時幾乎一致。數據波動圖如圖7所示。

表2 不同算法解密時間比較表

圖7 不同算法解密時間對比圖
3)數字簽名性能分析
對邊緣數據中的指令數據和配置數據要求數據能夠被完整傳達和發送者的身份能夠準確核實。因此需要對該類型數據進行數字簽名操作。表3列出了采用原ECC算法、RSA算法和改進后的ECC算法進行數字簽名的耗時。

表3 不同算法數字簽名時間比較表

圖8 不同算法數字簽名時間對比圖
由于數字簽名采用公鑰密碼技術的私鑰加密消息摘要值,而在安全等級相同的情況下,ECC密鑰長度更短,加密速度更快,更便于存儲。因此在測試不同算法的數字簽名時間中,由于RSA私鑰比公鑰長度更長,因此加密速度慢,且密鑰較長不便于存儲。而改進ECC數字簽名算法更是比原ECC速度更快。證明了本文改進的ECC數字簽名算法對提升數字簽名時間是有效的。
AES算法加解密速度較快,確保了對實時數據的實時加密與解密,ECC算法安全性較高,用其加密對稱密鑰確保的密鑰的安全分配,因此在數據安全和密鑰安全方面,此種混合加密方案具有較高的安全性。由于ECC的公鑰是公開傳輸,某些攻擊手段[15]可以根據公鑰推算出私鑰,本文中使用雙私鑰數字簽名操作,確保了私鑰的安全性。
針對工業互聯網中邊緣數據的安全問題,本文采用了混合加密的方式對邊緣數據進行加解密操作,采用了改進的橢圓曲線數字簽名算法進行了數字簽名操作,并設計了一個完整的工業邊緣智能終端安全系統,實現了邊緣端數據的安全存儲和傳輸。由于邊緣端環境復雜,僅僅依靠數據加密一種方式實現邊緣端設備的安全防護還不夠,還需要考慮邊緣設備中系統的安全性,可建立入侵檢測機制進行系統的安全防護,這也是下一步需要研究的方向。