圖解:郵件(消息)的加密解密和數字簽名


本文據圖解釋一下如何通過公鑰私鑰實現郵件的加密、解密以及數字簽名,從而保證郵件的安全發送和接收。

上圖先:

image

 

做事之前最好先搞搞清楚我們要做什么。本文要講的是如何保證郵件(或者消息、check,隨便怎么稱呼吧)在網絡傳輸中的安全。具體的說,就是要保證郵件只能由指定的那個接收者(recipient)讀到,並且只能由指定的發送者(sender)發送。這樣就算是實現了從發送至(sender)到接收者(recipient)的信息安全。

那我們先從問題1“保證郵件只能由指定的那個接收者讀到”這個問題開始。

從宏觀上說,只能由指定的recipient讀到,就是說這個recipient有別人都沒有的東西才行。這個recipient獨有的東西,就是他的私鑰(private key)。私鑰就是一個字符串,只有recipient知道這個字符串是什么,與其對應的還有公鑰(public key),公鑰是所有人(發送者和想非法獲取郵件內容的人)都可以知道的。recipient自己制作出私鑰自己保留,自己制作出公鑰發布到網上。公鑰可以對郵件進行加密,但不能解密;私鑰可以對郵件進行解密,但不能加密(這叫非對稱加密asymmetric encryption)。於是發送者(sender)用公鑰將郵件加密,然后發送給接收者(recipient)。接收者收到加密的郵件,直接看的話就是一堆亂碼,然后他用私鑰解密,就讀到了郵件原文內容。

現在,有個壞人想讀郵件內容,就算他黑到了從網上傳送的郵件,也是加密了的,沒有私鑰他無法解密,也就讀不到郵件原文了。(這里我們要相信加密解密的算法,這是基礎。否則什么安全都無法實現了)

到此,圖示應該是這樣的:

image

我要是那個壞蛋,我就想,如果我讀不到原文,我也不讓那個真正的接收者(recipient)讀到,我把加密的郵件改了(公鑰人人都可以拿到),或者重新寫一個郵件,加密一下,冒充發件人(sender)發給你,讓你也受點罪。

所以我們就需要保證能夠確認發送者(sender),或者說,只能由那個發送者發送這個郵件,如果有其他人中途修改了郵件,我們可以識別出來。這就是問題2。

再次從宏觀上看,這里是要求發送者(sender)有某種別人都沒有的東西。這個就是發送者的私鑰(private key)!沒錯思路是和上面一樣的!

發送者(sender)對即將發送的郵件計算一個hash值(可以認為是一個字符串,這是常用的方法),然后用自己的私鑰(private key)對hash值加密,然后將郵件和加密了的hash值一起用接收者的公鑰(public key)加密,通過internet發送給接收者(recipient)。接收者(recipient)收到加密的郵件,用自己的私鑰(private key)解密,得到郵件原文和加密的hash值,用發送者的公鑰對hash解密,得到原始的hash值,最后自己對郵件原文進行hash計算,如果得到的結果和之前收到的hash值解密后的內容相同,就說明這是未被壞人改動過的郵件。

這個過程中,發送者的私鑰(private key)用於加密,公鑰(public key)用於解密,和之前接收者的公鑰、私鑰用法是正好相反的,但是兩種使用都是非對稱的加密解密。

到此,圖示應該是這樣的:

image

如果某壞蛋修改了Content sending中的內容,那么接收者(recipient)解密出來的hash值與自己計算出來的hash值是絕對不一樣的。(兩者一樣的概率比中500萬小的多了)

至此我們的加密解密工作就算完成了。但是,在實際應用中還有一個變化:非對稱加密(asymmetric encryption)是一種比較慢的計算方法,如果郵件內容很多,就不太實用了。於是為了加快速度,就結合了對稱加密(symmetric encryption)方法。對稱密鑰就是說,這個密鑰既可以用來加密,也可以用來解密。這個和防盜門的鑰匙是一樣的,既可以鎖門,也可以開門。我稱之為家用防盜門式的加密解密方法。

現在我們引入一個對稱密匙,實現對要在不安全的internet上傳輸的郵件的加密解密。對稱密鑰必須讓發送者和接收者都有才行,同時,為了保證安全,必須只讓接收者和發送者知道對稱密鑰。那么就得每次發郵件都使用一個一次性的密鑰,並且對這個密鑰也進行加密(不要暈哦)。所以之前用於對郵件內容加密的接收者(recipient)的公鑰,就改為對這個對稱密鑰進行加密。因為密鑰都是很短的一個字符串,所以計算的慢點也不礙事了,因為要計算的東西少了嘛。

現在就成了下圖所示的情況。

image

這就是本文最初給出的圖示的推演過程啦。

有問題請留言吧,歡迎糾錯補充討論哈。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM