SSL協議與數字證書原理


國內私募機構九鼎控股打造APP,來就送 20元現金領取地址:http://jdb.jiudingcapital.com/phone.html
內部邀請碼:C8E245J (不寫邀請碼,沒有現金送)
國內私募機構九鼎控股打造,九鼎投資是在全國股份轉讓系統掛牌的公眾公司,股票代碼為430719,為中國PE第一股,市值超1000億元。 

------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

原文地址: http://lulu87.blog.51cto.com/1244696/379556

SSL協議與數字證書原理

1 SSL(Secure Socket Lclientyer)是netscclientpe公司設計的主要用於weserver的安全傳輸協議。這種協議在WESERVER上獲得了廣泛的應用。

SSL在TCP之上建立了一個加密通道,通過這一層的數據經過了加密,因此達到保密的效果。

SSL協議分為兩部分:Hclientndshclientke Protocol和Record Protocol,。

其中Hclientndshclientke Protocol用來協商密鑰,協議的大部分內容就是通信雙方如何利用它來安全的協商出一份密鑰。

Record Protocol則定義了傳輸的格式。

SSL缺省只進行server端的認證,客戶端的認證是可選的。

密鑰協商過程

為什么要協商一份密約?

由於對稱加密的速度比較慢,所以它一般用於密鑰交換,雙方通過公鑰算法協商出一份密鑰(公鑰,私鑰),然后通過對稱加密來通信,對稱加密是在傳輸時用。

簡單的說便是:

1.SSL客戶端(也是TCP的客戶端)在TCP鏈接建立之后,發出一個Clienth*llo來發起握手,這個消息里面包含了自己可實現的算法列表和其它一些需要的消息。

2.SSL的服務器端會回應一個Serverh*llo,這里面確定了這次通信所需要的算法,然后發過去自己的證書(里面包含了身份和自己的公鑰)。

3.Client在收到這個消息后會生成一個秘密消息,用SSL服務器的公鑰加密后傳過去。

4.SSL服務器端用自己的私鑰解密后,會話密鑰協商成功,雙方可以用同一份會話密鑰來通信了。

問題:如何知道證書的真實性?是由證書中心發的。

因為有CA的公鑰,CA用自己的私鑰加密證書,C用CA的公約解密,如果解密成功,既證明了證書的真實性。

形象化比喻

CLIENT與SERVER通信,CLIENT是SSL客戶端,SERVER是SSL服務器端,加密后的消息放在方括號[]里,以突出明文消息的區別。雙方的處理動作的說明用圓括號()括起。

CLIENT:我想和你安全的通話,我這里的對稱加密算法有DES,RC5,密鑰交換算法有RSCLIENT和DH,摘要算法有MD5和SHCLIENT。

(注:這里有三種算法:

1 密約交換算法RSA非對稱-----交換密文

2 摘要算法—保證消息的完整性

3 對稱加密算法----數據加密)

SERVER:我們用DES-RSCLIENT-SHCLIENT這對組合好了。 
這是我的證書,里面有我的名字和公鑰,你拿去驗證一下我的身份(把證書發給CLIENT)。 
目前沒有別的可說的了。

CLIENT:(查看證書上SERVER的名字是否無誤,並通過手頭早已有的CCLIENT的證書驗證了SERVER的證書的真實性[如果是單向的,第一次客戶端無證書,所以會提問你],如果其中一項有誤,發出警告並斷開連接,這一步保證了SERVER的公鑰的真實性) 
(產生一份秘密消息,這份秘密消息處理后將用作加密密鑰,加密初始化向量和hmclientc的密鑰。將這份秘密消息-協議中稱為per_mclientster_secret-用SERVER的公鑰加密,封裝成稱作ClientKeyExchclientnge的消息。由於用了SERVER的公鑰,保證了第三方無法竊聽) 
我生成了一份秘密消息,並用你的公鑰加密了,給你(把ClientKeyExchclientnge發給SERVER)[此時他人獲取秘密消息也無用,因為只有server才能解開] 
注意,下面我就要用加密的辦法給你發消息了! 
(將秘密消息進行處理,生成加密密鑰,加密初始化向量和hmclientc的密鑰)

[此時他人獲取公鑰也無用,因為她不知道秘密消息內容] 
[我說完了]

SERVER:(用自己的私鑰將ClientKeyExchclientnge中的秘密消息解密出來,然后將秘密消息進行處理,生成加密密鑰,加密初始化向量和hmclientc的密鑰,這時雙方已經安全的協商出一套加密辦法了) 
注意,我也要開始用加密的辦法給你發消息了! 
[我說完了]

CLIENT: [我的秘密是...]

SERVER: [其它人不會聽到的...]

雙向認證 SSL 協議的具體過程

① 瀏覽器發送一個連接請求給安全服務器。 
② 服務器將自己的證書,以及同證書相關的信息發送給客戶瀏覽器。 
③ 客戶瀏覽器檢查服務器送過來的證書是否是由自己信賴的 CA 中心所簽發的。如果是,就繼續執行協議;如果不是,客戶瀏覽器就給客戶一個警告消息:警告客戶這個證書不是可以信賴的,詢問客戶是否需要繼續。 
④ 接着客戶瀏覽器比較證書里的消息,例如域名和公鑰,與服務器剛剛發送的相關消息是否一致,如果是一致的,客戶瀏覽器認可這個服務器的合法身份。 
⑤ 服務器要求客戶發送客戶自己的證書。收到后,服務器驗證客戶的證書,如果沒有通過驗證,拒絕連接;如果通過驗證,服務器獲得用戶的公鑰。 
⑥ 客戶瀏覽器告訴服務器自己所能夠支持的通訊對稱密碼方案。 
⑦ 服務器從客戶發送過來的密碼方案中,選擇一種加密程度最高的密碼方案,用客戶的公鑰加過密后通知瀏覽器。 
⑧ 瀏覽器針對這個密碼方案,選擇一個通話密鑰,接着用服務器的公鑰加過密后發送給服務器。 
⑨ 服務器接收到瀏覽器送過來的消息,用自己的私鑰解密,獲得通話密鑰。 
⑩ 服務器、瀏覽器接下來的通訊都是用對稱密碼方案,對稱密鑰是加過密的。

單向認證 SSL 協議不需要客戶擁有 CA 證書,具體的過程相對於上面的步驟,只需將服務器端驗證客戶證書的過程去掉,以及在協商對稱密碼方案,對稱通話密鑰時,服務器發送給客戶的是沒有加過密的(這並不影響 SSL 過程的安全性)密碼方案。 這樣,雙方具體的通訊內容,就是加過密的數據,如果有第三方攻擊,獲得的只是加密的數據,第三方要獲得有用的信息,就需要對加密的數據進行解密,這時候的安全就依賴於密碼方案的安全。而幸運的是,目前所用的密碼方案,只要通訊密鑰長度足夠的長,就足夠的安全。這也是我們強調要求使用 128 位加密通訊的原因。

數字證書

什么是數字證書?

是由證書簽證機關(CA)簽發的對用戶的公鑰的認證。

證書的內容應包括CA的信息、用戶信息、用戶公鑰及CA簽發時間及有效期等內容。目前國際上對證書的格式及認證方法遵從X.509體系標准。 
數字證書又稱為數字標識(Digital Certificate,Digital ID)。它提供了一種在Internet上身份驗證的方式,是用來標志和證明網絡通信雙方身份的數字信息文件,與司機駕照或日常生活中的身份證相似。在網上進行電子商務活動時,交易雙方需要使用數字證書來表明自己的身份,並使用數字證書來進行有關的交易操作。通俗地講,數字證書就是個人或單位在Internet的身份證。數字證書主要包括三方面的內容:證書所有者的信息、證書所有者的公開密鑰和證書頒發機構的簽名。 
證書里包含了什么? 
一個標准的X.509數字證書包含以下一些內容: 
證書的版本信息; 
證書的序列號,每個證書都有一個唯一的證書序列號; 
證書所使用的簽名算法; 
證書的發行機構名稱,命名規則一般采用X.500格式; 
證書的有效期,現在通用的證書一般采用UTC時間格式,它的計時范圍為1950-2049;  
證書所有人的名稱,命名規則一般采用X.500格式; 
證書所有人的公開密鑰; 
證書發行者對證書的簽名。 
數字證書能解決什么問題?

在使用數字證書的過程中應用公開密鑰加密技術,建立起一套嚴密的身份認證系統,它能夠保證: 
保密性:通過使用發件人的數字證書對電子郵件加密,只有收件人才能閱讀加密的郵件,這樣保證在Internet上傳遞的電子郵件信息不會被他人竊取,即使發錯郵件,收件人由於無法解密而不能夠看到郵件內容。 
完整性:利用發件人數字證書在傳送前對電子郵件進行數字簽名不僅可確定發件人身份,而且可以判斷發送的信息在傳遞的過程中是否被篡改過。 
身份認證:在Internet上傳遞電子郵件的雙方互相不能見面,所以必須有方法確定對方的身份。利用發件人數字證書在傳送前對電子郵件進行數字簽名即可確定發件人身份,而不是他人冒充的。 
不可否認性:發件人的數字證書只有發件人唯一擁有,故發件人利用其數字證書在傳送前對電子郵件進行數字簽名后,發件人就無法否認發送過此電子郵件。 
數字證書的原理是什么?

數字證書采用PKI(Public Key Infrastructure)公開密鑰基礎架構技術,利用一對互相匹配的密鑰進行加密和解密。

A 加密和認證

首先我們需要區分加密和認證這兩個基本概念。

加密是將數據資料加密,使得非法用戶即使取得加密過的資料,也無法獲取正確的資料內容,所以數據加密可以保護數據,防止監聽攻擊。其重點在於數據的安全性。

身份認證是用來判斷某個身份的真實性,確認身份后,系統才可以依不同的身份給予不同的權限。其重點在於用戶的真實性。兩者的側重點是不同的

公鑰和私鑰

其次我們還要了解公鑰和私鑰的概念和作用。

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

公鑰私鑰的原則:

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

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

基於公開密鑰的加密過程(加密)

比如有兩個用戶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的公鑰解密文件,從而驗證簽名。

發送方使用自己的私鑰加密,接受方用發送方的公鑰進行解密。

E 身份鑒別與加密

發送方使用自己的私鑰對明文加密,然后用接受方的公鑰進行加密。

接受方使用自己的私鑰解密,然后使用發送方的公鑰解密。

兩次加密,兩次解密。

數字證書采用公鑰體制,即利用一對互相匹配的密鑰進行加密、解密。每個用戶自己設定一把特定的僅為本人所知的私有密鑰(私鑰),用它進行解密和簽名;同時設定一把公共密鑰(公鑰)並由本人公開,為一組用戶所共享,用於加密和驗證簽名。當發送一份保密文件時,發送方使用接收方的公鑰對數據加密,而接收方則使用 自己的私鑰解密,這樣信息就可以安全無誤地到達目的地了。

數字證書的應用

現有持證人甲向持證人乙傳送數字信息,為了保證信息傳送的真實性、完整性和不可否認性,需要對要傳送的信息進行數字加密和數字簽名,其傳送過程如下:

(1) 甲准備好要傳送的數字信息(明文)。 
(2) 甲對數字信息進行哈希(hash)運算,得到一個信息摘要。 
(3) 甲用自己的私鑰(SK)對信息摘要進行加密得到甲的數字簽名,並將其附在數字信息上。 
(4) 甲隨機產生一個加密密鑰(DES密鑰),並用此密鑰對要發送的信息進行加密,形成密文。 
(5) 甲用乙的公鑰(PK)對剛才隨機產生的加密密鑰進行加密,將加密后的DES密鑰連同密文一起傳送給乙。 
(6) 乙收到甲傳送過來的密文和加過密的DES密鑰,先用自己的私鑰(SK)對加密的DES密鑰進行解密,得到DES密鑰。 
(7) 乙然后用DES密鑰對收到的密文進行解密,得到明文的數字信息,然后將DES密鑰拋棄(即DES密鑰作廢)。 
(8) 乙用甲的公鑰(PK)對甲的數字簽名進行解密,得到信息摘要(附件)。 
(9) 乙用相同的hash算法對收到的明文再進行一次hash運算,得到一個新的信息摘要。 
(10)乙將收到的信息摘要和新產生的信息摘要進行比較,如果一致,說明收到的信息沒有被修改過。 
在(5)處用到的PK,是否來自乙所持有的的數字證書?若是,從何處得到該數字證書?關於此過程的加密解密,是怎樣實現? 
A 如何獲得通訊對方的公鑰並且相信此公鑰是由某個身份確定的人擁有的,這就要用到電子證書。電子證書是由大家共同信任的第三方---認證中心(Certificate Authority,CA)來頒發的,有某人的身份信息、公鑰和CA的數字簽名。任何一個信任CA的通訊一方,都可以通過驗證對方電子證書上的CA數字簽名來建立起和對方的信任,並且獲得對方的公鑰以備使用。

數字證書的使用

每一個用戶有一個各不相同的名字,一個可信的證書認證中心(CA)給每個用戶分配一個唯一的名字並簽發一個包含名字和用戶公開密鑰的證書。

如果甲想和乙通信,他首先必須從數據庫中取得乙的證書,然后對它進行驗證。如果他們使用相同的CA,事情就很簡單。甲只需驗證乙證書上CA的簽名;如果他們使用不同的CA,問題就復雜了。甲必須從CA的樹形結構底部開始,從底層CA往上層CA查詢,一直追蹤到同一個CA為止,找出共同的信任CA。

證書可以存儲在網絡中的數據庫中。用戶可以利用網絡彼此交換證書。當證書撤銷后,它將從證書目錄中刪除,然而簽發此證書的CA仍保留此證書的副本,以備日后解決可能引起的糾紛。

如果用戶的密鑰或CA的密鑰被破壞,從而導致證書的撤銷。每一個CA必須保留一個已經撤銷但還沒有過期的證書廢止列表(CRL)。當甲收到一個新證書時,首先應該從證書廢止列表(CRL)中檢查證書是否已經被撤銷。 
數字證書由誰來頒發,如何頒發?

數字證書是由認證中心頒發的。

認證中心是一家能向用戶簽發數字證書以確認用戶身份的管理機構。為了防止數字憑證的偽造,認證中心的公共密鑰必須是可靠的,認證中心必須公布其公共密鑰或由更高級別的認證中心提供一個電子憑證來證明其公共密鑰的有效性,后一種方法導致了多級別認證中心的出現。

數字證書頒發過程如下:用戶首先產生自己的密鑰對,並將公共密鑰及部分個人身份信息傳送給認證中心。認證中心在核實身份后,將執行一些必要的步驟,以確信請求確實由用戶發送而來,然后,認證中心將發給用戶一個數字證書,該證書內包含用戶的個人信息和他的公鑰信息,同時還附有認證中心的簽名信息。用戶就可以使用自己的數字證書進行相關的各種活動。

消息摘要

某些人可能會篡改或替換其原始消息,一種保證消息完整性的方法是同時發一個其消息的簡單摘要與消息本身比對,如果相符則消息正確。

數字簽名

不可抵賴和身份確認clip_image001

證書

是由證書簽證機關(CA)簽發的對用戶的公鑰的認證。

證書的內容

證書機構

證書鏈

建立頂級CA


免責聲明!

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



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