Política de Transparência dos certificados do Android

Envie perguntas sobre esta política ao fórum de políticas de CT: ct-policy@chromium.org

Quando o certificado de Transport Layer Security (TLS) de uma conexão é validado, ele é avaliado quanto à conformidade com a política de Transparência de certificados (CT, na sigla em inglês) do Android. Os certificados acompanhados de carimbos de data/hora assinados (SCTs, na sigla em inglês) que atendem a essa política são considerados compatíveis com a CT.

A conformidade com a CT é alcançada por um certificado e um conjunto de SCTs que atendem a um conjunto de requisitos técnicos aplicados por bibliotecas TLS populares (incluindo a Conscrypt integrada) durante a validação do certificado, que são definidos nesta política.

Estados de registro de CT

A conformidade com a CT no Android é determinada pela avaliação de SCTs de registros de CT e pela garantia de que esses registros estejam nos estados corretos no momento da verificação. O conjunto de estados possíveis em que um registro de CT pode estar é:

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

Para ajudar a entender os requisitos de conformidade com a CT no Android, a definição desses estados, os requisitos de registros em cada estado, e como esses estados afetam o comportamento do Android são descritos em detalhes na explicação do ciclo de vida do registro de CT da documentação do Chrome.

Certificados compatíveis com a CT

Um certificado TLS é compatível com a CT se for acompanhado por um conjunto de SCTs que atenda a pelo menos um dos critérios definidos mais adiante, dependendo de como os SCTs são entregues ao Android. Em apps do Android que aplicam a CT, todos os certificados TLS confiáveis publicamente precisam ser compatíveis com a CT para serem validados. No entanto, os certificados que não estão registrados na CT ou que têm SCTs insuficientes não são considerados emitidos incorretamente.

Ao avaliar um certificado para conformidade com a CT, o Android considera vários fatores, incluindo quantos SCTs estão presentes, quem opera o registro de CT que emitiu o SCT e em que estado o registro de CT que emitiu o SCT estava, tanto no momento em que o certificado está sendo validado quanto no momento em que o SCT foi criado pelo registro de CT.

Dependendo de como os SCTs são apresentados ao Android, a conformidade com a CT pode ser alcançada atendendo a um dos seguintes critérios:

SCTs incorporados :

  1. Pelo menos um SCT incorporado de um registro de CT que era Qualified, Usable ou ReadOnly no momento da verificação; e
  2. Há SCTs incorporados de pelo menos N registros de CT distintos que eram Qualified, Usable, ReadOnly ou Retired no momento da verificação, em que N é definido na tabela a seguir; e
  3. Entre os SCTs que atendem ao requisito 2, pelo menos dois SCTs precisam ser emitidos por operadores de registro de CT distintos, conforme reconhecido pelo Android; e
Ciclo de vida do certificado Número de SCTs de registros de CT distintos
<= 180 dias 2
> 180 dias 3

SCTs entregues via OCSP ou TLS :

  1. Pelo menos dois SCTs de um registro de CT que era Qualified, Usable ou ReadOnly no momento da verificação; e
  2. Entre os SCTs que atendem ao requisito 1, pelo menos dois SCTs precisam ser emitidos por operadores de registro de CT distintos, conforme reconhecido pelo Android; e

Para SCTs incorporados e aqueles entregues usando OCSP ou TLS, a exclusividade do operador de registro é definida como ter entradas separadas na seção de operadores da lista de registros.

Na rara situação em que um registro de CT muda de operador durante o ciclo de vida, os registros de CT podem conter uma lista de previous_operators, acompanhada do carimbo de data/hora final em que esse registro foi operado pelo operador anterior. Para evitar que as mudanças do operador de registro quebrem os certificados atuais, o operador de registro de cada SCT é determinado como o operador no momento da emissão do SCT, comparando o carimbo de data/hora do SCT com os carimbos de data/hora previous_operators, se presentes.

Observações importantes

Desde que um dos critérios de conformidade com a CT anteriores seja atendido por alguma combinação de SCTs apresentados no handshake, SCTs adicionais, independentemente do status do SCT, não afetarão o status de conformidade com a CT de um certificado de forma positiva ou negativa.

Para contribuir com a conformidade com a CT de um certificado, um SCT precisa ter sido emitido antes do carimbo de data/hora Retired do registro, se houver. O Android usa o SCT mais antigo entre todos os SCTs apresentados para avaliar a conformidade com a CT em relação aos carimbos de data/hora Retired do registro de CT. Isso explica os casos extremos em que um registro de CT é desativado durante o processo de envio de solicitações de registro de certificado.

"SCT incorporado" significa um SCT entregue usando a extensão SignedCertificateTimestampList X.509v3 no próprio certificado. Muitos servidores TLS não oferecem suporte ao OCSP Stapling ou à extensão TLS. Portanto, as CAs precisam estar preparadas para incorporar SCTs em certificados emitidos para garantir a validação ou o tratamento de EV no Android.

Como os registros de CT são adicionados ao Android

Os critérios de como os registros de CT podem se tornar Qualified, bem como as circunstâncias que podem fazer com que eles se tornem Retired, podem ser encontrados na política de registro de CT do Chrome .

Tempo limite de aplicação da CT

Todos os dias, o Google publica uma nova lista de registros de CT que contém um log_list_timestamp atualizado. Uma vez por dia, os dispositivos Android tentam fazer o download da versão mais recente dessa lista para fins de verificação. A qualquer momento, se nenhuma lista de registros estiver disponível no dispositivo ou se o carimbo de data/hora da lista de registros for mais antigo que 70 dias, a aplicação da CT será desativada. Esse tempo limite oferece uma garantia essencial ao ecossistema de CT de que novos registros de CT podem fazer a transição com segurança para Usable em um período fixo após se tornarem Qualified.

Lista de registros do Android

A lista de registros do Android é publicada em log_list.json, que é atualizado diariamente. Essa lista de registros é oferecida sem uma API estável, SLA ou garantias de disponibilidade.

O Android disponibiliza a lista de registros de CT para fins de envio de certificados (como autoridades certificadoras) e monitores e auditores de CT que desejam permanecer compatíveis ou investigar o conteúdo dos ecossistemas de CT e WebPKI.

A confiança não autorizada na lista de registros de CT do Android coloca em risco não apenas seus usuários, mas também os usuários do Android e o ecossistema de CT como um todo. Se você estiver pensando em adicionar a aplicação da CT ao seu app, use um mecanismo com suporte da plataforma Android.

O uso da lista de registros de CT do Android fora dessa política é feito por sua conta e risco e pode resultar na quebra do aplicativo ou da biblioteca. O Android precisa fazer mudanças na lista de registros de CT em resposta a incidentes no ecossistema de CT para manter a segurança dos usuários do Android. O Android pode tomar medidas para garantir que as dependências de terceiros na lista de registros de CT não arrisquem a capacidade do Android de responder a esses incidentes, incluindo mudanças não anunciadas na lista de registros para interromper o uso não autorizado.