數字簽名與數字證書技術簡單介紹(三)

2021-09-08 17:14:58 字數 2761 閱讀 8507

前兩篇文章,分別介紹了非對稱加密演算法和數字簽名技術:

基於非對稱金鑰演算法,bob生成了一對公私鑰。bob將公鑰公布在公開的金鑰庫中。而alice在向bob傳送加密檔案或者驗證bob簽名的檔案時,均要從公鑰庫取到bob的公鑰。我們已經知道,一般來說公鑰就是一段固定長度的字串,並沒有特定的含義。

為了讓alice可以方便的辨別公鑰,我們可以考慮對給公鑰附加一些資訊,比如該公鑰使用的演算法,該公鑰的全部者(

主題

),該公鑰的有效期等一系列屬性。這種資料結構我們稱作

pkcs10

資料報

公鑰的主題我們採用唯一標示符(或稱

dn-distinguished name)

,以盡量唯一的標示公鑰全部者。下面是基於抽象語法表示法所定義的pkcs10

資料結構:

certificationrequestinfo ::= sequence  (v1,...), 

subject name,

subjectpkinfo subjectpublickeyinfo},

attributes [0] attributes}

} subjectpublickeyinfo ::= sequence },

subjectpublickey bit string

} pkinfoalgorithms algorithm ::=

attributes ::= set of attribute}

criattributes attribute ::=

attribute ::= sequence ),

values set size(1..max) of attribute.&type()

}

我們已經有了pkcs10資料報,除了公鑰資訊外,還有公鑰的持有者,公鑰的版本等資訊。然而這種資料結構事實上並沒有不論什麼權威性。比如有一天乙個叫做richard的人想冒充bob,也生成一對公私鑰,而且使用了同樣的公鑰主題封裝為p10資料結構。alice事實上並沒有辦法分辨哪個是真實bob的公鑰。

為了解決問題,就須要乙個權威的第三方機構,對p10結構的資料進行認證。就如同對p10檔案蓋上乙個權威的章,防止仿照。這種權威機構,我們稱作ca

(certificate authority)

數字證書認證中心。而

ca怎樣為p10資料蓋章呢?很easy,就是我們前文已經提到的數字簽名技術:

① 如上圖所看到的,ca機構事實上也持有一張私鑰。一般來說,

ca會對這份私鑰進行特別的保護,嚴禁洩漏和盜用。

p10資料報(請求包),並傳送給ca。

③ ca機構通過其它一些手段,比如檢視

bob的身份資訊等方式,認可了

bob的身份。於是使用自己的私鑰對

p10請求進行簽名。(也可能會先對資料進行一些簡單改動,如改動有效期或主題等)

④ 這種簽名結果,我們就稱作數字證書。

數字證書相同遵循乙個格式標準,我們稱作x509標準,我們一般提到的x509

證書就是如此。下面是

x509

的格式:

[certificate ::= sequence 

tbscertificate ::= sequence

version ::= integer

certificateserialnumber ::= integer

validity ::= sequence

certificatevaliditydate ::= choice

uniqueidentifier ::= bit string

subjectpublickeyinfo ::= sequence

extensions ::= sequence of extension

extension ::= sequence

基於數字證書,我們能夠再來看看bob怎樣給alice傳送乙份不可否認、不可篡改的檔案:

第一步:bob除了對檔案進行簽名操作外,同一時候附加了自己的數字證書。一同發給alice。

第二步:alice首先使用ca

的公鑰,對證書進行驗證。假設驗證成功,提取證書中的公鑰,對

bob發來的檔案進行驗籤。假設驗證成功,則證明檔案的不可否認和不可篡改。

能夠看到,基於數字證書後,alice

不在須要乙個公鑰庫維護

bob(或其它人)的公鑰證書,僅僅要持有

ca的公鑰就可以。數字證書在電子商務,電子認證等方面使用很廣泛,就如同計算機世界的身份證,能夠證明企業、個人、站點等實體的身份。同一時候基於數字證書,加密演算法的技術也能夠支援一些安全互動協議(如sslssl

協議的原理。

數字簽名與數字證書技術的簡單介紹(二)

現在我們可以繼續我們的場景 假設有一天,alice收到了乙份署名為bob的檔案。alice希望能夠確認這份檔案一定是來自bob 另外alice希望能夠確信,這份檔案在傳輸過程中並沒有被它人篡改。那麼基於非對稱金鑰演算法我們應該怎麼做?確認檔案一定來自於bob,其實就是bob無法否認自己傳送過這份檔案...

數字簽名與數字證書

數字簽名 將 報文按雙方約定的hash 演算法計算得到乙個固定位數的 報文摘要。在 數學上保證 只要改動報文中任何一位,重新計算出的 報文摘要值就會與原先的值不相符。這樣就保證了報文的不可更改性。將該報文摘要值用傳送者的私人 金鑰加密,然後連同原報文一起傳送給接收者,而產生的報文即稱 數字簽名 數字...

數字簽名與數字證書

數字簽名 將 報文按雙方約定的hash 演算法計算得到乙個固定位數的 報文摘要。在 數學上保證 只要改動報文中任何一位,重新計算出的 報文摘要值就會與原先的值不相符。這樣就保證了報文的不可更改性。將該報文摘要值用傳送者的私人 金鑰加密 然後連同原報文一起傳送給接收者,而產生的報文即稱 數字簽名 數字...