對(duì)稱加密算
對(duì)稱加密算法是加密和解密時(shí)使用相同的密鑰,主要用于保證數(shù)據(jù)的機(jī)密性。最具有代表性的算法是20世紀(jì)70年代IBM公司提出的DES(dataencryptionstandard)算法;在此基礎(chǔ)上又提出了許多DES的改進(jìn)算法,如三重DES(tripleDES)、隨機(jī)化DES(RDS)、IDEA(internationaldataencryptionalgorithm)、廣義DES(generalizedDES)、NewDES、Blowfish、FEAL以及RC5等。2001年美國(guó)國(guó)家標(biāo)準(zhǔn)與技術(shù)研究院發(fā)布高級(jí)加密標(biāo)準(zhǔn)(advancedencryptionstandard,AES)取代了DES,成為對(duì)稱密鑰加密中最流行的算法之一。
對(duì)稱加密算法的優(yōu)點(diǎn)是計(jì)算開(kāi)銷小、加密速度快,適用于少量或海量數(shù)據(jù)的加密,是目前用于信息加密的主要算法。
其缺點(diǎn)是通信雙方使用相同的密鑰,很難確保雙方密鑰的安全性;密鑰數(shù)據(jù)量增長(zhǎng)時(shí),密鑰管理會(huì)給用戶帶來(lái)負(fù)擔(dān);此外,它僅適用于對(duì)數(shù)據(jù)進(jìn)行加解密處理,提供數(shù)據(jù)的機(jī)密性,它不適合在分布式網(wǎng)絡(luò)系統(tǒng)中使用,密鑰管理困難,且成本較高。
非對(duì)稱加密算法
非對(duì)稱加密算法也叫公開(kāi)密鑰算法,其加密和解密是相對(duì)獨(dú)立的,使用不同的密鑰。它主要用于身份認(rèn)證、數(shù)字簽名等信息交換領(lǐng)域。公鑰密碼體制的算法中最著名的代表是RSA,此外還有背包密碼、DSA,McEliece密碼、Diffe_Hellman、Rabin、零知識(shí)證明、橢圓曲線、EIGamal算法等。非對(duì)稱加密算法的優(yōu)點(diǎn)是可以適應(yīng)網(wǎng)絡(luò)的開(kāi)放性要求,且密鑰管理問(wèn)題也較為簡(jiǎn)單,可方便地實(shí)現(xiàn)數(shù)字簽名和驗(yàn)證。其缺點(diǎn)是算法復(fù)雜、加密數(shù)據(jù)的速率較低。然而,無(wú)論是對(duì)稱加密算法還是非對(duì)稱加密算法都存在密鑰泄露的風(fēng)險(xiǎn)。因此,Rivest在1989年開(kāi)發(fā)出MD2算法,不需要密鑰,引發(fā)了雜湊算法(也稱Hash函數(shù))的研究,即把任意長(zhǎng)的輸入消息字符串變化成固定長(zhǎng)的輸出串,不需要密鑰,且過(guò)程是單向的,不可逆的。比較流行的算法有MD5,sha-1,RIPEMD以及Haval等。雜湊算法不存在密鑰保管和分發(fā)問(wèn)題,非常適合在分布式網(wǎng)絡(luò)系統(tǒng)上使用,但因加密計(jì)算復(fù)雜,通常只在數(shù)據(jù)量有限的情形下使用,如廣泛應(yīng)用在注冊(cè)系統(tǒng)中的口令密、軟件使用期限加密等。數(shù)據(jù)加密技術(shù)能保證最終數(shù)據(jù)的準(zhǔn)確性和安全性,但計(jì)算開(kāi)銷比較大,加密并不能防止數(shù)據(jù)流向外部,因此,加密自身不能完全解決保護(hù)數(shù)據(jù)隱私的問(wèn)題。數(shù)據(jù)加密算法作為隱私保護(hù)的一項(xiàng)關(guān)鍵技術(shù),大數(shù)據(jù)時(shí)代研究重點(diǎn)將集中在對(duì)已有算法的完善;綜合使用對(duì)稱加密算法和非對(duì)稱加密算法。隨著新技術(shù)的出現(xiàn)會(huì)研究出符合新技術(shù)發(fā)展的新加密算法。
對(duì)稱加密和非對(duì)稱加密都有分國(guó)際算法和國(guó)密算法。
非對(duì)稱加密:RSA(國(guó)際算法),SM2(國(guó)密算法)
對(duì)稱加密:DES(國(guó)際算法), SM4(國(guó)密算法)
以RSA加密過(guò)程為例
RSA的公鑰、私鑰的組成,以及加密、解密的公式可見(jiàn)于下表:
素?cái)?shù)是這樣的整數(shù),它除了能表示為它自己和1的乘積以外,不能表示為任何其它兩個(gè)整數(shù)的乘積。
公約數(shù)只有1的兩個(gè)數(shù),叫做互質(zhì)數(shù)。
讓m去被n整除,只取所得的余數(shù)作為結(jié)果,就叫做模運(yùn)算。
步驟例如:
(1)設(shè)計(jì)公私密鑰(e,n)和(d,n)。
令p=3,q=11,得出n=p×q=3×11=33;f(n)=(p-1)(q-1)=2×10=20;取e=3,(3與20互質(zhì))則e×d≡1 modf(n),即3×d≡1 mod 20。
d怎樣取值呢?可以用試算的辦法來(lái)尋找。試算結(jié)果見(jiàn)
通過(guò)試算我們找到,當(dāng)d=7時(shí),e×d≡1 mod f(n)同余等式成立。因此,可令d=7。從而我們可以設(shè)計(jì)出一對(duì)公私密鑰,加密密鑰(公鑰)為:KU=(e,n)=(3,33),解密密鑰(私鑰)為:KR =(d,n)=(7,33)。
(2)英文數(shù)字化。
將明文信息數(shù)字化,并將每塊兩個(gè)數(shù)字分組。假定明文英文字母編碼表為按字母順序排列數(shù)值,如表示
則得到分組后的key的明文信息為:11,05,25。
(3)明文加密
用戶加密密鑰(3,33)將數(shù)字化明文分組信息加密成密文。由C≡Me(mod n)因此,得到相應(yīng)的密文信息為:11,31,16。
(4)密文解密。
用戶B收到密文,若將其解密,只需要計(jì)算,即:
用戶B得到明文信息為:11,05,25。根據(jù)上面的編碼表將其轉(zhuǎn)換為英文,我們又得到了恢復(fù)后的原文“key”。
RSA的缺點(diǎn):
1.產(chǎn)生密鑰很麻煩,受到素?cái)?shù)產(chǎn)生技術(shù)的限制,因而難以做到一次一密。
2.分組長(zhǎng)度太大,為保證安全性,n 至少也要 600 bits 以上,使運(yùn)算代價(jià)很高,尤其是速度較慢,較對(duì)稱密碼算法慢幾個(gè)數(shù)量級(jí);且隨著大數(shù)分解技術(shù)的發(fā)展,這個(gè)長(zhǎng)度還在增加,不利于數(shù)據(jù)格式的標(biāo)準(zhǔn)化。因此,使用RSA只能加密少量數(shù)據(jù),大量的數(shù)據(jù)加密還要靠對(duì)稱密碼算法。
聯(lián)系客服