線上證書狀態協定

線上證書狀態協定(英語:Online Certificate Status Protocol,縮寫:OCSP)是一個用於取得X.509數碼證書復原狀態的網際協定[1]RFC 6960中定義,作為證書吊銷列表(CRL)的替代品解決了在公開金鑰基礎建設(PKI)中使用證書吊銷列表而帶來的多個問題。[2]協定數據傳輸過程中使用ASN.1編碼,並通常建立在HTTP協定上,此訊息類型分為「請求訊息」和「響應訊息」,因此致OCSP伺服器被稱為「OCSP響應端」。

與證書吊銷列表(CRL)的比較

編輯
  • 由於OCSP響應包含的資訊少於典型的證書吊銷列表(CRL),因此減輕了網絡和客戶端資源的負擔;[3]
  • 由於OCSP響應端需要解析的資訊更少,客戶端提供的用於解析訊息的庫函數更簡單;[4]
  • OCSP中,伺服器可以記錄主機在何時驗證過特定的證書,由於請求不強制加密,相關資訊可能被第三方取得。[1]

基本PKI應用場景

編輯
  1. Alice與Bob使用Carol頒發的數碼證書。該場景中Carol是證書頒發機構(CA);
  2. Alice向Bob傳送其由Carol頒發的數碼證書,並行出請求建立連接的申請;
  3. Bob擔心Alice的私鑰已經泄露,因此向Carol傳送「OCSP請求」訊息並包含Alice的數碼證書序列號;
  4. Carol的OCSP響應端從Bob傳送的訊息中取得數碼證書的序列號,並在CA資料庫中尋找該數碼證書的狀態;
  5. Carol向Bob傳送由其私鑰簽章的訊息「OCSP響應」,並包含證書狀態正常的資訊;
  6. 由於Bob事先已經安裝了Carol的數碼證書,因此Bob使用Carol的公鑰驗證訊息簽章並取得到Alice的數碼證書狀態資訊;
  7. Bob決定與Alice進行通訊。

協定資訊

編輯

由數碼證書認證機構執行的OCSP伺服器會對請求返回經過其簽章的證書狀態資訊,分別為:正常(Good)、已廢除(Revoked)、未知(Unknown)。如果有無法處理的請求,則會返回一個錯誤碼。

OCSP支援附加擴充以便對PKI解決方案進行客製化,如在響應中包含SCT資訊來驗證相關證書是否通過了公開審計。[5]

OCSP在極端情況下可能遭受重放攻擊。中間人可以擷取一個已簽章的「正常」響應,並在之後的一段時間重放這個響應來通過客戶端的驗證,即使在這段時間裏證書可能已經被復原。[6]為避免這個問題,OCSP允許客戶端在請求中加入一個亂數並要求伺服器在響應中包含這個亂數。但是由於大多數客戶端和伺服器還沒有支援這個擴充,OCSP響應的較長有效期可能給重放攻擊留下機會並藉此威脅整個驗證系統。

OCSP可以支援多於一級的CA結構。請求被轉發到對應的伺服器節點並查詢狀態,從而無須使用根CA的OCSP請求。

用於簽章響應的私鑰不需要和簽發證書的私鑰相同。證書的簽發者可能委託其他機構響應OCSP請求。在這種情況下,伺服器的證書必須由簽發者進行驗證,並在擴充內容中包括相關資訊標識該證書可用於OCSP響應的簽章。

私隱問題

編輯

OCSP對於部分用戶來講會造成私隱問題,因為OCSP必須和一個第三方建立連接(即使這個第三方是被軟件提供商信任的)以驗證證書狀態。對此,OCSP裝訂是一個無須和CA發生連接的替選方案。

批評

編輯

OCSP不是緩解HTTPS伺服器私鑰泄露的可靠方法,因為攻擊者竊取私鑰後,再濫用私鑰進行中間人攻擊(MITM)時,往往也會干擾客戶的OCSP查詢,因為如果查詢逾時,大多數客戶端將忽略OCSP,導致OCSP機制失效無法及時查詢到證書吊銷資訊。[7]

瀏覽器支援情況

編輯

對於OCSP在主流瀏覽器中的支援:

需要注意的是,Google Chrome在2012年由於延遲和私隱問題禁用了OCSP的預設啟用,[13]改用自己的更新機制來同步證書復原情況。[14]

開源實現

編輯

目前的開源實現有:

  • XiPKI,基於OSGi,使用Java語言編寫。[15]

參見

編輯

參考連結

編輯
  1. ^ 1.0 1.1 A., Jesin. How To Configure OCSP Stapling on Apache and Nginx. Community Tutorials. Digital Ocean, Inc. 2014-06-12 [2015-03-02]. (原始內容存檔於2016-08-10). 
  2. ^ OCSP Stapling. GlobalSign Support. GMO GlobalSign Inc. 2014-08-01 [2015-03-02]. (原始內容存檔於2019-06-08). 
  3. ^ Gibson, Steve. Security Certificate Revocation Awareness: The case for "OCSP Must-Staple". Gibson Research Corporation. [2015-03-02]. (原始內容存檔於2016-04-15). 
  4. ^ Keeler, David. OCSP Stapling in Firefox. Mozilla Security Blog. Mozilla Foundation. 2013-07-29 [2015-03-02]. (原始內容存檔於2016-09-11). 
  5. ^ Certificate Transparency. How Certificate Transparency Works. Certificate Transparency. [2016-06-09]. (原始內容存檔於2016-06-10) (英語). 
  6. ^ RFC 6960, section 5, Security Considerations
  7. ^ No, Don't Enable Revocation Checking. 2014-04-19 [2014-04-24]. (原始內容存檔於2016-08-12). 
  8. ^ What’s New in Certificate Revocation in Windows Vista and Windows Server 2008. Microsoft. [2016-05-09]. (原始內容存檔於2017-12-19). 
  9. ^ Mozilla Bug 110161 - Enable OCSP by Default. Mozilla. 2007-10-01 [2010-07-18]. (原始內容存檔於2016-03-15). 
  10. ^ Wisniewski, Chester. Apple users left to defend themselves against certificate attacks. Sophos英語Sophos. 2011-03-26 [2011-03-26]. (原始內容存檔於2020-10-31). 
  11. ^ Pettersen, Yngve Nysæter. Introducing Extended Validation Certificates. Opera Software. 2006-11-09 [2010-01-08]. (原始內容存檔於2010-02-10). 
  12. ^ Pettersen, Yngve Nysæter. Rootstore newsletter. Opera Software. 2008-07-03 [2010-01-08]. (原始內容存檔於2008-11-18). 
  13. ^ Langley, Adam. Revocation checking and Chrome's CRL. 2012-02-05 [2015-01-30]. (原始內容存檔於2012-02-12). 
  14. ^ "Chrome does certificate revocation better"頁面存檔備份,存於互聯網檔案館), April 21, 2014, Larry Seltzer, ZDNet
  15. ^ xipki/xipki · GitHub. Github.com. [2016-01-24]. (原始內容存檔於2017-08-31). 

外部連結

編輯