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

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

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

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

TIM圖片20180321110115.png


    那麼要實現A發送給B的信息的機密性,A就拿着B的公鑰進行信息加密,併發送給B,那麼B拿着自己的私鑰進行解密,E這個傢伙就無法打開A發送給B的信息了。但E可以拿着B的公鑰僞造A發送的信息,發送給B。這樣無法解決身份驗證。

TIM圖片20180321110115.png

    讓我們來想想:

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

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


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

    TIM圖片20180321110115.png

    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***”)。那這樣還是又掉進坑裏了。人生到處都是坑,不是嗎?^_^我們的目的是想辦法,解決這些“坑”。欲知下一個辦法,請聽下回分解。^_^

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章