天天看點

密碼學系列——數字簽名

前言

什麼是數字簽名呢?數字簽名其實是消息摘要和非對稱加密的一起應用。

正文

數字簽名是怎麼來的呢?

密碼學系列——數字簽名

在非對稱加解密中,公鑰方對私鑰方發送消息,隻需要公鑰方用公鑰加密即可,因為私鑰隻有一人持有。

那麼私鑰方給公鑰方發送資料是否可以用私鑰發送即可呢?當然可以的啊。

但是又一個問題就是私鑰加密後,所有的公鑰都可以解開,那麼問題來了是否安全呢?

也就是說私鑰加密公鑰去解密的意義并不大。而且私鑰是單方,單方作為伺服器的話去加密可想而知效率問題就很大了。

回到問題得原點上,我們要驗證的是什麼問題呢?

驗證的是如何保證公鑰方如何确認私鑰方的身份,收到私鑰方的資訊沒有串改過?

确定私鑰方的身份隻能通過私鑰要确認,那麼如果用私鑰加密效率低,那麼是否記得如何進行檔案校驗的呢?檔案校驗就是消息摘要,取一部分進行加密啊。

那麼數字簽名就是這樣子的:

私鑰方 通過hash要發送的内容,然後用私鑰進行加密就是數字簽名和内容一起發送出去。

公鑰方取下數字簽名,然後對簽名進行解密,也就是得到hash的内容。這個時候就确認了秘鑰方的身份。

那麼如果确認資訊沒有在中途改過呢?

那麼可以這樣,公鑰方對内容進行hash,然後和數字簽名解密出來的進行對比,如果相等就沒有串改,如果不相等就串改了。

這樣似乎就很愉快了,那麼為啥又有數字證書這東西呢?

是這樣的,我們知道公鑰方是靠公鑰作為探頭來識别私鑰資訊。

那麼問題來了,如果發生一件這種事情就是公鑰方的公鑰被黑客換了,那麼這個時候就有一個情況了。

加入公鑰被換了,那麼和原來的私鑰方無法确認關系了,但是這不是最恐怖的,最恐怖的在于假設有一個黑客,生成了B私鑰和B公鑰。

把B公鑰和公鑰方的公鑰換了,然後用私鑰B和公鑰方溝通,那麼這個時候呢,可想而知多麼恐怖。公鑰方會一直認為是在和私鑰方溝通,其實一直在和黑客玩耍。

這時候數字證書的作用就來了。

首先有一家公共的CA機構,專門管理證書。它做了這麼一件事,那就是用自己的私鑰對其他私鑰方的公鑰和其他資訊進行加密。

那麼私鑰方在公鑰方第一次請求自己資訊的時候,把證書給公鑰方,公鑰方通過證書拿到公鑰,而不是一個固定的公鑰,這樣子就很好了。

來看下https的吧。

下面是阮一峰的解釋:

1.

密碼學系列——數字簽名

首先,用戶端向伺服器發出加密請求。

密碼學系列——數字簽名

伺服器用自己的私鑰加密網頁以後,連同本身的數字證書,一起發送給用戶端。

3.

密碼學系列——數字簽名

用戶端(浏覽器)的"證書管理器",有"受信任的根證書頒發機構"清單。用戶端會根據這張清單,檢視解開數字證書的公鑰是否在清單之内。

繼續閱讀