1. 程式人生 > >詳解公鑰、私鑰、數字證書的概念

詳解公鑰、私鑰、數字證書的概念

加密和認證
  首先我們需要區分加密和認證這兩個基本概念。
  加密是將資料資料加密,使得非法使用者即使取得加密過的資料,也無法獲取正確的資料內容,所以資料加密可以保護資料,防止監聽攻擊。其重點在於資料的安全性。身份認證是用來判斷某個身份的真實性,確認身份後,系統才可以依不同的身份給予不同的許可權。其重點在於使用者的真實性。兩者的側重點是不同的。


公鑰和私鑰
       公鑰和私鑰就是俗稱的不對稱加密方式,是從以前的對稱加密(使用使用者名稱與密碼)方式的提高。

      在現代密碼體制中加密和解密是採用不同的金鑰(公開金鑰),也就是非對稱金鑰密碼系統,每個通訊方均需要兩個金鑰,即公鑰和私鑰,這兩把金鑰可以互為加解密。公鑰是公開的,不需要保密,而私鑰是由個人自己持有,並且必須妥善保管和注意保密。

  公鑰私鑰的原則:

  1. 一個公鑰對應一個私鑰。
  2. 金鑰對中,讓大家都知道的是公鑰,不告訴大家,只有自己知道的,是私鑰。
  3. 如果用其中一個金鑰加密資料,則只有對應的那個金鑰才可以解密。
  4. 如果用其中一個金鑰可以進行解密資料,則該資料必然是對應的那個金鑰進行的加密。

       用電子郵件的方式說明一下原理。
      使用公鑰與私鑰的目的就是實現安全的電子郵件,必須實現如下目的:
      1. 我傳送給你的內容必須加密,在郵件的傳輸過程中不能被別人看到。
      2. 必須保證是我傳送的郵件,不是別人冒充我的。
      要達到這樣的目標必須傳送郵件的兩人都有公鑰和私鑰。
      公鑰,就是給大家用的,你可以通過電子郵件釋出,可以通過網站讓別人下載,公鑰其實是用來加密/驗章用的。私鑰,就是自己的,必須非常小心儲存,最好加上 密碼,私鑰是用來解密/簽章,首先就Key的所有權來說,私鑰只有個人擁有。公鑰與私鑰的作用是:用公鑰加密的內容只能用私鑰解密,用私鑰加密的內容只能 用公鑰解密。
      比如說,我要給你傳送一個加密的郵件。首先,我必須擁有你的公鑰,你也必須擁有我的公鑰。
      首先,我用你的公鑰給這個郵件加密,這樣就保證這個郵件不被別人看到,而且保證這個郵件在傳送過程中沒有被修改。你收到郵件後,用你的私鑰就可以解密,就能看到內容。
      其次我用我的私鑰給這個郵件加密,傳送到你手裡後,你可以用我的公鑰解密。因為私鑰只有我手裡有,這樣就保證了這個郵件是我傳送的。

      非對稱金鑰密碼的主要應用就是公鑰加密和公鑰認證,而公鑰加密的過程和公鑰認證的過程是不一樣的,下面我就詳細講解一下兩者的區別。

基於公開金鑰的加密過程

    比如有兩個使用者Alice和Bob,Alice想把一段明文通過雙鑰加密的技術傳送給Bob,Bob有一對公鑰和私鑰,那麼加密解密的過程如下:

  1. Bob將他的公開金鑰傳送給Alice。
  2. Alice用Bob的公開金鑰加密她的訊息,然後傳送給Bob。
  3. Bob用他的私人金鑰解密Alice的訊息。

 Alice使用Bob的公鑰進行加密,Bob用自己的私鑰進行解密。

基於公開金鑰的認證過程

  身份認證和加密就不同了,主要使用者鑑別使用者的真偽。這裡我們只要能夠鑑別一個使用者的私鑰是正確的,就可以鑑別這個使用者的真偽。

  還是Alice和Bob這兩個使用者,Alice想讓Bob知道自己是真實的Alice,而不是假冒的,因此Alice只要使用公鑰密碼學對檔案簽名傳送給Bob,Bob使用Alice的公鑰對檔案進行解密,如果可以解密成功,則證明Alice的私鑰是正確的,因而就完成了對Alice的身份鑑別。整個身份認證的過程如下:

  1. Alice用她的私人金鑰對檔案加密,從而對檔案簽名。
  2. Alice將簽名的檔案傳送給Bob。
  3. Bob用Alice的公鑰解密檔案,從而驗證簽名。

 Alice使用自己的私鑰加密,Bob用Alice的公鑰進行解密。

根證書

根證書是CA認證中心給自己頒發的證書,是信任鏈的起始點。安裝根證書意味著對這個CA認證中心的信任。

總結

      根據非對稱密碼學的原理,每個證書持有人都有一對公鑰和私鑰,這兩把金鑰可以互為加解密。公鑰是公開的,不需要保密,而私鑰是由證書持人自己持有,並且必須妥善保管和注意保密。

      數字證書則是由證書認證機構(CA)對證書申請者真實身份驗證之後,用CA的根證書對申請人的一些基本資訊以及申請人的公鑰進行簽名(相當於加蓋發證書機構的公章)後形成的一個數字檔案。CA完成簽發證書後,會將證書釋出在CA的證書庫(目錄伺服器)中,任何人都可以查詢和下載,因此數字證書和公鑰一樣是公開的。  

      可以這樣說,數字證書就是經過CA認證過的公鑰,而私鑰一般情況都是由證書持有者在自己本地生成的,由證書持有者自己負責保管。具體使用時,簽名操作是傳送方用私鑰進行簽名,接受方用傳送方證書來驗證簽名;加密操作則是用接受方的證書進行加密,接受方用自己的私鑰進行解密。