英文原文地址:git
http://www.youdzone.com/signature.html算法
若下文有任何錯誤,請告知我,謝謝。79996286@qq.com安全
主角介紹:Bob and Alicegrunt
提起RSA加密算法,公鑰和私鑰,多數文章都要使用Bob和Alice這兩位人物。他們的創造者名叫Rivest,是RSA之父。他爲了在避免在描述中使用A和B,就以這兩個字母開頭,建立一男一女兩個角色,就是咱們在任何文章上都能看到的Alice和Bob了。這是一些題外話,下面就來進入咱們的數字證書入門學習吧。post
什麼是數字證書學習
Bob有兩把鑰匙,一把叫公鑰(public key),一把叫私鑰(private key)。加密
Bob的公鑰能夠公開供其餘人使用,他只保留本身的私鑰。公鑰和私鑰用來加解密數據,若是使用任意一把來加密數據,那麼只有使用另一把才能解密數據。spa
Susan想給Bob寫信,她可使用Bob的公鑰將內容加密之後發送給Bob,Bob收到之後,使用私鑰解密以便閱讀內容。Bob的的其餘同事即便截獲了Susan發送給Bob的信件,因爲沒有Bob的私鑰,也沒法解密,從而確保數據安全。以上就是使用公鑰和私鑰加解密的過程演示。操作系統
多說一句,若是Bob給Susan回信,如何保證數據安全呢?他可使用Susan的公鑰加密消息後發給Susan,Susan使用本身的私鑰解密後閱讀。因此保護好本身的私鑰是多麼重要的事情啊。
如今Bob決定給Pat寫一份信,信件的內容不用加密,可是要保證Pat收到信件後,可以確認信件的確是Bob發出的,而不是別人冒充Bob發給Pat的,應該若是作呢?
Bob將信件經過hash軟件計算一下,獲得一串消息摘要(有的文章也稱之爲「hash值」)。這一過程可以保證2點:一、過程不可逆。即不能經過消息摘計算出信件的內容。二、消息摘要不會重複。即若是信件有任何改動,再次hash計算出的消息摘要必定不會和改動前的消息摘要一致。
而後,Bob使用本身的私鑰,將消息摘要加密。加密後的結果,咱們稱之爲「數字簽名」。如今,Bob就能夠將信件連同數字簽名一塊兒發給Pat。
Pat收到信件之後,會作2件事:一、使用Bob的公鑰將數字簽名解密,若是順利解密,說明的確是Bob簽發的數字簽名,不是別人簽發的,由於Bob的私鑰沒有公開。二、Pat使用hash軟件對信件再次進行hash計算,和解密數字簽名獲得的消息摘要對比,若是一致,說明信件沒有篡改,確實是Bob發出的。這就是數字簽名的過程。它可以確保簽名人發出的消息不被篡改,也能證實的確是簽名人發出的消息。
ok,一切看上去是那麼的完美,使用公鑰私鑰,即能加解密消息,又能夠數字簽名。說了那麼多,尚未提到文章的主題----數字證書(不要和數字簽名搞混了)。
先來作一道CISP的試題:
那類人對單位的信息安全威脅最大:a、高層領導 b、信息主管 c、安全管理員 d、心懷不滿的員工
三長一短選最短,三短一長選最長,so答案就是d,也是咱們下面引入的主角,Doug,our disgruntled employee。
Doug要欺騙Pat,冒充Bob給Pat寫信,他應該怎麼作的?既然Bob的公鑰是公開的,Doug能夠冒充Bob,將他本身的公鑰發給Pat,讓Pat誤認爲收到的公鑰就是Bob的,而後就能夠冒充Bob給Pat發消息了(這裏咱們只談理論,不談具體實現方式)。因此問題的核心就是,如何確保公鑰不被冒充?
使用數字證書能夠確保公鑰不被冒充。數字證書是通過權威機構(CA)認證的公鑰,經過查看數字證書,能夠知道該證書是由那家權威機構簽發的,證書使用人的信息,使用人的公鑰。它有如下特色:
一、由專門的機構簽發的數字證書才安全有效。
二、簽發數字證書是收費的。
三、不會被冒充,安全可信。
四、數字證書有使用期限,過了使用期限,證書變爲不可用。CA也能夠在試用期內,對證書進行做廢操做。
五、CA的公鑰已經集成到操做系統中了。如上圖。
生成數字證書的流程的以下:
一、持有人將公鑰以及身份信息發送給權威機構。
二、權威機構負責對持有人的身份進行驗證,確保公鑰和持有人的信息準確無誤。
三、權威機構使用本身私鑰對持有人公鑰進行數字簽名,生成數字證書。
四、爲了確保證書不被篡改,權威機構對數字證書進行hash計算(指紋算法),生成摘要(指紋),使用本身的私鑰對摘要進行數字簽名,放到數字證書中。
五、對持有人收費。
附:
幾篇好的文章,對個人幫助很大,謝謝做者:
http://www.ruanyifeng.com/blog/2011/08/what_is_a_digital_signature.html
http://blog.csdn.net/ly131420/article/details/38400583