總結證書CT:證書透明度

證書部分,從服務器生成CSR證書請求文件開始,利用CSR生成自簽名證書,然後開始校驗,順着證書鏈校驗服務器身份,簽名值,根證書等信息。簽名值和根證書校驗成功,只能表明該服務器證書是由某一個CA機構所簽發的,之後還要校驗證書是否已被吊銷,可以從CRL校驗或者OCSP校驗兩方面實現。除了OCSP校驗是要向OCSP服務提供方進行請求校驗外,其他如根證書校驗或CRL校驗,都是通過CA機構進行,作爲校驗的基礎,或者說是信任的基礎,瀏覽器會信任CA機構和OCSP服務提供商(否則校驗也沒辦法進行),但是這會出現一個什麼問題呢,如果CA機構在爲服務器簽發證書時錯誤驗證服務器實體的身份,簽發了一張不安全的證書,或者有人冒充某一個服務器實體去申請簽發證書,如果CA機構沒有正確驗證身份後簽發了一張證書,可能會讓客戶端錯誤地信任了某一服務器。

對於客戶端來說,數字簽名技術完成證書校驗後,只能證明這個服務器證書確實是由某CA機構簽發的,但不能保證它是一張正確的證書,如果這張證書是由別人冒充服務器身份申請的,那麼接下來客戶端和服務器進行通信,就等於是和冒充者進行通信,還記得中間方攻擊嗎?以上問題出現的原因,有CA機構自己的問題(簽發過程出現身份校驗問題),還有一個很重要的就是客戶端(瀏覽器)對CA機構的信任。

 

證書透明度三個組件

針對上面的問題,證書透明度機制可以很好地解決,Certificate Transparency可以讓CA機構,服務器實體和客戶端都能看到證書的簽發和使用過程,這樣的三方面監視,可以大大減少證書的錯誤簽發。它是怎麼做到的?先來看看證書透明度機制的三個組成部分:證書日誌,監視器和審計。

Certificate Logs證書日誌

證書日誌保存了所有證書的簽發記錄,在CA機構簽發證書期間提交,保存在互聯網服務器中,所以像前面的OCSP一樣是一種網絡服務,採用密碼保護。對於CA機構,服務器實體兩者都可以向Certificate Logs提交證書籤發日誌,提交後,Certificate Logs會返回一個SCT(Signed Certificate Timestamp)證書籤名時間戳,表示該證書經過審計了,之後,監視器Monitors就可以對這張證書進行監視,客戶端(瀏覽器)需要在TLS/SSL握手階段向服務器獲取SCT信息。

總的來說,Certificate Logs證書日誌相當於一個數據庫,裏面保存了所有的證書籤發記錄,且任何人都可以查詢。證書日誌只能往裏面新增記錄,不能刪除。

Monitors監視器

Monitors監視器,顧名思義就是一個監控服務,有了證書日誌後,監視器就可以基於其來進行證書的監控操作,查詢某一張證書是否合法,還能檢測證書的擴展項。監視器會定期去查詢所有證書日誌服務器中的證書,對於使用Monitors監視器的服務器來說,如果其域名對於的證書被CA機構簽發後,服務器能通過Monitors收到通知,這樣監視的好處是,如果服務器發現自己的域名突然被別人申請了證書,即發現有冒充者僞造證書,即可快速與CA機構聯繫,撤銷非法的證書。

Auditors審計

最後一個組件是Auditors審計,從上面的組件關係圖可以看到,它通常處於客戶端中,審計作用是什麼呢?就是驗證證書是否在證書日誌中,是否符合證書透明度CT機制,在與服務器握手階段,校驗服務器證書中是否包含有SCT信息,SCT上面說了,相當於一張證明,證明該證書符合CT機制,是安全的,如果無法獲取到SCT信息,那麼可能證書存在錯誤簽發的情況,有可能是一張“假冒”證書,通常在瀏覽器上我們會看到提示說這是具有可以證書的網站,就是這個原因。

 

證書擴展獲取SCT

SCT信息在CA機構簽發證書過程中向Certificate Logs證書日誌網絡服務提交證書記錄,也可以由服務器提交證書記錄,都會返回得到SCT證書籤名時間戳信息,客戶端(瀏覽器)獲取SCT信息的作用相當於一種校驗,校驗該服務器證書支持CT證書透明度機制。在CA機構簽發服務器證書時,向Certificate Logs提交證書記錄後,得到SCT信息,再把它放在證書擴展中,因此,瀏覽器在訪問服務器時就可以直接從證書中獲取到SCT信息,例如我們打開一個網站的證書:

可以看到,Log ID有三個,沒錯,一張證書可以有多個證書日誌服務商,一般來說也是這樣的,CA機構或者服務器會向多個Certificate Logs提交證書記錄,這樣如果未來某一個Certificate Logs服務不可用了,那麼該證書還可以由其他證書日誌監控。

 

總結CT機制運作過程

最後來總結一下證書透明度機制的大致運作過程:

  1. 證書籤發階段:CA提交證書籤發記錄給Certificate Logs,並獲取SCT,然後將SCT信息整合到SSL證書擴張中,最後向服務器頒發證書。
  2. TLS/SSL握手階段:客戶端(瀏覽器)校驗服務器的身份,獲取服務器證書和SCT信息,校驗證書鏈證實證書有效,校驗SCT簽名信息證實該證書符合證書透明度機制。如果SCT信息校驗不通過,客戶端可以選擇拒絕該證書。
  3. 證書監控階段:Monitors監視器基於Certificate Logs服務進行證書監控,定期查詢證書是否未授權或者是否合法。

審計階段:在客戶端處通常由瀏覽器來完成,任務是在握手階段,負責校驗SCT信息,如果某一證書SCT校驗不通過,那麼該證書可能是非法的。

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