1. 程式人生 > >加密的類型及其相關算法--公鑰加密(非對稱加密)

加密的類型及其相關算法--公鑰加密(非對稱加密)

加密類型 公鑰加密 非對稱加密

前面講了幾節,對稱加密(解決:機密性),單向加密(解決:完整性),密鑰交換(解決:完整性)。但總是能被E在從中搗亂,有沒有一種辦法能解決驗證對方身份的方法呢?

這個時候公鑰加密算法出來了。眾所周知公鑰加密算法是密鑰對:公鑰(公開出去的,從私鑰中按照某種算法或機制提取出來);私鑰(自己隨機生成的,一般密鑰都很長,1024,2056等)。

公鑰加密本身也可以用於信息加密,假設A將信息用自己的私鑰進行加密,並傳遞給B,B用A的公鑰解密,既然是公鑰,那麽在網絡上傳輸的時候,E這個壞家夥也能得到A的公鑰,從而E也能解密A發送給B的信息。這樣就不能解決信息的機密性。

技術分享圖片


那麽要實現A發送給B的信息的機密性

,A就拿著B的公鑰進行信息加密,並發送給B,那麽B拿著自己的私鑰進行解密,E這個家夥就無法打開A發送給B的信息了。但E可以拿著B的公鑰偽造A發送的信息,發送給B。這樣無法解決身份驗證。

技術分享圖片

讓我們來想想:

1、用自己的私鑰來加密,對方可以實現身份驗證的問題,可是無法實現數據機密性的問題。

2、用對方的公鑰來加密,對方可以實現數據機密性的問題,可是無法實現身份驗證的問題。


但事實上,極少用公鑰來對信息進行加密,因為密鑰實在是太長了,加密的速度極度慢。所以一般用來實現身份驗證。那怎麽能快速的實現身份驗證呢?用單向加密+公鑰加密的方法

技術分享圖片

1、A先用單向加密算出指紋

2、A再用自己的私鑰對指紋進行加密

想一下:

如果E這個家夥又截獲了A發送的信息,E能解密不?能!!!E能篡改信息不?能!!!

但E想篡改信息後將“指紋”也修改了,只能用E自己私鑰加密,那麽B能用A的公鑰解密這段數據不?不能!!!

E只修改信息的內容,B用A的公鑰解密了“指紋”,能將內容與“指紋”匹對了不?不能!!!


雖然信息的機密性無法得到保證,但是這樣就完成了信息的完整性身份驗證的問題了。


這樣就萬事大吉了嗎?不!!A與B此前都未曾有過通訊, E這個家夥是不是又可以乘機在中間偽裝A與B(之前講了這麽多次E,我們可以將這個家夥叫做“中間人攻擊”,Man-in-the-MiddleAttack,簡稱“MITM攻擊”)。那這樣還是又掉進坑裏了。人生到處都是坑,不是嗎?^_^我們的目的是想辦法,解決這些“坑”。欲知下一個辦法,請聽下回分解。^_^

加密的類型及其相關算法--公鑰加密(非對稱加密)