甚麼是證書透明度?
證書透明度(CT)提供了一套用於監控及審計證書頒發機構(CA)簽發的所有公開SSL證書的體系。公開CA、網頁瀏覽器廠商、CT日誌營運方及其他諸多相關方共同參與保障CT框架正常運作。
由公開受信任的證書頒發機構(CA)簽發的SSL/TLS證書是安全網絡通訊的基石。如今數碼證書的簽發量遠超以往,確保證書正確簽發至關重要。但由誰來監督CA簽發的數碼證書符合所需的高可信標準?這正是證書透明度的作用所在。
CA每次簽發公開受信任的SSL證書時,都需要將該證書的詳情提交至多個證書透明度日誌。這些CT日誌會返回經過加密簽名的時間戳,作為證書已提交的憑證。日誌可公開訪問,讓每一張新簽發的證書都具備透明度與可見性。這種透明度是保障互聯網信任的關鍵環節,允許任何主體監控證書簽發行為,從而更易發現錯誤簽發、可能被攻擊者濫用於發動針對用戶攻擊的證書。
CT日誌的工作原理
證書透明度依托由獨立營運的「日誌」組成的分佈式生態系統運行。這些公開日誌是防篡改、僅追加寫入的數據庫(內部採用默克爾哈希樹結構)。
日誌的設計機制可實現:日誌中的任意條目都可被驗證,對日誌的未授權修改可被立即、輕易檢測到。
由於CT日誌具備「僅追加寫入」的特性,隨着時間推移日誌體積可能會變得非常大。為解決這個問題,日誌會被劃分為多個「分片(shard)」,每個分片存儲特定時段內的證書。當某個分片中的所有證書都過期後,該分片將停止使用。這種方式讓日誌營運方可以控制需要處理的實際文件大小,同時仍然保留永久記錄。
此外,每一家簽發公開證書的CA都需要向多個日誌提交數據以實現冗餘,這樣即使發生嚴重故障,也能保證所有公開SSL證書都被記錄並可被查詢。
可以且應當對這些日誌進行監控,以便及時發現錯誤,同時讓域名擁有者能夠查看所有為其域名簽發的證書。目前有多種可用於挖掘這類數據的工具,包括crt.sh和Censys。Crt.sh是讀取和審計CT日誌數據最常用的工具。
這些日誌由CA、瀏覽器廠商、服務供應商等多個不同主體營運。Sectigo作為公開CA以及CT生態體系的成熟參與方,不僅營運自有日誌,還會贊助其他主體營運獨立的日誌。
證書透明度的重要性
SSL證書錯誤簽發無論出於有意還是無意,都可能帶來風險,因為攻擊者可能利用這類證書截獲私密數據。基於這一點,CT的重要性在於它提供了公開校驗機制,安全專家、第三方研究人員、域名擁有者都可以通過該機制確認證書已完成正確校驗、並簽發給了正確的主體。如果CA在身份核驗與簽發流程中存在疏漏,或是自身被入侵,CT可幫助快速識別「問題」證書,從而完成正確的吊銷操作。CA吊銷錯誤簽發證書的操作可以阻止惡意行為者竊取數據。
除了提供透明度之外,CT還有助於建立整個CA行業的信任。由於所有公開證書都被記錄在案,任何主體都可以監督公開CA的簽發行為,確保證書正確簽發。這推動CA行業履行責任,保障各機構能夠信任已簽發的證書。CT還為研究人員構建互聯網證書使用與行為模型提供了數據支撐。
要了解更多關於CT的內容,可收聽Root Causes播客第202期《甚麼是證書透明度?》"