HTTPS從原理到應(yīng)用(二):數(shù)字證書(Digital Certificate)與數(shù)字簽名(Digital Signature)

此篇承接上一篇加密和哈希,并且回答上一篇提出的問題。
此篇文章的邏輯圖

圖0-0 此篇文章的邏輯圖

證書

在說數(shù)字證書之前,先說一下什么是證書,其實(shí)在我之前不讓蘋果開發(fā)者賬號折磨我一文中已經(jīng)說過,這兒引用一下:

什么是證書?證書就是:證明證書擁有者擁有證書上所說的能力。一個(gè)證書要涉及到頒發(fā)者,擁有者,證明擁有者擁有了什么能力。例如,CET-4證書;頒發(fā)者:學(xué)校,擁有者:自己,證明的能力:英語達(dá)到四級水平。以上是證書通用的概念,不論是什么證書,都應(yīng)該首先想到上面幾點(diǎn)。

數(shù)字證書:
頒發(fā)者:CA證書授權(quán)(Certificate Authority)中心
擁有者:申請到證書的通信者
證明的能力:身份認(rèn)證,也就是說證明我就是我

數(shù)字證書頒發(fā)者CA

數(shù)字證書認(rèn)證機(jī)構(gòu)(英語:Certificate Authority,縮寫為CA),也稱為電子商務(wù)認(rèn)證中心、電子商務(wù)認(rèn)證授權(quán)機(jī)構(gòu),是負(fù)責(zé)發(fā)放和管理數(shù)字證書的權(quán)威機(jī)構(gòu),并作為電子商務(wù)交易中受信任的第三方,承擔(dān)公鑰體系中公鑰的合法性檢驗(yàn)的責(zé)任。CA中心為每個(gè)使用公開密鑰的用戶發(fā)放一個(gè)數(shù)字證書,數(shù)字證書的作用是證明證書中列出的用戶合法擁有證書中列出的公開密鑰。CA機(jī)構(gòu)的數(shù)字簽名使得攻擊者不能偽造和篡改證書。

CA認(rèn)證中心之間的關(guān)系

CA認(rèn)證中心之間的關(guān)系如下圖所示(圖1-0):


圖1-0 CA認(rèn)證中心之間的關(guān)系

CA認(rèn)證中心之間是一個(gè)樹狀結(jié)構(gòu),根CA認(rèn)證中心可以授權(quán)多個(gè)二級的CA認(rèn)證中心二級CA認(rèn)證中心也可以授權(quán)多個(gè)三級的CA認(rèn)證中心...如果你是數(shù)字證書申請人,你可以向根CA認(rèn)證中心,或者二級,三級的CA認(rèn)證中心申請數(shù)字證書,這是沒有限制的,當(dāng)你成功申請后,你就稱為了數(shù)字證書所有人值得注意的是,根CA認(rèn)證中心是有多個(gè)的,也就是說會有多棵這樣的結(jié)構(gòu)樹。

CA認(rèn)證中心的權(quán)威性

上圖(圖1-0)中的CA認(rèn)證中心所有人,他們都有一個(gè)數(shù)字證書,和屬于自己的公鑰和私鑰,這些是他們的父CA認(rèn)證中心頒發(fā)給他們的。根CA認(rèn)證中心的證書稱為根證書,根證書自己認(rèn)證自己的有效性,根證書是整個(gè)證書體系安全的根本,如果根證書出了問題,他下面所有子證書都不可被信任,因?yàn)樽幼C書都是依賴根證書證明自己的有效性的,從而形成證書信任鏈。

對于私鑰:CA認(rèn)證中心/數(shù)字證書所有人自己保存,不公開。
對于公鑰:CA認(rèn)證中心/數(shù)字證書所有人會把公鑰存在他的CA認(rèn)證中心的數(shù)字證書內(nèi)。

數(shù)字簽名過程

數(shù)字證書使用數(shù)字簽名作驗(yàn)證,簡單來說證書都會包含3個(gè)部分:證書內(nèi)容(F),加密算法(A,其實(shí)有兩個(gè),一個(gè)哈希算法,一個(gè)加密算法),F加密密文(F')。首先,F會被散列算法SHA1計(jì)算出hashh1 (稱為128bit的摘要)括號中描述不準(zhǔn)確感謝@xxxxxx_8705的指正,然后h1會被發(fā)布這個(gè)數(shù)字簽名的CA認(rèn)證機(jī)構(gòu)的用私鑰進(jìn)行RSA加密,注意:是發(fā)布這個(gè)數(shù)字簽名的CA認(rèn)證機(jī)構(gòu),如果現(xiàn)在被加密的數(shù)字證書是屬于二級CA認(rèn)證機(jī)構(gòu)的,那么用來加密這個(gè)證書的私鑰是根CA認(rèn)證機(jī)構(gòu)的私鑰!RAS加密完后,就形成密文F'。整個(gè)數(shù)字簽名過程如下圖(圖2-0)

圖2-0 數(shù)字簽名過程

數(shù)字證書驗(yàn)證合法性

當(dāng)你要驗(yàn)證這個(gè)數(shù)字證書可信/合法性時(shí),你需要找到你的上一層CA認(rèn)證中心的數(shù)字證書,并且從中獲取公鑰,把數(shù)據(jù)證書中的密文F'進(jìn)行RSA解密,如果得出的值h2h1比較(h1可以立即用數(shù)據(jù)證書中的F現(xiàn)場算出來),如果相等,則認(rèn)為證書是可信的,合法的!由于你是不可能知道上一層CA認(rèn)證中心的私鑰,所以你無法偽造一個(gè)可以用上一層CA認(rèn)證中心公鑰解密的數(shù)字證書!數(shù)字證書驗(yàn)證合法性過程如下圖(圖2-1)

圖2-1 數(shù)字證書驗(yàn)證合法性

由于一個(gè)數(shù)字證書是基于上層的數(shù)字證書作驗(yàn)證的,那么又怎么驗(yàn)證上層的數(shù)字證書是否合法呢?這就會出現(xiàn)一直遞歸上去的現(xiàn)象,也就是上面說的形成證書信任鏈。事實(shí)也是這樣的,驗(yàn)證一個(gè)證書是否合法,需要驗(yàn)證到他的最頂層的根證書是否合法!所以上面說到根證書是整個(gè)證書體系安全的根本。

數(shù)字證書的組成

證書詳細(xì)組成可自己打開電腦鑰匙串隨意選一個(gè)證書去瀏覽一下,我這里貼圖一張不做詳細(xì)說明參考下圖(圖3-0),想要詳細(xì)了解可看我下面參考的文章淺析數(shù)字證書中證書組成部分。

圖3-0 數(shù)字證書的組成

總結(jié)

數(shù)字證書的制作使用了數(shù)字簽名,每一個(gè)數(shù)字證書里面都包含了申請者的公鑰,所以上文提出的問題就解決了,Alice不直接要Bob的公鑰,而是去要一個(gè)BobCA申請的數(shù)字證書,數(shù)字證書中有Bob的公鑰,而且數(shù)字證書證明了他就是Bob(也就是開篇提到的證明了什么,我就是我),Alice只要驗(yàn)證數(shù)字證書沒有問題就可以開始通信了。

參考

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容