關於密鑰和數字證書


  前些天逛技術網,偶爾看到一篇國外關於密鑰的通俗易懂的詳解文章,當時對具體的細節還是有點模糊搞不清楚,so昨天惡補了一下,今天簡單整理一下自己的收獲,以備以后回顧。

 


1.鮑勃有兩把鑰匙,一把是公鑰,另一把是私鑰。

2.鮑勃把公鑰送給他的朋友們—-帕蒂、道格、蘇珊—-每人一把。

3.蘇珊給鮑勃寫信,寫完后用鮑勃的公鑰加密,達到保密的效果。

4.鮑勃收信后,用私鑰解密,看到信件內容。

5.鮑勃給蘇珊回信,寫完后用Hash函數,生成信件的摘要(digest)。

6.然后,鮑勃使用私鑰,對這個摘要加密,生成”數字簽名”(signature)。

7.鮑勃將這個簽名,附在信件下面,一起發給蘇珊。

8.蘇珊收信后,取下數字簽名,用鮑勃的公鑰解密,得到信件的摘要。由此證明,這封信確實是鮑勃發出的。

9.蘇珊再對信件本身使用Hash函數,將得到的結果,與上一步得到的摘要進行對比。如果兩者一致,就證明這封信未被修改過。

10.復雜的情況出現了。道格想欺騙蘇珊,他偷偷使用了蘇珊的電腦,用自己的公鑰換走了鮑勃的公鑰。因此,他就可以冒充鮑勃,寫信給蘇珊。

11.蘇珊發現,自己無法確定公鑰是否真的屬於鮑勃。她想到了一個辦法,要求鮑勃去找”證書中心”(certificate authority,簡稱CA),為公鑰做認證。證書中心用自己的私鑰,對鮑勃的公鑰和一些相關信息一起加密,生成”數字證書”(Digital Certificate)。

12.鮑勃拿到數字證書以后,就可以放心了。以后再給蘇珊寫信,只要在簽名的同時,再附上數字證書就行了。

13.蘇珊收信后,用CA的公鑰解開數字證書,就可以拿到鮑勃真實的公鑰了,然后就能證明”數字簽名”是否真的是鮑勃簽的。

14.下面,我們看一個應用”數字證書”的實例:https協議。這個協議主要用於網頁加密。

15.首先,客戶端向服務器發出加密請求。

16.服務器用自己的私鑰加密網頁以后,連同本身的數字證書,一起發送給客戶端。

17.客戶端(瀏覽器)的”證書管理器”,有”受信任的根證書頒發機構”列表。客戶端會根據這張列表,查看解開數字證書的公鑰是否在列表之內。

18.如果數字證書記載的網址,與你正在瀏覽的網址不一致,就說明這張證書可能被冒用,瀏覽器會發出警告。

19.如果這張數字證書不是由受信任的機構頒發的,瀏覽器會發出另一種警告。

20.如果數字證書是可靠的,客戶端就可以使用證書中的服務器公鑰,對信息進行加密,然后與服務器交換加密信息。

 

 

想更好地理解上面這篇形象生動的技術文章,你還需要理解一些概念和術語

1.1、公鑰密碼體制(public-key cryptography)

公鑰密碼體制分為三個部分,公鑰、私鑰、加密解密算法,它的加密解密過程如下:

  • 加密:通過加密算法和公鑰對內容(或者說明文)進行加密,得到密文。加密過程需要用到公鑰。
  • 解密:通過解密算法和私鑰對密文進行解密,得到明文。解密過程需要用到解密算法和私鑰。注意,由公鑰加密的內容,只能由私鑰進行解密,也就是說,由公鑰加密的內容,如果不知道私鑰,是無法解密的。

公鑰密碼體制的公鑰和算法都是公開的(這是為什么叫公鑰密碼體制的原因),私鑰是保密的。大家都以使用公鑰進行加密,但是只有私鑰的持有者才能解密。在實際的使用中,有需要的人會生成一對公鑰和私鑰,把公鑰發布出去給別人使用,自己保留私鑰。

 

1.2、對稱加密算法(symmetric key algorithms)

在對稱加密算法中,加密使用的密鑰和解密使用的密鑰是相同的。也就是說,加密和解密都是使用的同一個密鑰。因此對稱加密算法要保證安全性的話,密鑰要做好保密,只能讓使用的人知道,不能對外公開。這個和上面的公鑰密碼體制有所不同,公鑰密碼體制中加密是用公鑰,解密使用私鑰,而對稱加密算法中,加密和解密都是使用同一個密鑰,不區分公鑰和私鑰。

// 密鑰,一般就是一個字符串或數字,在加密或者解密時傳遞給加密/解密算法。前面在公鑰密碼體制中說到的公鑰、私鑰就是密鑰,公鑰是加密使用的密鑰,私鑰是解密使用的密鑰

 

很多時候如果要完全程的安全通信,需要對稱加密和非對稱加密一起使用。

 

目前很流行加密算法 即 RSA算法,它是基於一個十分簡單的數論事實:將兩個大素數相乘十分容易,但是想要對其乘積進行因式分解卻極其困難,因此可以將乘積公開作為加密密鑰。

參考http://blog.jobbole.com/1225/

   http://blog.jobbole.com/74614/


免責聲明!

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



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