數字簽名是什么??
作者:David Youd?
翻譯:阮一峰?
原文網址:http://www.youdzone.com/signature.html?
1.鮑勃有兩把鑰匙,一把是公鑰,另一把是私鑰。
?
?
2.Bob把公鑰送給他的朋友們-Pat、Doug、Susan-- 每人一把。
??
?
3.Susan要給Bob一封保密的信。她寫完后用Bob的公鑰加密,就可以達到保密的效果。
?
4.Bob收信后,用私鑰解密,就看到了信件內容,這里強調的是,只要Bob的私鑰不泄露,這封信就是安全的,即使落在別人手里,也無法解密。
?
?5.Bob 給Susan回信,決定采用“數字簽名”。他寫完后先用Hash函數,生成信件的摘要(Digest)。
?
?6.然后,Bob使用私鑰,對這個摘要(Digest)加密,生成“數字簽名”(signature)。
?
7.Bob將這個“數字簽名”,附在信件下面,一起發給Susan。(同樣,如果Bob 要回復加密信息給Susan,那么Susan先公布自己的公鑰給Bob用于加密,Susan 保存自己的私鑰用于解密)
即假設兩個用戶要加密交換數據,雙方交換公鑰,使用時一方用對方的公鑰加密,另一方即可用自己的私鑰解密;
8.Susan 收信后,取下“數字簽名”,用Bob的公鑰解密,得到信件的摘要。由此證明,這封信確實是Bob發出的。
?
?9.Susan再對信件本身使用Hash函數,將得到的結果,與上一步得到的Digest進行對比,如果兩者一直,就證明這封信未被修改過。
?
10.那么復雜的情況出現了,Doug想欺騙Susan,他偷偷使用了Susan的電腦,用自己的公鑰換走了Bob的公鑰。此時Susan實際擁有的是Doug的公鑰,但是自以為是Bob 的公鑰。因此,Doug就可以冒充Bob,用自己的私鑰做成“數字簽名”,寫信給Susan,讓Susan用假的Bob公鑰進行解密
?
?
?11.后來,Susan感覺不對勁,發現在即無法確定公鑰是否真的屬于Bob。她想到了一個辦法,要求Bob 去找“證書中心”(Certificate authority ,簡稱CA)為公鑰做認證。證書中心用自己的私鑰,對Bob的公鑰和一些相關信息一起加密,
? ? ?生成:數字證書(Digital Certificate)
?
12.Bob拿到數字證書以后,就可以放心里。以后再給Susan寫信,只要在簽名的同時,再附上數字證書就行了
13.Susan收信后,用CA的公鑰解開數字證書(Digital Certificate)就可以拿到Bob的真實公鑰了,然后就能證明“數字簽名(”Signture“)是否真的是Bob簽的
?
?
下面,我們看一個應用”數字證書”的實例:https協議。這個協議主要用于網頁加密:
?
主要步驟如下:
1.客戶端向服務器發出加密請求
?
?
?
?2.服務端用自己的私鑰加密網頁以后,連同本身的數字證書,一起發送給客戶端
?
?
?3.客戶端(瀏覽器)的”證書管理器“,有”受信任的根證書頒發機構“列表,客戶端會根據這張列表,查看解開數字證書的公鑰是否在列表之內。
?
?4.如果數字證書記載的網址,與你正在瀏覽的網址不一致,就說明這張證書可能被冒用,瀏覽器會發出警告
?
?5.如果這張證書不是由受信任的機構頒發的,瀏覽器會發出另一種警告
6.如果數字證書是可靠的,客戶端就可以使用證書中的服務器公鑰,對信息進行加密,然后與服務器交換加密信息。
不過,非對稱加密(公鑰加密)在計算上相當復雜,性能欠佳,遠遠不比對稱加密,so 在一般情況下,往往通過公鑰加密來創建臨時的對稱密鑰,亦即會話密鑰(一次性用于會話中加密的對稱式密鑰),
然后才通過對稱加密來傳輸大量、主體的數據。
?
?
?
參考鏈接:
https://baike.baidu.com/item/%E9%9D%9E%E5%AF%B9%E7%A7%B0%E5%8A%A0%E5%AF%86%E7%AE%97%E6%B3%95/1208652?
https://baike.baidu.com/item/%E9%9D%9E%E5%AF%B9%E7%A7%B0%E5%8A%A0%E5%AF%86/9874417?
https://zh.wikipedia.org/wiki/Session_key
?