一文讀懂密碼學中的證書

一文讀懂密碼學中的證書

之前的文章中,我們講到了數字簽名,數字簽名的作用就是防止篡改和僞裝,並且能夠防止否認。但是要正確運用數字簽名技術還有一個非常大的前提,那就是用來驗證簽名的公鑰必須真正的屬於發送者。

如果你獲取到的公鑰是僞造的,那麼不管你的簽名算法多完美,也是會得到錯誤的結果。

那麼我們怎麼才能安全的獲得發送者的公鑰呢?這裏就需要使用到證書了。所謂證書就是通過第三方的可信機構對發送者的公鑰進行簽名而得到的。

這裏有兩個概念:公鑰證書(Public-Key Certificate, PKC)和認證機構(Certification Authority, CA)。熟悉區塊鏈的朋友應該經常會聽到CA這個名詞,CA就是這裏的認證機構。

證書的例子

我們看一個實際中可能會遇到的例子:

假如A要向B發送一條消息,這條消息希望使用B的公鑰來加密,但是A事先無法知道B的公鑰到底是什麼,那麼可以使用下面的證書架構:

  1. 在第一步,B需要生成自己的密鑰對,然後將公鑰註冊到CA中。這裏CA就是一個第三方的可信賴的機構。
  2. CA獲得到了B的公鑰之後,使用自己的私鑰對B的公鑰進行簽名,得到證書。
  3. A從CA獲得到證書和CA的公鑰(CA是個可信賴機構,可以從公共站點中獲取),並使用CA的公鑰來驗證證書籤名的合法性。
  4. A獲得了B的公鑰,使用B的公鑰加密消息。
  5. B用自己的私鑰解密消息,得到明文。

好了,這就是一個最簡單的證書使用的例子。

證書的標準和生成

因爲證書是由認證機構頒發的,使用者需要對其進行驗證,那麼就需要一個標準的證書格式來方便使用者使用。最廣泛的一個證書標準格式是由ITU(International Telecommunication Union)和ISO(International Organization for Standardization)制定的X.509規範。

x.509有很多擴展格式包括:DER、CRT、CER、PEM等。他們在不同的環境中有不同的用處。

那麼怎麼生成證書呢?可以藉助第三方工具,也可以使用命令行命令比如:openssl來生成。具體的生成命令這裏就不細講了。

PKI

有了證書的格式,是不是就可以實際使用證書了呢?

其實這還是不夠的,我們還需要定義證書該由誰來頒發,如何頒發,如果作廢證書等。而PKI(Public-Key Infrastructure)公鑰基礎設施就是爲了有效的使用證書而制定的一系列規範和協議。

PKI的組成主要有三部分:

  1. 用戶

用戶是使用PKI的人,也就是需要藉助CA來發布自己的公鑰和獲取別人公鑰的人。

  1. 認證機構

認證機構就是CA了,它是對證書進行管理的人。CA除了生成證書之外,還有一個非常重要的工作就是作廢證書。

因爲用戶有可能會丟失密鑰,或者出於特殊的原因,廢棄掉某些證書。那麼就可以向CA發起一個作廢請求。而作廢的證書會被保存在CRL中。CRL就是對外的證書廢棄列表。用戶在使用證書的時候必須首先查看該證書是否在CRL列表中。如果在則該證書不能夠被使用。

  1. 倉庫

倉庫是一個保存證書的數據庫,用戶註冊之後生成的證書都存在倉庫中,以供其他的用戶獲取使用。

CA的層級結構

我們在Fabric中有瞭解到有個root CA的概念,這是什麼意思呢?

我們從上面的介紹可以知道,其實CA不僅僅可以由機構來擔任,任何人只要會對公鑰進行簽名都可以構建CA。

如果是一個很大的機構要構建CA,比如一個總公司要構建CA,那麼它可以先構建一個root CA,然後再在root CA之下構建子CA,這些子CA來負責底層具體用戶的證書頒發。

對證書的攻擊

因爲證書是基於數字簽名技術,所以所有基於數字簽名技術的攻擊都適用於證書。

這裏主要針對於PKI體系的攻擊做個介紹:

  1. 在公鑰註冊之前替換公鑰。

用戶B如果想生成證書的話,需要在CA註冊,並且將自己的公鑰提交到CA。那麼在公鑰提交之前,可能會被惡意替換。

  1. 竊取認證機構的私鑰

所有的用戶公鑰都是由CA的私鑰做簽名的,如果CA的私鑰被盜的話,那麼所有的證書都是不安全的。

CA其實是一箇中心化的機構,中心化的機構往往都會出現這樣的問題。攻破一個就攻破了所有。

  1. 僞裝成認證機構

攻擊者可以僞裝成認證機構讓用戶上當。所以用戶在註冊的時候一定要小心。

  1. CRL時間差攻擊

如果B的密鑰丟了,那麼他會向CA提交一個廢棄申請,但是在提交申請到申請生效,到CRL生成直接有一個時間差,這段時間內廢棄的密鑰仍然可以合法使用。

更多內容請訪問 http://www.flydean.com/certificate/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章