原文網(wǎng)址:http://www.ruanyifeng.com/blog/2011/08/what_is_a_digital_signature.html
鮑勃有兩把鑰匙淤刃,一把是公鑰砸逊,另一把是私鑰。
鮑勃把公鑰送給他的朋友們----帕蒂赤屋、道格立镶、蘇珊----每人一把。
蘇珊要給鮑勃寫一封保密的信类早。她寫完后用鮑勃的公鑰加密媚媒,就可以達到保密的效果。
鮑勃收信后涩僻,用私鑰解密缭召,就看到了信件內(nèi)容。這里要強調(diào)的是逆日,只要鮑勃的私鑰不泄露嵌巷,這封信就是安全的,即使落在別人手里室抽,也無法解密搪哪。
鮑勃給蘇珊回信,決定采用"數(shù)字簽名"坪圾。他寫完后先用 Hash 函數(shù)噩死,生成信件的摘要(digest)颤难。
然后,鮑勃使用私鑰已维,對這個摘要加密行嗤,生成"數(shù)字簽名"(signature)。
鮑勃將這個簽名垛耳,附在信件下面栅屏,一起發(fā)給蘇珊。
蘇珊收信后堂鲜,取下數(shù)字簽名栈雳,用鮑勃的公鑰解密,得到信件的摘要缔莲。由此證明哥纫,這封信確實是鮑勃發(fā)出的。
蘇珊再對信件本身使用 Hash 函數(shù)痴奏,將得到的結(jié)果蛀骇,與上一步得到的摘要進行對比。如果兩者一致读拆,就證明這封信未被修改過擅憔。
復(fù)雜的情況出現(xiàn)了。道格想欺騙蘇珊檐晕,他偷偷使用了蘇珊的電腦暑诸,用自己的公鑰換走了鮑勃的公鑰。此時辟灰,蘇珊實際擁有的是道格的公鑰个榕,但是還以為這是鮑勃的公鑰。因此芥喇,道格就可以冒充鮑勃笛洛,用自己的私鑰做成"數(shù)字簽名",寫信給蘇珊乃坤,讓蘇珊用假的鮑勃公鑰進行解密苛让。
后來,蘇珊感覺不對勁湿诊,發(fā)現(xiàn)自己無法確定公鑰是否真的屬于鮑勃狱杰。她想到了一個辦法,要求鮑勃去找"證書中心"(certificate authority厅须,簡稱 CA)仿畸,為公鑰做認證。證書中心用自己的私鑰,對鮑勃的公鑰和一些相關(guān)信息一起加密错沽,生成"數(shù)字證書"(Digital Certificate)簿晓。
鮑勃拿到數(shù)字證書以后,就可以放心了千埃。以后再給蘇珊寫信憔儿,只要在簽名的同時,再附上數(shù)字證書就行了放可。
蘇珊收信后谒臼,用 CA 的公鑰解開數(shù)字證書,就可以拿到鮑勃真實的公鑰了耀里,然后就能證明"數(shù)字簽名"是否真的是鮑勃簽的蜈缤。
下面,我們看一個應(yīng)用"數(shù)字證書"的實例:https 協(xié)議冯挎。這個協(xié)議主要用于網(wǎng)頁加密底哥。
首先,客戶端向服務(wù)器發(fā)出加密請求房官。
服務(wù)器用自己的私鑰加密網(wǎng)頁以后趾徽,連同本身的數(shù)字證書,一起發(fā)送給客戶端易阳。
客戶端(瀏覽器)的"證書管理器"附较,有"受信任的根證書頒發(fā)機構(gòu)"列表吃粒×拾常客戶端會根據(jù)這張列表,查看解開數(shù)字證書的公鑰是否在列表之內(nèi)徐勃。
如果數(shù)字證書記載的網(wǎng)址事示,與你正在瀏覽的網(wǎng)址不一致,就說明這張證書可能被冒用僻肖,瀏覽器會發(fā)出警告肖爵。
如果這張數(shù)字證書不是由受信任的機構(gòu)頒發(fā)的,瀏覽器會發(fā)出另一種警告臀脏。
如果數(shù)字證書是可靠的劝堪,客戶端就可以使用證書中的服務(wù)器公鑰,對信息進行加密揉稚,然后與服務(wù)器交換加密信息秒啦。
總結(jié)
數(shù)字簽名是發(fā)送方對原文 Hash 成的摘要通過私鑰加密而成的,發(fā)送時會將原文和簽名一起發(fā)送給接收方搀玖,接收方會將簽名用發(fā)送方的公鑰解密形成摘要余境,再對原文進行 Hash,如果結(jié)果和摘要一致就說明原文未被篡改
在沒有數(shù)字證書的情況下,可以通過替換在 B 的電腦上的 A 的公鑰冒充 A 向 B 發(fā)請求
數(shù)字證書用于認證公鑰芳来,CA 先對 A 的公鑰加密含末,生成數(shù)字證書,以后 A 向 B 發(fā)消息時即舌,在簽名的同時附上證書佣盒,B 收信后用 CA 的公鑰解開數(shù)字證書,就可以拿到 A 真實的公鑰了