線上憑證狀態協定(英語: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]

參見

參考連結

外部連結

Wikiwand in your browser!

Seamless Wikipedia browsing. On steroids.

Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.

Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.