王傳俊
(煙臺汽車工程職業(yè)學(xué)院,煙臺,265500)
互聯(lián)網(wǎng)技術(shù)的普及和發(fā)展使得人們的生活急速進(jìn)入信息時代,在實(shí)現(xiàn)信息和資源共享的同時,數(shù)據(jù)的安全問題也變得越來越重要。每天有大量的數(shù)據(jù)通過互聯(lián)網(wǎng)進(jìn)行保存、處理和傳遞,為了保證數(shù)據(jù)在傳輸過程中的安全性,需要使用加密技術(shù)對數(shù)據(jù)進(jìn)行加密和解密,避免數(shù)據(jù)在傳輸過程被泄露或篡改。對數(shù)據(jù)加密技術(shù)來說,它的核心是密碼算法,通常采用高級語言(如C 語言)編寫程序,來實(shí)現(xiàn)數(shù)據(jù)的加密。
根據(jù)分組密碼學(xué)算法按照密鑰的分配方式的不同,算法被分為:對稱算法和非對稱算法。對稱加密算法中比較常用的算法包括DES、3DES 和ASE 等算法。非對稱算法中比較常用的算法包括RSA、ECC 等算法。
下面就對其中較為典型的兩種算法DES 和RSA 使用C 語言進(jìn)行實(shí)現(xiàn)和對比分析。
1.1 DES(Data Encryption Standard 數(shù)據(jù)加密標(biāo)準(zhǔn))是一種對稱加密算法。對稱加密算法是指加密和解密使用相同密鑰的加密算法。它要求發(fā)送方和接收方在安全通信之前,商定一個密鑰,這個密鑰是對稱算法的安全依賴。加密密鑰能夠從解密密鑰中推算出來,同時解密密鑰也可以從加密密鑰中推算出來。因此,DES 算法的特點(diǎn)是算法公開,計(jì)算量小,加密速度快,加密效率高,適用于加密大量數(shù)據(jù)的場合。目前 DES 算法在POS、ATM、磁卡及智能卡(IC 卡)、加油站、高速公路收費(fèi)站等領(lǐng)域被廣泛應(yīng)用。
DES 算法的原理是用輸入64bit 明文對56bit 密鑰進(jìn)行加密,通過16 次迭代輸出64bit 密文。由于加密密鑰和解密密鑰完全相同,明文分組分塊加密,在對稱加密原理中屬于分組加密。
1.2 RSA(三位美國麻生理工學(xué)院的科學(xué)家:Ron Rivest、AdiShamirh 和 Leonard Adleman,三人姓氏開頭字母拼在一起。)是一種非對稱加密算法,也就是使用不同的加密密鑰與解密密鑰,是一種“由已知加密密鑰推導(dǎo)出解密密鑰在計(jì)算上是不可行的”密碼體制。在公開密鑰密碼體制中,加密密鑰(即公開密鑰)PK 是公開信息,而解密密鑰(即秘密密鑰)SK 是需要保密的。加密算法E 和解密算法D 也都是公開的。雖然秘密密鑰SK 是由公開密鑰PK 決定的,但卻不能根據(jù)PK 計(jì)算出SK。RSA 的安全性依賴于大數(shù)的因子分解,但目前并沒有從理論上證明破譯RSA 的難度是否就等于大數(shù)分解。在互聯(lián)網(wǎng)的數(shù)字簽名和認(rèn)證中常使用RSA 算法實(shí)現(xiàn)數(shù)據(jù)保護(hù)。
DES 算 法 中 只 用 到64 位 明 文 中 的56 位,而 第8、16、24、......64 位這8 個位并未參與DES 運(yùn)算,而是將這8 位作為奇偶校驗(yàn)位。也就是說DES 的安全性是基于除了8,16,24,……64 位外的其余56 位的組合變化256 種才得以保證的。因此,在實(shí)際應(yīng)用中,通常避開使用第8,16,24,......64 位作為有效數(shù)據(jù)位,而使用其它的56 位作為有效數(shù)據(jù)位,才能保證DES 算法安全可靠地發(fā)揮作用。
DES 算法常常采用按位置換。明文和密鑰都按ASC Ⅱ碼標(biāo)準(zhǔn)轉(zhuǎn)化成二進(jìn)制碼,然后進(jìn)行IP 置換,置換后的明文需要進(jìn)行S 盒的非線性置換,在置換中將56 位置換成48 位,得到的48 位就是每一次循環(huán)中所用的密鑰。在C 語言中,可以選擇模塊化處理:
int DES_SBOX(ElemType data[48]);
加密過程中去除奇偶校驗(yàn)位,將剩下的56 位分成兩半。每部分在每一次循環(huán)中都左移位一次,然后將輸出與另一半進(jìn)行“異或”運(yùn)算;接著交換這兩半,這一過程會繼續(xù)下去,但最后一個循環(huán)不交換。DES 使用 16 次循環(huán)進(jìn)行置換,代換,移位,最后輸出64 位。生成子密鑰C 語言程序?qū)崿F(xiàn)如下:
RSA 的安全基于大數(shù)分解的難度。其公鑰和私鑰是一對大素?cái)?shù)(100 到200 位十進(jìn)制數(shù)或更大)的函數(shù)。RSA 的公鑰、私鑰的組成,以及加密、解密的公式可見于下表1 公鑰、私鑰的算法:
RSA 算法描述:
(1)選擇一對不同的、足夠大的素?cái)?shù)p 和q。
(2)計(jì)算n=pq。
(3)計(jì)算f(n)=(p-1)(q-1),同時對p 和q 嚴(yán)加保密,不讓任何人知道。
(4)找一個與n 互質(zhì)的數(shù)e,且1<e<n。
(5)計(jì)算d,使得de ≡1 mod f(n)。這個公式也可以表達(dá)為d ≡e-1mod n
(6)公鑰PK=(e,n),私鑰SK=(d,n)。
(7)加密時,先將明文變換成0 至n-1 的一個整數(shù)M。若明文較長,可先分割成適當(dāng)?shù)慕M,然后再進(jìn)行交換。但由于RSA 算法的主要缺陷是運(yùn)算速度慢,因此在加密過程中要盡量減少冪運(yùn)算的次數(shù),在這里采用了加法剩余運(yùn)算。
通過對兩種算法的分析可以看出,RSA 算法的加密解密是一個非常復(fù)雜的計(jì)算過程,在對數(shù)據(jù)進(jìn)行加密解密運(yùn)算時需要進(jìn)行大量模冪運(yùn)算,密鑰的復(fù)雜性直接影響了其運(yùn)行速度。相對于DES 算法的速度慢很多,當(dāng)數(shù)據(jù)量很小時,可以考慮采用RSA 加密算法。
DES 算法使用的加密密鑰和解密密鑰完全相同,這種對稱密碼算法可以加快加密解密的速度,當(dāng)需要加密大量的數(shù)據(jù)時,采用DES 算法,會提高加解密速度。但其安全系數(shù)被降低。其次,采用DES 加密算法其本質(zhì)就是對加密數(shù)據(jù)的二進(jìn)制編碼進(jìn)行加密,加密時數(shù)據(jù)分組進(jìn)行。在加密時,不會對內(nèi)存中的比特流及存儲方式等特性產(chǎn)生任何影響,只加密二進(jìn)制代碼本身。如果硬件條件一定,沒有任何改變,則二進(jìn)制編碼長度會直接對加密時間造成影響,也就是文件越長需要的加密時間越長,文件越短所需的加密時間越短,加密時間和文件大小呈線性關(guān)系。加密時間的長短和文件格式無關(guān)。
表1 公鑰、私鑰的算法
DES 和RSA 是計(jì)算機(jī)數(shù)據(jù)加密技術(shù)應(yīng)用最為廣泛的算法之一, C 語言是比較常用的計(jì)算機(jī)高級語言,對大多數(shù)計(jì)算機(jī)初學(xué)者都容易接受。使用C 語言實(shí)現(xiàn)對DES 和RSA 算法的描述,能夠使我們更好地理解加密算法的原理,從而有效地保護(hù)數(shù)據(jù)信息在傳遞過程中的安全性。
[1] 楊曉元,等) 計(jì)算機(jī)密碼學(xué)[M])西安:西安交通大學(xué)出版社,2007.3.
[2] 盧開澄.計(jì)算機(jī)密碼學(xué)[M].北京:清華大學(xué)出版社,2003.12.
[3] 隋濤.DES 與AES 數(shù)據(jù)加密算法探討[J].湖北第二師范學(xué)語學(xué)報(bào),2013.8,66-67.
[4] 吳明航.DES 和RSA 混合加密算法的研究[D].哈爾濱工業(yè)大學(xué),2012.12,39-41.
[5] 時華. 基于VC++的DES 與RSA 混合加密算法的實(shí)現(xiàn)[J]. 科技信息(科學(xué)教研),2007,32:436.
[6] 王艷. 基于DES-RSA 的混合加密技術(shù)在數(shù)據(jù)庫中的研究與應(yīng)用[D].武漢理工大學(xué),2013.