簡(jiǎn)介
非對(duì)稱加密算法的特點(diǎn)是,密鑰分為加密密鑰和解密密鑰,并且這兩個(gè)密鑰是不一樣的(非對(duì)稱)。發(fā)送者用加密密鑰對(duì)消息進(jìn)行加密,接受者用解密密鑰對(duì)密文進(jìn)行解密。
一般情況下:
- 加密密鑰是公開(kāi)的,稱為公鑰。
- 解密密鑰是私有的,稱為私鑰。
一次使用非對(duì)稱加密通信的流程
假設(shè)A是發(fā)送者,B是接收者。
- B生成一個(gè)密鑰對(duì)(公鑰+私鑰)。私鑰由B自行妥善保管。
- B將自己的公鑰發(fā)送給A。公鑰是公開(kāi)的,無(wú)需保密。
- A用B的公鑰對(duì)消息進(jìn)行加密。加密后的消息只有B的私鑰能解密。
- A將密文發(fā)送給B。
- B用自己的私鑰對(duì)密文進(jìn)行解密。
RSA
- RSA是目前最常用的非對(duì)稱加密算法。在RSA中,明文、密鑰和密文都是數(shù)字(很大的數(shù)字)。下面對(duì)RSA進(jìn)行簡(jiǎn)單介紹,跟多原理和細(xì)節(jié)請(qǐng)自行網(wǎng)上搜索參考。
- RSA的密文是對(duì)代表明文的數(shù)字的E次方求mod N的結(jié)果:
密文=明文^E mod N。 - RSA解密就是密文的數(shù)字D次方求mod N就可以得到明文:
明文=密文^D mode N。 - E和N是RSA加密的密鑰,E和N的組合就是公鑰。
- D和N是RSA解密的密鑰,D和N的組合就是密鑰。
- 生成RSA算法的密鑰對(duì)(E、D、N):
- 求N
- 準(zhǔn)備兩個(gè)很大(比如512比特)的質(zhì)數(shù)p和q
- N = p * q
- 求L(L是個(gè)中間數(shù)值)
- L是p-1和q-1的最小公倍數(shù)
- 求E
- 1 < E < L
- E與L的最大公約數(shù)為1
- 求D
- 1 < D < L
- E * D mod L = 1
非對(duì)稱加密存在的問(wèn)題
- 中間人攻擊,公鑰是公開(kāi)的,怎么確定密文來(lái)自所期望的對(duì)象。
- 計(jì)算速度慢,只有對(duì)稱加密算法的幾百分之一。
下面介紹混合加密系統(tǒng),用于解決計(jì)算速度慢的問(wèn)題。
混合密碼系統(tǒng)
混合密碼系統(tǒng)結(jié)合了非對(duì)稱加密算法和對(duì)稱加密算法的優(yōu)勢(shì):
- 利用非對(duì)稱加密算法的“非對(duì)稱性”,解決對(duì)稱密鑰的傳遞問(wèn)題。
- 利用對(duì)稱加密算法的加解密速度,解決非對(duì)稱加解密的速度問(wèn)題。
混合密碼系統(tǒng)的加密

混合加密
- 發(fā)送者利用一個(gè)隨機(jī)數(shù)生成器生成一個(gè)對(duì)稱加密算法的會(huì)話密鑰。
- 使用會(huì)話密鑰加密會(huì)話消息,得到會(huì)話消息密文(對(duì)稱加密)。
- 使用接受者的公鑰加密會(huì)話密鑰,得到會(huì)話密鑰密文(非對(duì)稱加密)。
4.組合會(huì)話密鑰密文和會(huì)話消息密文。
混合密碼系統(tǒng)的解密

混合解密
- 分離密文,等到會(huì)話密鑰密文和會(huì)話消息密文。
- 用私鑰解密會(huì)話密鑰密文,得到會(huì)話密鑰(非對(duì)稱加密)。
- 用會(huì)話密鑰解密會(huì)話消息密文,得到會(huì)話消息(對(duì)稱加密)。
參考
- 維基百科
- 《圖解密碼學(xué)》