電子商務(wù)安全技術(shù)之數(shù)據(jù)加密技術(shù)

數(shù)據(jù)加密技術(shù)是信息安全技術(shù)中一個重要的組成部分。所謂加密,就是用基于數(shù)學方法的程序和保密的密鑰對信息進行編碼,把計算機數(shù)據(jù)變成一堆雜亂無章難以理解的字符串,也就是把明文變成密文。這樣,即使別人得到了密文,也無法辨認原文。所以,加密可以有效地對抗信息的被攔截以及被竊取。加密是由加密過程和解密過程組成的。一般地,發(fā)送方在發(fā)送消息前先用加密程序?qū)⒚魑募用艹擅芪?,接收方在接收到消息后,用解密程序?qū)⒚芪脑俳饷艹擅魑?。所以說,解密是加密的逆過程。在進行加密過程時需要兩個輸入項:一個是明文,還有一個是稱為加密密鑰的獨立數(shù)據(jù)值。與此類似,解密過程則需要密文和解密密鑰。密鑰從表面上來看就像是一串隨機的二進制位串,密鑰的長度即位數(shù)取決于特定的加密系統(tǒng)。加密最明顯的作用就是提供機密性。這里,明文代表了未經(jīng)保護的敏感數(shù)據(jù),而相應(yīng)的密文則可以在不被信任的環(huán)境中傳輸,因為如果加密系統(tǒng)比較好的話,那些沒有解密密鑰的人就無法把密文恢復成明文,從而密文對他來說根本就沒有意義。除了提供機密性外,加密系統(tǒng)還可以提供其他安全功能。

加密系統(tǒng)有兩種基本的形式:對稱加密系統(tǒng),也稱為私有密鑰加密系統(tǒng);不對稱加密系統(tǒng),也稱為公開密鑰加密系統(tǒng)。兩種加密系統(tǒng)有不同的特點,采用不同的方式來提供安全服務(wù)。

一、對稱加密系統(tǒng)

(一)對稱加密對稱

加密系統(tǒng)早在 20 世紀 70 年代就開始在商業(yè)網(wǎng)絡(luò)中運用了。對稱加密又叫做私有密鑰加密,其特點是數(shù)據(jù)的發(fā)送方和接收方使用的是同一把私有密鑰,即把明文加密成密文和把密文解密成明文用的是同一把私有密鑰。利用私有密鑰進行對稱加密的過程是:首先發(fā)送方用自己的私有密鑰對要發(fā)送的信息進行加密;接著發(fā)送方將加密后的信息通過網(wǎng)絡(luò)傳送給接收方;然后接收方用發(fā)送方進行加密的那把私有密鑰對接收到的加密信息進行解密,得到信息明文。

對稱加密系統(tǒng)對于一個比較好的對稱加密系統(tǒng)來說,除非在解密時能提供正確的密鑰,否則是不可能利用解密功能來獲得明文信息的。對稱加密系統(tǒng)既可以對密碼塊進行操作,也可以對密碼流進行操作。在密碼塊加密方式中,加密是對 n 位長度的固定大小的明文塊進行操作,形成也是 n 位長度的固定大小的密文塊。這里,n 的長度一般為 64 或 128 位。解密則是對 n 位長度的密文塊進行操作,形成 n 位長度的明文塊。在密碼流加密方式中,加密是對明文信息或任意長度的數(shù)據(jù)流進行操作,形成同樣長度的密文。密碼流加密一般是將數(shù)據(jù)作為字符序列進行處理,這里的一個字符可以是一位,也可以是某個固定長度的位數(shù)。密碼流一般是建筑在密碼塊的基礎(chǔ)之上的,所以可以根據(jù)各種不同的密碼塊的運作模式來定義密碼流的功能。由美國聯(lián)邦政府和 ISO 標準定義的密文塊鏈(CBC)和密文反饋(CFB)是兩種常用的操作模式。使用對稱加密對信息進行加密和解密的速度很快,效率也很高,但需要仔細保存密鑰。

使用對稱加密技術(shù)可以簡化加密的處理,進行電子商務(wù)的交易雙方不必彼此研究和交換專用的加密算法,而可以采用相同的加密算法并只需要交換共享的專用密鑰。如果進行通信的雙方能夠確保專用密鑰在密鑰交換階段未曾泄露過,那么數(shù)據(jù)的機密性和完整性就可以通過隨數(shù)據(jù)一起發(fā)送的數(shù)據(jù)摘要來實現(xiàn)。由于加密與解密有著共同的算法,從而計算速度非常迅速,且使用方便,計算量小,加密效率高,所以對稱加密算法廣泛用于對大量數(shù)據(jù)文件的加密過程中。對稱加密技術(shù)的主要缺點是密鑰的管理比較困難,因為交易雙方必須要持有同一把密鑰,且不能讓他人知道。一旦密鑰泄露,則信息就失去了保密性,發(fā)送方和接收方再進行通信就必須要使用新的密鑰。而把新密鑰發(fā)送給接收方也是件困難的事情,因為必須要對傳送的新密鑰進行加密,而這就又要求有一把新密鑰。采用私有密鑰的另一個問題是其規(guī)模很難適應(yīng)互聯(lián)網(wǎng)這樣的大環(huán)境,因為如果某一交易方有 n 個貿(mào)易關(guān)系的話,那他就要維護 n 把專用密鑰,因為每把密鑰對應(yīng)了一個交易方。

(二)對稱加密算法

對稱加密算法有很多,下面是幾種常見的對稱加密算法:

1、 數(shù)據(jù)加密標準(DES)

DES 于 1977 年被接納為美國聯(lián)邦標準,又于 1981 年被采納為金融業(yè)標準,是近 20 年來用于保護不加密的政府信息和金融業(yè)交易信息的主要算法。DES是一種密碼塊加密方法,采用了64位長度的數(shù)據(jù)塊和56位長度的密鑰。DES可以有效地抵御攻擊,從其誕生一直到1998年都沒有被公開破解過。但是1998 年,Electronic Frontier基金會耗資250000美元建造了一個用來破解 DES算法的處理器,名叫“ Deep Crack”?!?Deep Crack”能在三天的時間里擊敗 RSA安全公司的挑戰(zhàn),破解 DES 密鑰。隨后,解決類似的挑戰(zhàn)就變得更快更容易了。

2、高級加密標準(AES)

基于對 DES 存在某些缺陷的認識,1997 年美國商務(wù)部開始了 AES 研究項目,該研究項目的目的是要建立更強大的算法標準來代替 DES。AES 是一種密碼塊加密方法,可以對 28 位的密碼塊進行處理,密鑰的長度可以是 128、192 和256 位。AES 算法是根據(jù)比利時密碼專家 Joan Daemen 博士和 VincentRiijmen博士設(shè)計的 Rijndael密鑰系統(tǒng)來定義的,目的是希望成為被正式采納的政府標準,并最終能夠被廣泛地應(yīng)用。

3、三重 DES

使用多重加密方法可以增加 DES 的有效密鑰長度。三重 DES 加密首先用密鑰 a對 64 位的信息塊進行加密,再用密鑰 b 對加密的結(jié)果進行解密,然后用密鑰 c對解密結(jié)果再進行加密。其中使用了兩個或三個 56 位的密鑰(密鑰 a和密鑰 c有時是相同的)。通常人們認為這種算法要比 DES 更強大。但是三重DES 也有一個缺點,那就是需要使用相對較多的處理器資源,尤其是在使用軟件進行處理時更是如此。

(三)消息驗證碼

假定從發(fā)送方發(fā)送給接收方的消息不需要保密,但接收方需要確信該消息不是偽造的,這就可以用消息驗證碼(MAC)來進行必要的保護。消息驗證碼也稱為完整性校驗值或信息完整校驗。MAC 是附加的數(shù)據(jù)段,是由消息的發(fā)送方發(fā)出,與明文一起傳送并與明文有一定的邏輯聯(lián)系。MAC 的值與輸入消息的每一位都有關(guān)系,如果在消息中的任何一位 MAC 生成后發(fā)生了改變,則就會產(chǎn)生出不同的 MAC 值,接收方就能知道該消息的完整性已遭到了破壞。

基于收到的信息,接收方利用信息內(nèi)容重新計算 MAC,并比較兩個 MAC值。這類似于用于通信系統(tǒng)的普通錯誤校驗過程,例如,在消息上附加一個稱為循環(huán)冗余校驗值(CRC)的數(shù)據(jù)字段。不過這里有一個主要的不同,即必須考慮到可能會發(fā)生的蓄意攻擊。如果某個主動的攻擊者改變了消息,那就無法防止攻擊者重新計算和替換附加在消息中的 CRC,接收方也就不可能覺察出數(shù)據(jù)已被篡改。為防止這類攻擊,生成 MAC 時需要使用一個消息接收方也知道的密鑰。接收方擁有可以生成 MAC 的密鑰,在接收消息時可以對消息內(nèi)容與 MAC是否一致進行確認。這樣,如果消息被篡改了,就肯定能檢查出來。常用的兩種生成 MAC 的方法是:

(1)基于散列函數(shù)的方法:對某個位串運用散列函數(shù)生成 MAC,該位串中既包含了消息數(shù)據(jù)位,又包含了數(shù)據(jù)的加密密鑰。這種方法稱為密鑰散列函數(shù)HMAC。
(2)基于對稱加密的方法:使用對稱加密系統(tǒng)來生成 MAC。這一方法已在1986 年形成標準,并廣泛應(yīng)用于金融行業(yè)。

二、不對稱加密系統(tǒng)

(一)公開密鑰加密

不對稱加密又叫做公開密鑰加密,需要采用兩個在數(shù)學上相關(guān)的密鑰對———公開密鑰和私有密鑰來對信息進行加解密。公開密鑰加密技術(shù)是在 1976 年由斯坦福大學的 Whitfield Diffie 和 MartinHellman 提出來的。與對稱加密系統(tǒng)相比,公開密鑰加密技術(shù)需要使用一對相關(guān)的密鑰:一個用來加密,另一個用來解密。該技術(shù)的設(shè)想是,密鑰對是與相應(yīng)的系統(tǒng)聯(lián)系在一起的,其中私有密鑰是由系統(tǒng)所保密持有的,而公開密鑰則是公開的,但知道公開密鑰并不能推斷出私有密鑰。依據(jù)公開密鑰是用作加密密鑰還是解密密鑰,公開密鑰加密系統(tǒng)有兩種基本的模式:加密模式和驗證模式。

1、加密模式

在加密模式中,公開密鑰系統(tǒng)對于信息的加密和解密過程為:
(1)發(fā)送方用接收方的公開密鑰對要發(fā)送的信息進行加密;
(2)發(fā)送方將加密后的信息通過網(wǎng)絡(luò)傳送給接收方;
(3)接收方用自己的私有密鑰對接收到的加密信息進行解密,得到信息明文。在這一過程中,只有真正的接收方才能解開密文,因為私有密鑰是在接收方的手中。這一點似乎和對稱加密很相似,但不同處在于任何擁有該接收方公開密鑰的發(fā)送方都可以向該接收方發(fā)送信息,而不是僅限于與接收方擁有同一把密鑰的發(fā)送方。

2. 驗證模式

在驗證模式中,公開密鑰系統(tǒng)對于信息的加密和解密過程為:
(1)發(fā)送方用自己的私有密鑰對要發(fā)送的信息進行加密;
(2)發(fā)送方將加密后的信息通過網(wǎng)絡(luò)傳送給接收方;
(3)接收方用發(fā)送方的公開密鑰對接收到的加密信息進行解密,得到信息明文。公開密鑰系統(tǒng):驗證模式在這個過程中,任何能夠成功地解密接收到的密文的接收方,都能肯定該消息確實是來自發(fā)送方,因為只有發(fā)送方才擁有與解密公鑰相對應(yīng)的加密私鑰,從而驗證了該信息確實來自發(fā)送方。通過使用私有密鑰作為加密密鑰,公開密鑰加密系統(tǒng)可以用來進行數(shù)據(jù)發(fā)送方的驗證并確保信息的完整性。這種公開密鑰加密系統(tǒng)的驗證模式為數(shù)字簽名系統(tǒng)奠定了基礎(chǔ)。一般來說,既能以加密模式又能以驗證模式運作的公開密鑰加密系統(tǒng)被稱為可逆的公開密鑰加密系統(tǒng)。有些公開密鑰加密系統(tǒng)只能運作在驗證模式而不能運作在加密模式,這種系統(tǒng)被稱為不可逆的公開密鑰加密系統(tǒng)。與對稱密鑰加密系統(tǒng)相比,公開密鑰加密系統(tǒng)的功能更為強大。但公開密鑰加密系統(tǒng)對算法的設(shè)計提出了更高的挑戰(zhàn),因為公開密鑰代表了在攻擊該算法時所要用到的額外信息?,F(xiàn)有的公開密鑰系統(tǒng)依賴的是假設(shè)某個特定已知的數(shù)學問題是很難解決的。

(二)RSA 算法

目前著名的公開密鑰加密系統(tǒng)是于 1977 年由美國麻省理工學院的三位教授 Ronald Rivest、AdiShamir、Leonard Adleman 聯(lián)合發(fā)明的,所以一般把三位教授姓名的首位字母結(jié)合起來,稱其為 RSA 加密算法。RSA 算法是一種可逆的公開密鑰加密系統(tǒng)。它是通過一個稱為公共模數(shù)的數(shù)字來形成公開密鑰的,公共模數(shù)是通過兩個形成私人密鑰的兩個質(zhì)數(shù)的乘數(shù)來獲得的。一個 RSA 密鑰對是這樣計算的:選擇一個整數(shù) e作為公共指數(shù),再任選兩個很大的質(zhì)數(shù) p和 q,它們滿足如下條件:即(p-1)與 e沒有公約數(shù),(q-1)與 e也沒有公約數(shù)。公共模數(shù) n 是 p與 q的乘積,即 n =pq。由 n 和 e共同組成公開密鑰。然后確定一個私有指數(shù) d,使(de-1)可被( p -1)和( q -1)整除。由 n和 d(或者 p,q和 d)共同組成私有密鑰。公共指數(shù)和私有指數(shù)極為重要,根據(jù)模數(shù)算法,d 是 e的反函數(shù)。也就是說,對于任意的信息 M ,有:(Me)dmod n =M mod n對信息 M 的加密過程涉及對 Memod n 的計算。只要知道了公開密鑰,即 n和 e,就可以加密。而解密信息M`的過程則涉及對 M`dmod n 的計算,這時需要使用私有密鑰。RSA 的安全性依賴于,尋找較大的質(zhì)數(shù)相對容易,但要找到積為該數(shù)字的兩個因數(shù)卻很困難。如果該數(shù)字相當大,則尋找因數(shù)需要大量的處理資源,想要計算所有的范圍是不可能的。舉一個直觀的例子,假設(shè)要求你取出 437 的兩個因數(shù),也就是找到哪兩個數(shù)相乘等于 437,大多數(shù)人會發(fā)現(xiàn)即使借助計算器和數(shù)學計算也很難得到這個答案。但是,如果要求計算 23 乘以 19 的積,同樣的問題很快就能得到解決,答案是 437。雖然有些人能用心算,但當數(shù)據(jù)非常大,如達到成千上百位的時候,即使是計算機也很難計算出它們的因數(shù)來。RSA 的強度經(jīng)常受到懷疑,因為破解它的方法非常清楚:可以用任何已知的因式分解方法來分解該模數(shù)。因此,RSA 的強度主要依賴于分解因數(shù)所需要的時間和設(shè)備成本。在將來考慮 RSA 的強度時必須要考慮到設(shè)備成本正在不斷下降、因子分解技術(shù)正在不斷提高這兩點。在破解 RSA 方面比較著名的事件發(fā)生在 1999 年。由 RSA 算法的創(chuàng)始人 Rivest、Shamir、Adleman 提出的 RSA-155數(shù)字,通過國際協(xié)作,由許多科學家和學生在近 300 臺工作站和個人計算機以及一臺超級計算機上通過共享處理,最終被分解了出來。分解工作總共花了 5.2個月。作為一種可行的算法,只要增大 RSA 的模數(shù),將大大增加分解因數(shù)所需要的代價。就目前而言,1024 位的模數(shù)對于大多數(shù)的商業(yè)用途來說還是足夠強大的。若干年后,或許將使用 2048 位的模數(shù)密鑰,更加增強其安全性。

(三)加密與驗證模式的結(jié)合

對于公開密鑰加密系統(tǒng)的兩種模式來說,如果只是單獨使用其中的一種模式,那就無法在保障信息機密性的同時又驗證發(fā)送方的身份,但在電子商務(wù)的安全中又需要同時實現(xiàn)這兩個目的。為此,需要把這兩種模式結(jié)合起來使用。
兩種模式的結(jié)合使用過程為:

(1)發(fā)送方用自己的私有密鑰對要發(fā)送的信息進行加密得到一次加密信息;
(2)發(fā)送方再用接收方的公開密鑰對已加密的信息再次加密;
(3)發(fā)送方將兩次加密后的信息通過網(wǎng)絡(luò)傳送給接收方;
(4)接收方用自己的私有密鑰對接收到的兩次加密信息進行解密,得到一次加密信息;
(5)接收方再用發(fā)送方的公開密鑰對一次加密信息進行解密,得到信息明文。
加密與驗證模式的結(jié)合在這個過程中,發(fā)送方為了證明該信息確實是自己發(fā)送的,所以用了自己的私有密鑰來對信息加密,同時,為了讓只有真正的接收方才能解開該消息,所以用了接收方的公開密鑰再次對已加密的信息進行加密。接收方收到信息后,首先要用自己的私有密鑰才能解開該密文,從而保障了信息的機密性,隨后,接收方再用發(fā)送方的公開密鑰對已解密一次的信息再次解密,得到真正的信息,從而保證了對于發(fā)送方身份的驗證。

三、兩種加密方法的聯(lián)合使用

由于公開密鑰加密必須要由兩個密鑰的配合使用才能完成加密和解密的全過程,因而有助于加強數(shù)據(jù)的安全性。但是,公開密鑰加密也有其缺點,主要是加密和解密的速度很慢,用公開密鑰加密算法加密和解密同樣的數(shù)據(jù)所花費的時間是利用私有密鑰加密算法的 1000 倍。所以,公開密鑰加密不適合對大量的文件信息進行加密,一般只適用于對少量數(shù)據(jù)如對密鑰進行加密。正是因為公開密鑰加密和私有密鑰加密各有所長,所以在實際應(yīng)用中,往往將公開密鑰加密與私有密鑰加密算法結(jié)合起來使用,以起到揚長避短的目的。

在實際運用中,用戶如果要對數(shù)據(jù)進行加密,需要生成一對自己的密鑰對。密鑰對中的公開密鑰是公開的,但私有密鑰則由密鑰的主人妥善保管。發(fā)送方和接收方在對文件進行加密和解密時的實際過程如下:

(1)發(fā)送方生成一個私有密鑰,并對要發(fā)送的信息用自己的私有密鑰進行加密;
(2)發(fā)送方用接收方的公開密鑰對自己的私有密鑰進行加密;
(3)發(fā)送方把加密后的信息和加密后的私有密鑰通過網(wǎng)絡(luò)傳輸?shù)浇邮辗剑?br /> (4)接收方用自己的私有密鑰對發(fā)送方傳送過來的私有密鑰進行解密,得到發(fā)送方的私有密鑰;
(5)接收方用發(fā)送方的私有密鑰對接收到的加密信息進行解密,得到信息的明文。

因為只有接收方才擁有自己的私有密鑰,所以即使其他人得到了經(jīng)過加密的發(fā)送方的私有密鑰信息,也無法進行解密,從而保證了這把私有密鑰的安全性。在上述過程中,實際上分別實現(xiàn)了兩次加密解密過程,即文件信息本身的加密解密和發(fā)送方私有密鑰的加密解密,這是通過私有密鑰加密和公開密鑰加密算法的結(jié)合來實現(xiàn)的。

通過公開密鑰加密技術(shù)實現(xiàn)對發(fā)送方私有密鑰的管理,使相應(yīng)的密鑰管理變得簡單和更加安全,同時還解決了對稱加密中存在的可靠性問題和鑒別問題。發(fā)送方可以為每次交換的信息生成惟一的一把私有密鑰,并用接收方的公開密鑰對該密鑰進行加密,然后再將加密后的密鑰與用該密鑰加密的信息一起發(fā)送給相應(yīng)的接收方。由于對每次信息交換都對應(yīng)生成了惟一的一把密鑰,因此,各交易方就不再需要對密鑰進行維護和擔心密鑰的泄露或過期。這種方式的另一優(yōu)點是即使泄露了一把密鑰,也只不過影響一筆交易,而不會影響到交易雙方之間所有的交易關(guān)系。這種方式還提供了交易伙伴間發(fā)布私有密鑰的一種安全途徑。值得注意的是,能否切實有效地發(fā)揮加密系統(tǒng)的作用,其關(guān)鍵點在于密鑰的管理,包括密鑰的生成、分發(fā)、安裝、保管、使用以及作廢的全過程。

知識點:

公開密鑰也稱為非對稱密鑰,每個人都有一對唯一對應(yīng)的密鑰:公開密鑰和私人密鑰,公鑰對外公開,私鑰由個人秘密保存;用其中一把密鑰加密,就只能用另一把密鑰解密。