java-信息安全(十二)-數字證書、CA證書【Java證書體系實現】


一、概述

  https,主要協議tls/ssl,進而需要了解證書機構(CA)、證書、數字簽名、私鑰、公鑰、對稱加密、非對稱加密。

  信息安全問題:信息的保密性、信息的完整性、身份識別。

1.1、信息安全問題  

  信息安全問題:信息的保密性、信息的完整性、身份識別。

1、信息的保密性(加密算法)

  信息的保密性我們可以使用對稱加密和非對稱加密來完成,使用對稱加密來完成,速度相對非對稱加密很快,但是存在一個安全問題,密鑰如何傳遞?由此通用的方法是使用非對稱加密+對稱加密來完成。客戶端使用公鑰對對稱加密的密鑰進行加密,然后傳遞給服務端,服務端使用私鑰進行解密確認密鑰,開始傳輸數據。
  

2、信息的完整性(數字簽名)

  信息傳輸的途中,我們的信息很有可能被第三方劫持篡改,所以我們需要保證信息的完整性,通用方法是使用散列算法如SHA1,MD5將傳輸內容hash一次獲得hash值,即摘要。

  客戶端使用服務端的公鑰對摘要和信息內容進行加密,然后傳輸給服務端,服務端使用私鑰進行解密獲得原始內容和摘要值,這時服務端使用相同的hash算法對原始內容進行hash,然后與摘要值比對,如果一致,說明信息是完整的。

  

3、身份識別(數字證書)

  在信息傳輸的過程中,我們通常需要驗證信息的發送方的身份,這時我們轉化一下思路就可以完成,把發送端的公鑰發送給接收端,發送端通過把自己的內容使用私鑰加密然后發送給接收端,接收端只能用發送端的公鑰解密,自然就驗證了發送端的身份。

    

1.2、知識概要說明

1、對稱加密

  對稱加密是指雙方持有相同的密鑰進行通信,加密速度快,但是有一個安全問題,雙方怎樣獲得相同的密鑰。

  常見的對稱加密算法有DES、3DES、AES等

  參看地址:java-信息安全(十八)java加密解密,簽名等總結

2、非對稱加密

  非對稱加密,又稱為公開密鑰加密,是為了解決對稱加密中的安全問題而誕生,一個稱為公開密鑰(public key),即公鑰,另一個稱為私鑰(private key),即私鑰。但是它的加密速度相對於對稱加密來說很慢。

  • 公鑰(public key)是對外開放的,私鑰(private key)是自己擁有的。
  • 公鑰(public key)加密的數據,只能用私鑰(private key)解密。
  • 私鑰(private key)加密的數據,只能用公鑰(public key)解密。

3、數字證書

  注:為什么需要CA頒發數字證書

  首先看一下非對稱加密時候的加密方式

    

  在傳輸的過程中,客戶端如何獲得服務器端的公鑰呢?當時是服務器分發給客戶端,如果一開始服務端發送的公鑰到客戶端的過程中有可能被第三方劫持,然后第三方自己偽造一對密鑰,將公鑰發送給客戶端,當服務器發送數據給客戶端的時候,中間人將信息進行劫持,用一開始劫持的公鑰進行解密后,然后使用自己的私鑰將數據加密發送給客戶端,而客戶端收到后使用公鑰解密,反過來亦是如此,整個過程中間人是透明的,但信息泄露卻不得而知。
     
  為了防止這種情況,數字證書就出現了,它其實就是基於上上面所說的私鑰加密數據,公鑰解密來驗證其身份。
  數字證書是由權威的CA(Certificate Authority)機構給服務端進行頒發,CA機構通過服務端提供的相關信息生成證書,證書內容包含了持有人的相關信息,服務器的公鑰,簽署者簽名信息(數字簽名)等,最重要的是公鑰在數字證書中。
  數字證書是如何保證公鑰來自請求的服務器呢?數字證書上由持有人的相關信息,通過這點可以確定其不是一個中間人;但是證書也是可以偽造的,如何保證證書為真呢?
  一個證書中含有三個部分:"證書內容,散列算法,加密密文",證書內容會被散列算法hash計算出hash值,然后使用CA機構提供的私鑰進行RSA加密。
    
  當客戶端發起請求時,服務器將該數字證書發送給客戶端,客戶端通過CA機構提供的公鑰對加密密文進行解密獲得散列值(數字簽名),同時將證書內容使用相同的散列算法進行Hash得到另一個散列值,比對兩個散列值,如果兩者相等則說明證書沒問題。
    

  數字證書就是互聯網通訊中標志通訊各方身份信息的一串數字,提供了一種在Internet上驗證通信實體身份的方式,數字證書不是數字身份證,而是身份認證機構蓋在數字身份證上的一個章或印(或者說加在數字身份證上的一個簽名)。它是由權威機構——CA機構,又稱為證書授權(Certificate Authority)中心發行的,人們可以在網上用它來識別對方的身份。

參考地址:java-信息安全(五)-非對稱加密算法RSA

證書制作:java-信息安全(十三)-數字證書-格式、編碼、keytool、keystore

如果生產一般會直接獲取證書文件

 

 

 

示例代碼 

代碼地址:https://github.com/bjlhx15/algorithm-sign.git

 


免責聲明!

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



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