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

2021-08-18 14:44:27 字數 2773 閱讀 3351

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

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

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

pkcs10

資料報

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

dn-distinguished name)

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

資料結構:

[plain]view plain

copy

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資料蓋章呢?非常簡單,就是我們前文已經提到的數字簽名技術:

① 如上圖所示,ca機構其實也持有一張私鑰。一般來說,

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

② bob將自己的公鑰附加上一系列資訊後,形成了

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

③ ca機構通過其他一些手段,例如檢視

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

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

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

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

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

證書就是如此。以下是

x509

的格式:

[plain]view plain

copy

[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的公鑰即可。數字證書在電子商務,電子認證等方面使用非常廣泛,就如同計算機世界的身份證,可以證明企業、個人、**等實體的身份。同時基於數字證書,加密演算法的技術也可以支援一些安全互動協議(如ssl

ssl協議的原理。

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

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

數字簽名與數字證書

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

數字簽名與數字證書

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