Para aumentar a confiança nos apps do Google, agora temos o compromisso de listar todos os apps de produtos do Google no nosso registro de transparência. Publicamos o registro de transparência para verificar publicamente as declarações que fazemos em relação a esses APKs.
Modelo de ameaça
Os sistemas de transparência podem ser usados para detectar e, assim, impedir ataques à cadeia de suprimentos. Ilustramos com alguns exemplos.
Suponha que um invasor modifique maliciosamente um app do Google e até consiga assiná-lo com a chave de assinatura usada para distribuição pelo Google Play. Com um registro de transparência binária, qualquer pessoa que receber um APK questionável poderá usá-lo como uma fonte verificável de verdade para verificar a autenticidade do APK. Eles vão descobrir que o Google não adicionou os metadados do APK correspondente ao registro e saberão que não devem confiar no APK comprometido.
Como a publicação no registro é um processo separado do processo de lançamento com assinatura (conforme ilustrado no diagrama do ecossistema), isso aumenta a dificuldade para o invasor além de apenas comprometer a chave.
Embora planejemos integrar esse registro a uma rede pública de testemunhas usando um protocolo de testemunha, incentivamos partes externas e independentes a monitorar a integridade desse registro disponível publicamente. Essas partes podem atestar a propriedade de anexação do registro e informar qualquer violação.
A existência de um sistema de transparência e a capacidade de descoberta adicional de ataques desencorajam atividades maliciosas. Se um APK for comprometido, mas os usuários confiarem apenas naqueles que estão no registro, o APK comprometido precisará ser exposto publicamente. Isso aumenta a probabilidade de descobrir que o APK comprometido existe, e ações podem ser tomadas para remover a distribuição dele.
Modelo de reclamante
O modelo de reclamante é um framework usado para definir papéis e artefatos em um sistema verificável. No caso da transparência de apps próprios do Google, a declaração que fazemos é que o hash de um arquivo APK registrado nesse registro representa uma versão específica de um app oficial do Google destinado ao consumo público.
- ClaimGoogleApp: (Eu, Google, declaro que
$hashAppé para$googleApp), em que:$hashAppé um hash criptográfico (por exemplo, SHA256) do arquivo APK (incluindo APKs divididos) de uma versão específica de$googleApp.$googleAppé um pacote Android (APK) que compõe um app criado e distribuído pelo Google.
Qualquer pessoa que tenha uma cópia de $googleApp pode verificar essa declaração,
e descrevemos esse processo em detalhes na
página de verificação.
Conteúdo do registro
Quando o Google lança uma nova versão de um APK, ele adiciona uma entrada correspondente ao registro de transparência de APKs próprios do Google.
Cada entrada nesse registro contém quatro metadados:
- O hash do arquivo APK de um app assinado pelo Google. Essa é uma string hexadecimal do resumo SHA256 de todo o arquivo.
- A descrição do tipo de hash anterior. Essa é uma string.
- O nome do pacote do APK. Essa é uma string.
- O número da versão (versionCode) do APK. Esse é um número inteiro diferente de zero.
O formato de uma entrada de registro é a concatenação das quatro informações com um caractere de nova linha (\n), conforme ilustrado a seguir:
hash\nSHA256(APK)\npackage_name\npackage_version\n
Como estamos medindo todo o arquivo APK, a descrição do hash é definida como SHA256(APK). Isso oferece cobertura abrangente do conteúdo de cada arquivo e facilita a obtenção dessa medição pelos usuários.
Diagrama do ecossistema
