Android 憑證資訊公開政策

如有任何關於這項政策的問題,請直接前往 CT 政策論壇:ct-policy@chromium.org

選擇加入憑證資訊公開的應用程式中,如果連線的傳輸層安全標準 (TLS) 憑證經過驗證,就會評估是否符合 Android 憑證資訊公開 (CT) 政策。憑證如果附有符合這項政策的已簽署憑證時間戳記 (SCT),就表示符合 CT 規定。

憑證和一組隨附的 SCT 必須符合本政策中定義的一系列技術要求,才能達到 CT 法規遵循,這些技術要求是在憑證驗證期間由熱門 TLS 程式庫 (包括 Android 內建的 Conscrypt) 強制執行。

CT 記錄狀態

我們會透過評估 CT 記錄中的 SCT,並確保這些記錄在檢查時處於正確狀態,來判斷 Android 中的 CT 是否符合規定。CT 記錄可能處於的狀態組合如下:

  • Pending
  • Qualified
  • Usable
  • ReadOnly
  • Retired
  • Rejected

為了協助您瞭解 Android 中的 CT 法規遵循要求,Chrome 說明文件的 CT 記錄生命週期說明詳細說明這些狀態的定義、各狀態的記錄要求,以及這些狀態如何影響 Android 行為。

符合 CT 規範的憑證

如果 TLS 憑證隨附一組至少符合後續定義的其中一個條件的 SCT,則該憑證即為 CT 相容,具體取決於 SCT 傳送至 Android 的方式。在 Android 的 CT 強制應用程式中,所有公認信任的 TLS 憑證都必須符合 CT 規定,才能成功驗證;不過,未記錄至 CT 或 SCT 不足的憑證,並不會被視為錯誤核發。

在評估憑證是否符合 CT 規定時,Android 會考量多項因素,包括有多少個 SCT、誰操作發出 SCT 的 CT 記錄檔,以及發出 SCT 的 CT 記錄檔處於何種狀態,無論是在驗證憑證時,還是在 CT 記錄檔建立 SCT 時皆是如此。

視 SCT 向 Android 呈現的方式而定,您可以透過符合下列任一條件來達成 CT 相容性:

內嵌式 SCT:

  1. 憑證透明化記錄中至少有一個嵌入式 SCT 在檢查時為 QualifiedUsableReadOnly
  2. 至少有 N 個不同的 CT 記錄檔包含嵌入式 SCT,這些記錄檔在檢查時為 QualifiedUsableReadOnlyRetired,其中 N 的定義請見下表;
  3. 在符合第 2 項規定的 SCT 中,至少有兩個 SCT 必須由 Android 認可的不同 CT 記錄運算子發出;
  4. 在符合第 2 項規定的 SCT 中,至少要有一個 SCT 是從 Android 認可的「符合 RFC 6962 規定」的記錄中發出。
憑證有效期限 不重複 CT 記錄中的 SCT 數量
<= 180 天 2
超過 180 天 3

透過 OCSP 或 TLS 傳送的 SCT:

  1. 至少有兩個 SCT 來自憑證透明化記錄,且在檢查時為 QualifiedUsableReadOnly
  2. 在符合第 1 項規定的 SCT 中,至少有兩個 SCT 必須由 Android 認可的不同 CT 記錄運算子發出;
  3. 在符合第 1 項規定的 SCT 中,至少有一項 SCT 必須由 Android 認定為符合 RFC6962 的 CT 記錄所發出。

無論是內嵌式 SCT 還是使用 OCSP 或 TLS 提交的 SCT,Log 運算子唯一性定義為 log_list.json 運算子部分中的獨立項目。

在極少數情況下,CT 記錄會在生命週期內變更運算子,這時可選擇在 CT 記錄中加入 previous_operators 清單,並附上該記錄由先前運算子運作的最後時間戳記。為避免記錄運算子變更導致現有憑證失效,系統會比較 SCT 時間戳記與 previous_operators 時間戳記 (如有),判斷每個 SCT 的記錄運算子是否為 SCT 核發時的運算子。

重要注意事項

只要握手協定中提供的 SCT 組合符合上述任一 CT 法規遵循標準,其他 SCT 無論狀態為何,都不會對憑證的 CT 法規遵循狀態產生正面或負面的影響。

為了讓憑證符合 CT 規定,必須在記錄的 Retired 時間戳記 (如有) 之前,先發出 SCT。Android 會使用所有顯示的 SCT 中,最早的 SCT,根據 CT 記錄 Retired 時間戳記評估 CT 相容性。這可處理邊緣案例,也就是在提交憑證記錄要求的過程中,CT 記錄變成已退役的情況。

「嵌入式 SCT」是指使用憑證本身的 SignedCertificateTimestampList X.509v3 擴充功能傳送的 SCT。許多 TLS 伺服器不支援 OCSP 釘選或 TLS 擴充功能,因此 CA 應準備將 SCT 嵌入核發的憑證,確保在 Android 中成功驗證或採用 EV 處理。

如何將 CT 記錄新增至 Android

如要瞭解 CT 記錄如何變成 Qualified,以及在什麼情況下會變成 Retired,請參閱 Chrome CT 記錄政策

CT 執行逾時

Google 每天都會發布新的 CT 記錄清單,其中包含最新的 log_list_timestamp。Android 裝置會每天嘗試下載最新版本的這份清單,以便進行驗證。在任何時間點,如果裝置上沒有可用的記錄清單,或是記錄清單的時間戳記超過 70 天,系統就會停用 CT 執行機制。這項逾時期限可為 CT 生態系統提供重要保證,確保新的 CT 記錄在變成 Qualified 後,能在固定時間內安全地轉換為可用。