什麼是數字證書

打個比方,有兩個小朋友在網上相互發消息,名字分別是小明和小紅,小明想要給小紅髮個消息,但是呢,又擔心發的消息被別人修改,就像信件被郵局修改那樣。所以呢,小明想了個辦法。給數據“籤個名”,然後小紅同學呢,就驗證這個數據的簽名是不是小明同學的,如果是,那麼數據沒有被修改。那怎麼簽名呢?

數字簽名

聯想到現實中,我們一般是手寫個簽名或者給信件蓋個章,如果大家有一點經驗的話,應該看到過這種蓋章,就是把章蓋在信件重要內容上。如下:

test

這種蓋章的好處是什麼呢?很簡單,因爲如果要改變內容的話,就一定會改變蓋的章,所以,小紅就可以輕易地檢測出信件是否被修改過。好,這是現實情況。在數據的世界裏怎麼辦呢?怎麼給數據“蓋章簽名”呢?

要給數據蓋章,我們就得搞懂兩個問題:

  1. 數據世界裏,什麼是“章”
  2. 數據的重要內容是什麼

“章”:非對稱加密的公私鑰

這部分可能得扯很久,爲了簡單起見,只簡單的說一下。在數字的世界裏,有一門學科叫密碼學,密碼學中又有一個領域就非對稱加密,非對稱加密有兩個密鑰,一個叫私鑰,一個叫公鑰。這兩個密鑰都可以用於給數據加解密:

  1. 如果是私鑰加的密,那麼就用公鑰解密
  2. 如果是公鑰加的密,那麼就用私鑰解密

都可以加解密的話,公鑰私鑰有什麼區別,就一點:私鑰可以推斷出公鑰,但反過來不行。所以,只要我們手裏的私鑰不給任何人,只有自己知道的前提下,我們就可以用私鑰給數據加密,然後把公鑰給別人,讓他用公鑰解密。如果公鑰無法解密,說明私鑰不是我的。所以,公鑰體系能達到“章”的作用。

數據的重要內容

這就簡單了,就是數據的哈希值(這裏較爲簡單,就一筆帶過了,如果有不懂的同學,可以google下)。

簽名

懂了公私鑰的話,簽名的概念就容易理解了。簽名就是用私鑰將數據的哈希值加密,然後接收方用公鑰解密出哈希值,然後接收方再計算一次數據的哈希進行對比,不同,則數據被篡改。

回到例子本身,過程如下:

  1. 小明準備一套私鑰和公鑰
  2. 將公鑰發給小紅
  3. 編寫一條消息
  4. 計算消息的哈希值
  5. 用私鑰對上面計算出的哈希值加密,將簽名附在消息的後面
  6. 將消息發給小紅
  7. 小紅接收到消息
  8. 解析出簽名
  9. 用公鑰解密簽名獲得哈希
  10. 自己計算一次數據哈希
  11. 對比哈希值
  12. 得出結果

以上就是數據簽名的原理和用途。那到底什麼是數字認證呢?

CA證書

上面有一個很重要的一步,就是第2步:將公鑰發給小紅。小紅怎麼知道這個公鑰是小明給她的呢?

這裏就需要數字證書了。也就是說,數據證書是來解決公鑰的信任問題的。

到這一步,密碼學的幫助其實就不大了,因爲我們要引入權威第三方機構了。

首先,小紅和小明得找到一個雙方都信任的第三方機構,這個機構我們將它 稱爲CA(Certificate Authority)首先給兩人各發一張證書。

這張證書裏有下面這些內容:

簽發者:CA自己
公鑰:1024/2048位公鑰(明文)
有效期:xx
哈希算法:將公鑰生成哈希
加密算法:將哈希用私鑰加密,生成簽名
簽名:見上

證書的簽名就是上述的數字簽名,數據是公鑰,所以,小紅和小明可以用證書裏的公鑰對簽名進行解密,然後自己對公鑰進行哈希計算,然後進行驗證,從而可以確保CA證書是正確的。這個證書叫根證書

小明的證書

然後接下來,小明將自己的公鑰和自己的一些信息交給CA中心,CA中心呢,就按照上述的格式給小明簽發了一組證書,內容如下:

簽發者:CA
公鑰:小明的公鑰
有效期:xx
哈希算法:將小明的公鑰生成哈希
加密算法:將哈希用私鑰加密,生成簽名
簽名:見上

然後有了證書的小明就把自己的證書發給小紅,小紅拿到後,先用CA的公鑰解密簽名,然後就是將小明的公鑰進行哈希計算,對比一下後就可確定這的確是小明的公鑰。

以上就是數字證書的原理。

轉載請註明原文地址:http://zgljl2012.com/shi-yao-shi-shu-zi-zheng-shu/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章