1. 程式人生 > >加密,認證疑難名詞總結----RSA, 公鑰,私鑰,CA,數字簽名,數字證書

加密,認證疑難名詞總結----RSA, 公鑰,私鑰,CA,數字簽名,數字證書

成功 digital 出現 直觀 證明 col 文件簽名 nat blog

在網絡和操作系統安全通信中經常涉及到這幾個名詞: RSA, 公鑰,私鑰,CA,數字簽名,數字證書。
我找了很多資料,很少有把疑難點講全面的。但不講清楚這幾個,很難有一個清晰的認識和理解。
我現在也嘗試這樣的方式,自己總結,以便後來查看,同時也希望能幫助一些人少走彎路,省去baidu, google, 看RFC的時間。

  1. 對稱和非對稱,公鑰和私鑰:
    加密的兩種方式:對稱加密和非對稱加密。
    對稱加密:加密的密鑰也叫公鑰和解密的密鑰(也叫私鑰)相同。特點是算法公開、計算量小、加密速度快、加密效率高。
    非對稱加密:加密和解密使用的是兩個不同的密鑰,所以這種算法叫作非對稱加密算法。RSA是一種非對稱加密算法。

    RSA是取的研究這個算法的三個專家的首字母。

    加密算法中,公鑰用於對數據進行加密,私鑰用於對數據進行解密。當然了,這個也可以很直觀的理解:
    公鑰就是公開的密鑰,其公開了大家才能用它來加密數據。私鑰是私有的密鑰,誰有這個密鑰才能夠解密密文。
    在簽名算法中,私鑰用於對數據進行簽名,公鑰用於對簽名進行驗證。這也可以直觀地進行理解:
    對一個文件簽名,當然要用私鑰,因為我們希望只有自己才能完成簽字。驗證過程當然希望所有人都能夠執行。
    大家看到簽名都能通過驗證證明確實是我自己簽的。如果你用私鑰加密了,所有人都能查到公鑰並解密,所以其實不能叫加解密。

  2. 數字簽名

數字簽名並不是簽一個字來證明這個東西是我的,而是做了一個數學計算。數字簽名(Digital Signature)是 先對消息內容做Hash得到一串數字,然後用私鑰對這個數字進行加密


數字簽名就兩個目的:證明這消息是你發的;證明這消息內容確實是完整的。(認證和完整性)。

 對消息做一次哈希(md5或者sha1都行),然後用你的私鑰加密這段哈希作為簽名,並一起公布出去

當別人收到你的公告時,他可以用你的公鑰解密你的簽名,如果解密成功,並且解密出來的哈希值確實和你的公告原文一致,
那麽他就證明了兩點:這消息確實是你發的,而且內容是完整的。
我們在網上下載文件,經常會有一個長串的字符 MD5值。我們下載資料後,linux可以用md5sum 檢查一下這個資料,命令輸出得到的值和網站上的md5值比較。如果一致,說明文件下載完整。如果不一致,說明下載的文件發生改變。windows可以用winmd5等軟件驗證。

3.數字證書Digital Certificate和證書中心Certificate Authority
“服務器”要對外發布公鑰,那“服務器”如何把公鑰發送給“客戶”呢?我們第一反應可能會想到以下的兩個方法:
a)把公鑰放到互聯網的某個地方的一個下載地址,事先給“客戶”去下載。
b)每次和“客戶”開始通信時,“服務器”把公鑰發給“客戶”。
但是這個兩個方法都有一定的問題,
對於a)方法,“客戶”無法確定這個下載地址是不是“服務器”發布的,你憑什麽就相信這個地址下載的東西就是“服務器”發布的而不是別人偽造的呢,萬一下載到一個假的怎麽辦?另外要所有的“客戶”都在通信前事先去下載公鑰也很不現實。
對於b)方法,也有問題,因為任何人都可以自己生成一對公鑰和私鑰,他只要向“客戶”發送他自己的私鑰就可以冒充“服務器”了。

為了解決這個問題,數字證書出現了,它可以解決我們上面的問題。先大概看下什麽是數字證書,一個證書包含下面的具體內容:

  • 證書的發布機構
  • 證書的有效期
  • 公鑰
  • 證書所有者(Subject)
  • 簽名所使用的算法
  • 指紋以及指紋算法

    證書發布機構除了給別人發布證書外,他自己本身也有自己的證書。證書發布機構的證書是哪裏來的呢???
    這個證書發布機構的數字證書(一般由他自己生成)在我們的操作系統剛安裝好時(例如windows xp等操作系統),
    這些證書發布機構的數字證書就已經被微軟(或者其它操作系統的開發機構)安裝在操作系統中了,
    微軟等公司會根據一些權威安全機構的評估選取一些信譽很好並且通過一定的安全認證的證書發布機構,
    把這些證書發布機構的證書默認就安裝在操作系統裏面了,並且設置為操作系統信任的數字證書
    這些證書發布機構自己持有與他自己的數字證書對應的私鑰,他會用這個私鑰加密所有他發布的證書的指紋作為數字簽名。

技術分享圖片

數字證書總結:
兩個前提:CA是可以信任的(CA是一家實實在在的公司,有信譽)。微軟已經把CA的數字證書(公鑰)默認安裝在操作系統中,也就是說操作系統中有CA的公鑰。
服務器向CA申請數字證書。CA生成服務器的數字證書(包含了服務器的公鑰)和私鑰給服務器。客戶端請求網頁,然後客戶端收到服務器發來的信息和數字證書。客戶端用CA公鑰解開服務器數字證書,得到服務器公鑰。
有了服務器公鑰,客戶端就可以解開服務器的加密網頁。

如何自己創建證書
每個證書發布機構都有自己的用來創建證書的工具,不同類型的證書都有一定的格式和規範,微軟為我們提供了一個用來創建證書的工具makecert.exe,在安裝Visual Studio的時候會安裝上。如果沒有安裝也無所謂,可以上網去下一個,搜索makecert就可以了。證書創建工具 (Makecert.exe)。

++++++++++++++++++++++++++++++++++++++
1.排版有點麻煩,要排的好看,還要花時間。
2.自己想的與寫的文字有差距。
++++++++++++++++++++++++++++++++++++++

加密,認證疑難名詞總結----RSA, 公鑰,私鑰,CA,數字簽名,數字證書