對(duì)稱加密算法:
對(duì)稱加密算法也叫傳統(tǒng)密碼算法(加密密鑰算法、單鑰算法),加密密鑰能從解密密鑰中推算出來。
發(fā)件人和收件人共同擁有同一個(gè)密鑰,既用于加密也用于解密。對(duì)稱密鑰加密是加密大量數(shù)據(jù)的一種行之有效的方法。對(duì)稱密鑰加密有許多種算法,但所有這些算法都有一個(gè)共同的目的:將明文(未加密的數(shù)據(jù))轉(zhuǎn)換為暗文。由于對(duì)稱密鑰加密在加密和解密時(shí)使用相同的密鑰,所以這種加密過程的安全性取決于是否有未經(jīng)授權(quán)的人獲得了對(duì)稱密鑰。
特別注意:
希望使用對(duì)稱密鑰加密通信的雙方,在交換加密數(shù)據(jù)之前必須先安全地交換密鑰。
衡量對(duì)稱算法優(yōu)劣的主要尺度是其密鑰的長度。
密鑰越長,在找到解密數(shù)據(jù)所需的正確密鑰之前必須測(cè)試的密鑰數(shù)量就越多。需要測(cè)試的密鑰越多,破解這種算法就越困難。有了好的加密算法和足夠長的密鑰,如果有人想在一段實(shí)際可行的時(shí)間內(nèi)逆轉(zhuǎn)轉(zhuǎn)換過程,從暗文中推導(dǎo)出明文,從應(yīng)用的角度來講,這種做法是徒勞的。
非對(duì)稱加密算法:
非對(duì)稱算法也叫公鑰加密,使用兩個(gè)密鑰:一個(gè)公鑰和一個(gè)私鑰,這兩個(gè)密鑰在數(shù)學(xué)上是相關(guān)的。
在公鑰加密中,公鑰可在通信雙方之間公開傳遞,或在公用儲(chǔ)備庫中發(fā)布,但相關(guān)的私鑰是永遠(yuǎn)掌握在自己手里。只有使用私鑰才能解密用公鑰加密的數(shù)據(jù)。使用私鑰加密的數(shù)據(jù)只能用公鑰解密。
與對(duì)稱密鑰加密相似,公鑰加密也有許多種算法替換另一種,而變化卻不大,因?yàn)樗鼈兊墓ぷ鞣绞绞窍嗤?。而不同公鑰算法的工作方式卻完全不同,因此它們不可互換。
公鑰算法是復(fù)雜的數(shù)學(xué)方程式,使用十分大的數(shù)字。公鑰算法的主要局限在于,這種加密形式的速度相對(duì)較低。實(shí)際上,通常僅在關(guān)鍵時(shí)刻才使用公鑰算法,如在實(shí)體之間交換對(duì)稱密鑰時(shí),或者在簽署一封郵件的散列時(shí)(散列是通過應(yīng)用一種單向數(shù)學(xué)函數(shù)獲得的一個(gè)定長結(jié)果,對(duì)于數(shù)據(jù)而言,叫做散列算法)。
對(duì)稱密鑰算法的優(yōu)缺點(diǎn):
對(duì)稱密鑰的主要優(yōu)點(diǎn)在于速度快,通常比非對(duì)稱密鑰快100倍以上,而且可以方便地通過硬件實(shí)現(xiàn)。
主要問題在于密鑰的管理復(fù)雜。由于每個(gè)通信者間都需要一個(gè)不同的密鑰,N個(gè)人通信需要=n(n-1)/2密鑰;同時(shí)如何安全的共享加密密鑰給需要解密的接受者成為最大的問題,并且由于沒有簽名機(jī)制因此也不能實(shí)現(xiàn)抗可抵賴問題,即通信雙方都可以否認(rèn)發(fā)送或接收過的信息。
非對(duì)稱密鑰算法的優(yōu)缺點(diǎn):
非對(duì)稱密鑰的主要優(yōu)勢(shì)在于密鑰能夠公開,由于用作加密的密鑰(也稱公開密鑰)不同于作解密的密鑰(也稱私人密鑰)因而解密密鑰不能根據(jù)加密密鑰推算出來,所以可以公開加密密鑰。公鑰加密提供了一種有效的方法,可用來把大量數(shù)據(jù)執(zhí)行對(duì)稱加密時(shí)使用的機(jī)密密鑰發(fā)送給某人。私鑰加密而用公鑰解密,主要用于數(shù)字簽名。
主要局限就是速度慢。實(shí)際上,通常僅在關(guān)鍵時(shí)刻才使用公鑰算法,如在實(shí)體之間交換對(duì)稱密鑰時(shí),或者在簽署一封郵件的散列時(shí)(散列是通過應(yīng)用一種單向數(shù)學(xué)函數(shù)獲得一個(gè)定長結(jié)果,對(duì)于數(shù)據(jù)而言,叫做散列算法)
注:
對(duì)稱和非對(duì)稱密鑰算法通常結(jié)合使用,用于密鑰加密和數(shù)字簽名,即實(shí)現(xiàn)安全又能優(yōu)化性能。
密鑰交換流程圖
密鑰交換:結(jié)合使用對(duì)稱與非對(duì)稱密鑰
對(duì)稱密鑰算法非常適合于快速并安全地加密數(shù)據(jù)。但缺點(diǎn)是,發(fā)件人和收件人必須在交換數(shù)據(jù)之前先交換密鑰。結(jié)合使用加密數(shù)據(jù)的對(duì)稱密鑰算法與交換機(jī)密鑰的公鑰算法可產(chǎn)生一種即快速又靈活的解決方案。
公鑰加密用私鑰解密叫加密
私鑰加密用公鑰解密叫簽名
基于公鑰的密鑰交換步驟如下(數(shù)字信封的工作原理):
1、發(fā)件人獲得收件人的公鑰
2、發(fā)件人創(chuàng)建一個(gè)隨機(jī)機(jī)密密鑰(在對(duì)稱密鑰加密中使用的單個(gè)密鑰)
3、發(fā)件人使用機(jī)密密鑰和對(duì)稱密鑰算法將明文數(shù)據(jù)轉(zhuǎn)換為暗文數(shù)據(jù)
4、發(fā)件人使用收件人的公鑰將機(jī)密密鑰轉(zhuǎn)換為暗文機(jī)密密鑰
5、發(fā)件人將暗文數(shù)據(jù)和暗文機(jī)密密鑰一起發(fā)給收件人
6、收件人使用其私鑰將暗文機(jī)密密鑰轉(zhuǎn)換為明文
7、收件人使用明文機(jī)密密鑰將暗文數(shù)據(jù)轉(zhuǎn)換為明文數(shù)據(jù)。
其特點(diǎn)在于:
A、產(chǎn)生一個(gè)一次性對(duì)稱密鑰——會(huì)話密鑰
B、用會(huì)話密鑰加密信息
C、最后用接收者的公鑰加密會(huì)話密鑰——因?yàn)樗芏?,加解密迅?/p>