公私鑰(證書)理解


公私鑰加解密、加簽、驗簽是在與各類銀行、第三方機構進行對外通訊中,必然涉及一些知識。PS:我這里提到的密鑰概念可以理解為一個String串就行(也有二進制形式的,同理),比如你把.cer文件以文本方式打開其實就是一個String串而已。

首先我們討論下加密方式的分類:對稱加密和非對稱加密。

1、  對稱加密:也就是加密和解密所使用的密鑰是同一個,常用到的有AES、DES、3DES等等,這類加密方式容易理解,不過多贅述。

2、  非對稱加密:加密和解密所使用的密鑰是一對,也就是兩個,若A、B是一對密鑰,那么加密使用A則解密只能使用B,加密使用B則解密只能使用A。這也就是公私鑰的原型。

接下來我們來說公私鑰分別是用來干嘛的,通常我們說公鑰用來加密,私鑰用來解密,但其實這不是必須的,對於程序而言,你用什么加密,用什么解密並不重要,只要是一對就行。所以也可以用私鑰來加密,公鑰來解密。那為什么我們不這么用呢?我們先來看看公私鑰的定義,公鑰,如字面意思,就是公開的、甚至可以發布在網上的密鑰,每個人都可以拿到它,稱之為公鑰;私鑰則相反,只有一個人能擁有,並且是保密的。那么問題就解決了,如果你拿着私鑰加密,發出去的信息地球人都能解開,那……,但是如果用公鑰加密,發出去的信息只有你一個人能解開,那就是有意義的,,沒毛病吧。所以結論就是:公鑰加密,私鑰解密。

 加解密問題解決了,但是網絡通訊遠沒有這么簡單,報文信息被黑客攔截了怎么辦?攔截后黑客替換成他的報文,還能用公鑰繼續加密發出去,那不就完了,所以我們還需要個方式來驗證發送方的身份,也就是我們經常聽說的數字簽名。

數字簽名和加解密不同,是對一段信息做hash算法(MD5,RSA等)運算,生成唯一標識該信息的一個特征串,比如你小時候背課文,背完讓家長簽名(加簽),然后第二天老師檢查簽名(驗簽),老師就會認為你完成了作業。老師認為該簽名唯一且只能由你家長生成,所以認同你背過課文。(雖然你可以模仿)。

那么我們要做的就是對我們的密文信息再進行一次簽名,將簽名得到的簽名特征串附在原文后,那么對方接收到報文以后,如果能驗簽通過,那就能確定消息是你發的了。

確定了數字簽名的作用了,我們分析下到底是公鑰加簽呢還是私鑰加簽呢?如果你用公鑰簽名,那么地球人都能簽出一樣的特征串,而只有一個人能驗簽,那又陷入僵局……,但如果用私鑰簽名,那么只有你一個人能唯一簽出該特征串,地球人都能驗簽,那就都能確定該信息是你發出的,很權威有不有!所以結論就是:私鑰加簽,公鑰驗簽。

所以一般來說,如果用到的是非對稱加密,那么你和第三方之間就有兩對公私鑰,各自持有對方的公鑰和自己的私鑰。網絡通訊中我們一般用自己的私鑰加簽將報文,用第三方提供的公鑰將報文中涉及安全隱私的部分加密,然后第三方會用我們提供公鑰進行驗簽,驗簽通過后再用他們自己的私鑰將報文加密部分解密。如果還需要響應返回,那么他們還將重復一遍我們這邊的過程,我們這邊也需要重復一邊他們那邊的過程,用他們提供的公鑰驗簽返回回來的報文,並用自己的私鑰解密隱私部分。這里又有個問題,既然公鑰是公開的,你如何確定這個公鑰是你的而不是別人的?這樣一想,其實就變成了一個循環,沒法證明絕對安全,雞生蛋蛋生雞的問題。

其實在密碼學中也是這樣,你必須建立一個信賴點,不然任何都是無法信賴的。所以在此基礎上,出現了一個可信任的第三方認證中心(CA),CA把你的公鑰進行認證,並頒發一個數字證書給到你,該證書里面包含了你的公鑰,而你給別人的公鑰也替換成數字證書,別人拿到數字證書,看了下,確實是CA簽發的,那么這里面的公鑰就是你的,你是可信的。這里就又把大家所迷惑的一個概念理清楚了,證書就是經過認證的公鑰。
————————————————
版權聲明:本文為CSDN博主「這個殺手帶點冷」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_32632367/article/details/82704568


免責聲明!

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



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