公鑰、私鑰、證書的基本概念和使用

本文章參考了

http://www.cnblogs.com/jimshen/archive/2009/11/09/1599347.html

http://blog.csdn.net/allwtg/archive/2009/12/09/4969543.aspx

公鑰和私鑰的概念

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

證書的概念

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

原則:

    1、一個公鑰對應一個私鑰。

    2、密鑰對中,讓大家都知道的是公鑰,不告訴大家,只有自己知道的,是私鑰。

    3、如果用其中一個密鑰加密數據,則只有對應的那個密鑰纔可以解密。

    4、如果用其中一個密鑰可以進行解密數據,則該數據必然是對應的那個密鑰進行的加密。

    5、非對稱密鑰密碼的主要應用就是公鑰加密和公鑰認證,而公鑰加密的過程和公鑰認證的過程是不一樣的

 

基於公開密鑰的加密過程

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

    1、Bob將他的公開密鑰傳送給Alice。

    2、Alice用Bob的公開密鑰加密她的消息,然後傳送給Bob。

    3、Bob用他的私人密鑰解密Alice的消息。

基於公開密鑰的認證過程

身份認證和加密就不同了,主要用戶鑑別用戶的真僞。這裏我們只要能夠鑑別一個用戶的私鑰是正確的,就可以鑑別這個用戶的真僞。還是Alice和Bob這兩個用戶,Alice想讓Bob知道自己是真實的Alice,而不是假冒的,因此 Alice只要使用公鑰密碼學對文件簽名發送給Bob,Bob使用Alice的公鑰對文件進行解密,如果可以解密成功,則證明Alice的私鑰是正確的,因而就完成了對Alice的身份鑑別。整個身份認證的過程如下:

    1、Alice用她的私人密鑰對文件加密,從而對文件簽名。

    2、Alice將簽名的文件傳送給Bob。

    3、Bob用Alice的公鑰解密文件,從而驗證簽名。

公鑰、私鑰、證書的生成

    1、一個HTTPS服務器首先創建他自己的密鑰對(key pair),包含公鑰和私鑰。

    2、通過網絡把他的公鑰送到CA中心,公鑰中包含了個人鑑別信息(他的名字、地址、所用設備的序列號等等)。

    3、CA中心創建並簽署一個包含公鑰及個人信息的證書,從而保證密鑰的確實性。

    4、使用該證書的人可以通過檢驗CA中心的簽名(檢驗CA簽名需要CA的公鑰)來驗證證書的確實性。

公鑰、私鑰、證書的使用

在HTTPS協議的握手階段是公鑰、私鑰、證書的典型使用場景。HTTPS握手的典型時序圖如下:

繪圖1 

上圖中實線部分是必須的,虛線部分是可選的。該流程完成了兩個任務:服務器身份的驗證、加密傳輸對稱加密密鑰。

1、client hello和 server hello表示雙方要建立一個加密會話。

2、服務器把數字證書傳輸給客戶端,證書中包含服務器公鑰,客戶端用公鑰解析證書中的數字簽名,可以驗證服務器的身份。

3、Server Hello Done表示hello 流程結束。

4、客戶端生成一個對稱加密密鑰,用於實際數據的加密傳輸,並用服務器的公鑰加密,把對生成的密鑰傳遞給服務器。同時攜帶一個用剛剛生成的加密密鑰加密的“client finished”。

5、服務器收到對稱加密密鑰,並嘗試用該密鑰解密加密字段,如能得到明文“client finished”,認爲該密鑰有效,可以用於之後的數據加密傳輸。同時用該密鑰加密“server finished”,傳遞給客戶端。

6、客戶端用對稱機密密鑰解密,如能得到明文“server finished”,客戶端認爲該服務器已經正確的接收到對稱密鑰。

7、加密數據傳輸開始。

虛線部分是服務器端要求驗證客戶身份。

發佈了39 篇原創文章 · 獲贊 23 · 訪問量 77萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章