數(shù)字證書

一.什么是數(shù)字證書?

? ? ? ?數(shù)字證書是一種權威性的電子文檔。它提供了一種在Internet上驗證您身份的方式,其作用類似于司機的駕駛執(zhí)照或日常生活中的身份證。它是由一個由權威機構----CA證書授權(Certificate Authority)中心發(fā)行的,人們可以在互聯(lián)網(wǎng)交往中用它來識別對方的身份。當然在數(shù)字證書認證的過程中,證書認證中心(CA)作為權威的、公正的、 可信賴的第三方,其作用是至關重要的。

Ok,知道什么是數(shù)字證書后,先看看它長的什么樣吧:>,文件縮略圖如下:

雙擊后打開如下:

二.CA認證機構/CA認證中心

1.CA認證中心是什么?

CA認證中心是負責簽發(fā)管理,認證數(shù)字證書的機構,是基于國際互聯(lián)網(wǎng)平臺建立的一個公正,權威,可信賴的第三方組織機構。

2.世界上的CA認證中心不止一間,那他們之間的關系是什么(CA認證中心之間的關系)?

嗯,回答這個問題之前可以先看看下圖:

從圖中可以看到,CA認證中心之間是一個樹狀結構,根CA認證中心可以授權多個二級的CA認證中心,同理二級CA認證中心也可以授權多個3級的CA認證中心...如果你是數(shù)字證書申請人(比如說:交通銀行),你可以向根CA認證中心,或者二級,三級的CA認證中心申請數(shù)字證書,這是沒有限制的,當你成功申請后,你就稱為了數(shù)字證書所有人。值得注意的是,根CA認證中心是有多個的,也就是說會有多棵這樣的結構樹。FireFox里面默認記錄了一些根CA認證機構的信息,如圖:

看到這里,肯定有人會問,如果有現(xiàn)在新的根CA認證機構成立,F(xiàn)ireFox肯定是沒有這個CA認證中心的信息的(這些信息是用來驗證子CA認證機構的,很重要,后面來會講到),那怎么辦呢?嗯~~確實,如果今天2009-1-8日突然在哪里成立一個新的CA認證中心,我FireFox里面肯定沒有他的信息的!但解決辦法還是有的,看上圖,可以找到一個"Import"按鈕,當我們遇到這樣的倒霉事時,只有自己去下載并導入根CA認證中心信息了(其實這樣做是不太安全的!),或者期望FireFox的升級會升級這些信息,但這個我是不確定的。

3.為什么CA認證中心是權威的?

其實搞清楚這個問題后,你也會真正了解“CA認證中心是如何授權子CA認證中心的?”,“為什么偽造的數(shù)字證書是無效的”,“為什么數(shù)字證書是一種權威性的電子文檔”等等一系列的問題。并且SSL可以說是建立在CA認證中心的權威,公正,可信賴的基礎上的,如果CA認證中心的信息可以被偽造的,那么SSL的一切就完了......

首先,我們先來看看,在FireFox里記錄的CA認證中心的信息到底是什么東西??見上圖,單擊某項,Export導出....你會看到導出的東西很面熟,原來就是數(shù)字證書??!

實際上每個CA認證中心/數(shù)字證書所有人,他們都有一個數(shù)字證書,和屬于自己的RSA公鑰和密鑰,這些是他們的父CA認證中心給他們頒發(fā)的,這里先大概解釋一下RSA,RSA是一種非對稱加密的算法,它的公鑰和密鑰是配對的,如果用公鑰加密,用私鑰解密就可以得到明文;如果用私鑰加密,用公鑰解密也可以得到原來的明文,這由RSA特性決定,他效果可以用下圖概括:

對于私鑰:CA認證中心/數(shù)字證書所有人自己保存,不公開。

對于公鑰:CA認證中心/數(shù)字證書所有人會把公鑰存在他的CA認證中心的數(shù)字證書內。

(1).首先,CA認證中心/數(shù)字證書所有人,它在網(wǎng)絡上的表現(xiàn)形式只能是一張數(shù)字證書!所以我們可以把某張數(shù)字證書等價于某個CA認證中心/數(shù)字證書所有人。這樣的話,驗證數(shù)字證書的合法性就可以確定CA認證中心/數(shù)字證書所有人是否是合法的?。?!

(2).數(shù)字證書使用數(shù)字簽名作驗證!這里簡單說明一下數(shù)字簽名的過程:你從Firefox/IE導出的數(shù)字證書包含3個部分:證書內容(F),加密算法(A),F(xiàn)加密密文(F') (數(shù)字證書結構會在第三部分詳細介紹),在這里,A不是一個算法,而是兩個,所以密文F'是F兩次加密后的結果。

首先,F(xiàn)會被散列算法SHA1計算出hash值h1(稱為128bit的摘要),然后h1會被發(fā)布這個數(shù)字簽名的CA認證機構的用私鑰進行RSA加密,注意:是發(fā)布這個數(shù)字簽名的CA認證機構,如果現(xiàn)在被加密的數(shù)字證書是屬于二級CA認證機構的,那么用來加密這個證書的私鑰是根CA認證機構的私鑰??!RAS加密完后,就形成密文F'。

當你要驗證這個數(shù)字證書可信/合法性時,你需要找到你的上一層CA認證中心的數(shù)字證書,并且從中獲取公鑰,把數(shù)據(jù)證書中的密文F'進行RSA解密,如果得出的值h2和h1比較(h1可以立即用數(shù)據(jù)證書中的F現(xiàn)場算出來),如果相等,則認為證書是可信的,合法的!由于你是不可能知道上一層CA認證中心的私鑰,所以你無法偽造一個可以用上一層CA認證中心公鑰解密的數(shù)字證書?。?/p>

詳細流程圖如下:

由于一個數(shù)字證書基于上層的數(shù)字證書作驗證,那上層的數(shù)字證書又是否合法呢??這就會出現(xiàn)一直遞歸上去的現(xiàn)象,事實也是這樣的,驗證一個證書是否合法,需要驗證到他的最頂層的根證書是否合法!從其他的文章弄來的這幅圖很好地表達了這個思想:

這里肯定又有人會問,那么最頂層的CA認證中心如何證明它的合法性呢?.......呵~這就是為什么FireFox要預先把一些最頂層(這里的"最頂層"和"根"是同一個概念)的CA認證中心的證書加入到權威信任列表中了,因為,最頂層CA認證中心沒有辦法證明,所以,最頂層的CA認證中心是總是受信任的??!而事實上,最頂層的CA認證中心在是世界上也是為數(shù)不多的。這里大家應該了解為什么我剛才說自己導入根CA證書是不太安全的,因為你無法驗證。

三.數(shù)字證書的組成

可以先看看我從Firefox的證書截圖:

1.Certificate(證書):

(1).Common Name(證書所有人姓名,簡稱CN,其實就是證書的名字,如第一幅圖看到的:ABA.ECOMRoot....)

(2).Version(版本,現(xiàn)在一般是V3了)

(3).Issuer(發(fā)證機關)

(4).Validity(有效日期)

(5).Subject(證書信息,你會發(fā)現(xiàn)它和Issuer里面的內容是一樣的)

(6).Subject's Public Key Info(證書所有人公鑰,剛才所說的公鑰就是這個!)

(7).Extension(擴展信息)

(8).Certificate Signature Algorithm(公鑰加密算法)、

以上這幾項就是上面所說的證書內容(F)。

2.Certificate Signature Algorithm:

這是描述證書的加密算法,就是上所說的加密算法(A),看它的Fireld Value,一般會寫:PKCS #1 SHA-1 With RSA Encryption

3.Certificate Signature Value:

這記錄的是證書被加密后的結果,相當于上面說講的F'。

四.數(shù)字證書的驗證

要回答數(shù)字證書是如何驗證的,首先要知道數(shù)字證書是要驗證些什么東西:>,數(shù)字證書的驗證,上面已經(jīng)講了一些,這做一個總結:

1.可信性驗證/合法性驗證:這個剛才已經(jīng)說的很明白了吧:>

2.完整性驗證:在驗證可信性的過程中,h1和h2的比較,其實已經(jīng)順便驗證其完整性了。

3.有效性驗證:比如驗證它的Vilidity值,看是否過期...

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

相關閱讀更多精彩內容

友情鏈接更多精彩內容