馮瑞玨,李軒東,楊樹豐,曾獻煜
(華南理工大學廣州學院電氣工程學院,廣東廣州,510800)
隨著智能電網的時一步推進,電力系統之間的通信越發交互,網絡的開放性以及用戶多樣性,海量的數據面臨著被越權訪問。直接采用明文傳輸的方式容易被黑客攻擊,有被竊聽、篡改或偽造身份的威脅。如何提高信息保密的強度,控制敏感資源的訪問權限,成為急需解決的問題。為了保障數據的安全,保證電力系統的正常運行,要求電力通訊具備安全性高的加密方式。而采用合適可靠的加密手段是關鍵[1-2]。針對數據的保密性、完整性和身份校驗,常采用對稱加密算法、非對稱加密算和完整性。保密性保證數據即使被獲取,仍然不能獲得有效信息,而身份驗證針對黑客身份的偽造,完整性則防止數據不被刪除或篡改[3-5]。對于電力通信網絡而言,加密手段的可靠、安全、高效缺一不可,本文從數據的完整性保護出發,對MD5 密碼技術在電力通信網絡中的應用進行研究,并對該算法在應用方面的可靠性、安全性和時效性進行驗證分析。
MD5(Message-Digest algorithm 5)算法屬于哈希算法的一種,是一種不可逆算法,即無法通過算法得出的密文解密出原文。其作用是允許在使用數字簽名軟件簽名私鑰之前將信息“壓縮”為信息摘要。MD5 算法的原理可以簡單地理解為將預輸入的信息進行分組,每組長度為512bit,并將每一組都按32bit 的形式分成16 個子分組,進行一系列的處理之后,算法將輸出一個由四組32bit 子分組所組合成的128bit 散列值。具體步驟如下:
(1)填充
進行MD5 算法加密的第一步首先是對原信息進行填充,這樣做的目的是使其長度滿足一個必要條件,使得對512求余的結果等于448。填充的方法是在消息的末尾先填充一個1 和n 個0。
(2)記錄信息長度
用64bit 來存儲填充前信息長度。這64bit 加在第一步結果的后面,這樣信息長度就變為N*512+448+64=(N+1)*512位。
(3)裝入標準的幻數
標準的幻數是(A=(01234567)16,B=(89ABCDEF)16,C=(FEDCBA98)16,D=(76543210)16)。如果在程序中定義應該是(A=0X67452301L,B=0XEFCDAB89L,C=0X98BADCFEL,D=0X10325476L)。
(4)四輪循環運算
循環的次數是分組的個數(N+1)。
(1)完整性的驗證
利用MD5 可以對信息生成信息摘要,以防止其被隨意篡改,保障信息完整一致。電力通信系統中,MD5 算法常跟非對稱算法配合使用,對所需要保護的數據進行數字簽名,相當于給數據配以唯一的“數字指紋”,任何數據的篡改都會導致它對應的數字簽名的改動。如在網絡上下載所需的軟件常附帶一串MD5 值,實質作用是對我們下載的軟件進行MD5 校驗,以確保所下載的軟件和該網絡上的軟件相同。因此利用MD5 算法獲得信息摘要的方式來校驗數據的完整性被電力通信網絡中的網頁、數據庫、論壇所應用。
(2)訪問安全認證
電力通信系統的規模隨著接入用戶數量不斷增大,其結構繁瑣復雜,類型不一,來源分散,其方案設計具備地域性差異,這給電力通信網絡的數據安全帶來了極大的挑戰。如何保證只有授權人員才能合法訪問數據是當前的熱點問題。為了保障電力系統的穩定運行,防止一般用戶或黑客可能造成的越權操作和不當操作,必須具備一個可靠的信息認證系統。
MD5 算法廣泛應用于各種操作系統上,系統先將用戶的初始密碼輸出使用MD5 生成信息摘要保存。當用戶訪問某個電力網站時,系統將用戶輸入的密碼經計算再次生成信息摘要,將該信息摘要與系統先前保存的信息摘要進行對比分析,如一致,則確定為本人操作,防止了非授權用戶的錯誤進入,避免非法使用者對系統重要程序的越權操作。由于MD5 算法為不可逆算法,不設計密碼傳輸或保存,避免了黑客對密碼竊取的風險,還在一定程度上提高了破解密碼的難度,極大地提高了電力通信網絡的安全性。
在電力通信中文件和信息的傳輸是十分頻繁卻至關重要的,大到電力系統各組成之間的相互協調以保障發電供電的穩定,小到供電系統上每家每戶的用電數據,這其中每一個消息文件的完整性都與整個電力系統的正常運行息息相關,某一個環節的出錯都極有可能造成不同程度的電力事故。
MD5 算法利用較強的抗修改性,在對目標文件進行完整性檢查校驗時,能夠快速準確地進行判斷,因此可應用于數據完整性的有效保護。其原理是將整個消息或文件作為一個大文本,通過算法生成唯一的MD5 值,這個MD5 值就作為消息或文件的“數字指紋”,用來檢驗接收端所接收到的與發送端是否一致。由于MD5 算法的特性,即使是一點細微的修改,最后所得到的MD5 值都會和原值存在巨大差異,用戶可以根據這個差異來判斷消息文件的完整性,并且因為MD5 的長度短,差異性大,整個驗證過程也是十分簡單迅速的。
為了驗證MD5 的性能,利用計算機對其性能進行測試分析。將算例通過MD5 加密計算,經多組結果對比、分析,從而驗證算法的可靠性、安全性及時效性。
本文使用C++語言實現MD5 算法。
硬件環境:Intel Core i7-6700HQ 計算機。
軟件環境:Microsoft Visual Studio Community 2017,Version:4.7.02556。
將MD5 算法程序以C++語言編寫進Microsoft Visual Studio Community 2017 軟件中,運行該MD5 算法加密程序。本文所進行的算法驗證實驗均在該程序上進行,它的作用是能將任意長度文本數據加密為16 進制的32 位MD5 值,并附帶了運算計時功能。程序界面如圖1 所示。

圖1 MD5 算法加密程序
2.2.1 MD5 算法可靠性檢驗
算法的可靠性是其能否在實際中應用最重要的依據,是整個系統能否穩定運行的決定性因素。在電力系統中每一個組成環節都需要準確度極高的運行參數,算法的不可靠所導致的數據錯誤,極有可能使某個環節的運行輕載或過載,進而影響到整個電力系統的平衡。
為了驗證MD5 算法的可靠性,設置4 個不同的初始消息作為算例,將這4 個算例逐一進行五次MD5 運算,通過各個算例所得出MD5 值是否都是唯一值及是否符合MD5值的形式判斷其可靠性。將每個算例輸入進程序“明文”框內,點擊“MD5 加密”執行計算,“密文”框內將生成對應的MD5 值,每個算例重復得到結果如表1 所示。

表1 MD5算法的可靠性驗證
以上算例的輸出MD5 值均為16 進制形式,32 位的單向散列值,且通過每一個算例的5 次結果對比可以看出輸出的結果穩定、均為一個唯一值。綜合上述仿真結果,驗證了MD5 算法具有可靠性。
2.2.2 MD5 算法安全性檢驗
算法的安全性是衡量該算法加密性能好壞的標準,算法安全性高使得被加密文件具有更高的保密性。安全性較高的加密系統還能防止非專業人員的越權操作和錯誤操作,影響電力設備的穩定運行。要證明MD5 算法的安全性,就要從它的抗修改性和強抗碰撞性進行驗證。因此下面設置一條算例“obsfg-5179GAZ2066”,將該算例依次進行增位、缺失、篡改、大小寫轉換的操作,使用程序計算原算例和修改后算例的MD5 值,把每次修改得出的結果與原值的結果進行對比,通過對比出的差異分析MD5 算法的安全性。對比結果如表2 所示。

表2 算法的安全性驗證
由仿真結果可以看出,雖然只是修改其中的一位,或是大小寫的轉換,但所得出的MD5 值卻是完全不同的。這些細微改變而導致結果的巨大差異驗證了MD5 算法具有極高的安全性。
■2.2.3 MD5 算法時效性檢驗
運算時間是算法是否實用一個重要指標。高效的運算速度使在固定的時間內能處理更多的數據量。假如一個加密算法的速度慢到需要幾小時甚至幾天的時間來完成,將完全不能滿足電力系統通信這樣信息量多、文件大的需求,同時影響用戶的體驗。為驗證MD5 算法的時效性,設置兩組不同長度的算例作為對照,每組算例均運算20 次,將運算所用時間取平均值,通過對比分析算法的時效性。以下為兩組算例的初始值,其中A 組都為16bit 字符串,B 組都為64bit字符串。兩組算例運算所用的時間如表3 所示。

表3 MD5算法的時效性檢驗
從表格給出的結果可以看出MD5 算法的運算速度較快快,運算上述算例所需時間均為微秒級別,并且通過對比可以看出16bit 字符串與64bit 字符串運算所用平均時間相差甚微,幾乎可以歸于系統誤差,因此說明了MD5 算法時效性之高,即使應用在電力通信上可行。
本文分析了MD5 的算法原理和應用場合,并從電力通信網絡的特點出發,針對整個系統的安全性,對MD5 算法的時效性進行仿真驗證。由結果可得,MD5 輸出的均為128 位的信息摘要,對數據的運算時間效率高。