□文/張 天 顏秀銘
(河北聯(lián)合大學(xué) 河北·唐山)
隨著網(wǎng)絡(luò)技術(shù)的發(fā)展,網(wǎng)絡(luò)安全成為當(dāng)今網(wǎng)絡(luò)社會的焦點,我們經(jīng)常需要一種措施來保護我們的數(shù)據(jù),防止被一些懷有不良用心的人看到或者破壞。因此,在客觀上就需要一種強有力的安全措施來保護機密數(shù)據(jù)不被竊取或篡改?,F(xiàn)代的電腦加密技術(shù)就是適應(yīng)了網(wǎng)絡(luò)安全的需要而應(yīng)運產(chǎn)生的,它為進行一般的電子商務(wù)活動提供了安全保障,如在網(wǎng)絡(luò)中進行文件傳輸、電子郵件往來和進行合同文本的簽署等。其實加密技術(shù)也不是什么新生事物,只不過應(yīng)用在當(dāng)今電子商務(wù)、電腦網(wǎng)絡(luò)中還是近幾年的歷史。
數(shù)據(jù)加密的基本過程就是對原來為明文的文件或數(shù)據(jù)按某種算法進行處理,使其成為不可讀的一段代碼,通常稱為“密文”,使其只能在輸入相應(yīng)的密鑰之后才能顯示出本來內(nèi)容,通過這樣的途徑來達到保護數(shù)據(jù)不被非法竊取、閱讀的目的。該過程的逆過程為解密,即將該編碼信息轉(zhuǎn)化為其原來數(shù)據(jù)的過程。
在傳統(tǒng)上,我們有幾種方法來加密數(shù)據(jù)流,所有這些方法都可以用軟件很容易地實現(xiàn)。當(dāng)我們只知道密文的時候,是不容易破譯這些加密算法的。最好的加密算法對系統(tǒng)性能幾乎沒有影響,并且還可以帶來其他內(nèi)在的優(yōu)點。例如,大家都知道的pkzip,它既壓縮數(shù)據(jù)又加密數(shù)據(jù)。又如,dbms的一些軟件包總是包含一些加密方法以使復(fù)制文件功能對一些敏感數(shù)據(jù)是無效的,或者需要用戶的密碼。所有這些加密算法都要有高效的加密和解密能力。
在所有的加密算法中最簡單的一種就是“置換表”算法,這種算法也能很好地達到加密的需要。每一個數(shù)據(jù)段(總是一個字節(jié))對應(yīng)著“置換表”中的一個偏移量,偏移量所對應(yīng)的值就輸出成為加密后的文件。加密程序和解密程序都需要一個這樣的“置換表”。事實上,80x86 cpu系列就有一個指令“xlat”在硬件級來完成這樣的工作。這種加密算法比較簡單,加密解密速度都很快,但是一旦這個“置換表”被對方獲得,那這個加密方案就完全被識破了。更進一步講,這種加密算法對于黑客破譯來講是相當(dāng)直接的,只要找到一個“置換表”就可以了。這種方法在計算機出現(xiàn)之前就已經(jīng)被廣泛的使用。
對這種“置換表”方式的一個改進就是使用2個或者更多的“置換表”,這些表都是基于數(shù)據(jù)流中字節(jié)的位置的,或者基于數(shù)據(jù)流本身。這時,破譯變得更加困難,因為黑客必須正確地做幾次變換。通過使用更多的“置換表”,并且按偽隨機的方式使用每個表,這種改進的加密方法已經(jīng)變得很難破譯。比如,我們可以對所有的偶數(shù)位置的數(shù)據(jù)使用a表,對所有的奇數(shù)位置的數(shù)據(jù)使用b表,即使黑客獲得了明文和密文,他想破譯這個加密方案也是非常困難的,除非黑客確切的知道用了兩張表。
與使用“置換表”相類似,“變換數(shù)據(jù)位置”也在計算機加密中使用。但是,這需要更多的執(zhí)行時間。從輸入中讀入明文放到一個buffer中,再在buffer中對他們重排序,然后按這個順序再輸出。解密程序按相反的順序還原數(shù)據(jù)。這種方法總是和一些別的加密算法混合使用,這就使得破譯變得特別困難,幾乎有些不可能了。例如,有這樣一個詞,變換字母的順序后,slient可以變?yōu)閘isten,所有的字母都沒有變化,沒有增加也沒有減少,只是字母之間的順序變化了。
還有一種更好的加密算法,只有計算機可以做,就是字/字節(jié)循環(huán)移位和xor操作。如果我們把一個字或字節(jié)在一個數(shù)據(jù)流內(nèi)做循環(huán)移位,使用多個或變化的方向(左移或右移),就可以迅速產(chǎn)生一個加密的數(shù)據(jù)流。這種方法是很好的,破譯它就更加困難!而且,更進一步是,如果再使用xor操作,按位做異或操作,就使得破譯密碼更加困難了。如果使用偽隨機的方法,要產(chǎn)生一系列的數(shù)字,我們可以使用fibbonaci數(shù)列得到一個結(jié)果,然后循環(huán)移位這個結(jié)果的次數(shù),將使破譯此密碼變的幾乎不可能!但是,使用fibbonaci數(shù)列這種偽隨機的方式所產(chǎn)生的密碼對我們的解密程序來講是非常容易的。
在一些情況下,我們想能夠知道數(shù)據(jù)是否已經(jīng)被篡改了或被破壞了,這時就需要產(chǎn)生一些校驗碼,并且把這些校驗碼插入到數(shù)據(jù)流中。這樣做對數(shù)據(jù)的防偽與程序本身都是有好處的。但是感染計算機程序的病毒不會在意這些數(shù)據(jù)或程序是否加過密,是否有數(shù)字簽名,所以加密程序在每次下載到內(nèi)存要開始執(zhí)行時,都要檢查一下本身是否被病毒感染,對于需要加、解密的文件都要做這種檢查。很自然,這樣一種方法體制應(yīng)該保密,因為病毒程序的編寫者將會利用這些來破壞別人的程序或數(shù)據(jù)。因此,在一些反病毒或殺病毒軟件中一定要使用加密技術(shù)。
循環(huán)冗余校驗是一種典型的校驗數(shù)據(jù)的方法。對于每一個數(shù)據(jù)塊,它使用位循環(huán)移位和xor操作來產(chǎn)生一個16位或32位的校驗和,這使得丟失一位或兩個位的錯誤一定會導(dǎo)致校驗和出錯。這種方式很久以來就應(yīng)用于文件的傳輸,例如xmodem-crc。這種方法已經(jīng)成為標(biāo)準(zhǔn),而且有詳細的文檔。但是,基于標(biāo)準(zhǔn)crc算法的一種修改算法對于發(fā)現(xiàn)加密數(shù)據(jù)塊中的錯誤和文件是否被病毒感染是很有效的。
一個好的加密算法的重要特點之一是具有這種能力:可以指定一個密碼或密鑰,并用它來加密明文,不同的密碼或密鑰產(chǎn)生不同的密文。加密算法分為兩種方式:對稱密鑰算法和非對稱密鑰算法。所謂對稱密鑰算法就是加密解密都使用相同的密鑰,非對稱密鑰算法是加密解密使用不同的密鑰。非常著名的pgp公鑰加密以及rsa加密方法都是非對稱加密算法。加密密鑰(即公鑰)與解密密鑰(即私鑰)是非常不同的。從數(shù)學(xué)理論上講,幾乎沒有真正不可逆的算法存在。例如,對于一個輸入‘a(chǎn)’執(zhí)行一個操作得到結(jié)果‘b’,那么我們可以基于‘b’,做一個相對應(yīng)的操作,導(dǎo)出輸入‘a(chǎn)’。在一些情況下,對于每一種操作,我們可以得到一個確定的值,或者該操作沒有定義(比如,除數(shù)為0)。對于一個沒有定義的操作來講,基于加密算法,可以成功地防止把一個公鑰變換成為私鑰。因此,要想破譯非對稱加密算法,找到那個唯一的密鑰,唯一的方法只能是反復(fù)的試驗,而這需要大量的處理時間。rsa加密算法使用了兩個非常大的素數(shù)來產(chǎn)生公鑰和私鑰。即使從一個公鑰中通過因數(shù)分解可以得到私鑰,但這個運算所包含的計算量是非常巨大的,以至于在現(xiàn)實上是不可行的。加密算法本身也是很慢的,這使得使用rsa算法加密大量的數(shù)據(jù)變得有些不可行。這就使得一些現(xiàn)實中加密算法都基于rsa加密算法。pgp算法(以及大多數(shù)基于rsa算法的加密方法)使用公鑰來加密一個對稱加密算法的密鑰,然后再利用一個快速的對稱加密算法來加密數(shù)據(jù)。這個對稱算法的密鑰是隨機產(chǎn)生的,是保密的,因此得到這個密鑰的唯一方法就是使用私鑰來解密。
現(xiàn)在又出現(xiàn)了一種新的加密算法,據(jù)說是幾乎不可能被破譯的。這個算法在1998年6月1日才正式公布。簡單地說,這種算法就是使用一系列的數(shù)字(比如說128位密鑰),產(chǎn)生一個可重復(fù)的但高度隨機化的偽隨機數(shù)字序列。一次使用256個表項,使用隨機數(shù)序列來產(chǎn)生密碼轉(zhuǎn)表,把256個隨機數(shù)放在一個矩陣中,然后對他們進行排序,使用這樣一種方式(我們要記住最初的位置)來產(chǎn)生一個隨意排序的表,表中的數(shù)字在0~255之間。下面提供了一些原碼使我們明白是如何來做的。假如產(chǎn)生了一個具體的256字節(jié)表,讓隨機數(shù)產(chǎn)生器接著產(chǎn)生這個表中其余的數(shù),以至于每個表是不同的;下一步,就是產(chǎn)生解碼表,表的順序是隨機的,產(chǎn)生這256個字節(jié)的隨機數(shù)使用的是二次偽隨機,使用了兩個額外的16位密碼。現(xiàn)在,已經(jīng)有了兩張轉(zhuǎn)換表,基本的加密解密就是這樣的。
(一)在電子商務(wù)方面的應(yīng)用。電子商務(wù)要求顧客可以在網(wǎng)上進行各種商務(wù)活動,不必擔(dān)心自己的信用卡會被人盜用。在過去,用戶為了防止信用卡的號碼被竊取到,一般是通過電話訂貨,然后使用用戶的信用卡進行付款?,F(xiàn)在人們開始用RSA(一種公開/私有密鑰)的加密技術(shù),提高信用卡交易的安全性,從而使電子商務(wù)走向?qū)嵱贸蔀榭赡堋?/p>
許多人都知道NETSCAPE公司是Internet商業(yè)中領(lǐng)先技術(shù)的提供者,該公司提供了一種基于RSA和保密密鑰的應(yīng)用于因特網(wǎng)的技術(shù),被稱為安全插座層(SSL)。也許很多人知道Socket,它是一個編程界面,并不提供任何安全措施,而SSL不但提供編程界面,而且向上提供一種安全的服務(wù),SSL3.0現(xiàn)在已經(jīng)應(yīng)用到了服務(wù)器和瀏覽器上,SSL2.0則只能應(yīng)用于服務(wù)器端。SSL3.0用一種電子證書來實行身份進行驗證后,雙方就可以用保密密鑰進行安全的會話了。它同時使用“對稱”和“非對稱”加密方法,在客戶與電子商務(wù)的服務(wù)器進行溝通的過程中,客戶會產(chǎn)生一個Session Key,然后客戶用服務(wù)器端的公鑰將Session Key進行加密,再傳給服務(wù)器端,在雙方都知道Session Key后,傳輸?shù)臄?shù)據(jù)都是以Session Key進行加密與解密的,但服務(wù)器端發(fā)給用戶的公鑰必需先向有關(guān)發(fā)證機關(guān)申請,以得到公證?;赟SL3.0提供的安全保障,用戶就可以自由訂購商品并且給出信用卡號了,也可以在網(wǎng)上和合作伙伴交流商業(yè)信息并且讓供應(yīng)商把訂單和收貨單從網(wǎng)上發(fā)過來,這樣可以節(jié)省大量的紙張,為公司節(jié)省大量的電話、傳真費用。
(二)加密技術(shù)在VPN中的應(yīng)用。現(xiàn)在,越來越多的公司走向國際化,一個公司可能在多個國家都有辦事機構(gòu)或銷售中心,每一個機構(gòu)都有自己的局域網(wǎng)LAN,但在當(dāng)今網(wǎng)絡(luò)社會,用戶希望將這些LAN聯(lián)結(jié)在一起組成一個公司的廣域網(wǎng),這就是通常所說的虛擬專用網(wǎng)(VPN)。當(dāng)數(shù)據(jù)離開發(fā)送者所在的局域網(wǎng)時,該數(shù)據(jù)首先被用戶湍連接到互聯(lián)網(wǎng)上的路由器進行硬件加密,數(shù)據(jù)在互聯(lián)網(wǎng)上是以加密的形式傳送的,當(dāng)達到目的LAN的路由器時,該路由器就會對數(shù)據(jù)進行解密,這樣目的LAN中的用戶就可以看到真正的信息了。
[1] 郭麗.關(guān)于網(wǎng)絡(luò)安全之?dāng)?shù)據(jù)加密技術(shù)[J].安徽電子信息職業(yè)技術(shù)學(xué)院學(xué)報,2008.1.
[2] 房玉勇.談計算機數(shù)據(jù)加密概念及方法[J].科技信息,2011.3.
[3] 王淑鳳.初探加密技術(shù)概念、加密方法以及應(yīng)用[J].科技資訊,2007.3.