密碼算法是用于加密和解密的數(shù)學(xué)函數(shù),密碼算法是密碼協(xié)議的基礎(chǔ),用于保證信息的安全,提供鑒別、完整性、抗抵賴等服務(wù)。本期內(nèi)容將介紹現(xiàn)代密碼算法中,常見(jiàn)的國(guó)際密碼算法。
現(xiàn)代密碼算法主要有對(duì)稱密碼算法(簡(jiǎn)稱“對(duì)稱密碼”)、非對(duì)稱密碼算法(又稱“公鑰密碼算法”,簡(jiǎn)稱“公鑰密碼”)、密碼雜湊算法(又稱“散列算法、哈希算法”,簡(jiǎn)稱“雜湊算法”)等。
一、對(duì)稱密碼算法
對(duì)稱密碼算法的加密過(guò)程與解密過(guò)程使用相同或容易相互推導(dǎo)得出的密鑰,即加密和解密過(guò)程的密鑰是“對(duì)稱”的。對(duì)稱密碼主要有序列密碼和分組密碼。
圖-1對(duì)稱密碼算法加解密過(guò)程
1、序列密碼算法
序列密碼也稱為流密碼(Stream Cipher),它是對(duì)稱密碼算法的一種。利用密鑰產(chǎn)生一個(gè)密鑰流Z=Z1Z2Z3…,然后利用此密鑰流依次對(duì)明文X=X=X0X1X2…進(jìn)行加密,這樣產(chǎn)生的密碼就是序列密碼。
2、分組密碼算法
分組密碼(Block Cipher)是將明文數(shù)據(jù)分成多個(gè)等長(zhǎng)度的塊,這樣的數(shù)據(jù)塊叫作分組。每個(gè)分組以同樣的處理過(guò)程、同樣的密鑰進(jìn)行加密和解密。它的加解密過(guò)程一般采用混淆和擴(kuò)散部件的多次迭代方式。但分組密碼不用產(chǎn)生很長(zhǎng)的密鑰流。它的特點(diǎn)是適應(yīng)能力強(qiáng),可用于多種計(jì)算平臺(tái),易于標(biāo)準(zhǔn)化,多用于大數(shù)據(jù)量的加密場(chǎng)景。主要有SM1算法、SM7算法、SM4算法、DES算法、AES算法。
DES算法
DES(數(shù)據(jù)加密標(biāo)準(zhǔn))是由IBM公司在70年代發(fā)展起來(lái)的。
DES分組長(zhǎng)度為64比特,密鑰長(zhǎng)度為64比特,有效密鑰長(zhǎng)度為56比特。
TDES即Triple DES,三重?cái)?shù)據(jù)加密算法。TDES的分組長(zhǎng)度為64比特,密鑰長(zhǎng)度為128比特,有效密鑰長(zhǎng)度為112比特。
AES算法
AES(Advanced EncryptionStandard,高級(jí)加密標(biāo)準(zhǔn)),在密碼學(xué)中又稱Rijndael加密法。這個(gè)標(biāo)準(zhǔn)被用來(lái)替代原先的DES,已經(jīng)被多方分析且廣為全世界所使用。2006年,AES已然成為對(duì)稱密鑰加密中最流行的算法之一。
AES加密數(shù)據(jù)塊分組長(zhǎng)度必須為128比特,密鑰長(zhǎng)度可以是128比特、192比特、256比特中的任意一個(gè)(如果數(shù)據(jù)塊及密鑰長(zhǎng)度不足時(shí),自動(dòng)補(bǔ)齊)。
RC系列算法
RC系列是Ron Rivest為RSA公司設(shè)計(jì)的一系列密碼。
1)RC1從未被公開(kāi),以致于許多人們稱其只出現(xiàn)在Rivest的記事本上;
2)RC2是變長(zhǎng)密鑰加密密法;(RC3在設(shè)計(jì)過(guò)程中在RSADSI內(nèi)被攻破);
3)RC4是Rivest在1987年設(shè)計(jì)的變長(zhǎng)密鑰的序列密碼;RC4算法密鑰長(zhǎng)度是可變的,通常密鑰的長(zhǎng)度為128比特。
4)RC5是Rivest在1994年設(shè)計(jì)的分組長(zhǎng)、密鑰長(zhǎng)的迭代輪數(shù)都可變的分組迭代密碼算法。
二、非對(duì)稱密碼算法
非對(duì)稱加密(公鑰加密):指加密和解密使用不同密鑰的加密算法,也稱為公私鑰加密。非對(duì)稱加密的缺點(diǎn)是加解密速度要遠(yuǎn)遠(yuǎn)慢于對(duì)稱加密。
假設(shè)兩個(gè)用戶要加密交換數(shù)據(jù),雙方交換公鑰,使用時(shí)一方用對(duì)方的公鑰加密,另一方即可用自己的私鑰解密。由于公鑰是可以公開(kāi)的,用戶只要保管好自己的私鑰即可,因此加密密鑰的分發(fā)將變得十分簡(jiǎn)單。
圖-2非對(duì)稱密碼算法加解密過(guò)程
1、RSA算法
Ron Rivest、Adi Shamir和Len Adleman于1977年研制并于1978年首次發(fā)表。RSA是一種分組密碼,其理論基礎(chǔ)是一種特殊的可逆模冪運(yùn)算,其安全性基于分解大整數(shù)的困難性。既可用于加密,又可用于數(shù)字簽名,已得到廣泛采用。
基于特殊的可逆模冪運(yùn)算,亞指數(shù)級(jí),存儲(chǔ)空間:2048-4096比特,密鑰生成速度慢,加密解密速度一般。常用于公開(kāi)密鑰加密和電子商業(yè)。密鑰長(zhǎng)度為1024比特、2048比特,保證數(shù)據(jù)的機(jī)密性。
圖-3 RSA算法加解密過(guò)程
三、雜湊算法
雜湊算法(也稱雜湊函數(shù)或Hash函數(shù)),是一種把任意長(zhǎng)的輸入消息串變化成固定長(zhǎng)的輸出串的函數(shù)。輸出串稱為該消息的雜湊值,具有不可逆的性質(zhì)。雜湊算法用于數(shù)字簽名及驗(yàn)證、消息認(rèn)證碼生成及驗(yàn)證、隨機(jī)數(shù)生成等。
1、MD5算法
MD5算法由美國(guó)密碼學(xué)家羅納德·李維斯特(Ronald Linn Rivest)設(shè)計(jì),于1992年公開(kāi),用以取代MD4算法。MD5算法的輸入消息可為任意長(zhǎng)度,輸出消息為128比特。
2004年,證實(shí)MD5算法無(wú)法防止碰撞(collision),因此不適用于安全性認(rèn)證,如SSL公開(kāi)密鑰認(rèn)證或是數(shù)字簽名等用途。同年8月17日,王小云院士研究發(fā)現(xiàn),可以在一個(gè)多小時(shí)找到MD5的“碰撞”,就是兩個(gè)文件可以產(chǎn)生相同的“指紋”,也就是說(shuō)簽名相同但內(nèi)容已完全不同,使偽造某一份合同成為可能。
2、SHA系列算法
SHA(安全散列算法)是一個(gè)密碼散列函數(shù)家族,是FIPS所認(rèn)證的安全散列算法。能計(jì)算出一個(gè)數(shù)字消息所對(duì)應(yīng)到的,長(zhǎng)度固定的字符串(又稱消息摘要)的算法。
SHA家族的五個(gè)算法,分別是SHA-1、SHA-224、SHA-256、SHA-384和SHA-512。
SHA算法有如下特性:
1)不可以從消息摘要中復(fù)原信息;
2)兩個(gè)不同的消息不會(huì)產(chǎn)生同樣的消息摘要。
SHA-0
SHA-0算法在發(fā)布之后很快就被NSA撤回,并且由1995年發(fā)布的修訂版本FIPS PUB 180-1(通常稱為SHA-1)取代。
2005年二月,王小云和殷益群、于紅波發(fā)表了對(duì)SHA-0破密的算法,可在的計(jì)算復(fù)雜度內(nèi)就找到碰撞。
SHA-1
SHA-1算法,輸入一個(gè)長(zhǎng)度不超過(guò)比特的數(shù)據(jù)塊,輸出一個(gè)長(zhǎng)度為160比特的散列值,通常用40個(gè)十六進(jìn)制數(shù)表示。SHA-1在許多安全協(xié)議中廣為使用,包括TLS和SSL、PGP、SSH和IPSec,曾被視為是MD5的后繼者。
王小云院士利用MD5的破譯技術(shù),成功解決了SHA-1差分分析中的一種不可能差分,這是SHA類算法(SHA-1,SHA-0)一個(gè)的分析技術(shù)難點(diǎn)與瓶頸,并解決了難以確定的滿足碰撞路線的明文條件以及明文修改技術(shù)。這些關(guān)鍵技術(shù)的解決最終導(dǎo)致了SHA-1全算法的破譯,并大大提高了SHA-0的碰撞概率。
SHA-256
SHA-256算法,輸入消息的最大長(zhǎng)度不超過(guò)264比特,輸出一個(gè)長(zhǎng)度為256比特的哈希值,為消息摘要,32字節(jié)數(shù)組,長(zhǎng)度為64比特的十六進(jìn)制字符串表示。
SHA-256算法計(jì)算消息摘要的原理:對(duì)于任意長(zhǎng)度(按bit計(jì)算)的消息,SHA-256都會(huì)產(chǎn)生一個(gè)32個(gè)字節(jié)長(zhǎng)度數(shù)據(jù),稱作消息摘要。當(dāng)接收到消息的時(shí)候,這個(gè)消息摘要可以用來(lái)驗(yàn)證數(shù)據(jù)是否發(fā)生改變,即驗(yàn)證其完整性。
SHA-384
SHA-384算法,輸入的最大計(jì)算長(zhǎng)度為比特,分組長(zhǎng)度為1024比特,產(chǎn)生的信息摘要長(zhǎng)度為384比特。
SHA-512
SHA-512算法,算法輸入的最大計(jì)算長(zhǎng)度為比特,分組長(zhǎng)度為1024比特,產(chǎn)生的信息摘要長(zhǎng)度為512比特。