11.DES算法 DES(Data Encryption Standard)是一種經(jīng)典的對(duì)稱算法。其數(shù)據(jù)分組長度為64位,使用的密鑰為64位,有效密鑰長度為56位(有8位用于奇偶校驗(yàn))。它由IBM公司在70年代開發(fā),經(jīng)過政府的加密標(biāo)準(zhǔn)篩選后,于1976年11月被美國政府采用,隨后被美國國家標(biāo)準(zhǔn)局和美國國家標(biāo)準(zhǔn)協(xié)會(huì)(American National Standard Institute, ANSI) 承認(rèn)。
該技術(shù)算法公開,在各行業(yè)有著廣泛的應(yīng)用。DES算法從公布到現(xiàn)在已有20多年的歷史,隨著計(jì)算機(jī)能力的飛速發(fā)展,DES的56位密鑰長度顯得有些短了,F(xiàn)在,已經(jīng)有可能通過窮舉的方法來對(duì)其進(jìn)行攻擊。但是除此以外,還沒有發(fā)現(xiàn)窮舉以外的能有效破譯DES的方法。
DES算法的數(shù)據(jù)流程圖如下圖所示:
12.三重DES DES算法現(xiàn)在已經(jīng)不能提供足夠的安全性,因?yàn)槠溆行荑只有56位。因此,后來又提出了三重DES(或稱3DES),該方法的強(qiáng)度大約和112比特的密鑰強(qiáng)度相當(dāng)。
這種方法用兩個(gè)密鑰對(duì)明文進(jìn)行三次運(yùn)算。設(shè)兩個(gè)密鑰是K1和K2,其算法的步驟如圖所示:
1. 用密鑰K1進(jìn)行DES加密。 2. 用K2對(duì)步驟1的結(jié)果進(jìn)行DES解密。 3. 用步驟2的結(jié)果使用密鑰K1進(jìn)行DES加密。
13.AES算法 1997年1月美國國家標(biāo)準(zhǔn)和技術(shù)研究所(NIST)宣布征集新的加密算法。2000年10月2日,由比利時(shí)設(shè)計(jì)者Joan Daemen和Vincent Rijmen設(shè)計(jì)的Rijndael算法以其優(yōu)秀的性能和抗攻擊能力,最終贏得了勝利,成為新一代的加密標(biāo)準(zhǔn)AES(Advanced Encryption Standard)。
Rijndael加密:
Rijndael是一個(gè)密鑰迭代分組密碼,包含了輪變換對(duì)狀態(tài)的重復(fù)作用。輪數(shù)Nr 的值取決于分組和密鑰的長度。對(duì)于AES,當(dāng)密鑰長度為128比特時(shí),Nr =10;當(dāng)密鑰長度為192比特時(shí),Nr =12;當(dāng)密鑰長度為256比特時(shí),Nr =14。
Rijndael算法的加密過程如圖1所示。它包括一個(gè)初始密鑰加法,記作AddRoundKey,接著進(jìn)行Nr-1次輪變換(Round),最后再使用一個(gè)輪變換(FinalRound)。
輪變換由4個(gè)步驟組成:SubBytes,ShiftRows,MixColumns和AddRoundKey。最后一輪與前Nr -1次輪變換稍有不同,省掉了其中的MixColumns步驟。
步驟SubBytes是Rijndael算法中唯一的非線性變換。
步驟ShiftRows是一個(gè)字節(jié)換位,它將狀態(tài)中的行按照不同的偏移量進(jìn)行循環(huán)移位。使第i 行第j 位的字節(jié)移動(dòng)到位置(j -Ci)mod Nb,移動(dòng)偏移量Ci 的值依賴于Nb 的取值。其中Nb =分組長度/32,對(duì)于AES,Nb 取固定長度4
步驟MixColumns是作用在狀態(tài)各列的置換算法。
密鑰加法AddRoundKey將狀態(tài)與一個(gè)輪密鑰進(jìn)行異或。輪密鑰是由密碼密鑰通過密鑰編排方案[1]導(dǎo)出。輪密鑰的長度等于分組的長度。
Rijndael解密:
Rijndael解密算法有2種形式。一種是直接解密算法,即直接利用步驟InsubBytes,InvShiftRows,InvMixColumns和AddRoundKey的逆并倒置其次序?qū)?shù)據(jù)進(jìn)行解密。
另一種是等價(jià)解密算法,其實(shí)現(xiàn)原理如圖2所示。等價(jià)解密算法有利于有效實(shí)現(xiàn)良好的運(yùn)算次序。
14.非對(duì)稱算法的概念 所謂非對(duì)稱算法就是指加密和解密用的不是同一個(gè)密鑰。
非對(duì)稱算法的密鑰分為二部分,通常稱為“公鑰”和“私鑰”(或者稱為“公開密鑰”和“秘密密鑰”)。公鑰和私鑰存在數(shù)學(xué)上的關(guān)系,使得用公鑰加密的數(shù)據(jù)只能用對(duì)應(yīng)的私鑰解密,用私鑰加密的數(shù)據(jù)只能用對(duì)應(yīng)的公鑰解密。但是從公鑰中推導(dǎo)出私鑰是很難的(理論上是可以推導(dǎo)出來的,但是實(shí)際上找不到這么強(qiáng)的計(jì)算能力)。
RSA,DSA等算法屬于非對(duì)稱算法。
15.RSA算法 RSA算法是第一個(gè)能同時(shí)用于加密和數(shù)字簽名的算法,也易于理解和操作。RSA是被研究得最廣泛的公鑰算法,從1978年提出到現(xiàn)在已近三十年,經(jīng)歷了各種攻擊的考驗(yàn),逐漸為人們接受,普遍認(rèn)為是目前最優(yōu)秀的公鑰方案之一。通常認(rèn)為破譯RSA的難度與大數(shù)分解難度等價(jià)。算法以三個(gè)發(fā)明者的名字命名:Ron Rivest, Adi Shamir 和Leonard Adleman。
RSA算法的原理:
1、密鑰對(duì)的產(chǎn)生:
選擇兩個(gè)大素?cái)?shù),p 和q 。計(jì)算: n = p * q
然后隨機(jī)選擇加密密鑰e,要求 e 和 ( p - 1 ) * ( q - 1 ) 互質(zhì)。最后,利用 Euclid 算法計(jì)算解密密鑰d, 使其滿足
e * d = 1 ( mod ( p - 1 ) * ( q - 1 ) )
其中n和d要互質(zhì)。數(shù)e和n是公鑰,d是私鑰。兩個(gè)素?cái)?shù)p和q不再需要,應(yīng)該丟棄,不要讓任何人知道。
2、加密
加密信息 m(二進(jìn)制表示)時(shí),首先把m分成等長數(shù)據(jù)塊 m1 ,m2,..., mi ,塊長s ,其中 2^s <= n, s 盡可能的大。加密的公式是:
ci = mi^e ( mod n )
3、解密 解密時(shí)作如下計(jì)算: mi = ci^d ( mod n )
16.散列算法 散列算法,也稱為單向散列函數(shù)、雜湊函數(shù)、哈希算法、HASH算法或消息摘要算法。它通過把一個(gè)單向數(shù)學(xué)函數(shù)應(yīng)用于數(shù)據(jù),將任意長度的一塊數(shù)據(jù)轉(zhuǎn)換為一個(gè)定長的、不可逆轉(zhuǎn)的數(shù)據(jù)。這段數(shù)據(jù)通常叫做消息摘要(比如,對(duì)一個(gè)幾兆字節(jié)的文件應(yīng)用散列算法,得到一個(gè)128位的消息摘要)。消息摘要代表了原始數(shù)據(jù)的特征,當(dāng)原始數(shù)據(jù)發(fā)生改變時(shí),重新生成的消息摘要也會(huì)隨之變化,即使原始數(shù)據(jù)的變化非常小,也可以引起消息摘要的很大變化。因此,消息摘要算法可以敏感地檢測到數(shù)據(jù)是否被篡改。消息摘要算法再結(jié)合其它的算法就可以用來保護(hù)數(shù)據(jù)的完整性。
好的單向散列函數(shù)必須具有以下特性:
1) 計(jì)算的單向性:給定M和H,求h=H(M)容易,但反過來給定h和H,求M=H-1(h)在計(jì)算上是不可行的。
2) 弱碰撞自由:給定M,要尋找另一信息 M′,滿足 H(M′)=H(M)在計(jì)算上不可行。
3) 強(qiáng)碰撞自由:,要尋找不同的信息M 和M′,滿足 H(M′)=H(M)在計(jì)算上不可行。
單向散列函數(shù)的使用方法為:用散列函數(shù)對(duì)數(shù)據(jù)生成散列值并保存,以后每次使用時(shí)都對(duì)數(shù)據(jù)使用相同的散列函數(shù)進(jìn)行散列,如果得到的值與保存的散列值相等,則認(rèn)為數(shù)據(jù)未被修改(數(shù)據(jù)完整性驗(yàn)證)或兩次所散列的原始數(shù)據(jù)相同(口令驗(yàn)證)。
典型的散列函數(shù)有:MD5,SHA-1,HMAC,GOST等。單向散列函數(shù)主要用在一些只需加密不需解密的場合:如驗(yàn)證數(shù)據(jù)的完整性、口令表的加密、數(shù)字簽名、身份認(rèn)證等。
17.關(guān)于MD5和SHA-1等 2004年,山東大學(xué)王小云教授攻破了MD5算法,引起密碼學(xué)界的軒然大波。
MD5的全稱是Message-Digest Algorithm 5(信息-摘要算法),在90年代初由MIT Laboratory for Computer Science和RSA Data Security Inc的Ronald L. Rivest開發(fā)出來,經(jīng)MD2、MD3和MD4發(fā)展而來。
2004年8月17日的美國加州圣巴巴拉召開的國際密碼學(xué)會(huì)議(Crypto’2004)安排了三場關(guān)于雜湊函數(shù)的特別報(bào)告。在國際著名密碼學(xué)家Eli Biham和Antoine Joux相繼做了對(duì)SHA-1的分析與給出SHA-0的一個(gè)碰撞之后,來自山東大學(xué)的王小云教授做了破譯MD5、HAVAL-128、 MD4和RIPEMD算法的報(bào)告。王小云教授的報(bào)告轟動(dòng)了全場,得到了與會(huì)專家的贊嘆。
不久,密碼學(xué)家Lenstra利用王小云提供的MD5碰撞,偽造了符合X.509標(biāo)準(zhǔn)的數(shù)字證書,這就說明了MD5的破譯已經(jīng)不僅僅是理論破譯結(jié)果,而是可以導(dǎo)致實(shí)際的攻擊,MD5的撤出迫在眉睫。
安全散列算法1(SHA-1)是由NSA設(shè)計(jì)的,并由NIST將其收錄到 FIPS 中,作為散列數(shù)據(jù)的標(biāo)準(zhǔn)。它可產(chǎn)生一個(gè) 160 位的散列值。SHA-1是流行的用于創(chuàng)建數(shù)字簽名的單向散列算法。
在MD5被王小云為代表的中國專家破譯之后,世界密碼學(xué)界仍然認(rèn)為SHA-1是安全的。2005年2月7日,美國國家標(biāo)準(zhǔn)技術(shù)研究院發(fā)表申明,SHA-1沒有被攻破,并且沒有足夠的理由懷疑它會(huì)很快被攻破。而僅僅在一周之后,王小云就發(fā)布了消息,說明了SHA-1算法尋找一對(duì)碰撞的復(fù)雜度是2^69,而不是密碼學(xué)家以前認(rèn)為的2^80。
如何理解這個(gè)結(jié)果呢?在很多報(bào)道中,包括山東大學(xué)的網(wǎng)站上,都說SHA1被攻破了,被破解了,云云。作者對(duì)這類說法持保留態(tài)度。引用王小云教授論文中的說法:
“對(duì)于SHA0,這種攻擊很有效,我們能夠在不超過2^39次Hash操作中找到實(shí)際的碰撞。我們也對(duì)弱化到58步的SHA1進(jìn)行了攻擊,并在不超過2^33次Hash操作中找到了實(shí)際的碰撞!
“SHA0和58步的SHA1是作為80步完整SHA1的簡化版,用來驗(yàn)證我們的新方法的效率的。此外,我們的分析表明,減弱到70步的SHA1的碰撞復(fù)雜度是2^50次Hash操作;谶@個(gè)估計(jì),我們期望在現(xiàn)在的超級(jí)計(jì)算機(jī)上能找到70步SHA1的真實(shí)碰撞。”
所以,嚴(yán)格說來應(yīng)該這樣理解:這個(gè)結(jié)果把攻破SHA1的計(jì)算量降低了2000倍。在某些情況下,SHA1似乎走到了不安全的邊緣。
MD5被攻破了,SHA1也不那么安全了,怎么辦呢?現(xiàn)在看來,還有SHA-256和SHA-512等算法可用。密碼學(xué)家也在研究新的散列算法。
18.數(shù)字鑒名 密碼技術(shù)除了提供信息的加密解密外,還提供對(duì)信息來源的鑒別、保證信息的完整和不可否認(rèn)等功能,而這三種功能都是結(jié)合數(shù)字簽名技術(shù)來實(shí)現(xiàn)的。
簡單地說,數(shù)字簽名的原理可以這樣理解:用非對(duì)稱算法的私鑰加密的內(nèi)容只能用對(duì)應(yīng)的公鑰來解密。而私鑰是不公開的。因此,如果一段信息能用某個(gè)人的公鑰解密,那么它一定是用此人的私鑰加密的。它和物理的簽名一樣,是很難偽造的。
在實(shí)際應(yīng)用中,數(shù)字簽名的過程通常是這樣實(shí)現(xiàn):
將要傳送的明文通過一種函數(shù)運(yùn)算(Hash)轉(zhuǎn)換成報(bào)文摘要(不同的明文對(duì)應(yīng)不同的報(bào)文摘要),報(bào)文摘要用私鑰加密后與明文一起傳送給接受方,接受方用發(fā)送方的公鑰來解密報(bào)文摘要,再將接受的明文產(chǎn)生新的報(bào)文摘要與發(fā)送方的報(bào)文摘要比較,比較結(jié)果一致表示明文確實(shí)來自期望的發(fā)送方,并且未被改動(dòng)。如果不一致表示明文已被篡改或不是來自期望的發(fā)送方。
19.數(shù)字證書 為了保證互聯(lián)網(wǎng)上電子交易及支付的安全性,防范交易及支付過程中的欺詐行為,必須在網(wǎng)上建立一種信任機(jī)制。這就要求參加電子商務(wù)的買方和賣方都必須擁有合法的身份,并且在網(wǎng)上能夠有效無誤的被進(jìn)行驗(yàn)證。數(shù)字證書是一種權(quán)威性的電子文檔。它提供了一種在Internet上驗(yàn)證您身份的方式,其作用類似于司機(jī)的駕駛執(zhí)照或日常生活中的身份證。它是由一個(gè)由權(quán)威機(jī)構(gòu)----CA證書授權(quán)(Certificate Authority)中心發(fā)行的,人們可以在互聯(lián)網(wǎng)交往中用它來識(shí)別對(duì)方的身份。當(dāng)然在數(shù)字證書認(rèn)證的過程中,證書認(rèn)證中心(CA)作為權(quán)威的、公正的、可信賴的第三方,其作用是至關(guān)重要的。
數(shù)字證書頒發(fā)過程一般為:用戶首先產(chǎn)生自己的密鑰對(duì),并將公共密鑰及部分個(gè)人身份信息傳送給認(rèn)證中心。認(rèn)證中心在核實(shí)身份后,將執(zhí)行一些必要的步驟,以確信請(qǐng)求確實(shí)由用戶發(fā)送而來,然后,認(rèn)證中心將發(fā)給用戶一個(gè)數(shù)字證書,該證書內(nèi)包含用戶的個(gè)人信息和他的公鑰信息,同時(shí)還附有認(rèn)證中心的簽名信息。用戶就可以使用自己的數(shù)字證書進(jìn)行相關(guān)的各種活動(dòng)。數(shù)字證書由獨(dú)立的證書發(fā)行機(jī)構(gòu)發(fā)布。數(shù)字證書各不相同,每種證書可提供不同級(jí)別的可信度?梢詮淖C書發(fā)行機(jī)構(gòu)獲得您自己的數(shù)字證書。
隨著Internet的普及、各種電子商務(wù)活動(dòng)和電子政務(wù)活動(dòng)的飛速發(fā)展,數(shù)字證書開始廣泛地應(yīng)用到各個(gè)領(lǐng)域之中,目前主要包括:發(fā)送安全電子郵件、訪問安全站點(diǎn)、網(wǎng)上招標(biāo)投標(biāo)、網(wǎng)上簽約、網(wǎng)上訂購、安全網(wǎng)上公文傳送、網(wǎng)上繳費(fèi)、網(wǎng)上繳稅、網(wǎng)上炒股、網(wǎng)上購物和網(wǎng)上報(bào)關(guān)等。
出處:藍(lán)色理想
責(zé)任編輯:moby
上一頁 關(guān)于加密和安全v0.94 [1] 下一頁 關(guān)于加密和安全v0.94 [3]
◎進(jìn)入論壇計(jì)算機(jī)技術(shù)版塊參加討論
|