公鑰、私鑰和證書

理解公鑰和私鑰首先要區分 加密認證這兩個概念!
 
加密和認證:
加密是將數據資料加密,使別人即便獲取加密資料,也沒法獲取正確的資料內容,重點在於數據的安全性。
認證是肯定數據的真實發送方,使別人沒法僞造或冒充,重點在於用戶的真實性。
 
公鑰和私鑰:
公鑰和私鑰就是俗稱的不對稱加密方式,是對稱加密(使用用戶名與密碼)方式的提升。
使用公鑰與私鑰的目的是爲了安全的數據傳輸,必須實現以下目的:
  • 我發送給你的內容必須加密,在數據傳輸過程當中不能被別人看到真實數據內容。
  • 接收數據方能肯定是我發送的數據,不是別人冒充個人。
 
首先解釋公鑰和私鑰的意義和做用:
  • 公鑰:是公佈出去的給別人用的,能夠被不少人獲取。用來加密和驗章。
  • 私鑰:只能本身持有,而且不能夠被其餘人知道。用來解密和簽章。
 
公鑰與私鑰的做用是:用公鑰加密的內容只能用私鑰解密,用私鑰加密的內容只能用公鑰解密。
公鑰和私鑰有如下原則:(注意:密鑰包括公鑰和私鑰)
  • 一個公鑰對應一個私鑰;
  • 密鑰對中,讓你們都知道的是公鑰,不告訴你們,只有本身知道的,是私鑰;
  • 若是用其中一個密鑰加密數據,則只有對應的那個密鑰才能夠解密;
  • 若是用其中一個密鑰能夠進行解密數據,則該數據必然是對應的那個密鑰進行的加密;
 
要達到數據安全傳輸的目的,必須發送方和接收方都持有對方的公鑰和本身的私鑰,即任意一方持有本身的私鑰和對方的公鑰。
如 A 給 B 發送數據:
  • 爲了數據的安全性,A 須要使用 B 的公鑰來給數據加密,這樣只有 B 的私鑰才能夠解密數據,別人沒法解密,這樣保證了數據的安全性。這是數字簽名。
  • 爲了保證數據發送方的真實性,A 須要使用本身的私鑰來給數據加密,這樣其餘人用 A 的公鑰進行解密,因爲只有 A 的私鑰加密的數據,A 的公鑰才能解密,因此他人用 A 的公鑰若能解密此數據,則證明了此數據是由 A 發送的,若不能解密,則證實此數據不是用 A 的私鑰加密的,即不是 A 發送的,這樣保證了發送方的真實性。
 
證書:
證書是爲公鑰作認證,爲了使公鑰真實可信,防止他人僞造公鑰;證書頒發機構(證書中心CA)會用本身的私鑰對用戶的公鑰和相關信息進行加密,生成」數字證書「,而後證書中心會公佈本身的公鑰給全部人,用來讓用戶使用此公鑰驗證」數字證書「是否由CA頒發,便是否真實可信,產生證書是由於以下場景:
A 給 B 發信息:
1. 首先 A 用 Hash 函數對要發送的數據實體生成摘要(digest),這個過程是不可逆的。
2. A 使用本身的私鑰對這個 摘要進行加密,生成數字簽名(signature),並將此簽名連同要發送的數據實體一塊兒發送給 B 。
3. B 收到 A 發送過來的數據後,首先用 A 的公鑰對數字簽名進行解密,獲得摘要,從而證實數據確實來自 A,由於只有 A 有私鑰。
4. B 再對接收到的數據實體進行 Hash 函數,若是獲得的結果和上一步摘要一致,則證實數據實體沒有被篡改過。
 
如上,若是 C 偷偷將 B 持有的 A 公鑰換成本身的公鑰,而 B 不知道公鑰已被替換,那麼之後 C 就可使用冒充 A 來給 B 信息,而 B 會相信此信息是來自 A。
爲了解決這一問題,須要對 B 持有的 A 公鑰作認證,從而肯定此公鑰確實是 A 的公鑰,而不是其餘人篡改過的!而這個認證機構必須是第三方可信賴的,就是CA!由此,發送過程變成以下:
A 發給 B 數據的時候,除了要發送簽名和數據實體,還要發送CA頒發的證書。
B 接收到 A 發送過來的數據後,首先用 CA 的公鑰去解密證書,若是能解,代表這個證書裏的信息可信賴,從而獲得證書裏 A 的公鑰,而後 B 再用獲得的公鑰去作下一步動做。
注意:
以上前提必須是 CA 是可信賴的,CA 證書是不可僞造的!
上邊 A 給 B 發送數據只實現了身份確認,數據未被修改過,可是沒有保證數據是安全的,即數據傳輸過程當中能夠被第三人看到數據內容,要想實現安全的數據傳輸,A 還要作一步工做,即用 B 的公鑰給數據加密,這樣只有 B才能夠解密,從而保證了數據的安全性。
 
由上再次總結:
證書分爲公鑰證書和私鑰證書,每一個人的公鑰、私鑰證書是不同的,可是確定是一一對應的。
加密技術:公鑰證書加密、私鑰證書解密;
簽名技術:私鑰證書加密、公鑰證書解密;
對於一方來講,持有對方公鑰(即證書,由於公鑰放在證書裏),就能夠驗證對方身份,而且保證發給對方數據的安全性。對方對己方要也想作到這一點,則也要持有己方的公鑰,即:
加密和簽名技術相結合才能實現,機密性、完整性、不能否認性。
證書是爲了保證密鑰的真實性!沒有證書,談不上非對稱加密。