近年來,隨著計(jì)算機(jī)和網(wǎng)絡(luò)技術(shù)的迅速發(fā)展,越來越多的社會(huì)團(tuán)體、機(jī)關(guān)、企事業(yè)單位建立了計(jì)算機(jī)網(wǎng)絡(luò),人們更多的將社會(huì)活動(dòng)、辦公以及科研等各個(gè)方面活動(dòng)的重心轉(zhuǎn)移到了網(wǎng)絡(luò)當(dāng)中,形成了由局域網(wǎng)絡(luò)為節(jié)點(diǎn)組成的龐大的互聯(lián)網(wǎng)絡(luò)。在互聯(lián)網(wǎng)絡(luò)節(jié)點(diǎn)之間越來越多的數(shù)據(jù)交換任務(wù)需要完成,以實(shí)現(xiàn)計(jì)算機(jī)軟、硬件資源和信息資源的共享。在互聯(lián)網(wǎng)絡(luò)這種開放系統(tǒng)中進(jìn)行數(shù)據(jù)交換,對(duì)于安全級(jí)別要求較高的數(shù)據(jù),傳輸過程中的數(shù)據(jù)安全是至關(guān)重要的。
網(wǎng)絡(luò)數(shù)據(jù)傳輸安全的核心是通過對(duì)數(shù)據(jù)發(fā)送、網(wǎng)絡(luò)傳輸、數(shù)據(jù)接收各個(gè)環(huán)節(jié)中的數(shù)據(jù)進(jìn)行加密處理,以達(dá)到實(shí)現(xiàn)數(shù)據(jù)安全的目的。保護(hù)在公用網(wǎng)絡(luò)信息系統(tǒng)中傳輸、交換和存儲(chǔ)的數(shù)據(jù)的保密性、完整性、真實(shí)性、可靠性、可用性和不可抵賴性等。而加密技術(shù)則是數(shù)據(jù)傳輸安全的核心。它通過加密算法將數(shù)據(jù)從明文加密為密文并進(jìn)行通信,密文即使被黑客截取也很難被破譯,然后通過對(duì)應(yīng)解碼技術(shù)解碼密文還原明文。
目前國際上通用的加密方法主要有對(duì)稱加密和不對(duì)稱加密,不同的加密方法有不同的特點(diǎn),在數(shù)據(jù)傳輸高安全性要求比較高的網(wǎng)絡(luò)系統(tǒng)中得到了普遍采用,例如電子商務(wù)、郵件傳輸?shù)确矫妗?br />
1 加密算法的現(xiàn)狀
密碼學(xué)是為了保證在發(fā)送者和接收者之間傳遞的數(shù)據(jù)不被第三者獲得而對(duì)要傳遞的數(shù)據(jù)進(jìn)行加密使其獲得保密的科學(xué)。通常將傳遞的數(shù)據(jù)稱為明文,為了保護(hù)明文,以將其通過某種方式變換成無法識(shí)別的密文,這個(gè)變換過程稱為加密;另一方面密文可以通過相應(yīng)的逆變換再還原成明文,這個(gè)過程稱為解密。
加密算法可以看作是一個(gè)復(fù)雜的函數(shù)變換:
C=F(M,Key)
式中:C代表密文,即加密后得到的字符序列;M代表明文,即待加密的字符序列;Key表示密鑰,是秘密選定的一個(gè)字符序列。
當(dāng)加密完成后,可以將密文通過不安全渠道送給數(shù)據(jù)接收人,只有擁有解密密鑰的數(shù)據(jù)接收人才可以對(duì)密文進(jìn)行解密,即反變換得到明文。密鑰的傳遞必須通過安全渠道。
目前通用的加密算法主要分為對(duì)稱和非對(duì)稱算法。對(duì)稱算法采用相同的密鑰進(jìn)行加密和解密。常用的對(duì)稱加密算法有AES、IDEA、RC2/RC4、DES 等,其最大的困難是密鑰分發(fā)問題,必須通過當(dāng)面或在公共傳送系統(tǒng)中使用安全的方法交換密鑰。對(duì)稱加密由于加密速度快、硬件容易實(shí)現(xiàn)、安全強(qiáng)度高,因此仍被廣泛用來加密各種信息。但對(duì)稱加密也存在著固有的缺點(diǎn):密鑰更換困難,經(jīng)常使用同一密鑰進(jìn)行數(shù)據(jù)加密,給攻擊者提供了攻擊密鑰的信息和時(shí)間。非對(duì)稱算法,采用公鑰進(jìn)行加密而利用私鑰進(jìn)行解密。公鑰是可以公開的,任何人都可以獲得,數(shù)據(jù)發(fā)送人用公鑰將數(shù)據(jù)加密后再傳給數(shù)據(jù)接收人,接收人用自己的私鑰解密。非對(duì)稱加密的安全性主要依賴難解的數(shù)學(xué)問題,密鑰的長度比對(duì)稱加密大得多,因此加密效率較低,主要使用在身份認(rèn)證、數(shù)字簽名等領(lǐng)域。非對(duì)稱加密的加密速度慢,對(duì)于大量數(shù)據(jù)的加密傳輸是不適合的。非對(duì)稱加密算法包括RSA、DH、EC、DSS等。目前比較流行的、最有名的非對(duì)稱加密算法是RSA。
RSA的安全性在于大整數(shù)因子分解的難度,其體制構(gòu)造是基于數(shù)論的歐拉定理,產(chǎn)生公開密鑰和秘密密鑰的方法為:
(1)取2個(gè)互異的大素?cái)?shù)p和q;
(2)計(jì)算n=p×q;
(3)隨機(jī)選取整數(shù)e,且e與(p-1)×(q-1)互為素?cái)?shù);
(4)另找一個(gè)數(shù)d,使其滿足(e×d)mod[(p-1)×(q-1)]=1;(n,e)即為公鑰;(n,d)為私鑰。對(duì)于明文M,用公鑰(n,e)加密可得到密文C,C=Me mod n;對(duì)于密文C,用私鑰(n,d)解密可得到明文M,M=Cd mod n。
利用當(dāng)今可預(yù)測(cè)的計(jì)算能力,在十進(jìn)制下,分解2個(gè)250位質(zhì)數(shù)的積要用數(shù)十萬年的時(shí)間,并且質(zhì)數(shù)用盡或2臺(tái)計(jì)算機(jī)偶然使用相同質(zhì)數(shù)的概率小到可以被忽略。由此可見,企圖利用公鑰和密文推斷出明文或者企圖利用公鑰推斷出私鑰的難度極其巨大,幾乎是不可行的。因此,這種機(jī)制為信息傳輸提供了很高的安全保障。
由上述內(nèi)容可以發(fā)現(xiàn),無論是對(duì)稱加密和非對(duì)稱加密的過程都是完成如下的過程:
(1)產(chǎn)生密鑰key;
(2)C=F(M,Key),即使用已經(jīng)產(chǎn)生的密鑰,通過加密算法將明文轉(zhuǎn)換為密文。
(3)數(shù)據(jù)傳輸;
(4)M=F’(C,key),即接收方使用解密算法,將密文轉(zhuǎn)換為明文。
如果需要傳輸?shù)拿魑臄?shù)據(jù)龐大,則加密和解密的算法的耗時(shí)將非常長,并且數(shù)據(jù)傳輸時(shí)也會(huì)占用大量的網(wǎng)絡(luò)資源。也就是以上的(2),(3),(4)三個(gè)過程都會(huì)占用大量的時(shí)間和資源,如果能夠降低這3個(gè)過程的時(shí)間,就會(huì)節(jié)省大量的資源,提高數(shù)據(jù)傳輸?shù)男?。通過使用哈夫曼編碼對(duì)文件進(jìn)行壓縮,就可以大大降低以上3個(gè)環(huán)節(jié)的處理時(shí)間,并同時(shí)在傳輸處理過程中減少計(jì)算機(jī)資源和網(wǎng)絡(luò)資源的占用。
2 哈夫曼編碼介紹
哈夫曼編碼是20世紀(jì)50年代由哈夫曼教授研制開發(fā)的,它借助了數(shù)據(jù)結(jié)構(gòu)當(dāng)中的樹型結(jié)構(gòu),在哈夫曼算法的支持下構(gòu)造出一棵最優(yōu)二叉樹,把這類樹命名為哈夫曼樹。因此,準(zhǔn)確地說,哈夫曼編碼是在哈夫曼樹的基礎(chǔ)之上構(gòu)造出來的一種編碼形式,它的本身有著非常廣泛的應(yīng)用。
2.1 基本原理
數(shù)據(jù)能夠被壓縮的理論依據(jù)如下:
定義1 對(duì)于給定的信源和碼符號(hào)集,若有一個(gè)惟一可譯碼,其平均碼長L小于所有其他惟一可譯碼,則稱這種碼為緊致碼或最佳碼。
定理1 哈夫曼編碼是緊致碼。
計(jì)算機(jī)文件是以字節(jié)為單位組成的,每個(gè)字節(jié)的取值為O~255。每個(gè)字節(jié)都看成字符,共256種字符。因此,每個(gè)字節(jié)都是以8個(gè)二進(jìn)制位的定長編碼表示的。由于這種定長碼也是惟一可譯碼,根據(jù)定理1有L≤8。
設(shè)某個(gè)文件有N個(gè)字節(jié)組成,則該文件總長度為8N比特。如果對(duì)該文件進(jìn)行哈夫曼編碼,則該文件總長度為LN比特。由于L≤8,所以LN≤8。所以,只要文件滿足L<8,用哈夫曼編碼總可以對(duì)其壓縮。
哈夫曼編碼是一種變長編碼,即通過使用較短的碼字來給出現(xiàn)概率較高的信源符號(hào)編碼,而出現(xiàn)概率較小的信源符號(hào)用較長的碼字來編碼,從而使平均碼長最短,達(dá)到最佳編碼的目的。由于哈夫曼編碼只能對(duì)概率已知的信源符號(hào)編碼,因此是一種統(tǒng)計(jì)編碼。
2.2 構(gòu)造哈夫曼編碼表
獲得一個(gè)文件的哈夫曼編碼表是該文件獲得壓縮與解壓的關(guān)鍵。設(shè)某個(gè)文件中含有q種字符S1,S2,…,Sq,并且統(tǒng)計(jì)出每種字符在文件中出現(xiàn)的概率分別為p(S1),p(S2),…,p(Sq),則編碼的具體方法如下:
(1)將q個(gè)信源符號(hào)按概率大小遞減排列p(S1)≥p(S2)≥…≥p(Sq);
(2)用字符‘O’和‘1’分別代表概率最小的2個(gè)信源符號(hào),并將這2個(gè)概率最小的信源符號(hào)合并成1個(gè)信源符號(hào),從而得到只包含q-1個(gè)符號(hào)的新信源,稱為縮減信源S1;
(3)把縮減信源S1的符號(hào)仍按概率大小遞減次序排列,再將其最后兩個(gè)概率最小的信源符號(hào)分別用字符‘O’和‘1’表示,并且合并成一個(gè)符號(hào),這樣又形成了q-2個(gè)信源符號(hào)的縮減信源S2;
(4)依次繼續(xù)下去,直至信源最后只剩下兩個(gè)信源符號(hào)為止,將這最后兩個(gè)信源符號(hào)分別用字符‘O’和‘1’表示;
(5)然后從最后一級(jí)縮減信源開始,進(jìn)行回推就得到每種字符所對(duì)應(yīng)的由字符‘O’和‘1’組成的字符串序列,不妨將其稱為偽碼字。
這樣,就為需要壓縮的文件建立了一個(gè)一一映射f:Si→ci=1,2,…,q。式中:Si代表不同的字符,ci代表對(duì)應(yīng)字符Si的偽碼字。
為了將偽碼字變成真正的碼字,又必須建立一個(gè)映射g:ci→ω,i=1,2,…,q。式中:ci代表不同的字符,(ωi代表對(duì)應(yīng)字符ci的碼字。該映射g 的功能是將由字符串組成的偽碼字變成二進(jìn)制數(shù),比如g(010110)=(010110)2=(22)10。從而g[f(Si)],i=1,2,…,q,就是構(gòu)造的哈夫曼編碼表。
2.3 文件壓縮過程
每從文件中讀出一個(gè)字符char,用查哈夫曼編碼表的方式得到對(duì)應(yīng)的碼字,然后用這個(gè)碼字替換相應(yīng)的字符g[f(char)]。當(dāng)文件中的所有字符都經(jīng)過了碼字替換,則得到一個(gè)比原文件要小的壓縮文件。文件之所以能夠被壓縮,是因?yàn)槊總€(gè)字符都占8個(gè)二進(jìn)制位的空間。然而,通過碼字替換相應(yīng)的字符后,有的碼字比相應(yīng)的字符的碼長要短,有的碼字比相應(yīng)的字符的碼長要長,但文件在被壓縮后總的長度比原來要短。
2.4 文件解壓過程
文件的解壓過程是文件的壓縮過程的逆過程,即將一個(gè)壓縮文件還原成它的本來面目。因?yàn)橐粋€(gè)壓縮文件是不能夠直接使用的,只有被解壓后才能使用。一個(gè)被壓縮的文件如果不能被解壓,則這種壓縮是毫無意義的。
哈夫曼編碼是即時(shí)碼,只要得到碼字c,則經(jīng)查哈夫曼編碼表得到相應(yīng)字符f-1(g-1(c)),用這個(gè)字符替換相應(yīng)的碼字就是還原的過程。因此,每從壓縮文件中讀出一個(gè)碼字,就從哈夫曼編碼表查得相應(yīng)的字符替換,當(dāng)文件中所有的碼字被替換掉,這個(gè)解壓過程也就完成了。
3 高效網(wǎng)絡(luò)安全傳輸方法設(shè)計(jì)
一個(gè)高效的數(shù)據(jù)傳輸系統(tǒng)必須保證數(shù)據(jù)在傳輸中的安全和可靠,包括信息的保密性、完整性,同時(shí)在實(shí)現(xiàn)數(shù)據(jù)傳輸中占用更少的資源。所以數(shù)據(jù)加密傳輸?shù)姆桨钢袘?yīng)包括對(duì)發(fā)送端數(shù)據(jù)的有效加密、密鑰的分配、傳輸數(shù)據(jù)的壓縮。下面主要從信息的壓縮、保密性幾個(gè)方面來考慮數(shù)據(jù)加密傳輸系統(tǒng)中的加密方案。
從哈夫曼編碼壓縮的過程可以看出,經(jīng)過該方法壓縮的數(shù)據(jù)必須使用壓縮形成的哈夫曼編碼樹才能解壓縮。對(duì)于不同的源文件,由于文件內(nèi)容的不同,形成的哈夫曼編碼樹不同。數(shù)據(jù)傳輸?shù)倪^程中需要同時(shí)傳輸壓縮數(shù)據(jù)包和相應(yīng)的哈夫曼編碼樹結(jié)構(gòu)。相對(duì)于壓縮數(shù)據(jù)包,哈夫曼編碼樹的節(jié)點(diǎn)數(shù)大大小于數(shù)據(jù)文件的數(shù)據(jù)量,如果只對(duì)哈夫曼編碼樹進(jìn)行加密,加密和解密需要處理的數(shù)據(jù)量將大大減少,對(duì)于不對(duì)稱加密算法無法處理大量數(shù)據(jù)的限制也可被克服。在數(shù)據(jù)傳輸中需要傳輸?shù)臄?shù)據(jù)量比壓縮之前需要傳輸?shù)臄?shù)據(jù)量大大降低,可以節(jié)省大量的網(wǎng)絡(luò)資源。在大規(guī)模的數(shù)據(jù)安全傳輸中,可以提高數(shù)據(jù)傳輸?shù)男屎桶踩浴?br />
在信息的保密性方面選擇RSA作為哈夫曼編碼加密傳輸系統(tǒng)中傳輸信息的加密算法,采用公鑰加密來發(fā)送哈夫曼編碼。
具體的數(shù)據(jù)傳輸實(shí)現(xiàn)的框架如圖1所示。
安全數(shù)據(jù)傳輸?shù)母鱾€(gè)模塊的功能如下:
對(duì)需要傳輸?shù)拿魑臄?shù)據(jù)進(jìn)行哈夫曼壓縮,壓縮完成后產(chǎn)生哈夫曼編碼樹的代碼集合;用哈夫曼代碼集合對(duì)原明文代碼集合進(jìn)行壓縮轉(zhuǎn)換;對(duì)哈夫曼代碼集合進(jìn)行RSA算法的公鑰加密;傳輸加密后的哈夫曼代碼集合和壓縮代碼集合;接收端收到數(shù)據(jù)后,使用私鑰解密哈夫曼
代碼集合;使用哈夫曼代碼集合接壓縮形成解壓文件。
4 結(jié)語
在數(shù)據(jù)安全傳輸過程中,通過對(duì)哈夫曼壓縮后的明文數(shù)據(jù)進(jìn)行改進(jìn)的加密,克服了非對(duì)稱加密算法加密大數(shù)據(jù)量文件的缺點(diǎn),保持了非對(duì)稱加密的安全性。通過壓縮減少了數(shù)據(jù)傳輸?shù)臄?shù)據(jù)量,節(jié)省了網(wǎng)絡(luò)帶寬的開銷,提高了數(shù)據(jù)傳輸?shù)男?。這種方法非常適合大量的數(shù)據(jù)進(jìn)行互聯(lián)網(wǎng)絡(luò)安全傳輸。此種方法只有在明文文件中數(shù)據(jù)的種類及出現(xiàn)的概率都完全相同的極端情況下,數(shù)據(jù)的傳輸效率才會(huì)降到最低。