一種網(wǎng)絡(luò)傳輸信息加密解密系統(tǒng)研制的方法
由于計(jì)算機(jī)網(wǎng)絡(luò)具有系統(tǒng)復(fù)雜性、資源共享、邊界不可知、傳輸信息的路由不確定性、電磁輻射等原因使其本身的安全性很低[1]。網(wǎng)絡(luò)在我國(guó)起步比較晚,一些與網(wǎng)絡(luò)相關(guān)的技術(shù)還不成熟,在現(xiàn)有的許多網(wǎng)絡(luò)中至今還在傳輸裸信息。據(jù)調(diào)查[2],目 前我國(guó)企業(yè)采用信息加密的僅8%。即使傳輸經(jīng)過(guò)加密的數(shù)據(jù),大多采用的是傳統(tǒng)密碼體制。由此看來(lái),網(wǎng)絡(luò)的安全系數(shù)一般都比較小。數(shù)據(jù)加密是確保計(jì)算機(jī)網(wǎng)絡(luò)重要的安全機(jī)制,但是,利用公鑰體制,尤其是利用RSA算法的實(shí)用加密解密軟件系統(tǒng)很少。因此,對(duì)網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)加密和解密進(jìn)行深入研究,開發(fā)出適用于網(wǎng)絡(luò)環(huán)境下的信息加密解密系統(tǒng)很有意義。
網(wǎng)絡(luò)加密的方式主要有鏈路加密、端對(duì)端加密[3]。端對(duì)端加密的工作僅在目的節(jié)點(diǎn)和源節(jié)點(diǎn)進(jìn)行,所以成本低、使用靈活。本文采用這種方式,其處于網(wǎng)絡(luò)OSI模型的應(yīng)用層或表示層。
1公鑰密碼體制
公鑰密碼體制的基本思想是:密鑰分為加密密鑰E,解密密鑰D和公鑰M。加密密鑰E和公鑰M可以公開,D不能公開。加密時(shí)采用以E,M為參數(shù)的函數(shù)f1(E,M)進(jìn)行加密,解密時(shí)采用以D,M為參數(shù)的函數(shù)f2(D,M)進(jìn)行解密。
在傳統(tǒng)密碼體制的算法中,知道了加密過(guò)程,則可以推出解密過(guò)程。而在公鑰密碼體制的算法中,即使知道了加密過(guò)程,也不可能推出解密過(guò)程。迄今為止發(fā)明的公鑰密碼體制的算法容易用數(shù)學(xué)術(shù)語(yǔ)來(lái)描述的,而他的保密強(qiáng)度是建立在一種特定的已知數(shù)學(xué)問題求解困難性這個(gè)假設(shè)上的。因而計(jì)算加密密鑰E,公鑰M和解密密鑰D需要特殊的算法和步驟。以確保不能從加密密鑰E和公鑰M推導(dǎo)出解密密鑰D。
RSA體制是一種新型公鑰密碼體制[4]。該公鑰密碼體制以數(shù)論為基礎(chǔ),其原理是:求2個(gè)大素?cái)?shù)的乘積很容易實(shí)現(xiàn),但將一個(gè)大的合數(shù)分解成2個(gè)大素?cái)?shù)很難實(shí)現(xiàn)。RSA加密和解密運(yùn)算的數(shù)學(xué)表達(dá)式為:
C=XE(mod M)
X=CD(mod M)
其中:X為明文,C為密文,(0 (1)M是2個(gè)大素?cái)?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個(gè)條件,(E,M)便可作公鑰對(duì),(D,M)作密鑰對(duì)。
例如:P=101,Q=113,那么M=P×Q=11 413,φ(M)=(P-1)×(Q-1)=100×112=11 200,與φ( M)互素的整數(shù)E有無(wú)數(shù)個(gè),因此,假設(shè)E=3 533,根據(jù)公式ED=1mod(φ(M)),求得D =6 597。假設(shè)明文X=9 726,那么加密時(shí)密文C=9 7263 533mod (11 413)=5 7 61,在解密時(shí)明文Y=5 7616 597mod(11 413)=9 726。因此只要加密密鑰E,解密密鑰D和公共密鑰M選擇正確,加密前的明文X和解密后的明文Y一定是相同的。
2系統(tǒng)設(shè)計(jì)
網(wǎng)絡(luò)信息加密解密系統(tǒng)包含2個(gè)主要部分,主機(jī)程序和客機(jī)程序。主機(jī)程序具有以下功能:密鑰參數(shù)的選擇、對(duì)文件的加密解密、加解密文件的校驗(yàn)、修改用戶密碼;而客機(jī)程序則只有一個(gè)加密模塊和用戶重置加密密鑰E和公鑰M。顯然客機(jī)程序只能進(jìn)行加密,所用的密鑰都是由主機(jī)程序的密鑰選擇模塊給出的,而解密密鑰D則只有主機(jī)程序用戶個(gè)人知道。通過(guò)這種方法,在任意一個(gè)計(jì)算機(jī)網(wǎng)絡(luò)內(nèi)部,某節(jié)點(diǎn)A上運(yùn)行主機(jī)程序,而與該節(jié)點(diǎn)通信的節(jié)點(diǎn)B上運(yùn)行客機(jī)程序。如果B有重要的數(shù)據(jù)往A發(fā)送,則該節(jié)點(diǎn)就用A節(jié) 點(diǎn)所發(fā)布的加密密鑰E和公鑰M為參數(shù)對(duì)重要數(shù)據(jù)進(jìn)行加密,然后再將加密后的數(shù)據(jù)發(fā)送到A,由于這些數(shù)據(jù)都經(jīng)過(guò)特殊的處理,不用再為數(shù)據(jù)的安全而擔(dān)心。然后A用相應(yīng)的D和M對(duì)數(shù)據(jù)進(jìn)行解密,還原出相應(yīng)的數(shù)據(jù)。當(dāng)一個(gè)網(wǎng)絡(luò)的許多高級(jí)用戶之間需要頻繁地互相傳遞信息,并且還要求高級(jí)用戶既能夠?qū)π枰l(fā)送的數(shù)據(jù)加密,也能夠?qū)κ盏降慕?jīng)過(guò)加密的數(shù)據(jù)進(jìn)行解密。這就要求在網(wǎng)絡(luò)的高級(jí)用戶的計(jì)算機(jī)上運(yùn)行網(wǎng)絡(luò)信息加密解密系統(tǒng)的主機(jī)程序。
該系統(tǒng)的設(shè)計(jì)分為密鑰選擇模塊、文件加密模塊、文件解密模塊、數(shù)據(jù)驗(yàn)證模塊、修改密碼模塊、系統(tǒng)簡(jiǎn)介模塊和退出系統(tǒng)模塊等7大模塊。
3程序的模塊設(shè)計(jì)
3.1密鑰選擇模塊的設(shè)計(jì)
選擇RSA密碼體制的密鑰對(duì)主要是確定E,D,M。因?yàn)槊荑€對(duì)的選擇不能隨意產(chǎn)生,且P,Q的位數(shù)越多,攻破該密碼體制所需時(shí)間也越長(zhǎng),系統(tǒng)就越安全。但位數(shù)越多,速度也越慢。該模塊可以讓用戶自己來(lái)選擇素?cái)?shù)位數(shù)。
為方便用戶,該模塊不需用戶直接輸入2個(gè)大的素?cái)?shù)P、Q的值,而是輸入他們的鄰近似任意數(shù),然后由計(jì)算機(jī)根據(jù)特定的算法在鄰近值附近找。得到2個(gè)大素?cái)?shù)后,也得到公鑰M=P×Q,從而也得到M的歐拉數(shù)φ(M)=(P-1)×(Q-1)。
大于P,Q并和φ(M)互素的數(shù)有無(wú)數(shù)個(gè),所以依舊采用由用戶輸入鄰近值,系統(tǒng)在其附近尋找一個(gè)滿足條件的整數(shù)E(其中用歐幾里德算法判斷E是否與φ(M)互素),得到加密密鑰E之后,將進(jìn)行尋找密鑰的最后一步:求出解密密鑰D,這可以根據(jù)式ED=1 mo d(φ(M))求得。
經(jīng)過(guò)以上3個(gè)步驟,計(jì)算機(jī)輔助產(chǎn)生密鑰對(duì)的工作結(jié)束。隨后,計(jì)算機(jī)會(huì)提示是否將新產(chǎn)生的參數(shù)值更新為系統(tǒng)默認(rèn)的參數(shù)值。用戶有兩種選擇,更新和不更新。
3.2加密模塊的設(shè)計(jì)
文件在計(jì)算機(jī)里是以“0”、“1”的形式存儲(chǔ),一定的二進(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)過(guò)RSA的加密運(yùn)算得到密文C=XE(mod M)。C是一個(gè)十進(jìn)制的數(shù)(0≤C≤M),然后將十進(jìn)制的數(shù)C寫到目標(biāo)文件。
3.3解密模塊的設(shè)計(jì)
解密運(yùn)算為X"=CD(mod M)。解密模塊和加密模塊原理基本相同,只是從文件里讀取需要解密的數(shù)據(jù)時(shí)必須與經(jīng)過(guò)加密算法后寫入目標(biāo)文件時(shí)的數(shù)據(jù)相同。這一點(diǎn)是系統(tǒng)能 否正確運(yùn)行的前提條件。例如:如果將數(shù)據(jù)1 819加密后得到2 867,在解密時(shí),你從 文件中讀出來(lái)的數(shù)必須是2 867,否則經(jīng)過(guò)解密算法后得到的十進(jìn)制數(shù)X"與加密時(shí)從文件里讀出的X不相同,從而導(dǎo)致數(shù)據(jù)丟失。加密模塊和解密模塊是系統(tǒng)的核心模塊。
3.4數(shù)據(jù)驗(yàn)證模塊設(shè)計(jì)
數(shù)據(jù)驗(yàn)證模塊是用戶對(duì)自己本人計(jì)算機(jī)上的本地文件進(jìn)行加密和解密用的。如果多人共同使用一臺(tái)計(jì)算機(jī)最好的方法就是用自己的加密密鑰E和公鑰M為參數(shù)對(duì)數(shù)據(jù)加密,然后用相應(yīng) 的解密密鑰D和公鑰M對(duì)加密后的數(shù)據(jù)進(jìn)行解密。再將加密前的源文件和解密后的目標(biāo)文件相比較。如果相同,則刪除加密前的源文件和解密后的目標(biāo)文件,而只保留經(jīng)過(guò)加密后的文件。這樣其他用戶就無(wú)法查看該文件。需要這些數(shù)據(jù)時(shí),進(jìn)入網(wǎng)絡(luò)信息加密解密系統(tǒng),輸入合適的解密密鑰D和公共密鑰M,將文件恢復(fù)。
3.5修改用戶密碼模塊設(shè)計(jì)
為了保證本系統(tǒng)的安全性,只有本軟件的合法用戶才能進(jìn)入網(wǎng)絡(luò)信息加密解密系統(tǒng)。在軟件開始運(yùn)行時(shí)要求用戶輸入用戶密碼,如果用戶3次輸入不正確,將終止系統(tǒng)的正常運(yùn)行。當(dāng)用戶輸入密碼泄露后,可以通過(guò)修改用戶密碼模塊來(lái)解決。
該模塊也采用RSA算法設(shè)計(jì),系統(tǒng)的合法用戶必須知道該模塊正確的解密密鑰、公鑰和用戶密碼,才能進(jìn)入系統(tǒng)。否則系統(tǒng)將拒絕進(jìn)入。
由于解密密鑰、公鑰和用戶密碼可以隨時(shí)更改,這就增加了非法用戶進(jìn)入系統(tǒng)的難度,將系統(tǒng)的不安全系數(shù)降至最低,從而保證系統(tǒng)的安全。
4結(jié)語(yǔ)
Java是新一代的網(wǎng)絡(luò)編程語(yǔ)言,他有良好的移植性、面向?qū)ο?、安全性和交互性比較高,因 此,上述各個(gè)模塊的設(shè)計(jì)全部采用Java編寫。
網(wǎng)絡(luò)傳輸信息加密解密系統(tǒng)經(jīng)在實(shí)際網(wǎng)絡(luò)環(huán)境 下測(cè)試表明:安裝簡(jiǎn)單、人機(jī)界面良好、保密性高、實(shí)用性強(qiáng)、可對(duì)任何類型的文件加密解 密。
參考文獻(xiàn)
[1]陳 運(yùn).信息加密原理[M].成都:電子科技大學(xué)出版社,1990
[2]張 周.我國(guó)企業(yè)開始重視網(wǎng)絡(luò)安全[J].計(jì)算機(jī)世界A9版,2000,( 3)
[3]張文政,孟慶志.通信保密技術(shù)[J]. 計(jì)算機(jī)應(yīng)用,1998,(6):25-28
[4] 王 勇.RSA公開密匙密碼體制的密匙生成研究[J].計(jì)算機(jī)應(yīng)用研究,1998,(3):34 -37
作者:
金 冉1,蔣 艷2
(1.浙江萬(wàn)里學(xué)院 計(jì)算機(jī)系浙江 寧波315100;
2.西塢中學(xué)浙江 奉化315505)
評(píng)論