林鑾云
(瑞芯微電子股份有限公司,福建 福州 350000)
計(jì)算機(jī)網(wǎng)絡(luò)在很大程度上改變了現(xiàn)代人的生活方式,但人們在使用計(jì)算機(jī)軟件時(shí)經(jīng)常會(huì)遇到個(gè)人信息泄露或重要文件被盜取等安全問題,數(shù)據(jù)加密技術(shù)的出現(xiàn)讓這一問題得到了有效解決。數(shù)據(jù)加密技術(shù)是一種專門用來保護(hù)網(wǎng)絡(luò)信息數(shù)據(jù)不被盜取或篡改的強(qiáng)有力安全措施,它通過特定的加密算法對(duì)文件賦予了超高的加密與解密能力,在很大程度上提高了密碼被破譯的難度。
計(jì)算機(jī)軟件在使用的過程中,由于某些數(shù)據(jù)、命令或程序的入侵,會(huì)造成計(jì)算機(jī)軟件無法正常運(yùn)行,而入侵計(jì)算機(jī)系統(tǒng)導(dǎo)致系統(tǒng)癱瘓的這些數(shù)據(jù)、命令或程序就被稱為計(jì)算機(jī)“病毒”。計(jì)算機(jī)“病毒”自身的特性有很多,包括潛伏性、針對(duì)性、隱蔽性、傳染性、破壞性以及可執(zhí)行性。計(jì)算機(jī)“病毒”實(shí)質(zhì)上就是一種程序和指令,它們在計(jì)算機(jī)上可以大量自我復(fù)制,破壞性極強(qiáng)。
隨著互聯(lián)網(wǎng)技術(shù)與信息技術(shù)的高度發(fā)展,“黑客”集團(tuán)所掌握的計(jì)算機(jī)技術(shù)水平遠(yuǎn)遠(yuǎn)高于普通用戶,人們已經(jīng)無法運(yùn)用傳統(tǒng)的計(jì)算機(jī)安全軟件去抵御“黑客”的攻擊。總的來看,“黑客”對(duì)網(wǎng)民的攻擊往往存在著一定的目的性,他們不僅是要竊取用戶的個(gè)人信息,更是為了盜取用戶賬戶里的財(cái)產(chǎn),對(duì)用戶的經(jīng)濟(jì)利益造成了嚴(yán)重威脅。“黑客”攻擊在情節(jié)嚴(yán)重時(shí),甚至?xí)罢麄€(gè)局域網(wǎng)的安全系統(tǒng),進(jìn)而使更多的用戶遭到攻擊。
“木馬”實(shí)質(zhì)上也是一種程序,其性質(zhì)與計(jì)算機(jī)病毒相類似,但在攻擊方式上與計(jì)算機(jī)病毒有所不同。“木馬”通常是偽裝成對(duì)話框或者游戲來引誘用戶點(diǎn)擊進(jìn)去,讓用戶完全沒有任何防備。正是由于“木馬”具有偽裝性特點(diǎn),才會(huì)導(dǎo)致用戶一不小心就會(huì)將其誤點(diǎn)。這時(shí)“木馬”就會(huì)潛伏于一個(gè)計(jì)算機(jī)軟件內(nèi),該軟件會(huì)在用戶打開計(jì)算機(jī)時(shí)自動(dòng)啟動(dòng)[1]。啟動(dòng)過后,“木馬”程序就會(huì)將用戶的IP地址以及預(yù)先設(shè)定的端口告知給攻擊者。攻擊者一旦接收到這些信息,就會(huì)通過遠(yuǎn)程操控來修改計(jì)算機(jī)軟件用戶所設(shè)置的參數(shù),從而暗自盜取用戶電腦內(nèi)的重要文件和數(shù)據(jù)。
數(shù)據(jù)加密標(biāo)準(zhǔn)(Data Eneryption Standard,DES)算法是一種非常典型的對(duì)稱加密算法,其工作原理按照分組的方式進(jìn)行,通過“替換”與“換位”這兩種加密組塊方法的循環(huán)使用,完成對(duì)計(jì)算機(jī)軟件加密的過程。DES由于算法速度快,其密鑰較為簡短,因此成為當(dāng)下使用廣泛的一種加密標(biāo)準(zhǔn)。下面對(duì)DES算法的工作原理展開詳細(xì)分析。
首先,DES加密算法將輸入的明文劃分為64位數(shù)據(jù)組塊。其次,對(duì)其進(jìn)行加密。密鑰的長度為64位,其中,包含56位有效密鑰,另外8位用于奇偶校驗(yàn)。DES加密算法的加密過程可表示為:64位明文→初始置換→16輪迭代變換→逆置換→64位密文。先將64位明文數(shù)據(jù)組塊進(jìn)行一個(gè)初始置換(記為IP);再將其平均分成左右兩個(gè)部分,每一部分均為32位數(shù)據(jù);最后在密鑰的控制下,進(jìn)入到16輪迭代變換中。在這一環(huán)節(jié),所有輪次的迭代變換都要先將輸入的右半部分32位數(shù)據(jù)擴(kuò)展為48位,再與通過64位密鑰而產(chǎn)生的48位的某一子密鑰進(jìn)行異或運(yùn)算;利用S盒將所得到的48位數(shù)據(jù)結(jié)果壓縮成為32位,對(duì)這32位數(shù)據(jù)進(jìn)行置換,再與輸入的左半部分32位數(shù)據(jù)展開異或運(yùn)算,進(jìn)而得出新一輪迭代變換的右半部分?jǐn)?shù)據(jù)[2]。與此同時(shí),將此輪迭代輸入數(shù)據(jù)的右半部分作為該輪迭代輸出數(shù)據(jù)的左半部分。這樣一來,一輪的迭代過程就此完成。經(jīng)過16輪的迭代變換后,會(huì)生成一個(gè)新的64位數(shù)據(jù)。值得注意的是,最后一輪迭代之后得到的結(jié)果其左半部分與右半部分不再進(jìn)行變換。這是為了讓加密與解密能夠運(yùn)用同一個(gè)算法。最后,對(duì)64位的新數(shù)據(jù)進(jìn)行一次逆置換(記為IP-1),進(jìn)而得到最終的64位密文。
綜上所述,16輪迭代變換是DES算法的核心內(nèi)容,其中每一輪迭代變換后的左、右半部輸出為:
Li=Ri-1
Ri=Li-1⊕f(Ri-1,ki)
其中,i代表迭代輪次;⊕代表按位異或運(yùn)算;f所表示的內(nèi)容包括密鑰產(chǎn)生、擴(kuò)展變換E,S盒壓縮置換運(yùn)算P等在內(nèi)的一系列加密運(yùn)算。
運(yùn)用數(shù)學(xué)符號(hào)可將整個(gè)DES算法的加密過程進(jìn)行如下表示:
L0R0←IP(<64bit明文>)
Li←Ri-1
Ri←Li-1⊕f(Ri-1,ki)
<64bit密文>←IP-1(R16L16)
其中,i=1,2,3…16。
DES算法的解密與加密過程基本上沒有明顯的區(qū)別,其根本不同點(diǎn)就在于16輪的迭代變換中,解密過程所使用的子密鑰正好與加密過程相反。也就是說,解密時(shí)第1輪迭代所使用的子密鑰是加密時(shí)最后一輪的子密鑰,第2輪迭代所使用的子密鑰是加密時(shí)第15輪的子密鑰,……最后一輪迭代所使用的子密鑰是加密時(shí)的第1輪子密鑰。
公開密鑰的加密密鑰與解密密鑰是完全不相同的,無法在加密密鑰的基礎(chǔ)上得出解密密鑰。公開密鑰的加密密鑰是公開可見的,可以通過相應(yīng)的公開文檔查找到,而解密密鑰是保密的,必須擁有解密密鑰權(quán)限才能破解密碼。因此,加密密鑰也叫做公鑰(Public Key),解密密鑰也叫做私鑰(Private Key)。計(jì)算機(jī)用戶只要將自己的私鑰保存好就可以,無需對(duì)公鑰進(jìn)行保密。由于任何使用公鑰的用戶都可以通過公開渠道獲得公鑰,因此這里不會(huì)出現(xiàn)對(duì)稱加密算法中的密鑰傳送問題。用戶之間的通信采用多少公鑰算法,就有多少密鑰與之相對(duì)。公開密鑰與對(duì)稱加密算法相比,在管理上要更加簡便。
2.2.1 RSA算法的工作原理
公開密鑰中第一個(gè)被提出的就是RSA算法,它是目前功能最完善的一種公開密鑰算法。RSA算法可以同時(shí)進(jìn)行加密以及數(shù)宇簽名,并且可以有效防止密碼受到攻擊,RSA算法可以作為公開密鑰的數(shù)據(jù)加密標(biāo)準(zhǔn)[3]。RSA算法的基礎(chǔ)非常簡單,可以讓兩個(gè)質(zhì)數(shù)自由地相乘。但由于當(dāng)時(shí)就分解其乘積較為困難,因此將乘積公開設(shè)為加密密鑰。RSA算法具有高度的安全性,它的公鑰與私鑰是一對(duì)質(zhì)數(shù)的函數(shù)。從一個(gè)公鑰和密文中將明文恢復(fù)的難度相當(dāng)于分解這兩個(gè)質(zhì)數(shù)的乘積之難度。下面通過舉例說明來分析RSA算法的基本工作原理。
用戶任選兩個(gè)質(zhì)數(shù),假設(shè)所選質(zhì)數(shù)為u=7,v=17。計(jì)算得出n=u×v=7×17=119,將n的結(jié)果公開。
利用歐拉函數(shù)計(jì)算u的值:
Φ(n)=(u-1)×(v-1)=6×16=96
從1到Φ(n)之間任選一個(gè)與Φ(n)互質(zhì)的數(shù)k作為公鑰,此處將其設(shè)為5。
用j代表解密密鑰,使得(j×k)modΦ(n)=1,則可得出j的值為77。
丟棄u=7和v=17,公開n=119和k=5,使其成為公鑰;對(duì)j=77進(jìn)行保密,將其作為私鑰。如此一來,便可使用公鑰將所傳送的信息加密,若信息接收者有私鑰,便可以讓信息得以解密。
例:若所傳信息為t=19,則可計(jì)算出如下相應(yīng)密文:
e=tkmod(n)=195mod(119)=66
將密文66發(fā)送給接接受者,接收者可根據(jù)收到的密文信息用私鑰將明文恢復(fù):
t=ejmod(n)=6677mod(119)=19
上述,所舉例子中的兩個(gè)質(zhì)數(shù)u與v的數(shù)值不是很大,但從中可以看出,通過u與v從而計(jì)算得出n值的過程并不復(fù)雜,通過n=119得出u=7,v=17則具有一定的困難。筆者在實(shí)際的應(yīng)用過程中,所用到的u與v都會(huì)是較大的上百位的十進(jìn)制質(zhì)數(shù),那樣一來,從n找出u,v的值就會(huì)難上加難,幾乎不可能破解。因此,該算法的運(yùn)算過程其實(shí)是單方向的,這樣的運(yùn)算特性也讓RSA算法具有了更高的安全性。
2.2.2 公開密鑰算法在網(wǎng)絡(luò)安全中的應(yīng)用
(1)混合加密系統(tǒng)。公開密鑰算法與對(duì)稱加密算法相比之下的優(yōu)勢是無需對(duì)加密密鑰與解密密鑰同步進(jìn)行保密,所以在保障網(wǎng)絡(luò)安全中得到了更加廣泛的應(yīng)用。然而,RSA算法的公開密鑰算法也存在一定的缺點(diǎn),如公鑰算法較為復(fù)雜[4]。在對(duì)信息進(jìn)行加密與解密時(shí),因?yàn)闀?huì)涉及大數(shù)字的冪運(yùn)算,其中的運(yùn)算量通常會(huì)高過對(duì)稱加密算法成百上千甚至上萬倍,所以該算法的加密與解密在速度上要比對(duì)稱加密算法慢得多。由此可以得出,用戶通過網(wǎng)絡(luò)上傳信息時(shí),尤其是信息量較大的時(shí)候,通常不需要使用公開密鑰算法進(jìn)行加密,而是建立混合加密系統(tǒng)來對(duì)信息進(jìn)行加密。在混合加密系統(tǒng)中,運(yùn)用對(duì)稱加密算法(通常是DES算法)對(duì)需要傳送的信息進(jìn)行加密與解密;同時(shí),運(yùn)用公開密鑰算法(通常是RSA算法)再為對(duì)稱加密算法加一層密鑰。如此一來,便可充分發(fā)揮這兩種加密算法各自的優(yōu)勢。在綜合兩種加密算法的體系下,不僅提高了信息加密與解密的速度,也讓對(duì)稱加密算法對(duì)密鑰能夠進(jìn)行有效管理與保存,這是當(dāng)前解決網(wǎng)絡(luò)信息傳輸安全問題非常有效且實(shí)用的一種方式。
(2)數(shù)字簽名。用戶通過互聯(lián)網(wǎng)進(jìn)行信息的傳輸不同于傳統(tǒng)的紙質(zhì)書信,不具有在其上面簽名或加蓋印章的功能。因此,人們經(jīng)常會(huì)遇到以下這些情況:信息發(fā)送者對(duì)自己發(fā)送的信息不承認(rèn);信息接收者肆意篡改收到的信息或者偽造一份虛假文件,誣陷是對(duì)方傳送的等。基于以上這些問題的頻發(fā),數(shù)字簽名可以有效解決網(wǎng)絡(luò)信息傳送的身份驗(yàn)證問題。一個(gè)功能完備的數(shù)字簽名系統(tǒng)應(yīng)具備解決以下問題的功能:其一,信息接收者能夠?qū)π畔l(fā)送者在文件上的簽名加以核實(shí),若雙方對(duì)于簽名的真?zhèn)未嬖诋愖h,那么第三方應(yīng)該可以通過進(jìn)一步驗(yàn)證簽名的真?zhèn)蝸泶_定事實(shí);其二,信息發(fā)送者在文件發(fā)送完成后必須承認(rèn)自己對(duì)文件的簽名;其三,只有信息發(fā)送者可以簽名,其他任何人皆不可偽造簽名,當(dāng)然更不能偽造或篡改傳送的信息。數(shù)字簽名技術(shù)必須同時(shí)滿足以上三點(diǎn)內(nèi)容,才能高效解決網(wǎng)絡(luò)信息傳輸過程中產(chǎn)生的身份驗(yàn)證問題。
數(shù)字簽名技術(shù)是基于密碼技術(shù)而生成的,所以它的安全性取決于密碼系統(tǒng)的安全性。現(xiàn)如今,用戶廣泛使用公鑰加密算法(RSA算法)讓數(shù)字簽名得以實(shí)現(xiàn)[5]。數(shù)字簽名技術(shù)的工作原理如下:
筆者設(shè)定M為信息發(fā)送者,他需要將一個(gè)文件A發(fā)送給信息接收者N,A通過私鑰SKM對(duì)文件A進(jìn)行解密運(yùn)算,并對(duì)文件進(jìn)行簽名,而后將運(yùn)算結(jié)果PSKM(A)發(fā)送給N。當(dāng)接收者N收到來自M的PSKM(A)后,就可以運(yùn)用已知M的公鑰PKM對(duì)文件進(jìn)行加密運(yùn)算,從而得出D=(ESKM(A)),最后核實(shí)并簽名。
下面對(duì)上述流程進(jìn)一步分析:
(1)因?yàn)橹挥蠱知道自己的私鑰SKM,其他人均不知,所以也只有M可以將PSKM(A)生成。因此,接收者N自然也就相信文件PSKM(A)是通過M的簽名后所發(fā)送的。
(2)若M不承認(rèn)文件A是自己傳送給N的,則N可將文件A以及PSKM(A)展示給第三方。此時(shí),第三方運(yùn)用已知的M的公鑰SKM就可以很容易地判斷出文件A是否為M所發(fā)送。
(3)若接收者N想要竄改文件A或偽造一份虛假文件B,那么N將不能將PSKM(B)出示給第三方,此時(shí)就可以證明該文件是N偽造的。
以上整個(gè)過程只是信息發(fā)送者M(jìn)對(duì)文件A進(jìn)行數(shù)字簽名的實(shí)現(xiàn),并沒有對(duì)文件A進(jìn)行加密,倘若文件PSKM(A)被他人在途中截獲,而且知悉了發(fā)送者M(jìn)的身份,那么他通過查閱相關(guān)文檔便可得到M的公鑰,即PKM,進(jìn)而獲取到文件A的全部內(nèi)容。
為了給文件A加密,用戶可以通過以下模型來實(shí)現(xiàn):在發(fā)送文件PSKM(A)前,需利用接收者N的公鑰PKN給文件加密;當(dāng)N接收到文件后,先用自己的私鑰SKN解密文件,再對(duì)簽名進(jìn)行驗(yàn)證。由此一來,便可實(shí)現(xiàn)簽名與加密的同步效果。
當(dāng)前,我國計(jì)算機(jī)用戶對(duì)數(shù)字簽名技術(shù)的應(yīng)用越來越普遍,尤其體現(xiàn)在一些大型的商業(yè)活動(dòng)中。例如,在購物時(shí)運(yùn)用電子數(shù)據(jù)交換,就會(huì)使用到數(shù)字簽名技術(shù)。我國的一些國有銀行系統(tǒng)中,數(shù)字簽名技術(shù)也被廣泛地應(yīng)用,通過數(shù)字簽名來驗(yàn)證用戶的身份信息十分方便。如今,計(jì)算機(jī)網(wǎng)絡(luò)已普及到千家萬戶,計(jì)算機(jī)軟件的使用會(huì)不斷增加,數(shù)字簽名終將會(huì)成為人們?nèi)粘I畈豢扇鄙俚囊豁?xiàng)技術(shù)。
隨著數(shù)據(jù)加密技術(shù)在計(jì)算機(jī)軟件用戶中的不斷普及,計(jì)算機(jī)“病毒”“黑客”“木馬”等攻擊造成的用戶信息泄露、文件數(shù)據(jù)丟失等現(xiàn)象逐漸降低,也大大提高了互聯(lián)網(wǎng)信息傳輸?shù)男省R虼耍藗冊谑褂糜?jì)算機(jī)常規(guī)軟件或使用殺毒軟件以及反病毒軟件時(shí),一定要對(duì)數(shù)據(jù)加密技術(shù)加以運(yùn)用,為信息的傳送創(chuàng)造一個(gè)安全、可靠的環(huán)境。