前言
什麼是數字簽名呢?數字簽名其實是消息摘要和非對稱加密的一起應用。
正文
數字簽名是怎麼來的呢?
在非對稱加解密中,公鑰方對私鑰方發送消息,隻需要公鑰方用公鑰加密即可,因為私鑰隻有一人持有。
那麼私鑰方給公鑰方發送資料是否可以用私鑰發送即可呢?當然可以的啊。
但是又一個問題就是私鑰加密後,所有的公鑰都可以解開,那麼問題來了是否安全呢?
也就是說私鑰加密公鑰去解密的意義并不大。而且私鑰是單方,單方作為伺服器的話去加密可想而知效率問題就很大了。
回到問題得原點上,我們要驗證的是什麼問題呢?
驗證的是如何保證公鑰方如何确認私鑰方的身份,收到私鑰方的資訊沒有串改過?
确定私鑰方的身份隻能通過私鑰要确認,那麼如果用私鑰加密效率低,那麼是否記得如何進行檔案校驗的呢?檔案校驗就是消息摘要,取一部分進行加密啊。
那麼數字簽名就是這樣子的:
私鑰方 通過hash要發送的内容,然後用私鑰進行加密就是數字簽名和内容一起發送出去。
公鑰方取下數字簽名,然後對簽名進行解密,也就是得到hash的内容。這個時候就确認了秘鑰方的身份。
那麼如果确認資訊沒有在中途改過呢?
那麼可以這樣,公鑰方對内容進行hash,然後和數字簽名解密出來的進行對比,如果相等就沒有串改,如果不相等就串改了。
這樣似乎就很愉快了,那麼為啥又有數字證書這東西呢?
是這樣的,我們知道公鑰方是靠公鑰作為探頭來識别私鑰資訊。
那麼問題來了,如果發生一件這種事情就是公鑰方的公鑰被黑客換了,那麼這個時候就有一個情況了。
加入公鑰被換了,那麼和原來的私鑰方無法确認關系了,但是這不是最恐怖的,最恐怖的在于假設有一個黑客,生成了B私鑰和B公鑰。
把B公鑰和公鑰方的公鑰換了,然後用私鑰B和公鑰方溝通,那麼這個時候呢,可想而知多麼恐怖。公鑰方會一直認為是在和私鑰方溝通,其實一直在和黑客玩耍。
這時候數字證書的作用就來了。
首先有一家公共的CA機構,專門管理證書。它做了這麼一件事,那就是用自己的私鑰對其他私鑰方的公鑰和其他資訊進行加密。
那麼私鑰方在公鑰方第一次請求自己資訊的時候,把證書給公鑰方,公鑰方通過證書拿到公鑰,而不是一個固定的公鑰,這樣子就很好了。
來看下https的吧。
下面是阮一峰的解釋:
1.
首先,用戶端向伺服器發出加密請求。
伺服器用自己的私鑰加密網頁以後,連同本身的數字證書,一起發送給用戶端。
3.
用戶端(浏覽器)的"證書管理器",有"受信任的根證書頒發機構"清單。用戶端會根據這張清單,檢視解開數字證書的公鑰是否在清單之内。