徹底搞懂公鑰 私鑰 數字簽名和數字證書

2021-10-02 14:46:21 字數 1522 閱讀 8892

看完阮一峰老師講解《數字簽名是什麼?》的文章後,還是有點稀里糊塗的不懂。有了很多疑問:

於是自己再去各個**看資料思考,總算是自己弄懂了其中的關係和用處。在這裡我寫下自己對公鑰、私鑰以及數字簽名的了解。

(建議先看阮一峰老師的文章,看不懂再來看這篇,因為那篇文章裡面有很多細節沒有提到,而這篇講的比較詳細)

要懂公鑰、私鑰和數字簽名是什麼,首先就要先懂公鑰和私鑰的原則(重要):

所以通過以上原則,我們還要區分「加密」和「認證」的區別:

像原則的第3點,可以通過秘鈅來進行「加密」,保護資料的私密性。

原則的第4點,通過成功的秘鑰解密,可以認證傳送加密資料的身份。

好了,開始說流程了,為了便於區分和理解,人物用中文名。為了容易理解,這裡對秘鑰也進行了abc等的命名

張三和翠花在異地,他們之間通過信來交流

張三有乙個私鑰a,翠花有公鑰a(當然公鑰a其他人也可以獲得)

翠花給張三寫信,然後用公鑰a加密了,張三收到信後用私鑰a把信中加密的資訊解密了出來(這時保證了資料的加密,因為只有張三有私鑰a,只有私鑰a能解密。但是注意,張三不能辨別該信是否是翠花發出的,因為該信用公鑰a加密的,而公鑰a誰都可以獲得)

張三給翠花回信,他決定用「數字簽名」的方法:對信件內容進行某種處理(例如hash函式),生成信件的摘要(digest),然後用私鑰a給摘要加密,附在信中一起送出。

翠花收到信後,為了判斷是否是張三發出的,她用公鑰a解密,得到摘要,然後對信中的內容進行和張三相同的處理(hash函式)後和解密出來的摘要對比,就可以知道信中的資訊是否完整,並且知道這封信是由張三發出的。

這時候隔壁老王出現了,老王用自己的公鑰b偷偷替換了翠花電腦裡面的公鑰a,而翠花卻不知道自己的公鑰a被人替換。

當老王用自己的私鑰b寫信並且做成「數字簽名」並加密傳送給翠花。翠花收到信後用了自己以為是公鑰a的秘鑰(實際上是老王的公鑰b來解密信件,之後翠花對比摘要會發現內容相同,但是自己卻不知道該信件是由老王發出的。因為翠花以為自己用的是公鑰a來解密信件。能用公鑰a解密出的信件只有手持私鑰a的張三才能加密,所以翠花理所應當地認為這封信就是張三發出的。

這時候怎麼辦?自己手持的公鑰不安全,很容易遭到替換。而「證書中心」(ca)就是來解決這個問題的。張三先是去「證書中心」為自己的公鑰做了認證,然後「證書中心」用自己的私鑰c對張三的公鑰a以及張三個其他相關資訊進行加密,生成「數字證書」。

以後張三每次傳送信件給翠花,照例在信件中對資訊進行處理(hash函式)形成摘要,然後用私鑰a進行加密做成「數字簽名」,以及增加了在信中附上「證書中心」的「數字證書」(現在信件中有:信件的資訊、數字簽名、數字證書),翠花收到後便用「證書中心」的公鑰c解密,裡面就有張三的真實公鑰a以及其他相關資訊。這個時候翠花就可以用這個真實的公鑰a去解密信件中的「數字簽名」,然後進行內容比對,從而判斷出信件資訊的完整性以及發信件的人是張三。

在以「證書中心」的公鑰c不會被替換的保證前提下,翠花收到的信件如果能用公鑰c開啟核實裡面的資訊,那麼裡面存放的公鑰就一定是真實可靠的。這樣就不會出現公鑰被調換的情況。「證書中心」的數字證書的作用就是傳遞公鑰,保證公鑰的真實性。

以上流程都是我個人的思考和理解,如有錯誤歡迎指出來,感謝!

公鑰,私鑰和數字簽名

一 公鑰加密 假設一下,我找了兩個數字,乙個是1,乙個是2。我喜歡2這個數字,就保留起來,不告訴你們 私鑰 然後我告訴大家,1是我的公鑰。我有乙個檔案,不能讓別人看,我就用1加密了。別人找到了這個檔案,但是他不知道2就是解密的私鑰啊,所以他解不開,只有我可以用 數字2,就是我的私鑰,來解密。這樣我就...

公鑰,私鑰和數字簽名

一 公鑰加密 假設一下,我找了兩個數字,乙個是1,乙個是2。我喜歡2這個數字,就保留起來,不告訴你們 私鑰 然後我告訴大家,1是我的公鑰。我有乙個檔案,不能讓別人看,我就用1加密了。別人找到了這個檔案,但是他不知道2就是解密的私鑰啊,所以他解不開,只有我可以用 數字2,就是我的私鑰,來解密。這樣我就...

公鑰,私鑰和數字簽名

一 公鑰加密 假設一下,我找了兩個數字,乙個是1,乙個是2。我喜歡2這個數字,就保留起來,不告訴你們 私鑰 然後我告訴大家,1是我的公鑰。我有乙個檔案,不能讓別人看,我就用1加密了。別人找到了這個檔案,但是他不知道2就是解密的私鑰啊,所以他解不開,只有我可以用 數字2,就是我的私鑰,來解密。這樣我就...