原文地址:What is a Digital Signature?
1)如下圖所示,小明有兩把鑰匙话侄,一把是公鑰(Public Key),另一把是私鑰(Private Key):
2)任何人都可以拿到小明的公鑰,但他的私鑰只有他自己知道:
密鑰用于加密信息。加密信息意味著把信息打亂带射,只有擁有正確的秘鑰的人才能使其重新變?yōu)榭勺x的。小明的兩個(gè)密鑰中的任意一個(gè)都能加密數(shù)據(jù)循狰,并且另一個(gè)可以解密數(shù)據(jù)庸诱。
3)如下圖所示,張三可以使用小明的公鑰加密數(shù)據(jù)晤揣,小明可以使用自己的私鑰解開密文:
小明的同事們都可能拿到張三加密的消息,但沒有小明的私鑰的話朱灿,這些數(shù)據(jù)對(duì)于他們來(lái)說也沒什么用昧识。
4)使用自己的私鑰及相應(yīng)的軟件,小明可以把數(shù)字簽名(digital signature)及一些其他信息寫入文檔中盗扒。數(shù)字簽名是小明在自己的數(shù)據(jù)上加蓋的印戳(這個(gè)印戳和小明唯一對(duì)應(yīng)起來(lái))并且這個(gè)印戳很難偽造跪楞。另外缀去,簽名也保證了對(duì)已簽名數(shù)據(jù)的任何修改都可以被發(fā)覺。
為了對(duì)文檔進(jìn)行簽名甸祭,小明的軟件使用算法將數(shù)據(jù)濃縮為幾行信息缕碎,這個(gè)過程稱為“哈希”。這幾行信息就是消息摘要(message digest)(幾乎無(wú)法從消息摘要推斷出相應(yīng)的原始數(shù)據(jù)):
5)小明的軟件對(duì)消息摘要進(jìn)行加密池户,得到了數(shù)字簽名(digital signature):
6)最后咏雌,小明的軟件把數(shù)字簽名追加到文檔中,原始數(shù)據(jù)就被簽名了:
接下來(lái)校焦,小明把文檔發(fā)送給張三赊抖。
7)張三首先使用小明的公鑰把簽名解密為消息摘要。如果成功寨典,則證明文檔確實(shí)是由小明簽名的氛雪,因?yàn)橹挥行∶鲹碛兴借€。接著耸成,張三的軟件將文檔數(shù)據(jù)哈希成消息摘要报亩,如果此消息摘要與簽名解密得到的消息摘要是一模一樣的,則說明已簽名的數(shù)據(jù)并未發(fā)生改變井氢。
接下來(lái)弦追,看個(gè)更復(fù)雜的場(chǎng)景。
8)李四(一位心懷不軌的雇員)想要欺騙張三毙沾。李四知道張三電腦上有小明的公鑰骗卜,于是使用小明的名字創(chuàng)建了一個(gè)密鑰對(duì)(為了描述方便,這里稱為“假私鑰”和“假公鑰”)左胞,然后偷偷地使用假公鑰替換了張三電腦中的公鑰(小明真正的公鑰)寇仓。接下來(lái),李四用假私鑰對(duì)數(shù)據(jù)進(jìn)行簽名烤宙,張三使用假公鑰(他不知道自己電腦上小明的公鑰已經(jīng)被替換)解密了簽名并驗(yàn)證了摘要信息遍烦,他會(huì)誤認(rèn)為消息確實(shí)是小明發(fā)送的。除了親自拿到小明的公鑰外躺枕,張三怎樣知道小明的公鑰是可信的服猪?
9)王五在公司的證書授權(quán)中心(certificate authority,簡(jiǎn)稱“CA”)工作拐云,他用小明的公鑰及一些其他信息給小明簽發(fā)了一張數(shù)字證書(digital certificate):
現(xiàn)在罢猪,小明的同事可以通過校驗(yàn)證書來(lái)確認(rèn)小明的公鑰是否可信。實(shí)際上叉瘩,小明公司中沒人會(huì)承認(rèn)不帶證書的簽名膳帕。此外,如果小明的私鑰丟失了或者證書不在需要了薇缅,王五也可以撤銷(revoke)證書危彩。
10)現(xiàn)在攒磨,小明發(fā)送了一個(gè)已簽名的文檔給張三。為了校驗(yàn)文檔上的簽名汤徽,張三的軟件首先使用王五(本例中就是“證書授權(quán)中心”)的公鑰來(lái)驗(yàn)證小明證書上的簽名娩缰。成功解密證書就表明證書確實(shí)是王五簽發(fā)的。
接下來(lái)谒府,張三的軟件從證書中提取出小明的公鑰并使用它校驗(yàn)小明的簽名拼坎。如果小明的公鑰成功了解密了簽名,張三就確信簽名是由小明的私鑰創(chuàng)建的狱掂,因?yàn)橥跷逡呀?jīng)對(duì)這個(gè)公鑰進(jìn)行了認(rèn)證演痒。當(dāng)然,如果簽名是合法的趋惨,我們也知道李四(那個(gè)壞家伙)并未修改過已簽名內(nèi)容鸟顺。