Политика прозрачности сертификатов Android

Любые вопросы об этой Политике направляйте на форум Политики CT: ct-policy@chromium.org.

Когда сертификат Transport Layer Security (TLS) подключения проверяется в приложении, которое использует прозрачность сертификатов , он оценивается на соответствие политике прозрачности сертификатов (CT) Android. Сертификаты, сопровождаемые временной меткой подписанного сертификата (SCT), соответствующие настоящей Политике, считаются CT-совместимыми.

Соответствие CT достигается с помощью сертификата и набора сопровождающих его SCT, соответствующих набору технических требований, предъявляемых популярными библиотеками TLS (включая встроенный в Android Conscrypt) во время проверки сертификата, которые определены в настоящей Политике.

Состояния журнала CT

Соответствие CT в Android определяется путем оценки SCT из журналов CT и проверки того, что эти журналы находятся в правильном состоянии на момент проверки. Набор возможных состояний, в которых может находиться журнал ТТ:

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

Чтобы помочь понять требования соответствия требованиям CT в Android, определения этих состояний, требования к журналам в каждом состоянии, а также то, как эти состояния влияют на поведение Android, подробно описаны в разделе «Объяснение жизненного цикла журнала CT» в документации Chrome.

Сертификаты соответствия CT

Сертификат TLS является совместимым с CT, если он сопровождается набором SCT, который удовлетворяет хотя бы одному из критериев, определенных позже, в зависимости от того, как SCT доставляются в Android. В приложениях Android, поддерживающих CT, для успешной проверки все общедоступные сертификаты TLS должны быть совместимыми с CT; однако сертификаты, которые не зарегистрированы в CT или имеют недостаточное количество SCT, не считаются выданными по ошибке.

При оценке сертификата на соответствие CT Android учитывает несколько факторов, в том числе количество присутствующих SCT, кто управляет журналом CT, выдавшим SCT, и в каком состоянии находился журнал CT, выдавший SCT, как на момент проверки сертификата, так и на момент создания SCT с помощью журнала CT.

В зависимости от того, как SCT представлены в Android, соответствие CT может быть достигнуто при соблюдении одного из следующих критериев:

Встроенные SCT:

  1. По крайней мере один встроенный SCT из журнала CT, который на момент проверки был Qualified , Usable или ReadOnly ; и
  2. Существуют встроенные SCT как минимум из N различных журналов CT, которые на момент проверки были Qualified , Usable , ReadOnly или Retired , где N определено в следующей таблице; и
  3. Среди SCT, удовлетворяющих требованию 2, как минимум два SCT должны быть выданы разными операторами журнала CT, распознаваемыми Android; и
  4. Среди SCT, удовлетворяющих требованию 2, хотя бы один SCT должен быть выдан из журнала, который Android распознает как соответствующий RFC 6962 .
Срок действия сертификата Количество SCT из отдельных журналов CT
<= 180 дней 2
> 180 дней 3

SCT, доставляемые через OCSP или TLS:

  1. По крайней мере, два SCT из журнала CT, которые на момент проверки были Qualified , Usable или ReadOnly ; и
  2. Среди SCT, удовлетворяющих требованию 1, как минимум два SCT должны быть выданы отдельными операторами журнала CT, распознаваемыми Android; и
  3. Среди SCT, удовлетворяющих требованию 1, по крайней мере один SCT должен быть выдан из журнала CT, распознаваемого Android как соответствующего RFC6962.

Как для встроенных SCT, так и для тех, которые доставляются с использованием OCSP или TLS, уникальность оператора журнала определяется как наличие отдельных записей в разделе операторов log_list.json .

В тех редких ситуациях, когда журнал CT меняет операторов в течение своего существования, журналы CT дополнительно содержат список previous_operators , сопровождаемый последней отметкой времени, когда этот журнал обрабатывался предыдущим оператором. Чтобы изменения оператора журнала не нарушали существующие сертификаты, каждый оператор журнала SCT определяется как оператор на момент выдачи SCT путем сравнения временной метки SCT с временными метками previous_operators , если таковые имеются.

Важные примечания

Пока один из предыдущих критериев соответствия CT соответствует некоторой комбинации SCT, представленной в рукопожатии, дополнительные SCT, независимо от статуса SCT, не будут влиять на статус соответствия CT сертификата ни положительно, ни отрицательно.

Чтобы способствовать обеспечению соответствия сертификата CT, SCT должен быть выдан до наступления временной метки журнала Retired , если таковая существует. Android использует самый ранний SCT среди всех представленных SCT для оценки соответствия CT по временным меткам CT Log Retired . Это учитывает крайние случаи, когда журнал CT становится устаревшим в процессе отправки запросов на регистрацию сертификатов.

«Встроенный SCT» означает SCT, доставленный с использованием расширения SignedCertificateTimestampList X.509v3 внутри самого сертификата. Многие серверы TLS не поддерживают сшивание OCSP или расширение TLS, поэтому центры сертификации должны быть готовы встраивать SCT в выданные сертификаты, чтобы обеспечить успешную проверку или обработку EV в Android.

Как журналы CT добавляются в Android

Критерии того, как журналы CT могут стать Qualified , а также обстоятельства, которые могут привести к их Retired , можно найти в Политике журналов Chrome CT.

Тайм-аут принудительного применения CT

Каждый день Google публикует новый список журналов CT, содержащий свежий log_list_timestamp . Раз в день устройства Android будут пытаться загрузить последнюю версию этого списка в целях проверки. В любой момент времени, если на устройстве нет списка журналов или если временная метка списка журналов старше 70 дней, принудительное применение CT будет отключено. Этот тайм-аут обеспечивает экосистеме CT важнейшую гарантию того, что новые журналы CT смогут безопасно перейти в состояние «Пригодно для использования» в течение фиксированного периода времени после получения Qualified .