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

3程序的模塊設計
3.1密鑰選擇模塊的設計
選擇RSA密碼體制的密鑰對主要是確定E,D,,M,。因為密鑰對的選擇不能隨意產(chǎn)生,且P,,Q的位數(shù)越多,,攻破該密碼體制所需時間也越長,系統(tǒng)就越安全,。但位數(shù)越多,,速度也越慢。該模塊可以讓用戶自己來選擇素數(shù)位數(shù),。
為方便用戶,,該模塊不需用戶直接輸入2個大的素數(shù)P、Q的值,,而是輸入他們的鄰近似任意數(shù),,然后由計算機根據(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之后,,將進行尋找密鑰的最后一步:求出解密密鑰D,這可以根據(jù)式ED=1 mo d(φ(M))求得,。
經(jīng)過以上3個步驟,計算機輔助產(chǎn)生密鑰對的工作結束,。隨后,,計算機會提示是否將新產(chǎn)生的參數(shù)值更新為系統(tǒng)默認的參數(shù)值,。用戶有兩種選擇,,更新和不更新,。
3.2加密模塊的設計
文件在計算機里是以“0”、“1”的形式存儲,,一定的二進制比特流將表示一定大小的十進制整數(shù)。例如: 二進制比特流“10101010”將表示十進制170,,因此從文件的開始處按順序讀取一定位數(shù)的二進制比特流,,并且這一定位數(shù)二進制比特流表示的十進制數(shù)X(X必須小于M),。經(jīng)過RSA的加密運算得到密文C=XE(mod M),。C是一個十進制的數(shù)(0≤C≤M),,然后將十進制的數(shù)C寫到目標文件,。
3.3解密模塊的設計
解密運算為X"=CD(mod M)。解密模塊和加密模塊原理基本相同,,只是從文件里讀取需要解密的數(shù)據(jù)時必須與經(jīng)過加密算法后寫入目標文件時的數(shù)據(jù)相同,。這一點是系統(tǒng)能否正確運行的前提條件。例如:如果將數(shù)據(jù)1 819加密后得到2 867,,在解密時,,你從 文件中讀出來的數(shù)必須是2 867,否則經(jīng)過解密算法后得到的十進制數(shù)X"與加密時從文件里讀出的X不相同,,從而導致數(shù)據(jù)丟失。加密模塊和解密模塊是系統(tǒng)的核心模塊,。
3.4數(shù)據(jù)驗證模塊設計
數(shù)據(jù)驗證模塊是用戶對自己本人計算機上的本地文件進行加密和解密用的。如果多人共同使用一臺計算機最好的方法就是用自己的加密密鑰E和公鑰M為參數(shù)對數(shù)據(jù)加密,,然后用相應的解密密鑰D和公鑰M對加密后的數(shù)據(jù)進行解密,。再將加密前的源文件和解密后的目標文件相比較。如果相同,,則刪除加密前的源文件和解密后的目標文件,,而只保留經(jīng)過加密后的文件,。這樣其他用戶就無法查看該文件。需要這些數(shù)據(jù)時,,進入網(wǎng)絡信息加密解密系統(tǒng),,輸入合適的解密密鑰D和公共密鑰M,將文件恢復,。
3.5修改用戶密碼模塊設計
為了保證本系統(tǒng)的安全性,只有本軟件的合法用戶才能進入網(wǎng)絡信息加密解密系統(tǒng),。在軟件開始運行時要求用戶輸入用戶密碼,,如果用戶3次輸入不正確,將終止系統(tǒng)的正常運行,。當用戶輸入密碼泄露后,可以通過修改用戶密碼模塊來解決,。
該模塊也采用RSA算法設計,,系統(tǒng)的合法用戶必須知道該模塊正確的解密密鑰,、公鑰和用戶密碼,才能進入系統(tǒng),。否則系統(tǒng)將拒絕進入,。
由于解密密鑰,、公鑰和用戶密碼可以隨時更改,,這就增加了非法用戶進入系統(tǒng)的難度,將系統(tǒng)的不安全系數(shù)降至最低,,從而保證系統(tǒng)的安全,。
4結語
Java是新一代的網(wǎng)絡編程語言,他有良好的移植性,、面向?qū)ο?、安全性和交互性比較高,,因 此,,上述各個模塊的設計全部采用Java編寫,。
網(wǎng)絡傳輸信息加密解密系統(tǒng)經(jīng)在實際網(wǎng)絡環(huán)境 下測試表明:安裝簡單,、人機界面良好、保密性高,、實用性強,、可對任何類型的文件加密解 密。
參考文獻
[1]陳 運.信息加密原理[M].成都:電子科技大學出版社,,1990
[2]張 周.我國企業(yè)開始重視網(wǎng)絡安全[J].計算機世界A9版,,2000,( 3)
[3]張文政,,孟慶志.通信保密技術[J]. 計算機應用,1998,(6):25-28
[4] 王 勇.RSA公開密匙密碼體制的密匙生成研究[J].計算機應用研究,1998,(3):34 -37
作者:
金 冉1,,蔣 艷2
(1.浙江萬里學院 計算機系浙江 寧波315100,;
2.西塢中學浙江 奉化315505)