數字簽名和數字證書

理解數字簽名和數字證書前需要了解其所用到的加密算法。

加密算法

    加密算法分爲:對稱加密和非對稱加密。

1、對稱加密

    對稱加密算法是應用較早的加密算法,技術成熟。在對稱加密算法中,數據發信方將明文和加密密鑰一起經過特殊加密算法處理後,使其變成複雜的加密密文發送出去。收信方收到密文後,若想解讀原文,則需要使用加密用過的密鑰及相同算法的逆算法對密文進行解密,才能使其恢復成可讀明文。在對稱加密算法中,使用的密鑰只有一個,發收信雙方都使用這個密鑰對數據進行加密和解密,這就要求解密方事先必須知道加密密鑰。

常見的對稱加密算法有:DES算法、3DES算法。

2、非對稱加密

    非對稱加密算法有兩個密鑰:公鑰和私鑰。公開密鑰與私有密鑰是一對,如果用公開密鑰對數據進行加密,只有用對應的私有密鑰才能解密;如果用私有密鑰對數據進行加密,那麼只有用對應的公開密鑰才能解密。因爲加密和解密使用的是兩個不同的密鑰,所以這種算法叫作非對稱加密算法。

例:小A和小B都生成一對公私密鑰,想在他倆將公鑰通過網絡發給對方(注意:因爲這兩個公鑰都是在網絡上傳播,可能會被C獲取),A跟B通信,A將原文用B給的公鑰進行加密生成密文,這段密文只能用B的私鑰解密,所以即使C獲取密文和A/B的公鑰也不能解密。

數字簽名(Digital Signature)

上圖爲A和B的通信過程。前提是 A和B都以獲取對方的公鑰

A將原文加工生成發送內容:

1、A用哈希算法(如MD5)計算要發送內容的Hash值(摘要)。

2、用非對稱加密算法(如RSA算法)加密摘要,生成數字簽名。

3、將原文加數字簽名作爲發送內容。

B收到數據,進行解密驗證內容:

1、首先對原文進行同樣的哈希計算,算出原文的Hash值(摘要1)。

2、用A的公鑰解密簽名,得到摘要2。

3、比對兩個摘要是否相等。如果不相等,證明原文或者簽名被修改過。

    爲什麼要通過哈希算法計算髮送內容的Hash值?就是防止在發送過程中,內容被修改,如果內容被修改,那麼修改後的內容的Hash值就不是之前的了。這時你可能會問,那在傳輸過程中如果同時修改內容,並將對應的Hash值也修改了,不就行了。這裏要注意的是:Hash值已經被A用私鑰加密了,就算你計算出修改後內容的Hash值,但是沒法用A的私鑰加密得到數字簽名。

但是這裏有一個Bug:C也有自己的公鑰私鑰,如果C替換了B手中A的公鑰,然後C用自己的私鑰給B發送數據,這個時候B是不知道他收到的數據時來自C。爲了解決這個問題就出現了證書

數字證書(Digital Certificate)

    數字證書簡稱CA,它由權威機構給某網站頒發的一種認可憑證。頒發證書機構它也有一對公鑰和私鑰。證書機構用它的私鑰將 A的公鑰 和 一些A的信息 加密得到數字證書。然後A發送數據給B時,包含了三個部分:原文+數字簽名+數字證書  ,注意,現在B不持有A的公鑰,B持有的是證書機構的公鑰,通過證書機構的公鑰解密數字證書拿到A的公鑰,然後在重複之前的過程計算數字簽名,跟發來的數字簽名比對。但是有同樣的一個問題:如果B現在持有的證書機構的公鑰被別人替換呢?這個過程是建立在被大家所認可的證書機構之上得到的公鑰,所以這是一種安全的方式。

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

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