公鑰和私鑰的個人理解

現在HTTPS的加密通信方式:

1.通信雙方各自持有自己的:公鑰+私鑰

2.通信雙方通信時,交換公鑰,保留自己私鑰。

3.公鑰和私鑰是配對的、但是不是對稱的一對鑰匙。即:就算你知道公鑰長什麼樣子,你也幾乎不可能知道私鑰長什麼樣子

          舉個例子:老婆和我(假設我有老婆,哈哈哈~)約定:"老公,我好愛你喲" 代表 "老公幫我清空購物車車車車車車"。

          1.這裏,我的公鑰就是"老公,我好愛你喲",我老婆可以在任何人面前,可以說給我聽,表現她很愛我的亞子。

          2.其實,持有私鑰的我,只有我知道這句話的真實含義 ,"老公幫我清空購物車車車車車車"。

          3.萬一哪天被人知道私鑰了呢?幾乎不可能,中國文字何止千萬,別說誰能知道我在後面加了6個車,連前面的幾個漢字也

             不太可能被解析。

4.公鑰加密時,自我不可逆向解密,即:公鑰加密不可以自我解密,只能通過私鑰解密。

注意:公鑰和私鑰的配對方式,是有固定算法的,小弟沒有研究過。

考慮一個問題,公鑰加密的密文信息,用公鑰本身可以解密這個密文信息嗎?

1.如果你得出公鑰能解密公鑰自己加密的信息,那就錯了,公鑰是任何人都可以看見的,公鑰自己如果能解密自己加密的東西,還加密做什麼?

2.如果你得出公鑰不能解密公鑰自己加密的信息,正確的。公鑰加密後,公鑰自己不能解密自己加密的東西,即:公鑰不能自我逆向解密。這樣才能保證祕鑰持有者,是唯一一個可以打開公鑰密文的對象。

再考慮一個問題,公鑰可以解密私鑰加密的密文嗎?

可以,私鑰加密的密文,公鑰可以對其解密。

1.HTTPS中,服務器會有公鑰證書,服務器公鑰證書 = 認證機構的數字簽名 + 服務器公鑰。

2.認證機構的數字簽名,就是認證機構用認證機構的私鑰加密後的數字簽名。

3.認證機構會把數字簽名部署到服務器上,再加上服務器的公鑰,生成服務器的公鑰證書。

4.瀏覽器是默認植入了認證機構的公鑰證書的,所以,瀏覽器要驗證服務器公鑰證書的真實性,只需要用認證機構的公鑰解密服務器公鑰證書上的數字簽名,就能驗證真實性了。驗證後,開始和服務器通信。這裏驗證就是公鑰解密私鑰密文的典例。

最後考慮個問題,服務器傳輸時,會用自己的私鑰加密密文嗎?

1.不會的,公鑰是公開的,私鑰加密密文,公鑰隨時可以對密文解密,用私鑰加密等於沒有加密,就像數字簽名一樣,但是數字簽名是爲了驗證手裏的服務器公鑰證書是不是真實的,纔會用私鑰加密數字簽名來發布服務器公鑰證書。

2.所以,服務器會用客戶端的公鑰,對密文加密,讓客戶端用客戶端自己的私鑰解密。

3.同理,客戶端會用服務器的公鑰,對密文加密,讓服務器用服務器自己的私鑰解密。

 

最後,上面所提到的幾個名詞,有興趣可以自己研究:公鑰證書,認證機構,認證機構用認證機構的私鑰部署數字簽名,公私鑰算法(RSA)。

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