七 證書 - 爲公鑰加上數字簽名

在這裏插入圖片描述

爲什麼需要公鑰證書?

數字簽名可以識別篡改或者發送者身份是否被僞裝,也就是驗證消息的完整性,還可以對消息進行認證。還可以防止抵賴。看似一切完美,但是他的弱點也在他的優點上,數字簽名需要用公鑰來確認發送者的身份。

我們需要從一個沒有被僞裝的發送者那裏得到沒有被篡改的公鑰才行,爲了驗證得到的公鑰是否合法,必須使用公鑰證書。證書是將公鑰當做一條消息,由一個可信的第三方對其簽名後所得到的公鑰。

公鑰證書標準規範

證書是由認證機構頒發的,使用者需要對證書進行驗證,因此如果證書的格式千奇百怪那就不方便了。於是,人們制定了證書的標準規範,其中使用最廣泛的是由ITU ( InternationalTelecommunication Union,國際電信聯盟)和ISO ( Intemational Organization for Standardization,國際標準化組織)制定的X.509_規範( RFC3280)。很多應用程序都支持X.509並將其作爲證書生成和交換的標準規範。
X.509證書所包含的構成要素與剛剛生成的Bob的證書之間的大致對應關係如圖所示。

公鑰基礎設施(PKI)

公鑰基礎設施(Public-Key Infrastructure)是爲了能夠更有效的運用公鑰而制定的一系列規範和規格的總稱。英文縮寫 PKI。
PKI 是一個總稱,並非指某一個單獨的規範或規格。RSA 公司制定的 PKCS(Public-Key Cryptography Standards,公鑰密碼標準)系列規範也是 PKI 的一種,互聯網規格 RFC(Request for Comments)也是 PKI 的一種,X.509 也是 PKI 的一種。每個公司編寫的 API(Application Programming Interface,應用程序編程接口)和規格設計書也可以算是 PKI 的相關規格。

公鑰基礎設施 PKI 不能誤解爲“面向公衆的權威認證機構只有一個”,“全世界的公鑰都是由一個根 CA 來認證”。這些都是不正確理解。認證機構只要對公鑰進行數字簽名就可以了,所以任何人都可以成爲認證機構。

PKI的組成要素

  • 用戶——使用 PKI 的人
  • 認證機構——頒發證書的人
  • 倉庫——保存證書的數據庫

認證機構CA

認證機構(Certification Authority,CA)是對證書進行管理的人。主要負責以下操作:

  • 生成密鑰對(也可以由用戶生成)
  • 對註冊公鑰的人進行身份認證
  • 生成並頒發證書
  • 作廢證書

認證機構中還可以細分一個註冊機構(Registration Authority,RA),註冊機構專門處理註冊相關的業務,認證機構專門頒發證書和作廢證書。

倉庫

倉庫(repository)是一個保存證書的數據庫。倉庫也叫證書目錄。作廢的證書也需要製作一張證書作廢清單(Certificate Revocation List,CRL)。

證書鏈

證書也可以具有層次結構,例如頂級根 CA 頒發的證書,到下一級 CA 頒發的證書,這樣一級一級形成層次。

對公鑰證書的攻擊

在公鑰註冊之前進行攻擊

中間人可以在對用戶向認證機構提交公鑰認證的時候,替換成中間人自己的公鑰。預防這種中間人攻擊有 2 種方法:

  • 用戶在向 CA 發送公鑰的時候,使用認證機構 CA 的公鑰進行加密。
  • 認證機構在確認完用戶身份以後,將公鑰指紋作爲回執發給用戶進行確認。

註冊相似人名進行攻擊

註冊相似的人名來騙取對方的信任。

竊取認證機構的私鑰進行攻擊

這種方式就是攻擊 CA。如果 CA 發現私鑰真的被竊取了,需要及時通知所有用戶,並及時作廢相關證書,更新 CRL。

攻擊者僞裝成認證機構

認證機構不需要登記,誰都可以充當認證機構,只是別的 CA 認不認可的問題。攻擊者可以通過僞造自己是 CA,給用戶頒發證書,這樣證書驗證肯定都沒問題。但是通信之間的內容沒有祕密可言了。例如攻擊者可以 DNS 污染一片區域或者攻擊一個 Wifi 信號,讓這片區域的用戶都誤認爲攻擊者是信任的 CA,接下來就可以實施攻擊了。
如果認證機構不可信,即便證書合法,它對應的公鑰也不能使用。

CRL 的“漏洞”

攻擊者可以利用 CRL 發佈的時間差來進行攻擊。A 向 B 發郵件說要 100 W,當 B 給 A 轉了 100W 以後,A 就抵賴說自己並沒有發那封郵件。簽名並非是 A 自己,因爲證書已經被作廢了。B 沒有及時更新 CRL,所以導致對方可以抵賴。

應對這種攻擊:

  • 當公鑰失效的時候儘快通知認證機構(A 用戶)
  • 儘快發佈 CRL(CA)
  • 及時更新 CRL(B 用戶)

公鑰證書的無法解決的問題

至此,公鑰證書介紹完畢。公鑰證書目前也沒有任何無法解決的問題。它可以識別篡改或者發送者身份是否被僞裝,也就是驗證消息的完整性,還可以對消息進行認證。還可以防止抵賴。

公鑰證書和數字簽名的區別就在於認證機構上。有同學可能疑惑認證機構的必要性。

  • 如果能取得可信的公鑰,就不需要認證機構。這種情況只能本人面對面才行,否則都不可信。
  • 當持有可信的認證機構的公鑰,並相信認證機構所進行的身份確認的情況下,可以信任該認證機構頒發的證書以及通過該途徑取得的公鑰。
  • 認證機構是在完全不可信的狀態下創造出信任關係。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章