數(shù)字證書(shū)原理

很多人無(wú)法理解為什么證書(shū)無(wú)法被偽造,在這里先大概說(shuō)下。
CA(WINDOWS信任的證書(shū)授權(quán)中心):持有公鑰和私鑰
自己:原文(程序)和公鑰私鑰
首先,生成數(shù)字證書(shū)
1. 我將我的原文和私鑰發(fā)給CA并簽名文件
CA會(huì)用我的的私鑰加密我的原文哈希值(摘要)并帶上我的公鑰,再用它的公鑰整體加密形成數(shù)字證書(shū),這個(gè)目的,由于使用的是私鑰加密,公鑰就可以解密,于是我將這個(gè)證書(shū)追加到我的原文后面。
2. 驗(yàn)證
由于微軟的每臺(tái)WINDOWS機(jī)器上面全部?jī)?nèi)置了微軟信任的CA機(jī)構(gòu)的公鑰,WINDOWS就會(huì)先分開(kāi)數(shù)字證書(shū)中的數(shù)字簽名和我的公鑰,會(huì)得到被加密的哈希和我的公鑰,這時(shí),必須用CA的公鑰解密整個(gè)數(shù)字證書(shū),再用我的公鑰解密我的數(shù)字簽名,得到未加密的哈希值,此時(shí),再計(jì)算原文的哈希值,如果兩個(gè)相同,就證明原文沒(méi)有被修改。
3. 為什么我無(wú)法偽造數(shù)字證書(shū)?
形成數(shù)字證書(shū),需要以下條件。
持有CA私鑰(完全掌握在CA手中,有的甚至放在保險(xiǎn)柜里)
持有發(fā)布者公鑰(這個(gè)誰(shuí)都可以)
原文哈希(這個(gè)誰(shuí)都可以)
估計(jì)你已經(jīng)看出了區(qū)別,由于CA的私鑰嚴(yán)格保密,你無(wú)法獲得它的私鑰,就無(wú)法對(duì)自己的數(shù)字簽名進(jìn)行整體加密,無(wú)法加密就意味著可以被篡改,Windows用它信任的CA公鑰都試了一邊后,發(fā)現(xiàn)不是CA的私鑰加密的或者直接沒(méi)有,只有Windows信任的私鑰加密才可以被認(rèn)為有效,自然非認(rèn)證的數(shù)字證書(shū)也就無(wú)效了。
這還要感謝RSA+Hash,在他們倆的共同努力之下,只要沒(méi)有破解私鑰,就無(wú)法偽造數(shù)字證書(shū),而恰巧私鑰在CA證書(shū)中心手里,你自然就無(wú)法偽造有效的證書(shū)了!
標(biāo)簽: