房照東 李永忠
(江蘇科技大學計算機學院 鎮(zhèn)江 212003)
數(shù)據(jù)安全是構(gòu)建工業(yè)互聯(lián)網(wǎng)安全系統(tǒng)的關鍵。針對邊緣數(shù)據(jù)中的指令數(shù)據(jù),由于邊緣數(shù)據(jù)安全要求較高,通常采用數(shù)字簽名技術保證數(shù)據(jù)的完整性和來源。文獻[1]提出了采用雙私鑰、雙基點的方式改進數(shù)字簽名算法,提高了數(shù)字簽名中私鑰的安全性,但是仍采用模逆操作,簽名和驗簽速度較慢。文獻[2]針對去除模逆操作在安全性上的不足,提出了使用隨機數(shù)和私鑰結(jié)合的方式生成數(shù)字簽名,同時去除模逆操作,但是該方式并未考慮到私鑰的安全性問題。
本文針對以上問題,在數(shù)字簽名過程中采用雙私鑰和雙基點以保證私鑰的安全性,加入一個隨機數(shù)以提高數(shù)字簽名的安全性,去除模逆操作以提高數(shù)字簽名速率。使用改進ECC和AES混合加密算法對邊緣數(shù)據(jù)進行加解密操作。實現(xiàn)邊緣數(shù)據(jù)的安全存儲和傳輸。
AES(Advanced Encryption Standard,高級數(shù)據(jù)加密標準)算法[3]是美國聯(lián)邦政府采用的一種區(qū)塊加密標準,旨在取代DES(Data Encryption Standard)算法,成為新一代加密標準。該算法安全、快速、易于實現(xiàn)且能在各個平臺上實現(xiàn)。AES算法是一種對稱密鑰的分組迭代加密算法,分組長度固定為128bit,密鑰長度分為128bit、192bit和256bit三種不同的長度,密鑰長度不同,加密輪數(shù)也不同。
ECC(Elliptic Curve Cryption System,橢圓曲線密碼)算法[4]是利用橢圓曲線來實現(xiàn)的密碼技術的統(tǒng)稱。160bit長度的橢圓曲線算法密鑰與1024位的RSA密碼技術安全性相同,且具有在私鑰加解密速度上比RSA[5]、DSA[6]等速度更快,存儲空間更小,帶寬要求更低等優(yōu)點。
將橢圓曲線定義在有限域上,使之變成離散的點,即轉(zhuǎn)化為橢圓曲線離散對數(shù)問題[7]。這個性質(zhì)是橢圓曲線密碼體制的基礎,可根據(jù)這個性質(zhì)實現(xiàn)公鑰密碼、數(shù)字簽名和密鑰交換。
在使用ECC算法進行數(shù)字簽名過程中,私鑰并非絕對安全,由于ECC的公鑰是公開傳輸?shù)模承┕羰侄慰梢愿鶕?jù)公鑰推算出私鑰。其次ECC加解密過程中的模逆操作會降低算法加解密速度。
安全哈希算法(SHA-1)[8]是MD4算法家族中使用最廣泛的信息摘要函數(shù)。該算法基于Merkle-Damgard結(jié)構(gòu)[9]。在壓縮函數(shù)過程中,最大消息長度為264位,輸出長度160位,計算過程中將消息分成512位的分組進行處理。壓縮函數(shù)總共有80輪,而這80輪又分成每組20輪的不同階段。最終得到160位消息摘要。
本文提出了一種采用雙私鑰和雙基點,在簽名和驗簽過程中加入一個隨機數(shù)并去除模逆操作的改進方案。具體改進過程如下:
1)改進的數(shù)字簽名過程
改進的數(shù)字簽名過程如圖1所示。
圖1 生成數(shù)字簽名過程
具體實現(xiàn)過程如下:
step1:選擇一個隨機數(shù)或偽隨機數(shù)r,r∈[1,n-1];
step2:基于基點G1、G2計算
step3:計算x≡xR(modn),其中xR為R的橫坐標(如果x=0,則轉(zhuǎn)步驟(1));
step4:對需要簽名的消息M通過散列函數(shù)計算其散列值,H=Hash(M,x),將H轉(zhuǎn)換成整數(shù);
step5:生成簽名:
(若s1=0或s2=0,則轉(zhuǎn)步驟(1));
step6:客戶端B將x,s1,s2和M拼接,使用AES加密生成密文c發(fā)送給服務器A。
2)改進的驗證簽名過程
改進的驗證簽名過程如圖2所示。
圖2 驗證數(shù)字簽名過程
具體實現(xiàn)過程如下:
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算法實現(xiàn)中,首先將明文分組得到數(shù)據(jù)塊,數(shù)據(jù)塊經(jīng)過多層轉(zhuǎn)換操作,每次轉(zhuǎn)換產(chǎn)生一個中間結(jié)果,稱為狀態(tài)(State)[10]。加解密過程在4×4的字節(jié)矩陣上重復執(zhí)行字節(jié)替代、行變換、列混合和輪密鑰加四個不同的變換[11],算法流程如下:
step1:輪密鑰加,將當前分組和擴展密鑰的一部分進行按位異或操作;
step2:字節(jié)替代,使用s盒[12]中與數(shù)據(jù)塊對應行和列的數(shù)據(jù)替換原數(shù)據(jù),即完成分組的字節(jié)到字節(jié)的代替;
step3:行位移,數(shù)據(jù)塊第一行不變,第二行左移一位,第三行左移兩位,第四行左移三位;
step4:列混合,將數(shù)據(jù)塊每列的字節(jié)通過線性函數(shù)結(jié)合起來。
128bit密鑰長度的AES算法需要進行10輪迭代,加解密過程中除了輪密鑰加不同,其余操作均取逆。
SHA-1算法流程如下。
step1:假設有長度為l位消息M。為了使消息長度是512的整數(shù)倍,需要將消息進行填充操作。將一個1、k個0和l的二進制表示的64位追加到消息后面。如式(6)所示:
在使用壓縮函數(shù)前,需將消息分割為長度512位的分組M1,M2,…,Mn,每個512位分組分為16個32位的單詞。如式(7)所示:
step2:在哈希函數(shù)計算中,對每個消息分組Mi進行四個階段處理,每個階段20輪,每輪都計算一個32位 單 詞[13],即W0,W1,…,W79。最 終 得 到160bit消息摘要值。
混合加解密算法過程如圖3所示。
圖3 混合加解密算法流程圖
具體混合加解密算法流程如下:
step1:使用SHA-1哈希算法生成消息摘要H,再使用改進ECC數(shù)字簽名算法私鑰加密生成數(shù)字簽名s1和s2,并生成驗證值x;
step2:將明文M、數(shù)字簽名s1、s2和x拼接,使用AES算法加密生成密文C;
step3:將密鑰kB使用ECC算法公鑰加密生成密鑰密文kBe,將kBe和密文C發(fā)送給接收端;
step4:接收端收到消息后,使用ECC私鑰解密密鑰密文kBe,得到對稱密鑰kB,使用AES算法解密密文C,得到明文M、簽名s1、s2和x;
step5:使用SHA-1驗證明文M完整性,使用改進ECC公鑰驗證簽名,驗證成功,則所得到的明文M有效可用。
首先使用哈希函數(shù)對工業(yè)互聯(lián)網(wǎng)中設備信息、實時數(shù)據(jù)等進行哈希操作,獲得消息摘要,再使用改進ECC私鑰加密消息摘要生成數(shù)字簽名。最后使用AES算法對已簽名明文進行加密[14]。圖4為生成數(shù)字簽名和混合加密結(jié)果的終端打印信息,圖的上方為明文信息,中間為數(shù)字簽名的摘要值和簽名信息,下方為密文信息。
圖4 生成數(shù)字簽名并加密結(jié)果圖
圖5為驗證簽名和解密結(jié)果的終端打印信息,圖的上方為密文信息、中間為驗證簽名的摘要值和驗簽成功提示,下方為解密后明文信息。
圖5 驗證數(shù)字簽名并解密結(jié)果圖
1)加密性能分析
表1列出了加密不同大小數(shù)據(jù)包時,使用AES加密、RSA+AES混合加密和ECC+AES混合加密的加密耗時。從表格可以看出,AES算法的耗時最短,而其他兩個混合算法的加密耗時區(qū)別較小。但是ECC算法在安全性上比RSA算法更好,且密鑰更易于管理。數(shù)據(jù)波動圖如圖6所示。
表1 不同算法加密時間比較表
圖6 不同算法加密時間對比圖
2)解密性能分析
表2列出了不同算法解密時間值,從表格可以看出,三種算法的解密時間與加密時間相比差距較小,其中AES算法解密耗時最短,而其他兩種混合算法的解密耗時幾乎一致。數(shù)據(jù)波動圖如圖7所示。
表2 不同算法解密時間比較表
圖7 不同算法解密時間對比圖
3)數(shù)字簽名性能分析
對邊緣數(shù)據(jù)中的指令數(shù)據(jù)和配置數(shù)據(jù)要求數(shù)據(jù)能夠被完整傳達和發(fā)送者的身份能夠準確核實。因此需要對該類型數(shù)據(jù)進行數(shù)字簽名操作。表3列出了采用原ECC算法、RSA算法和改進后的ECC算法進行數(shù)字簽名的耗時。
表3 不同算法數(shù)字簽名時間比較表
圖8 不同算法數(shù)字簽名時間對比圖
由于數(shù)字簽名采用公鑰密碼技術的私鑰加密消息摘要值,而在安全等級相同的情況下,ECC密鑰長度更短,加密速度更快,更便于存儲。因此在測試不同算法的數(shù)字簽名時間中,由于RSA私鑰比公鑰長度更長,因此加密速度慢,且密鑰較長不便于存儲。而改進ECC數(shù)字簽名算法更是比原ECC速度更快。證明了本文改進的ECC數(shù)字簽名算法對提升數(shù)字簽名時間是有效的。
AES算法加解密速度較快,確保了對實時數(shù)據(jù)的實時加密與解密,ECC算法安全性較高,用其加密對稱密鑰確保的密鑰的安全分配,因此在數(shù)據(jù)安全和密鑰安全方面,此種混合加密方案具有較高的安全性。由于ECC的公鑰是公開傳輸,某些攻擊手段[15]可以根據(jù)公鑰推算出私鑰,本文中使用雙私鑰數(shù)字簽名操作,確保了私鑰的安全性。
針對工業(yè)互聯(lián)網(wǎng)中邊緣數(shù)據(jù)的安全問題,本文采用了混合加密的方式對邊緣數(shù)據(jù)進行加解密操作,采用了改進的橢圓曲線數(shù)字簽名算法進行了數(shù)字簽名操作,并設計了一個完整的工業(yè)邊緣智能終端安全系統(tǒng),實現(xiàn)了邊緣端數(shù)據(jù)的安全存儲和傳輸。由于邊緣端環(huán)境復雜,僅僅依靠數(shù)據(jù)加密一種方式實現(xiàn)邊緣端設備的安全防護還不夠,還需要考慮邊緣設備中系統(tǒng)的安全性,可建立入侵檢測機制進行系統(tǒng)的安全防護,這也是下一步需要研究的方向。