網(wǎng)絡(luò)傳輸信息加密解密系統(tǒng)研制的方法
據(jù)調(diào)查,目前我國企業(yè)采用信息加密的僅8%。即使傳輸經(jīng)過加密的數(shù)據(jù),大多采用的是傳統(tǒng)密碼體制。由此看來,網(wǎng)絡(luò)的安全系數(shù)一般都比較小。數(shù)據(jù)加密是確保計算機(jī)網(wǎng)絡(luò)重要的安全機(jī)制,但是,利用公鑰體制,尤其是利用RSA加密算法的來實現(xiàn)加密解密軟件系統(tǒng)很少。因此,對網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)加密和解密進(jìn)行深入研究,開發(fā)出適用于網(wǎng)絡(luò)環(huán)境下的信息加密解密系統(tǒng)意義非常的重大。
網(wǎng)絡(luò)加密的方式主要有鏈路加密、端對端加密。端對端加密的工作僅在目的節(jié)點和源節(jié)點進(jìn)行,所以成本低、使用靈活。
一、公鑰加密體制
公鑰加密體制的基本思想是:密鑰分為加密密鑰E,解密密鑰D和公鑰M。加密密鑰E和公鑰M可以公開,D不能公開。加密時采用以E,M為參數(shù)的函數(shù)f1(E,M)進(jìn)行加密,解密時采用以D,M為參數(shù)的函數(shù)f2(D,M)進(jìn)行解密。在傳統(tǒng)加密體制的算法中,知道了加密過程,則可以推出解密過程。而在公鑰加密體制的算法中,即使知道了加密過程,也不可能推出解密過程。迄今為止發(fā)明的公鑰加密體制的算法非常容易用數(shù)學(xué)術(shù)語來描述,而他的保密強度是建立在一種特定的已知數(shù)學(xué)問題求解困難性這個假設(shè)上的。因而計算加密密鑰E,公鑰M和解密密鑰D需要特殊的算法和步驟。以確保不能從加密密鑰E和公鑰M推導(dǎo)出解密密鑰D。
RSA體制是一種新型公鑰密碼體制。該公鑰密碼體制以數(shù)論為基礎(chǔ),其原理是:求2個大素數(shù)的乘積很容易實現(xiàn),但將一個大的合數(shù)分解成2個大素數(shù)很難實現(xiàn)。RSA加密和解密運算的數(shù)學(xué)表達(dá)式為:
![]()
其中:X為明文,C為密文,(0<X<M- 1,0<C<M-1)。公鑰對為(E,M),密鑰對為(D,M),E為加密密鑰,M為公鑰,D為解密密鑰。E,D,M滿足下述條件:
(1)M是2個大素數(shù)P,Q的乘積,從而M的歐拉數(shù)Υ(M)=(P- 1)×(Q- 1)。
(2)D是大于P,Q的并與Υ(M)互素的正整數(shù)。
(3)E是D關(guān)于Υ(M)的乘逆。即ED= 1 mod(φ(M))。滿足以上3個條件,(E,M)便可作公鑰對,(D,M)作密鑰對。
例如:P= 101,Q= 113,那么M=P×Q= 11 413,Υ(M)=(P- 1)×(Q- 1)= 100×112 = 11 200,與φ(M)互素的整數(shù)E有無數(shù)個,因此,假設(shè)E= 3 533,根據(jù)公式ED= 1mod(φ(M)),求得D= 6 597。假設(shè)明文X=9 726,那么加密時密文C= 9 7263 533mod(11 413)=5 761,在解密時明文Y= 5 7616 597mod(11 413)= 9 726。因此只要加密密鑰E,解密密鑰D和公共密鑰M選擇正確,加密前的明文X和解密后的明文Y一定是相同的。
二、系統(tǒng)設(shè)計
網(wǎng)絡(luò)信息加密解密系統(tǒng)包含2個主要部分,主機(jī)程序和客機(jī)程序。主機(jī)程序具有以下功能:密鑰參數(shù)的選擇、對文件的加密解密、加解密文件的校驗、修改用戶密碼;而客機(jī)程序則只有一個加密模塊和用戶重置加密密鑰E和公鑰M。顯然客機(jī)程序只能進(jìn)行加密,所用的密鑰都是由主機(jī)程序的密鑰選擇模塊給出的,而解密密鑰D則只有主機(jī)程序用戶個人知道。通過這種方法,在任意一個計算機(jī)網(wǎng)絡(luò)內(nèi)部,某節(jié)點A上運行主機(jī)程序,而與該節(jié)點通信的節(jié)點B上運行客機(jī)程序。如果B有重要的數(shù)據(jù)往A發(fā)送,則該節(jié)點就用A節(jié)點所發(fā)布的加密密鑰E和公鑰M為參數(shù)對重要數(shù)據(jù)進(jìn)行加密,然后再將加密后的數(shù)據(jù)發(fā)送到A,由于這些數(shù)據(jù)都經(jīng)過特殊的處理,不用再為數(shù)據(jù)的安全而擔(dān)心。然后A用相應(yīng)的D和M對數(shù)據(jù)進(jìn)行解密,還原出相應(yīng)的數(shù)據(jù)。當(dāng)一個網(wǎng)絡(luò)的許多高級用戶之間需要頻繁地互相傳遞信息,并且還要求高級用戶既能夠?qū)π枰l(fā)送的數(shù)據(jù)文件加密,也能夠?qū)κ盏降慕?jīng)過加密的數(shù)據(jù)進(jìn)行解密。這就要求在網(wǎng)絡(luò)的高級用戶的計算機(jī)上運行網(wǎng)絡(luò)信息加密解密系統(tǒng)的主機(jī)程序。

該系統(tǒng)的設(shè)計分為密鑰選擇模塊、文件加密模塊、文件解密模塊、數(shù)據(jù)驗證模塊、修改密碼模塊、系統(tǒng)簡介模塊和退出系統(tǒng)模塊等7大模塊。
三、程序的模塊設(shè)計
1、密鑰選擇模塊的設(shè)計
選擇RSA加密體制的密鑰對主要是確定E,D,M。因為密鑰對的選擇不能隨意產(chǎn)生,且P,Q的位數(shù)越多,攻破該加密體制所需時間也越長,系統(tǒng)就越安全。但位數(shù)越多,速度也越慢。該模塊可以讓用戶自己來選擇素數(shù)位數(shù)。為方便用戶,該模塊不需用戶直接輸入2個大的素數(shù)P、Q的值,而是輸入他們的鄰近似任意數(shù),然后由計算機(jī)根據(jù)特定的算法在鄰近值附近找。得到2個大素數(shù)后,也得到公鑰M=P×Q,從而也得到M的歐拉數(shù)φ(M)=(P- 1)×(Q- 1)。
大于P,Q并和φ(M)互素的數(shù)有無數(shù)個,所以依舊采用由用戶輸入鄰近值,系統(tǒng)在其附近尋找一個滿足條件的整數(shù)E(其中用歐幾里德算法判斷E是否與φ(M)互素),得到加密密鑰E之后,將進(jìn)行尋找密鑰的最后一步:求出解密密鑰D,這可以根據(jù)式ED= 1 mod(φ(M))求得。經(jīng)過以上3個步驟,計算機(jī)輔助產(chǎn)生密鑰對的工作結(jié)束。隨后,計算機(jī)會提示是否將新產(chǎn)生的參數(shù)值更新為系統(tǒng)默認(rèn)的參數(shù)值。用戶有兩種選擇,更新和不更新。
2、加密模塊的設(shè)計
文件在計算機(jī)里是以“0”、“1”的形式存儲,一定的二進(jìn)制比特流將表示一定大小的十進(jìn)制整數(shù)。例如:二進(jìn)制比特流“10101010”將表示十進(jìn)制170,因此從文件的開始處按順序讀取一定位數(shù)的二進(jìn)制比特流,并且這一定位數(shù)二進(jìn)制比特流表示的十進(jìn)制數(shù)X(X必須小于M)。經(jīng)過RSA的加密運算得到密文C=XE(modM)。C是一個十進(jìn)制的數(shù)(0≤C≤M),然后將十進(jìn)制的數(shù)C寫到目標(biāo)文件。
3、解密模塊的設(shè)計
解密運算為X" =CD(modM)。解密模塊和加密模塊原理基本相同,只是從文件里讀取需要解密的數(shù)據(jù)時必須與經(jīng)過加密算法后寫入目標(biāo)文件時的數(shù)據(jù)相同。這一點是系統(tǒng)能否正確運行的前提條件。例如:如果將數(shù)據(jù)1 819加密后得到2 867,在解密時,你從文件中讀出來的數(shù)必須是2 867,否則經(jīng)過解密算法后得到的十進(jìn)制數(shù)X"與加密時從文件里讀出的X不相同,從而導(dǎo)致數(shù)據(jù)丟失。加密模塊和解密模塊是系統(tǒng)的核心模塊。
4、數(shù)據(jù)驗證模塊設(shè)計數(shù)據(jù)驗證
模塊是用戶對自己本人計算機(jī)上的本地文件進(jìn)行加密和解密用的。如果多人共同使用一臺計算機(jī)最好的方法就是用自己的加密密鑰E和公鑰M為參數(shù)對數(shù)據(jù)加密,然后用相應(yīng)的解密密鑰D和公鑰M對加密后的數(shù)據(jù)進(jìn)行解密。再將加密前的源文件和解密后的目標(biāo)文件相比較。如果相同,則刪除加密前的源文件和解密后的目標(biāo)文件,而只保留經(jīng)過加密后的文件。這樣其他用戶就無法查看該文件。需要這些數(shù)據(jù)時,進(jìn)入網(wǎng)絡(luò)信息加密解密系統(tǒng),輸入合適的解密密鑰D和公共密鑰M,將文件恢復(fù)。
5、修改用戶密碼模塊設(shè)計
為了保證本系統(tǒng)的安全性,只有本軟件的合法用戶才能進(jìn)入網(wǎng)絡(luò)信息加密解密系統(tǒng)。在軟件開始運行時要求用戶輸入用戶密碼,如果用戶3次輸入不正確,將終止系統(tǒng)的正常運行。當(dāng)用戶輸入密碼泄露后,可以通過修改用戶密碼模塊來解決。
該模塊也采用RSA加密算法設(shè)計,系統(tǒng)的合法用戶必須知道該模塊正確的解密密鑰、公鑰和用戶密碼,才能進(jìn)入系統(tǒng)。否則系統(tǒng)將拒絕進(jìn)入。
由于解密密鑰、公鑰和用戶密碼可以隨時更改,這就增加了非法用戶進(jìn)入系統(tǒng)的難度,將系統(tǒng)的不安全系數(shù)降至最低,從而保證系統(tǒng)的安全。
因為Java是新一代的網(wǎng)絡(luò)編程語言,他有良好的移植性、面向?qū)ο?、安全性和交互性比較高,因此,上述各個模塊的設(shè)計全部采用Java編寫。
網(wǎng)絡(luò)傳輸信息加密解密系統(tǒng)經(jīng)在實際網(wǎng)絡(luò)環(huán)境下測試表明:安裝簡單、人機(jī)界面良好、保密性高、實用性強、可對任何類型的文件加密解密。
小知識之鏈路加密
使用鏈路加密裝置能為某鏈路上的所有報文提供傳輸服務(wù)。即經(jīng)過一臺節(jié)點機(jī)的所有網(wǎng)絡(luò)信息傳輸均需加、解密,每一個經(jīng)過的節(jié)點都必須有密碼裝置,以便解密、加密報文。如果報文僅在一部分鏈路上加密而在另一部分鏈路上不加密,則相當(dāng)于未加密,仍然是不安全的。與鏈路加密類似的節(jié)點加密方法,是在節(jié)點處采用一個與節(jié)點機(jī)相連的密碼裝置(被保護(hù)的外圍設(shè)備),密文在該裝置中被解密并被重新加密,明文不通過節(jié)點機(jī),避免了鏈路加密關(guān)節(jié)點處易受攻擊的缺點。










