1. 程式人生 > >數字簽名原理簡介(附數字證書)

數字簽名原理簡介(附數字證書)

的人 提高效率 接收消息 沒有 一個 mage tro 這就是 div

http://www.cnblogs.com/kingsleylam/p/4985571.html

首先要了解什麽叫對稱加密和非對稱加密,消息摘要這些知識。

1. 非對稱加密

在通信雙方,如果使用非對稱加密,一般遵從這樣的原則:公鑰加密,私鑰解密。同時,一般一個密鑰加密,另一個密鑰就可以解密。

因為公鑰是公開的,如果用來解密,那麽就很容易被不必要的人解密消息。因此,私鑰也可以認為是個人身份的證明。

如果通信雙方需要互發消息,那麽應該建立兩套非對稱加密的機制(即兩對公私鑰密鑰對),發消息的一方使用對方的公鑰進行加密,接收消息的一方使用自己的私鑰解密。

2.消息摘要

消息摘要可以將消息哈希轉換成一個固定長度的值唯一的字符串。值唯一的意思是不同的消息轉換的摘要是不同的,並且能夠確保唯一。該過程不可逆

,即不能通過摘要反推明文(似乎SHA1已經可以被破解了,SHA2還沒有。一般認為不可破解,或者破解需要耗費太多時間,性價比低)。

利用這一特性,可以驗證消息的完整性。

消息摘要通常用在數字簽名中,下面介紹用法。

了解基礎知識之後,就可以看一下數字簽名和數字證書了。

3.數字簽名

假設現在有通信雙方A和B,兩者之間使用兩套非對稱加密機制。

現在A向B發消息。

技術分享圖片

那麽,如果在發送過程中,有人修改了裏面密文消息,B拿到的密文,解密之後得到明文,並非A所發送的,信息不正確。

要解決兩個問題:1. A的身份認證 2. A發送的消息完整性 那麽就要用到上面所講的基礎知識。

數字簽名的過程如下圖:

技術分享圖片

簡單解釋:

A:將明文進行摘要運算後得到摘要(消息完整性),再將摘要用A的私鑰加密(身份認證),得到數字簽名,將密文和數字簽名一塊發給B。

B:收到A的消息後,先將密文用自己的私鑰解密,得到明文。將數字簽名用A的公鑰進行解密後,得到正確的摘要(解密成功說明A的身份被認證了)。

對明文進行摘要運算,得到實際收到的摘要,將兩份摘要進行對比,如果一致,說明消息沒有被篡改(消息完整性)。

疑問:

摘要使用A的私鑰加密,如果被擁有A的公鑰的第三者截獲,不就可以獲取到摘要了麽?會不會對安全造成威脅。

不會。因為摘要是不可逆推出原文的。

4.數字證書

理解了數字簽名之後,數字證書就好理解了。

由於網絡上通信的雙方可能都不認識對方,那麽就需要第三者來介紹,這就是數字證書。

數字證書由Certificate Authority( CA 認證中心)頒發。

關於數字證書的具體描述,需要百度,目前未完全理解。記一個TODO。

圖解如下:

首先A B雙方要互相信任對方證書。//TODO

然後就可以進行通信了,與上面的數字簽名相似。不同的是,使用了對稱加密。這是因為,非對稱加密在解密過程中,消耗的時間遠遠超過對稱加密。如果密文很長,那麽效率就比較低下了。但密鑰一般不會特別長,對對稱加密的密鑰的加解密可以提高效率。

技術分享圖片

數字簽名原理簡介(附數字證書)