電子操作票的加密方法

操作票是保證電力系統(tǒng)安全運行的重要措施之一,隨著計算機及網(wǎng)絡(luò)技術(shù)的飛速發(fā)展,電子操作票系統(tǒng)在電力企業(yè)中的廣泛使用,使“無紙化”作業(yè)目標(biāo)的實現(xiàn)變得日漸輕松,但是信息安全的問題也越來越突出。僅靠一個口令來把守著數(shù)據(jù)庫的安全大門,已經(jīng)變得越來越力不從心。因此,引人數(shù)據(jù)文件加密與解密手段,來進(jìn)一步加強電網(wǎng)的數(shù)據(jù)信息安全,成了勢在必行的一大措施。

一、電子操作票原理

目前企業(yè)面臨的計算環(huán)境和過去有很大的變化,許多數(shù)據(jù)資源能夠依靠網(wǎng)絡(luò)來遠(yuǎn)程存取,而且越來越多的通信依賴于公共網(wǎng)絡(luò),而這些環(huán)境并不保證實體問的安全通信,數(shù)據(jù)在傳輸過程可能被其他人讀取或篡改。

加密將防止數(shù)據(jù)被查看或修改,并在原本不安全的信道上提供安全的通信信道,達(dá)到以下目的:

(1)保密性:防止用戶的標(biāo)識或數(shù)據(jù)被讀?。?/p>

(2)數(shù)據(jù)完整性:防止數(shù)據(jù)被更改;

(3)身份驗證:確保數(shù)據(jù)發(fā)自特定的一方。

1、加密算法

加密算法是一些公式和法則,它規(guī)定了明文和密文之間的變換方法。例如:明文是“Cood mom-ing",將字母的順序顛倒一下,密文是“gninromdooG",解密時只要將密文字母的順序顛倒回來就可以了;又如:明文是“Hello”,加密算法是將每個字符的ASCII碼加1,也就是取字母表中的后一個字符,得到的密文就是“Ifkkp”。解密時,只要將每個字符的ASCII碼減1,就能得到明文“Hello"了。當(dāng)然,這些只是最基本的加密思想,離實際應(yīng)用還有很大的距離。

2、XOR算法原理

由于加密系統(tǒng)的反復(fù)使用,僅靠加密算法已難以保證信息的安全了。

經(jīng)研究發(fā)現(xiàn),異或運算最適合用于簡易加密、解密運算,這種方法的原理是:當(dāng)一個數(shù)A和另一個數(shù)B進(jìn)行異或運算會生成另一個數(shù)C,如果再將C和B進(jìn)行異或運算則C又會還原為A。

例如:

16480 XOR 35791=52143

52143 XOR 35791=16480

相對于其他的簡易加密算法,XOR算法的優(yōu)點如下:

(1)加密算法簡單,對于高級語言很容易能實現(xiàn);

(2)速度快,可以在任何時候、任何地方使用;

(3)對任何字符都是有效的,不像有些簡易加密算法,只對西文字符有效,對中文加密后再解密無法還原為原來的字符。

3、密鑰管理

事實上,加密系統(tǒng)的2個基本要素是加密算法和密鑰管理。

加密信息的安全可靠依賴于密鑰系統(tǒng),密鑰是控制加密算法和解密算法的關(guān)鍵信息,它的產(chǎn)生、傳輸、存儲等工作是十分重要的。

一個加密系統(tǒng)S可以用數(shù)學(xué)符號描述如下:

S={P,C,K,E,D}

其中:

P:明文空問,表示全體可能出現(xiàn)的明文集合;

C:密文空間,表示全體可能出現(xiàn)的密文集合;

K:密鑰空問,密鑰是加密算法中的可變參數(shù);

E:加密算法,由一些公式、法則或程序構(gòu)成;

D:解密算法,它是E的逆。

當(dāng)給定密鑰K時,各符號之問有如下關(guān)系:

C= EK(P),對明文P加密后得密文C

P= DK(C)=DK(EK(P)),對密文C解密后得明文P

如用E表示E的逆,D表示D的逆,則有:

Ek=(DK)’Dk=(EK)’

因此,加密設(shè)計主要是確定E、D、K。

4、常用的加密算法

DES( Data Encryption Standard):數(shù)據(jù)加密標(biāo)準(zhǔn),速度較快,適用于加密大雖數(shù)據(jù)的場合;

3DES( Triple DES):是基于DES,對一塊數(shù)據(jù)用3個不同的密鑰進(jìn)行3次加密,強度更高;

RC2和RC4:用變長密鑰對大量數(shù)據(jù)文件進(jìn)行加密,比DES快;

IDEA(lntemational Data Encryption Algorithm)國際數(shù)據(jù)加密算法,使用128位密鑰提供非常強的安全性;

RSA由RSA公司發(fā)明,是一個支持變長密鑰的公共密鑰算法,需要加密的文件快的長度也是可變的;

DSA(Digital Signature Algorithm)數(shù)字簽名算法,是一種標(biāo)準(zhǔn)的DSS(數(shù)字簽名標(biāo)準(zhǔn));

AES( Advanced Encryption Standard)高級加密標(biāo)準(zhǔn),是下一代的加密算法標(biāo)準(zhǔn),速度快,安全級別高,目前AES標(biāo)準(zhǔn)的一個實現(xiàn)是Rijndael算法;

BLOWFISH,它使用變長的密鑰,長度可達(dá)448位,運行速度很快;

MD5( Message Digest Algonthm 5)是RSA數(shù)據(jù)安全公司開發(fā)的一種單向散列算法,MD5被廣泛使用,可以用來把不同長度的數(shù)據(jù)塊進(jìn)行暗碼運算成—個128位的數(shù)值;

SHA(Secure Hash Algorithm)這是一種較新的散列算法,可以對任意長度的數(shù)據(jù)運算生成一個160位的數(shù)值;

MAC(Message Authentication Code)消息認(rèn)證代碼,是一種使用密鑰的單向函數(shù),可以用它們在系統(tǒng)上或用戶之間認(rèn)證文件或消息。HMAC(用于消息認(rèn)證的密鑰散列法)就是這種函數(shù)的一個例子。

CRC( Cyclic Redundancy Check)循環(huán)冗余校驗碼,CRC校驗由于實現(xiàn)簡單,檢錯能力強,被廣泛使用在各種數(shù)據(jù)校驗應(yīng)用中。占用系統(tǒng)資源少,用軟硬件均能實現(xiàn),是進(jìn)行數(shù)據(jù)傳輸差錯檢測地一種很好的手段(CRC并不是嚴(yán)格意義上的散列算法,但它的作用與散列算法大致相同,所以歸于此類)。

二、電子操作票的加密實際應(yīng)用

1、編程環(huán)境

原來的電子操作票系統(tǒng)是采用VB6.0進(jìn)行編寫的,對數(shù)據(jù)文件加密解密的支持不是很理想。這次采用了Microsoft Visual Studi0 2005來開發(fā),編程語言使用了Microsoft Visual Basic 2005,即VB. NetoMicrosoft Visual Basic 2005從Visual Basic語言演變而來,是一種較為高效地生成類型安全和面向?qū)ο蟮膽?yīng)用程序而設(shè)計的語言。Visual Basic允許開發(fā)人員開發(fā)而向Windows、Web和移動設(shè)備的程序。與所有面向Microsoft.NET Framework的語言開發(fā)人員開發(fā)而向Windows、Web和移動設(shè)備的程序。與所有面向Microsoft.NET Framework的語言一樣,使用Visual Basic編寫的程序都具有安全性和語言互操作性方面的優(yōu)點。

Microsoft.NET Framcwork應(yīng)用程序建立在公共語言運行庫的服務(wù)之上,并利用了.NET Frame-work類庫。常見的加密和編碼算法都已經(jīng)在。NETFramework中得到了實現(xiàn),為編碼人員提供了極大的便利性,實現(xiàn)這些算法的名稱空間是:System. Se-curity.Cryptography 。System.Security.Cryptography命名空間提供加密服務(wù),包括安全的數(shù)據(jù)編碼和解碼,以及許多其他操作,例如散列法、隨機數(shù)字生成和消息身份驗證。

2、電子操作票的加密實際應(yīng)用中的問題

(1)空密碼

許多運行人員為了貪圖方便,將自己的密碼設(shè)為空密碼。當(dāng)密文為空字符串時,普通的加密運算方法,運算后得到的還是空字符串。因此,當(dāng)攻克了數(shù)據(jù)庫,并且把密碼密文都清空后,在前臺,人員的密碼就是空的了。事實上,用普通的加密算法,如移位法、替換法等,甚至是XOR算法,明文是空字符串,由于沒有任何字符參與加密運算,因此得到的密文也是空字符串。這樣就給密碼加密帶來了安全隱患,如圖1所示。

電子操作票的加密方法

(2)相同密碼

由于程序中采用了同一種加密算法,因此,相同的密碼明文通過加密運算后會得到相同的密碼密文。假設(shè)某人打開了數(shù)據(jù)庫密碼列表,雖然他人的密碼經(jīng)過加密,無法識別密碼明文,但是,可以將自己的密碼密文復(fù)制替換掉他人的密碼密文,這樣,就能用別人的身份加上自己的密碼在系統(tǒng)中通過驗證。因此,這也是一個安全隱患,如圖
2所示。

電子操作票的加密方法

(3)電子操作票的加密實際應(yīng)用中的問題解決方法

鑒于以上的問題,制定以下解決方法:

首先,在解決空密碼的問題時,利用MD5碼加密的原理,對輸入的數(shù)據(jù)進(jìn)行補位操作。就是把1個任意長度的字符串變換成一定長的字符串,例如:將5位長度的字符串補到16位,空位全部用0補滿,直至成為kx16位,k為正整數(shù)。

然后,將該字符串按字節(jié)拆分開,放人變量數(shù)組中,然后再分別對每一字節(jié)進(jìn)行加密運算。

最終將結(jié)果拼合成一個完整的字符串,這樣就得到了完整的加密文本。這樣的好處是,無論明文是什么長度,密文總是以16的整數(shù)倍出現(xiàn)。一般在16位以下的明文,加密后都是16位的密文,這樣也掩蓋了明文的長度信息,提高了安全性。

另外,根據(jù)不同的用戶,設(shè)置了不同的密鑰。或者說,為每個用戶在加密運算時,增加了一個不同的參數(shù)。一般是以用戶名作為密鑰,由于不同的用戶,經(jīng)過不同的密鑰加密,即使用了相同的明文和相同的加密算法,加密后也會得到不同的密文。

這樣,即使有人打開了數(shù)據(jù)庫,將自己的密碼密文復(fù)制替換掉別人的密碼密文,也不能在系統(tǒng)使用他人的賬號通過驗證。而且大多情況下,這種替換會使系統(tǒng)在解密運算就產(chǎn)生錯誤。從而告知用戶密碼被非法修改。解決方案如圖3所示。

電子操作票的加密方法

(4)程序代碼

電子操作票的加密方法

以上代碼是2個加密和解密的全局函數(shù),在程序中只要引用該函數(shù)就可以了。

密文= Enc(明文,密鑰)

明文= Dec(密文,密鑰)

以上代碼在Microsoft Visual Basic 2005中編譯通過。

在系統(tǒng)的關(guān)鍵信息上,運用了加密解密的方法,是保障電力企業(yè)信息安全的重要技術(shù)手段。利用了加密手段,防止了操作票的重要數(shù)據(jù)被讀取或修改,確保了數(shù)據(jù)來自特定的用戶,保障了操作票數(shù)據(jù)的真實性和嚴(yán)肅性,在原本不甚安全的環(huán)境下,創(chuàng)造了一片安全的空間。雖然,這些技術(shù)理論還是一門新興的理論,但通過全面研究與積極應(yīng)用,將更加完善,為保障電力企業(yè)的信息安全發(fā)揮其應(yīng)有的作用。

小知識之散列法

散列法(Hashing)或哈希法是一種將字符組成的字符串轉(zhuǎn)換為固定長度(一般是更短長度)的數(shù)值或索引值的方法,稱為散列法,也叫哈希法。由于通過更短的哈希值比用原始值進(jìn)行數(shù)據(jù)庫搜索更快,這種方法一般用來在數(shù)據(jù)庫中建立索引并進(jìn)行搜索,同時還用在各種解密算法中。