前言
小明和小美是一對好朋友,他們分隔兩地,平時經常寫信溝通,但是偶然被小明發現他回給小美的信好像被人拆開看過,甚至偷偷被篡改過。
對稱加密算法
開頭的通信過程比較像HTTP服務器與客戶端的通信過程,全明文傳輸,第三方比較容易在傳輸線路的任何節點上抓包獲取到傳輸內容,甚至篡改。
遇到這種事情,小明立刻就想到了要把寫信的內容加密再傳輸,這樣就安全了,常見的對稱加密算法有好多種:AES、DES、ChaCha20等,他們的共同特點就是加密解密用的是同一個密鑰。
剩下的就是得把加密寫信的想法以及密鑰告訴小美了,但這里就尷尬了,因為小明和小美只能寫信溝通,如果小明把密鑰放信里寄過去,哪個邪惡的郵遞員拆開看了,那么也就拿到了密鑰,后續的所有信件他都可以解密查看甚至一樣可以篡改。
非對稱加密算法
小明意識到只用這種對稱加密算法是行不通的,但是聰明的小明馬上就想到了可以用非對稱加密算法,常見的非對稱加密算法:RSA、DSA等,他們的共同特點就是加密解密用的是不同的密鑰,俗稱公鑰和私鑰。
公鑰加密的內容,只有私鑰可以解密出來,私鑰加密的內容,也只有公鑰可以解密出來。但是這種加密算法很復雜,加解密效率很低,特別是加密內容很長的時候,所以不能用非對稱加密算法加密整個信件內容,于是想到讓小美每次回信都生成隨機的對稱密鑰,非對稱加密算法只用來加解密這個比較短的對稱密鑰,加解密信件內容還是用效率比較高的對稱加密算法。
雖然開始有點繞了,但是這也難不倒小明,他立刻生成了一對公私鑰,私鑰自己留著,公鑰寫信寄給小美,并且告訴小美讓她隨機生成一個對稱加密算法密鑰,信件內容用這個對稱加密算法加密,然后密鑰本身再用公鑰加密,一起寫回信寄回來。
邪惡的郵遞員小黑再次截獲到了這封信,拆開一看馬上就意識到不妙,這封信一旦寄到小美手中,小美按照信中提到的方案加密回信的話,那么世界上就只有具有私鑰的小明能解密看懂信件了,這可不行,所以小黑一不做二不休直接自己生成了一對公私鑰對,拿自己的公鑰替換掉了這封信里的公鑰,然后寄給小美。
小美也確實按照這套加密方案加密回信了,但是用的是小黑替換過的公鑰,所以小黑可以用他的私鑰解密成功了,但是這樣的回信肯定不能直接轉給小明了,因為公鑰被換過小明是解不了的,所以小黑再用之前小明的公鑰加密 他已經解密后的內容,再寄給小明,雖然來回的加解密很麻煩,但是總算神不知鬼不覺的完成了信息截獲。
數字證書
小明也是馬上意識到了這其中的漏洞,冥思苦想還是覺得這個公私鑰對不能由自己生成,自己生成的公鑰小美完全沒辦法判斷是不是真的。
這時一個權威的第三方大佬大壯出現了,小明可以去大壯那里申請公私鑰對,但是這個公鑰就不是單純的公鑰了,而是放在一個叫做數字證書的函件里面,函件的內容包含以下信息:
- 公鑰
- 證書歸屬者:小明
- 證書簽發者:大壯
- 證書有效期:2025-04-18 ~ 2025-07-19
- 證書簽名:以上信息哈希摘要后,用大壯的頂級私鑰加密生成的
以上4個信息打包放一起,稱之為數字證書。
但是大壯又是如何保證數字證書里的公鑰不能被替換呢?這里就的得證書里的簽名,以及大壯大佬的身份了,大壯和所有的房地產開發商都是合作關系,所有房屋建造完后都內置了大壯的頂級證書,里面包含了大壯的頂級公鑰。
之后小明寫信直接把從大壯那申請的數字證書帶上,同樣是要求小美用上一節的方案生成密鑰加密傳輸。這時邪惡的小黑同樣攔截到了這封信,并且把證書里的公鑰換掉了,再發給小美,小美拆開信首先做的就是把數字證書拿出來,把前三個信息:公鑰、證書歸屬者、證書簽發者哈希摘要,然后拿出證書簽名用自己家里內置的頂級公鑰解密這個簽名也得到了一個哈希摘要值,對比兩個值居然不一樣!說明證書已經被人篡改了,說明有內鬼交易終止!
雖然小黑也可以去大壯那里申請數字證書,但是拿到的數字證書證書歸屬者會寫著小黑,這樣就算替換證書,小美一眼就看出來這不是小明的證書了。
至此小黑再也沒法偷看小明小美之間的信件了,除非他直接沖到小美家里把她家內置的頂級公鑰給換了,或者直接去把大壯的頂級私鑰搞到手,當然他是沒這個膽子和能力的。
證書鏈
大壯的證書簽發生意做的紅紅火火,越來越多的人找大壯簽發證書,但是大壯一個人有點力不從心,畢竟簽發證書用的私鑰讓任何其他人幫忙都很危險,一旦他的頂級私鑰泄露,他的生意就完蛋了。這里就體現出了基于根證書簽發下級證書的局限性:
- 經常拿著頂級私鑰去簽發下級證書,難免會出意外被人偷走,最好鎖起來不要經常拿出來
- 需要證書的人太多了,大壯幫不過來
所以大壯想到一個方案,找到一個可以信賴的伙伴大強,只需要簽發一個中間證書和中間私鑰給大強,證書包含以下信息:
- 中間證書公鑰
- 證書歸屬者:大強
- 證書簽發者:大壯
- 證書有效期:2025-04-18 ~ 2099-12-31
- 證書權限:簽發寫信證書
- 證書簽名:以上信息哈希摘要后,用大壯的頂級私鑰加密生成的
大強拿著這個中間證書開辦了一家新的證書簽發機構,又可以簽發下級證書了,但是他簽發的下級證書跟大壯簽發的不太一樣,他簽發的證書實際會包含兩個證書,類似以下內容:
=======證書開始=======
1. 中間證書公鑰
2. 證書歸屬者:大強
3. 證書簽發者:大壯
4. 證書有效期:2025-04-18 ~ 2099-12-31
5. 證書權限:簽發寫信證書
6. 證書簽名:以上信息哈希摘要后,用大壯的頂級私鑰加密生成的
=======證書結束==============證書開始=======
1. 寫信公鑰
2. 證書歸屬者:小明
3. 證書簽發者:大強
4. 證書有效期:2025-04-18 ~ 2025-12-31
5. 證書權限:僅用于寫信
6. 證書簽名:以上信息哈希摘要后,用大強的私鑰加密生成的
=======證書結束=======
這回小美收到信,拿到這個證書就需要先校驗最后這個證書,這個證書可信后,根據證書簽發者:大強
,找到上級證書再用家里的頂級公鑰校驗這個上級證書,如果也可信,就算是整個證書鏈都可信了。
之所以證書信息里有個證書權限
信息,就是為了防止一些只用來寫信的證書,被人拿來簽發下級證書。基于這個原理甚至可以簽發下級中間證書,形成好幾個證書串聯起來的證書鏈。
至此大壯終于可以躺平賺錢了。。。