日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

密碼學(xué)

 baijeg 2011-01-19

一. 密碼學(xué)簡介

據(jù)記載,公元前400年,古希臘人發(fā)明了置換密碼。1881年世界上的第一個電話保密專利出現(xiàn)。在第二次世界大戰(zhàn)期間,德國軍方啟用“恩尼格瑪”密 碼機(jī),密碼學(xué)在戰(zhàn)爭中起著非常重要的作用。

隨著信息化和數(shù)字化社會的發(fā)展,人們對信息安全和保密的重要性認(rèn)識不斷提高,于是在1997年,美國國家標(biāo)準(zhǔn)局公布實(shí)施了“美國數(shù)據(jù)加密標(biāo)準(zhǔn) (DES)”,民間力量開始全面介入密碼學(xué)的研究和應(yīng)用中,采用的加密算法有DES、RSA、SHA等。隨著對加密強(qiáng)度需求的不斷提高,近期又出現(xiàn)了 AES、ECC等。我國也相應(yīng)提出了自己國家的ECC、SCB2、SCH等加密算法。

 

使用密碼學(xué)可以達(dá)到以下目的:

1.       保密性:防止用戶的標(biāo)識或數(shù)據(jù)被讀取。

2.       數(shù)據(jù)完整性:防止數(shù)據(jù)被更改。

3.       身份驗(yàn)證:確保數(shù)據(jù)發(fā)自特定的一方。

 

二. 加密算法介紹

根據(jù)密鑰類型不同將現(xiàn)代密碼技術(shù)分為兩類:對稱加密算法(秘密鑰匙加密)和非對稱加密算法(公開密鑰加密)。

兩者的區(qū)別在于:

對稱鑰匙加密系統(tǒng)是加密和解密均采用同一把秘密鑰匙,而且通信雙方都必須獲得這把鑰匙,并保持鑰匙的私密性。

非對稱密鑰加密系統(tǒng)采用的加密鑰匙(公鑰)和解密鑰匙(私鑰)是不同的。

 

2.1 對稱加密算法

對稱加密算法用來對敏感數(shù)據(jù)等信息進(jìn)行加密,現(xiàn)在,通常使用分組密碼(block cipher)或序列密碼(stream cipher)實(shí)現(xiàn)對稱密碼,由于序列密碼算法不常用,所以本文將只討論分組密碼,常用的分組密碼算法包括:

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

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

3.       AES(Advanced Encryption Standard):高級加密標(biāo)準(zhǔn),是下一代的加密算法標(biāo)準(zhǔn),速度快,安全級別高。

 

分組密鑰常見術(shù)語

 

置換(Permutation)與替代(Substitution

置換與替代是對稱密鑰中常用的兩種手段。置換是對數(shù)據(jù)重新進(jìn)行排列,而替代是將一個數(shù)據(jù)單元替換為另一個。通常替代要借助非線性查找表來進(jìn)行,即 DES和AES中所稱的S-Box。

 

輪(Round

       對稱密鑰中經(jīng)常對輸入進(jìn)行多輪迭代,這些迭代通常操作相同,只是具體上有些許差異,對稱密鑰的這種特性使得對稱密鑰適于用流水結(jié)構(gòu)實(shí)現(xiàn),因而數(shù)據(jù)吞吐量 大,容易實(shí)現(xiàn)高速加解密。

2.1.1  DES

DES算法全稱為Data Encryption Standard,即數(shù)據(jù)加密算法,它是IBM公司于1975年研究成功并公開發(fā)表的。DES算法有三個輸入:Key、Data、Mode。其中 Key為8個字節(jié)共64位,是DES算法的工作密鑰;Data也為8個字節(jié)64位,是要被加密或被解密的數(shù)據(jù);Mode為DES的工作方式,有兩種:加密 或解密。

 

算法原理

DES算法把64位的明文輸入塊變?yōu)?4位的密文輸出塊,它所使用的密鑰也是64位,其算法主要分為兩步:

1 初始置換

其功能是把輸入的64位數(shù)據(jù)塊按位重新組合,并把輸出分為L0、R0兩部分,每部分各長3 2位,其置換規(guī)則為將輸入的第58位換到第一位,第50位換到第2位……依此類推,最后一位是原來的第7位。L0、R0則是換位輸出后的兩部分,L0是輸 出的左32位,R0是右32位,例:設(shè)置換前的輸入值為D1D2D3……D64,則經(jīng)過初始置換后的結(jié)果為:L0=D58D50……D8;R0= D57D49……D7。

2 逆置換

經(jīng)過16次迭代運(yùn)算后,得到L16、R16,將此作為輸入,進(jìn)行逆置換,逆置換正好是初始置換的逆運(yùn)算,由此即得到密文輸出。

 

2.1.2      3DES

3DES(即Triple DES)是DES向AES過渡的加密算法(1999年,NIST將3-DES指定為過渡的加密標(biāo)準(zhǔn)),是DES的一個更安全的變形。它以DES為基本模 塊,通過組合分組方法設(shè)計出分組加密算法。3DES一共有兩種,一種是使用兩個56位長度的密鑰key1和key2,這樣密碼強(qiáng)度提高到了112位;另一 種是使用三個56位長度的密鑰key1、key2和key3,這樣密碼強(qiáng)度提高到了168位。

使用兩個密鑰的3DES:

加密過程:用key1加密,用key2解密再用key1加密

解密過程:用key1解密,用key2加密再用key1解密

使用三個密鑰的3DES:

加密過程:用key1加密,用key2解密再用key3加密

解密過程:用key3解密,用key2加密再用key1解密

2.1.3   AES

2000年10月,NIST(美國國家標(biāo)準(zhǔn)和技術(shù)協(xié)會)宣布通過從15種侯選算法中選出的一項(xiàng)新的密匙加密標(biāo)準(zhǔn)。Rijndael被選中成為將來的 AES。 Rijndael是在 1999 年下半年,由研究員 Joan Daemen 和 Vincent Rijmen 創(chuàng)建的。AES 正日益成為加密各種形式的電子數(shù)據(jù)的實(shí)際標(biāo)準(zhǔn)。

美國標(biāo)準(zhǔn)與技術(shù)研究院 (NIST) 于 2002 年 5 月 26 日制定了新的高級加密標(biāo)準(zhǔn) (AES) 規(guī)范。

 

算法原理

AES 算法基于置換和替代運(yùn)算。AES 使用幾種不同的方法來執(zhí)行置換和替代運(yùn)算。

AES 是一個迭代的、對稱密鑰分組的密碼,它可以使用128、192 和 256 位長度的密鑰,并且用 128 位(16字節(jié))分組密鑰(輪密鑰)加密和解密數(shù)據(jù)。數(shù)據(jù)長度為128位。通過分組密碼返回的加密數(shù)據(jù)長度與輸入數(shù)據(jù)長度相同。迭代加密使用一個循環(huán)結(jié)構(gòu), 在該循環(huán)中重復(fù)置換(permutation)和替代(substitution)輸入數(shù)據(jù)。

密鑰擴(kuò)展(Key Expansion)

AES對原始密鑰進(jìn)行密鑰擴(kuò)展操作,將其擴(kuò)展并應(yīng)用到每輪迭代加密中。

State矩陣

AES將輸入和每輪迭代的中間結(jié)果表達(dá)為4×4矩陣,矩陣中每個元素為8位。AES算法的主循環(huán)對State矩陣執(zhí)行四種不同的操作,分別為 SubBytes(字節(jié)替換)、ShiftRows(行位移變換)、MixColumns(列混合變換)、AddRoundKey(輪密鑰相加)。

SubBytes:將State矩陣中的字節(jié)用S-box中相應(yīng)字節(jié)替換

ShiftRows:為置換操作,它將State矩陣每行中的字節(jié)向左移位。

MixColumns:為替代操作,它用State矩陣每列字節(jié)的值進(jìn)行GF(28)域中的加法和乘法操作,并替代對應(yīng)字 節(jié)。

AddRoundKey:用KeyExpansion中生成的KeySchedule前四行對State矩陣執(zhí)行字節(jié)異或(XOR)操作,并用輪密 鑰表中相應(yīng)值對State矩陣進(jìn)行操作,得到新的State矩陣

 

AES與3DES的比較

算法名稱

算法類型

密鑰長度

數(shù)據(jù)長度

AES

對稱block密碼

128、192、256位

128位

3DES

對稱feistel密碼

112位或168位

64位

 

2.1.4      分組密碼工作方式

分組密碼每次加密一個數(shù)據(jù)分組,這個分組的位數(shù)可以是隨意的,一般選擇64(DES、3DES)或者128位(AES)。

 

2.1.4.1    ECB(Electronic Code Book:電碼本)

ECB是最簡單的模式,同樣的明文分組總是加密成相同的密文分組。這對于發(fā)送單一的塊數(shù)據(jù)來說是非常好的,如密鑰。但對執(zhí)行一個加密的信息流來說不 是很好,因?yàn)槿绻嗤拿魑亩啻伟l(fā)送以后,同樣的密文也會被多次發(fā)送。

ECB最大的弱點(diǎn)是對每一個塊用相同的方式進(jìn)行加密。如果我們的密鑰或者數(shù)據(jù)不斷發(fā)生變化,ECB是完全安全的。但是如果類似的塊經(jīng)過同樣的密鑰加 密發(fā)出以后,攻擊者可能獲得一些我們并不想讓別人知道的信息。

優(yōu)點(diǎn):

1.簡單;

2.有利于并行計算;

3.誤差不會被傳送;

缺點(diǎn):

1.不能隱藏明文的模式;

2.可能對明文進(jìn)行主動攻擊;

 

2.1.4.2    CBC(Cipher Block Chaining:密碼分組鏈接)  

CBC模式改變了加密方式,同樣的明文分組不一定加密或解密同樣的密文塊,因此解決了ECB存在的主要問題。CBC使用前一分組的信息加密當(dāng)前分 組。因此 和ECB模式大不相同。這個方法依然存在問題,那就是相同的信息仍然加密成相同的密文,因?yàn)樗械姆纸M是同時變成密文分組的。為了解決這個問題,我們引入 一個Initialization Vector(IV,初始化向量),也就是前不久有人問到的IV問題。IV僅僅是一個初始化加密程序的隨機(jī)數(shù)。它無需秘密保存,但隊每一個信息來說它都是 不同 的,通過這個方式,即使有兩條相同的信息,只要他們有不同的IV,那么他們加密后的密文也是不同的。從這個意義上來說,初始化向量無疑就和口令加密過程中 使用的鹽值是一樣的。

CBC很適合文本傳輸,但它每一次都需要傳送一個完整的數(shù)據(jù)塊,一般選8個字節(jié)。

優(yōu)點(diǎn):

1.不容易主動攻擊,安全性好于ECB,適合傳輸長度長的報文,是SSL、IPSec的標(biāo)準(zhǔn)。

缺點(diǎn):

1.不利于并行計算;

2.誤差傳遞;

3.需要初始化向量IV

 

CFB(Cipher FeedBack:密碼反饋)  

CFB的工作方式與CBC類似,但它可以執(zhí)行更小的數(shù)據(jù)塊,典型的有8位,這非常適合加密像聊天對話這樣的信息,因?yàn)槊看慰梢园l(fā)送單一的字節(jié)數(shù)據(jù) 塊。

和CBC一樣,CFB也需要一個IV,且相同及鑰發(fā)送的每條信息的IV都必須是唯一的。

 優(yōu)點(diǎn):

1.隱藏了明文模式;

2.分組密碼轉(zhuǎn)化為流模式;

3.可以及時加密傳送小于分組的數(shù)據(jù);

缺點(diǎn):

1.不利于并行計算;

2.誤差傳送:一個明文單元損壞影響多個單元;

3.唯一的IV;

 

OFB(Output FeedBack:輸出反饋)

OFB除了在傳輸中能給數(shù)據(jù)提供更好的保護(hù),防止數(shù)據(jù)丟失外,其他和CFB類似。密文中一位出錯,也只造成明文中的一位出錯,其他的方式會造成整個 塊丟失。

和CBC以及CFB一樣,OFB也需要一個IV。

 優(yōu)點(diǎn):

1.隱藏了明文模式;

2.分組密碼轉(zhuǎn)化為流模式;

3.可以及時加密傳送小于分組的數(shù)據(jù);

缺點(diǎn):

1.不利于并行計算;

2.對明文的主動攻擊是可能的;

3.誤差傳送:一個明文單元損壞影響多個單元;

 

2.1.4.3    分組密碼的填充方式

分組密碼算法在ECB和CBC工作方式下需要明文輸入為分組大小的整數(shù)倍。如果要加密的明文不為分組大小的整數(shù)倍,就需要在加密之前使用填充位串對 明文進(jìn)行填充。當(dāng)解密時,接收方需要知道如何沒有二義性地移除填充位串。

 

方法1:將需要填充字節(jié)的個數(shù)作為填充值填充到分組中

這個方法適用于任何明文,ASCII或者二進(jìn)制。對于DES,分組大小為64位,所以填充值應(yīng)該在1到8之間,對于AES,分組大小為128位,所 以填充值在1到16之間。這也可以提供對解密是否正確進(jìn)行的一個額外校驗(yàn)(如果該值不對,則解密不對,但是如果該值對,也不保證解密一定是對的)。

 

方法2:用0x80后接數(shù)個0x00作為填充位串填充到分組中

這個方法適用于任何明文,ASCII或者二進(jìn)制。智能卡更傾向于使用這種填充方法。這也是NIST 800-38a中推薦的方法。

 

方法3:用0x00填充,最后一個字節(jié)用填充字節(jié)的個數(shù)作為填充值填充

這個是方法1的變形。在解密后,讀最后一個字節(jié)的值,如果在正確區(qū)間內(nèi)就扔掉最后一個字節(jié)所描述的那么多個字節(jié)。該方法適用于任何明文,ASCII 或者二進(jìn)制。

 

方法4:用全0填充

該方法局限性很大,在處理ASCII文本時沒有問題,但是在處理可能包含0x00值的二進(jìn)制明文時會不適用。

 

方法5:用空格字符0x20填充

該方法也只適用于簡單ASCII文本。

 

如果使用的是CFB或者OFB工作方式,那么密文可以與明文具有相同大小,不需要填充。序列加密算法如RC4或者PC1也不需要填充。

2.2公鑰密碼算法

公鑰密碼中的加密與解密過程如下圖所示:

 

 

公鑰密碼中的簽名與驗(yàn)證過程如下圖:

1.確實(shí)是用戶B在文件上簽了名(身份認(rèn)證)

2.別人無法偽造用戶B的簽名(不可抵賴)

3.所簽的信息在傳輸過程中沒有被篡改或替換(數(shù)據(jù)完整)

 

 

 

公鑰密碼中的密鑰交換過程:

1.數(shù)字信封:用公鑰密碼加密對稱密鑰

2.密鑰協(xié)商:根據(jù)雙方交互的信息各自計算出相同的對稱密鑰(ga, gb, gab)

 

 

 

2.2.1 RSA算法

2.2.1.1 簡介

當(dāng)前最著名、應(yīng)用最廣泛的公鑰系統(tǒng)RSA是在1978年,由美國麻省理工學(xué)院(MIT)的Rivest、Shamir和Adleman在題為《獲得 數(shù)字簽名和公開鑰密碼系統(tǒng)的方法》的論文中提出的。它是一個基于數(shù)論的非對稱(公開鑰)密碼體制,是一種分組密碼體制。其名稱來自于三個發(fā)明者的姓名首字 母。 它的安全性是基于大整數(shù)素因子分解的困難性,而大整數(shù)因子分解問題是數(shù)學(xué)上的著名難題,至今沒有有效的方法予以解決,因此可以確保RSA算法的安全性。 RSA系統(tǒng)是公鑰系統(tǒng)的最具有典型意義的方法,大多數(shù)使用公鑰密碼進(jìn)行加密和數(shù)字簽名的產(chǎn)品和標(biāo)準(zhǔn)使用的都是RSA算法。

RSA算法是第一個既能用于數(shù)據(jù)加密也能用于數(shù)字簽名的算法,因此它為公用網(wǎng)絡(luò)上信息的加密和鑒別提供了一種基本的方法。它通常是先生成一對RSA 密鑰,其中之一是保密密鑰,由用戶保存;另一個為公開密鑰,可對外公開,甚至可在網(wǎng)絡(luò)服務(wù)器中注冊,人們用公鑰加密文件發(fā)送給個人,個人就可以用私鑰解密 接受。為提高保密強(qiáng)度,RSA密鑰至少為500位長,一般推薦使用1024位。

該算法基于下面的兩個事實(shí),這些事實(shí)保證了RSA算法的安全有效性: 
1) 已有確定一個數(shù)是不是質(zhì)數(shù)的快速算法; 
2) 尚未找到確定一個合數(shù)的質(zhì)因子的快速算法。

2.2.1.2工作原理 
1)  任意選取兩個不同的大質(zhì)數(shù)p和q,計算乘積r=p*q; 
2)  任 意選取一個大整數(shù)e,e與(p-1)*(q-1)互質(zhì),整數(shù)e用做加密密鑰。注意:e的選取是很 

容易的,例如,所有大于p和q的質(zhì)數(shù)都可用。 
3)  確定解密密鑰d: d * e = 1 modulo(p - 1)*(q - 1) 根據(jù)e、p和q可以容易地計算出

d。 
4)  公開整數(shù)r和e,但是不公開d; 
5)  將明文P (假設(shè)P是一個小于r的整數(shù))加密為密文C,計算方法為: 
C = Pe modulo r 
6)  將密文C解密為明文P,計算方法為: 
P = Cd modulo r 
然而只根據(jù)r和e(不是p和q)要計算出d是不可能的。因此,任何人都可對明文進(jìn)行    

加密,但只有授權(quán)用戶(知道d)才可對密文解密。

 

2.2.1.3優(yōu)點(diǎn)

 

RSA算法是第一個能同時用于加密和數(shù)字簽名的算法,也易于理解和操作。RSA是被研究得最廣泛的公鑰算法,從提出到現(xiàn)在已近二十年,經(jīng)歷了各種攻 擊的考驗(yàn),逐漸為人們接受,普遍認(rèn)為是目前最優(yōu)秀的公鑰方案之一。該算法的加密密鑰和加密算法分開,使得密鑰分配更為方便。它特別符合計算機(jī)網(wǎng)絡(luò)環(huán)境。對 于 網(wǎng)上的大量用戶,可以將加密密鑰用電話簿的方式印出。如果某用戶想與另一用戶進(jìn)行保密通信,只需從公鑰簿上查出對方的加密密鑰,用它對所傳送的信息加密發(fā) 出即可。對方收到信息后,用僅為自己所知的解密密鑰將信息脫密,了解報文的內(nèi)容。由此可看出,RSA算法解決了大量網(wǎng)絡(luò)用戶密鑰管理的難題,這是公鑰密碼 系統(tǒng)相對于對稱密碼系統(tǒng)最突出的優(yōu)點(diǎn)。 

2.2.1.4缺點(diǎn) 
1) 產(chǎn)生密鑰很麻煩,受到素數(shù)產(chǎn)生技術(shù)的限制,因而難以做到一次一密。 
2) 安全性, RSA的安全性依賴于大數(shù)的因子分解,但并沒有從理論上證明破譯RSA的難度

與大數(shù)分解難度等價,而且密碼學(xué)界多數(shù)人士傾向于因子分解不是NPC問題。目前,人們已能分解140多個十進(jìn)制位的大素數(shù),這就要求使用更長的密 鑰,速度更慢;另外,目前人們正在積極尋找攻擊RSA的方法,如選擇密文攻擊,一般攻擊者是將某一信息作一下偽裝(Blind),讓擁有私鑰的實(shí)體簽署。 然后,經(jīng)過計算就可得到它所想要的信息。實(shí)際上,攻擊利用的都是同一個弱點(diǎn),即存在這樣一個事實(shí):乘冪保留了輸入的乘法結(jié)構(gòu):

( XM )d = Xd *Md mod n 
前面已經(jīng)提到,這個固有的問題來自于公鑰密碼系統(tǒng)的最有用的特征--每個人都能使用公鑰。 但從算法上無法解決這一問題,主要措施有兩條:一條是采用好的公鑰協(xié)議,保證工作過程中實(shí)體不對其他實(shí)體任意產(chǎn)生的信息解密,不對自己一無所知的信息簽 名;另一條是決不對陌生人送來的隨機(jī)文檔簽名,簽名時首先使用One-Way Hash Function對文檔作HASH處理,或同時使用不同的簽名算法。除了利用公共模數(shù),人們還嘗試一些利用解密指數(shù)或φ(n)等等攻擊.

3) 速度太慢,由于RSA 的分組長度太大,為保證安全性,n 至少也要 600 bitx以上,使運(yùn)算代價很高,尤其是速度較慢,較對稱密碼算法慢幾個數(shù)量級;且隨著大數(shù)分解技術(shù)的發(fā)展,這個長度還在增加,不利于數(shù)據(jù)格式的標(biāo)準(zhǔn)化。目 前,SET(Secure Electronic Transaction)協(xié)議中要求CA采用2048比特長的密鑰,其他實(shí)體使用1024比特的密鑰。為了速度問題,目前人們廣泛使用單,公鑰密碼結(jié)合使 用的方法,優(yōu)缺點(diǎn)互補(bǔ):單鑰密碼加密速度快,人們用它來加密較長的文件,然后用RSA來給文件密鑰加密,極好的解決了單鑰密碼的密鑰分發(fā)問題。

2.2.2 ECC算法

2.2.2.1 簡介

1985年Neal Koblitz和Victor Miller分別獨(dú)立提出基于ECDLP(橢圓曲線離散對數(shù)問題)的ECC密碼系統(tǒng),自此ECC在密碼學(xué)界數(shù)學(xué)界引起了廣泛的越來越熱烈的研究興趣。經(jīng)過 諸多知名密碼學(xué)家和數(shù)學(xué)家近二十年的研究表明,ECC所基于的ECDLP較IFP和DLP(離散對數(shù)問題)更難解,目前人們能找到最有效的求解ECDLP 的算法(Pollard rho)也是指數(shù)級時間復(fù)雜度的。而近幾年數(shù)學(xué)家和密碼學(xué)家們已經(jīng)證明的一些結(jié)論暗示著ECDLP甚至可能不存在亞指數(shù)時間復(fù)雜度的求解算法,這暗示著 ECC可能是唯一無法用亞指數(shù)算法破解的公鑰密碼。

在已知的公鑰密碼體制中,橢圓曲線密碼體制具有每bit 最高強(qiáng)度的安全性,最快的處理速度和最低的開銷,至今解決橢圓曲線離散對數(shù)最好的算法是完全指數(shù)時間算法。 而IFP 和DLP 都有亞指數(shù)時間算法,這意味著隨著長度的增加,求解ECDLP 的難度比求解IFP 和DLP 的難度增加得快得多。 因此ECC僅需要更小的密鑰長度就可以提供跟RSA 和DSA 相當(dāng)?shù)陌踩浴?研究證明 ,基于橢圓曲線上的密碼體制使用160bit 的密鑰提供的安全性相當(dāng)于RSA 和DSA 使用1024bit 密鑰提供的安全性,210bit 與2048bit 相當(dāng)。 而且在私鑰運(yùn)算(簽名和解密) 方面橢圓曲線上的密碼體制要比RSA 和DSA 快很多,但它的簽名驗(yàn)證和加密速度太慢。 另外,ECC 系統(tǒng)的密鑰生成速度比RSA 快百倍以上。 同時,橢圓曲線資源豐富,同一個有限域上存在著大量不同的橢圓曲線,這為安全性增加了額外的保證。

另外,ECC從實(shí)現(xiàn)的角度來看也有更高的效率。因?yàn)槠渚哂忻荑€短這一天然的優(yōu)勢,就比RSA有著更多的應(yīng)用領(lǐng)域。由于橢圓曲線密碼的密鑰較短(如 160位ECC的私鑰長度僅為1024位RSA的1/6。4,160位公鑰長度僅為1024位RSA的1/3。2),這可以為智能卡這類資源極度受限的嵌 入式系統(tǒng)節(jié)省較多的存儲空間,使得其它程序可利用更多的存儲器來完成復(fù)雜的任務(wù)。而對于像芯片這樣的實(shí)現(xiàn)方式,密鑰短也能使整個生產(chǎn)的成本下降。在使用的 過程中也會由于密鑰短而得到更高的速度。

 

2.2.2.2原理——橢圓曲線上的難題 

橢圓曲線上離散對數(shù)問題ECDLP定義如下:給定素數(shù)p和橢圓曲線E,對Q=kP,在已知P,Q 的情況下求出小于p的正整數(shù)k??梢宰C明由k和P計算Q比較容易,而由Q和P計算k則比較困難。

將橢圓曲線中的加法運(yùn)算與離散對數(shù)中的模乘運(yùn)算相對應(yīng),將橢圓曲線中的乘法運(yùn)算與離散對數(shù)中的模冪運(yùn)算相對應(yīng),我們就可以建立基于橢圓曲線的對應(yīng)的 密碼體制。 

例如,對應(yīng)Diffie-Hellman公鑰系統(tǒng),我們可以通過如下方式在橢圓曲線上予以實(shí)現(xiàn):在E上選取生成元P,要求由P產(chǎn)生的群元素足夠多, 通信雙方A和B分別選取a和b,a和b 予以保密,但將aP和bP公開,A和B間通信用的密鑰為abP,這是第三者無法得知的。

對應(yīng)ELGamal密碼系統(tǒng)可以采用如下的方式在橢圓曲線上予以實(shí)現(xiàn):

將明文m嵌入到E上Pm點(diǎn),選一點(diǎn)B∈E,每一用戶都選一整數(shù)a,0<a<N,N為階數(shù)已知,a保密,aB公開。欲向A送m,可送去下面一對數(shù)偶: [kB,Pm+k(aAB)],k是隨機(jī)產(chǎn)生的整數(shù)。A可以從kB求得k(aAB)。通過:Pm+k(aAB)- k(aAB)=Pm恢復(fù)Pm。同樣對應(yīng)DSA,考慮如下等式:

K=kG  [其中 K,G為Ep(a,b)上的點(diǎn),k為小于n(n是點(diǎn)G的階)的整數(shù)]

不難發(fā)現(xiàn),給定k和G,根據(jù)加法法則,計算K很容易;但給定K和G,求k就相對困難了。

這就是橢圓曲線加密算法采用的難題。我們把點(diǎn)G稱為基點(diǎn)(base point),k(k<n,n為基點(diǎn)G的階)稱為私有密鑰(privte key),K稱為公開密鑰(public key)。

 

2.2.2.3 RSA與ECC的比較

ECC和RSA相比,在許多方面都有對絕對的優(yōu)勢,主要體現(xiàn)在以下方面:

1)抗攻擊性強(qiáng)。相同的密鑰長度,其抗攻擊性要強(qiáng)很多倍。

2)計算量小,處理速度快。ECC總的速度比RSA、DSA要快得多。

3)存儲空間占用小。ECC的密鑰尺寸和系統(tǒng)參數(shù)與RSA、DSA相比要小得多,意味著它所占的存貯空間要小得多。這對于加密算法在IC卡上的應(yīng)用 具有特別重要的意義。

4)帶寬要求低。當(dāng)對長消息進(jìn)行加解密時,三類密碼系統(tǒng)有相同的帶寬要求,但應(yīng)用于短消息時ECC帶寬要求卻低得多。帶寬要求低使ECC在無線網(wǎng)絡(luò) 領(lǐng)域具有廣泛的應(yīng)用前景。

ECC的這些特點(diǎn)使它必將取代RSA,成為通用的公鑰加密算法。比如SET協(xié)議的制定者已

把它作為下一代SET協(xié)議中缺省的公鑰密碼算法。

 

下面兩張表示是RSA和ECC的安全性和速度的比較。

 

攻破時間(MIPS年)

RSA/DSA(密鑰長度)

ECC密鑰長度

RSA/ECC密鑰長度比

104

512

106

5:1

108

768

132

6:1

1011

1024

160

7:1

1020

2048

210

10:1

1078

21000

600

35:1

RSA和ECC安全模長得比較

 

功能

Security Builder 1.2

BSAFE 3.0

163位ECC(ms)

1,023位RSA(ms)

密鑰對生成

3.8

4,708.3

簽名

2.1(ECNRA)

228.4

3.0(ECDSA)

認(rèn)證

9.9(ECNRA)

12.7

10.7(ECDSA)

Diffie—Hellman密鑰交換

7.3

1,654.0

RSA和ECC速度比較

 

 

2.3 散列算法(Hash)

2.3.1簡介

散列是信息的提煉,通常其長度要比信息小得多,且為一個固定長度。加密性強(qiáng)的散列一定是不可逆的,這就意味著通過散列結(jié)果,無法推出任何部分的原始 信息。任何輸入信息的變化,哪怕僅一位,都將導(dǎo)致散列結(jié)果的明顯變化,這稱之為雪崩效應(yīng)。散列還應(yīng)該是防沖突的,即找不出具有相同散列結(jié)果的兩條信息。具 有這些特性的散列結(jié)果就可以用于驗(yàn)證信息是否被修改。

 

2.3.1.1 Hash算法的功能和安全特性

1.輸入報文的長度沒有限制;

2.相同的輸入產(chǎn)生相同的輸出;

3.對輸入任何報文,能生成固定長度的消息摘要(數(shù)字指紋);

4.從報文能方便地算出摘要。

5.隨機(jī)性:消息摘要看起來隨機(jī),難以確定輸入/輸出的關(guān)系;

6.唯一性:幾乎不可能找到兩個消息產(chǎn)生相同的消息摘要;

7.單向性:即如果給出輸出,則很難確定出輸入消息。

 

2.3.1.2 hash算法用途

1)計算消息摘要

2)用于數(shù)字簽名或公開信息的完整性驗(yàn)證。計算MAC(Message Authentication Code)

將保密信息和雙方共享的密鑰一起計算摘要,用于保密信息的完整性驗(yàn)證。

2.3.2 SHA-1

在1993年,安全散列算法(SHA)由美國國家標(biāo)準(zhǔn)和技術(shù)協(xié)會(NIST)提出,并作為聯(lián)邦信息處理標(biāo)準(zhǔn)(FIPS PUB 180)公布;1995年又發(fā)布了一個修訂版FIPS PUB 180-1,通常稱之為SHA-1。SHA-1是基于MD4算法的,并且它的設(shè)計在很大程度上是模仿MD4的?,F(xiàn)在已成為公認(rèn)的最安全的散列算法之一,并 被廣泛使用。

NIST 發(fā)布了三個額外的 SHA 變體,每個都有更長的訊息摘要。以它們的摘要長度 (以位元計算) 加在原名后面來命名:"SHA-256", "SHA-384" 和 "SHA-512"。它們發(fā)布于 2001年的 FIPS PUB 180-2 草稿中,隨即通過審查和評論。包含 SHA-1 的 FIPS PUB 180-2,于 2002年以官方標(biāo)準(zhǔn)發(fā)布。這些新的散列函數(shù)并沒有接受像 SHA-1 一樣的公眾密碼社群做詳細(xì)的檢驗(yàn),所以它們的密碼安全性還不被大家廣泛的信任。2004年2月,發(fā)布了一次 FIPS PUB 180-2 的變更通知,加入了一個額外的變種 "SHA-224",定義了符合雙金鑰 3DES 所需的金鑰長度。

三、加密算法的選擇

前面的章節(jié)已經(jīng)介紹了對稱解密算法和非對稱加密算法,有很多人疑惑:那我們在實(shí)際使用的過程中究竟該使用哪一種比較好呢?

 

我們應(yīng)該根據(jù)自己的使用特點(diǎn)來確定,由于非對稱加密算法的運(yùn)行速度比對稱加密算法的速度慢很多,當(dāng)我們需要加密大量的數(shù)據(jù)時,建議采用對稱加密算 法,提高加解密速度。

 

對稱加密算法不能實(shí)現(xiàn)簽名,因此簽名只能非對稱算法。

 

由于對稱加密算法的密鑰管理是一個復(fù)雜的過程,密鑰的管理直接決定著他的安全性,因此當(dāng)數(shù)據(jù)量很小時,我們可以考慮采用非對稱加密算法。

 

在實(shí)際的操作過程中,我們通常采用的方式是:采用非對稱加密算法管理對稱算法的密鑰,然后用對稱加密算法加密數(shù)據(jù),這樣我們就集成了兩類加密算法的 優(yōu)點(diǎn),既實(shí)現(xiàn)了加密速度快的優(yōu)點(diǎn),又實(shí)現(xiàn)了安全方便管理密鑰的優(yōu)點(diǎn)。

 

如果在選定了加密算法后,那采用多少位的密鑰呢?一般來說,密鑰越長,運(yùn)行的速度就越慢,應(yīng)該根據(jù)的我們實(shí)際需要的安全級別來選擇,一般來 說,RSA建議采用1024位的數(shù)字,ECC建議采用160位,AES采用128為即可。

四、密碼學(xué)在現(xiàn)代的應(yīng)用

隨著密碼學(xué)商業(yè)應(yīng)用的普及,公鑰密碼學(xué)受到前所未有的重視。除傳統(tǒng)的密碼應(yīng)用系統(tǒng)外,PKI系統(tǒng)以公鑰密碼技術(shù)為主,提供加密、簽名、認(rèn)證、密鑰管 理、分配等功能。

 

保密通信:保密通信是密碼學(xué)產(chǎn)生的動因。使用公私鑰密碼體制進(jìn)行保密通信時,信息接收者只有知道對應(yīng)的密鑰才可以解密該信息。

 

數(shù)字簽名:數(shù)字簽名技術(shù)可以代替?zhèn)鹘y(tǒng)的手寫簽名,而且從安全的角度考慮,數(shù)字簽名具有很好的防偽造功能。在政府機(jī)關(guān)、軍事領(lǐng)域、商業(yè)領(lǐng)域有廣泛的應(yīng) 用環(huán)境。

 

秘密共享:秘密共享技術(shù)是指將一個秘密信息利用密碼技術(shù)分拆成n個稱為共享因子的信息,分發(fā)給n個成員,只有k(k≤n)個合法成員的共享因子才可 以恢復(fù)該秘密信息,其中任何一個或m(m≤k)個成員合作都不知道該秘密信息。利用秘密共享技術(shù)可以控制任何需要多個人共同控制的秘密信息、命令等。

 

認(rèn)證功能:在公開的信道上進(jìn)行敏感信息的傳輸,采用簽名技術(shù)實(shí)現(xiàn)對消息的真實(shí)性、完整性進(jìn)行驗(yàn)證,通過驗(yàn)證公鑰證書實(shí)現(xiàn)對通信主體的身份驗(yàn)證。

 

密鑰管理:密鑰是保密系統(tǒng)中更為脆弱而重要的環(huán)節(jié),公鑰密碼體制是解決密鑰管理工作的有力工具;利用公鑰密碼體制進(jìn)行密鑰協(xié)商和產(chǎn)生,保密通信雙方 不需要事先共享秘密信息;利用公鑰密碼體制進(jìn)行密鑰分發(fā)、保護(hù)、密鑰托管、密鑰恢復(fù)等。

 

基于公鑰密碼體制可以實(shí)現(xiàn)以上通用功能以外,還可以設(shè)計實(shí)現(xiàn)以下的系統(tǒng):安全電子商務(wù)系統(tǒng)、電子現(xiàn)金系統(tǒng)、電子選舉系統(tǒng)、電子招投標(biāo)系統(tǒng)、電子彩票 系統(tǒng)等。

 

公鑰密碼體制的產(chǎn)生是密碼學(xué)由傳統(tǒng)的政府、軍事等應(yīng)用領(lǐng)域走向商用、民用的基礎(chǔ),同時互聯(lián)網(wǎng)、電子商務(wù)的發(fā)展為密碼學(xué)的發(fā)展開辟了更為廣闊的前景。

五、加密算法的未來

隨著計算方法的改進(jìn),計算機(jī)運(yùn)行速度的加快,網(wǎng)絡(luò)的發(fā)展,越來越多的算法被破解。

 

在2004年國際密碼學(xué)會議(Crypto’2004)上,來自中國山東大學(xué)的王小云教授做的破譯MD5、HAVAL-128、MD4和 RIPEMD算法的報告,令在場的國際頂尖密碼學(xué)專家都為之震驚,意味著這些算法將從應(yīng)用中淘汰。隨后,SHA-1也被宣告被破解。

 

歷史上有三次對DES有影響的攻擊實(shí)驗(yàn)。1997年,利用當(dāng)時各國 7萬臺計算機(jī),歷時96天破解了DES的密鑰。1998年,電子邊境基金會(EFF)用25萬美元制造的專用計算機(jī),用56小時破解了DES的密鑰。 1999年,EFF用22小時15分完成了破解工作。因此。曾經(jīng)有過卓越貢獻(xiàn)的DES也不能滿足我們?nèi)找嬖鲩L的需求了。

 

最近,一組研究人員成功的把一個512位的整數(shù)分解因子,宣告了RSA的破解。

 

我們說數(shù)據(jù)的安全是相對的,可以說在一定時期一定條件下是安全的,隨著硬件和網(wǎng)絡(luò)的發(fā)展,或者是另一個王小云的出現(xiàn),目前的常用加密算法都有可能在 短時間內(nèi)被破解,那時我們不得不使用更長的密鑰或更加先進(jìn)的算法,才能保證數(shù)據(jù)的安全,因此加密算法依然需要不斷發(fā)展和完善,提供更高的加密安全強(qiáng)度和運(yùn) 算速度。

 

縱觀這兩種算法一個從DES到3DES再到AES,一個從RSA到ECC。其發(fā)展角度無不是從密鑰的簡單性,成本的低廉性,管理的簡易 性,算法的復(fù)雜性,保密的安全性以及計算的快速性這幾個方面去考慮。因此,未來算法的發(fā)展也必定是從這幾個角度出發(fā)的,而且在實(shí)際操作中往往把這兩種算法 結(jié)合起來,也需將來一種集兩種算法優(yōu)點(diǎn)于一身的新型算法將會出現(xiàn),到那個時候,電子商務(wù)的實(shí)現(xiàn)必將更加的快捷和安全

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多