1. 程式人生 > >公鑰,私鑰和數字證書關係

公鑰,私鑰和數字證書關係

英文原文地址:

http://www.youdzone.com/signature.html

若下文有任何錯誤,請告知我,謝謝。[email protected]

主角介紹:Bob and Alice

提起RSA加密演算法,公鑰和私鑰,多數文章都要使用Bob和Alice這兩位人物。他們的創造者名叫Rivest,是RSA之父。他為了在避免在描述中使用A和B,就以這兩個字母開頭,建立一男一女兩個角色,就是我們在任何文章上都能看到的Alice和Bob了。這是一些題外話,下面就來進入我們的數字證書入門學習吧。

什麼是數字證書

NewImage

Bob有兩把鑰匙,一把叫公鑰(public key),一把叫私鑰(private key)。

NewImage

Bob的公鑰可以公開供其他人使用,他只保留自己的私鑰。公鑰和私鑰用來加解密資料,如果使用任意一把來加密資料,那麼只有使用另外一把才能解密資料。

NewImage

Susan想給Bob寫信,她可以使用Bob的公鑰將內容加密以後傳送給Bob,Bob收到以後,使用私鑰解密以便閱讀內容。Bob的的其他同事即使截獲了Susan傳送給Bob的信件,由於沒有Bob的私鑰,也無法解密,從而確保資料安全。以上就是使用公鑰和私鑰加解密的過程演示。

多說一句,如果Bob給Susan回信,如何保證資料安全呢?他可以使用Susan的公鑰加密訊息後發給Susan,Susan使用自己的私鑰解密後閱讀。所以保護好自己的私鑰是多麼重要的事情啊。

現在Bob決定給Pat寫一份信,信件的內容不用加密,但是要保證Pat收到信件後,能夠確認信件的確是Bob發出的,而不是別人冒充Bob發給Pat的,應該如果做呢?

NewImage

 

Bob將信件通過hash軟體計算一下,得到一串訊息摘要(有的文章也稱之為“hash值”)。這一過程能夠保證2點:1、過程不可逆。即不能通過訊息摘計算出信件的內容。2、訊息摘要不會重複。即如果信件有任何改動,再次hash計算出的訊息摘要一定不會和改動前的訊息摘要一致。

NewImage

NewImage

然後,Bob使用自己的私鑰,將訊息摘要加密。加密後的結果,我們稱之為“數字簽名”。現在,Bob就可以將信件連同數字簽名一起發給Pat。

NewImage

Pat收到信件以後,會做2件事:1、使用Bob的公鑰將數字簽名解密,如果順利解密,說明的確是Bob簽發的數字簽名,不是別人簽發的,因為Bob的私鑰沒有公開。2、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)認證的公鑰,通過檢視數字證書,可以知道該證書是由那家權威機構簽發的,證書使用人的資訊,使用人的公鑰。它有以下特點:

1、由專門的機構簽發的數字證書才安全有效。

2、簽發數字證書是收費的。

3、不會被冒充,安全可信。

4、數字證書有使用期限,過了使用期限,證書變為不可用。CA也可以在試用期內,對證書進行作廢操作。

NewImage

5、CA的公鑰已經整合到作業系統中了。如上圖。

生成數字證書的流程的如下:

1、持有人將公鑰以及身份資訊傳送給權威機構。

2、權威機構負責對持有人的身份進行驗證,確保公鑰和持有人的資訊準確無誤。

3、權威機構使用自己私鑰對持有人公鑰進行數字簽名,生成數字證書。

4、為了確保證書不被篡改,權威機構對數字證書進行hash計算(指紋演算法),生成摘要(指紋),使用自己的私鑰對摘要進行數字簽名,放到數字證書中。

5、對持有人收費。

 

附:

幾篇好的文章,對我的幫助很大,謝謝作者:

http://www.ruanyifeng.com/blog/2011/08/what_is_a_digital_signature.html

http://blog.csdn.net/ly131420/article/details/38400583