淺析ASE128加密算法

數(shù)據(jù)加密的基本過程就是對原來為明文的文件或數(shù)據(jù)按某種算法進(jìn)行處理,使其成為不可讀的一段代碼,通常稱為“密文”,使其只能在輸入相應(yīng)的密鑰之后才能顯示出本來內(nèi)容,通過這樣的途徑來達(dá)到保護(hù)數(shù)據(jù)不被非法人竊取、閱讀的目的。 該過程的逆過程為解密,即將該編碼信息轉(zhuǎn)化為其原來數(shù)據(jù)的過程。

加密技術(shù)通常分為兩大類:“對稱式”和“非對稱式”。

對稱式加密就是加密和解密使用同一個(gè)密鑰,通常稱之為“Session Key ”這種加密技術(shù)現(xiàn)在被廣泛采用,如美國政府所采用的DES加密標(biāo)準(zhǔn)就是一種典型的“對稱式”加密法,它的Session Key長度為56bits。

非對稱式加密就是加密和解密所使用的不是同一個(gè)密鑰,通常有兩個(gè)密鑰,稱為“公鑰”和“私鑰”,它們兩個(gè)必需配對使用,否則不能打開加密文件。這里的“公鑰”是指可以對外公布的,“私鑰”則不能,只能由持有人一個(gè)人知道。它的優(yōu)越性就在這里,因?yàn)閷ΨQ式的加密方法如果是在網(wǎng)絡(luò)上傳輸加密文件就很難把密鑰告訴對方,不管用什么方法都有可能被別竊聽到。而非對稱式的加密方法有兩個(gè)密鑰,且其中的“公鑰”是可以公開的,也就不怕別人知道,收件人解密時(shí)只要用自己的私鑰即可以,這樣就很好地避免了密鑰的傳輸安全性問題。

加密算法

一個(gè)加密系統(tǒng)S可以用數(shù)學(xué)符號描述如下:

S={P, C, K, E, D}

其中

P——明文空間,表示全體可能出現(xiàn)的明文集合,

C——密文空間,表示全體可能出現(xiàn)的密文集合,

K——密鑰空間,密鑰是加密算法中的可變參數(shù),

E——加密算法,由一些公式、法則或程序構(gòu)成,

D——解密算法,它是E的逆。

當(dāng)給定密鑰kÎK時(shí),各符號之間有如下關(guān)系:

C = Ek(P), 對明文P加密后得到密文C

P = Dk(C) = Dk(Ek(P)), 對密文C解密后得明文P

如用E-1 表示E的逆,D-1表示D的逆,則有:

Ek = Dk-1且Dk = Ek-1

因此,加密設(shè)計(jì)主要是確定E,D,K。

RSA是Rivest、Shamir和Adleman提出來的基于數(shù)論非對稱性(公開鑰)加密算法。大整數(shù)的素因子難分解是RSA算法的基礎(chǔ)。

RSA在國外早已進(jìn)入實(shí)用階段,已研制出多種高速的RSA的專用芯片。盡管RSA的許多特性并不十分理想,但迫于信息安全的實(shí)際需要,許多重要的信息系統(tǒng)還是采用RSA作為基礎(chǔ)加密機(jī)制。從RSA提出不久,我國有關(guān)部門就一直對它進(jìn)行研究。從應(yīng)用的角度看,軟件實(shí)現(xiàn)的RSA已經(jīng)開始用于計(jì)算機(jī)網(wǎng)絡(luò)加密,用來完成密鑰分配、數(shù)字簽名等功能。

除了RSA之外,還有DES(數(shù)據(jù)加密標(biāo)準(zhǔn))。盡管DES公開了其加密算法并曾被美國列為“標(biāo)準(zhǔn)”,但很快被廢棄。加密技術(shù)又回歸到“算法保密”的傳統(tǒng)上。

常見算法

DES(Data Encryption Standard):對稱算法,數(shù)據(jù)加密標(biāo)準(zhǔn),速度較快,適用于加密大量數(shù)據(jù)的場合;

3DES(Triple DES):是基于DES的對稱算法,對一塊數(shù)據(jù)用三個(gè)不同的密鑰進(jìn)行三次加密,強(qiáng)度更高;

RC2和RC4:對稱算法,用變長密鑰對大量數(shù)據(jù)進(jìn)行加密,比 DES 快;

IDEA(International Data Encryption Algorithm)國際數(shù)據(jù)加密算法,使用 128 位密鑰提供非常強(qiáng)的安全性;

RSA:由 RSA 公司發(fā)明,是一個(gè)支持變長密鑰的公共密鑰算法,需要加密的文件塊的長度也是可變的,非對稱算法; 算法如下:

首先, 找出三個(gè)數(shù), p, q, r,

其中 p, q 是兩個(gè)相異的質(zhì)數(shù), r 是與 (p-1)(q-1) 互質(zhì)的數(shù)......

p, q, r 這三個(gè)數(shù)便是 private key

接著, 找出 m, 使得 rm == 1 mod (p-1)(q-1).....

這個(gè) m 一定存在, 因?yàn)?r 與 (p-1)(q-1) 互質(zhì), 用輾轉(zhuǎn)相除法就可以得到了.....

再來, 計(jì)算 n = pq.......

m, n 這兩個(gè)數(shù)便是 public key

DSA(Digital Signature Algorithm):數(shù)字簽名算法,是一種標(biāo)準(zhǔn)的 DSS(數(shù)字簽名標(biāo)準(zhǔn)),嚴(yán)格來說不算加密算法;

AES(Advanced Encryption Standard):高級加密標(biāo)準(zhǔn),對稱算法,是下一代的加密算法標(biāo)準(zhǔn),速度快,安全級別高,現(xiàn)在 AES 標(biāo)準(zhǔn)的一個(gè)實(shí)現(xiàn)是 Rijndael 算法;

BLOWFISH,它使用變長的密鑰,長度可達(dá)448位,運(yùn)行速度很快;

MD5:嚴(yán)格來說不算加密算法,只能說是摘要算法

對MD5算法簡要的敘述可以為:MD5以512位分組來處理輸入的信息,且每一分組又被劃分為16個(gè)32位子分組,經(jīng)過了一系列的處理后,算法的輸出由四個(gè)32位分組組成,將這四個(gè)32位分組級聯(lián)后將生成一個(gè)128位散列值。

在MD5算法中,首先需要對信息進(jìn)行填充,使其字節(jié)長度對512求余的結(jié)果等于448。因此,信息的字節(jié)長度(Bits Length)將被擴(kuò)展至N*512+448,即N*64+56個(gè)字節(jié)(Bytes),N為一個(gè)正整數(shù)。填充的方法如下,在信息的后面填充一個(gè)1和無數(shù)個(gè)0,直到滿足上面的條件時(shí)才停止用0對信息的填充。然后,在這個(gè)結(jié)果后面附加一個(gè)以64位二進(jìn)制表示的填充前信息長度。經(jīng)過這兩步的處理,如今信息字節(jié)長度=N*512+448+64=(N+1)*512,即長度恰好是512的整數(shù)倍。這樣做的原因是為滿足后面處理中對信息長度的要求。PKCS:The Public-Key Cryptography Standards (PKCS)是由美國RSA數(shù)據(jù)安全公司及其合作伙伴制定的一組公鑰密碼學(xué)標(biāo)準(zhǔn),其中包括證書申請、證書更新、證書作廢表發(fā)布、擴(kuò)展證書內(nèi)容以及數(shù)字簽名、數(shù)字信封的格式等方面的一系列相關(guān)協(xié)議。