前情提要
在寫上一篇《Android Keystore漫談》時對數(shù)字證書和數(shù)字簽名的區(qū)別感覺模棱兩可,于是網(wǎng)上找了找資料發(fā)現(xiàn)了一篇簡單易懂的文章圆存,對證書和簽名有了一個較清晰的概念:
數(shù)字簽名:
信息實體經(jīng)HASH函數(shù)后得到一個摘要叼旋,摘要經(jīng)過私鑰加密后形成數(shù)字簽名。
數(shù)字證書:
證書中心的信息+個人的信息+個人的公鑰沦辙,經(jīng)過證書中心的私鑰加密后夫植,得到數(shù)字證書。
雖然CSDN博客上已經(jīng)有人對這篇文章翻譯過油讯,但是感覺還是有必要自己翻譯一遍偷崩,一來作為備份,二來也希望可以為簡書用戶們認(rèn)識數(shù)字簽名提供一個參考撞羽。
翻譯內(nèi)容
主標(biāo)題:數(shù)字簽名是什么阐斜?
副標(biāo)題:數(shù)字簽名的介紹
作者:David Youd
原文鏈接:http://www.youdzone.com/signature.html
譯文:
Bob有兩把鑰匙,一把叫做公鑰(公共密鑰)诀紊,另一把叫做私鑰(私有密鑰)谒出。
Bob的公鑰是可以給任何人的,但是私鑰只能自己持有邻奠。密鑰的作用是加密信息笤喳,加密信息意味著打亂信息,所以只有拿著密鑰的人才可以解密這些加密的信息碌宴。公鑰和私鑰任意一個都可以用來加密杀狡,而另一個用于解密。比如:
Susan喜歡Bob贰镣,想約會Bob呜象,給Bob寫了一封信,并用Bob的公鑰對信進(jìn)行加密碑隆,Bob收到信后用私鑰解密后就可以看到信的內(nèi)容恭陡,于是準(zhǔn)備約會。Bob完全不用擔(dān)心信落到其他同事的手里上煤,因為信是加密過的休玩,沒有私鑰,是無法解讀的。
Bob給Susan回信約好午餐的時間拴疤,但是擔(dān)心回信在回寄過程中被篡改永部,于是采用數(shù)字簽名的方式。數(shù)字簽名相當(dāng)于Bob的私人印章呐矾,是獨一無二扬舒、不可以仿冒的,可以檢查信的內(nèi)容有沒有被篡改凫佛。
那么這個數(shù)字簽名是怎么簽名的呢讲坎?Bob使用HASH算法對信的內(nèi)容進(jìn)行打亂,打亂后的內(nèi)容稱之為消息摘要(這一打亂的過程是不可逆的)愧薛。
消息摘要經(jīng)過Bob的私鑰加密就變成了數(shù)字簽名晨炕。
最后Bob將這個數(shù)字簽名和信的內(nèi)容放到了一起,然后發(fā)給了Susan毫炉。那么Susan怎么驗證Bob的回信有沒有被篡改過呢瓮栗?首先Susan用Bob的公鑰解密數(shù)字簽名,形成了消息摘要A瞄勾,然后通過HASH算法對信的原始內(nèi)容進(jìn)行打亂形成消息摘要B费奸,如果兩份信息摘要內(nèi)容一致,說明信息沒有被篡改過进陡。
但是這時候Bob壞壞的基友Doug吃醋了愿阐,不想讓他們的約會成功。 于是偷偷地使用Susan電腦將Bob的公鑰掉包趾疚,導(dǎo)致Susan懷疑正確的信內(nèi)容被篡改缨历。
所幸Susan剛好在證書權(quán)威中心工作,她用Bob的信息糙麦、公鑰以及證書中心的信息通過證書中心的私鑰加密形成了一份數(shù)字證書辛孵。
這樣Bob再發(fā)送消息給其他人,只要附加上數(shù)字證書赡磅,收信人便可檢查公鑰是否被篡改以進(jìn)行正確的解密魄缚。那么收件人如何確認(rèn)公鑰正確呢?
首先使用證書中心的公鑰進(jìn)行解密得到證書中心信息焚廊,查看證書中心是否是受信任的權(quán)威中心冶匹,然后檢查證書中的個人信息是否是Bob的信息以確認(rèn)證書中的公鑰是否為Bob的公鑰,當(dāng)確認(rèn)正確后可使用Bob的公鑰進(jìn)行信息完整性的驗證节值。
寫在最后
本來打算照著原文的原話進(jìn)行翻譯徙硅,但是翻譯過程中發(fā)現(xiàn)以翻譯的習(xí)慣來寫這篇文章會讓語言變得拗口榜聂,所以僅以半翻半掰的方式將翻譯內(nèi)容描述完整搞疗。關(guān)于數(shù)字證書有一個非常好的實例,便是https協(xié)議,在《數(shù)字簽名與數(shù)字證書的區(qū)別》一文中有非常清晰的講述匿乃。