Sobre os Blocos

Informações gerais sobre a transparência binária do Android estão disponíveis na página principal de transparência binária.

Esta página contém mais detalhes sobre o formato dos arquivos nos vários diretórios tile/.

Esses arquivos contêm os hashes dos nós da árvore de Merkle que representam o registro de transparência binária para imagens da Pixel Factory. Além disso, esses hashes são empacotados em blocos. Para uma visão geral de como dividir a árvore em blocos, consulte Dividir um registro em blocos.

Neste registro, os nós são criptografados com hash usando SHA256. Usamos a biblioteca tlog para gravar os blocos especificamente com uma altura de 1. Isso significa que cada bloco contém no máximo 2^altura = 2 hashes, cada um deles com 32 bytes.

Os detalhes das construções de caminho de blocos podem ser encontrados nos documentos de blocos do tlog.

A raiz do bloco de cada registro é exibida em:

  • Registro de transparência do Pixel
    • https://developers.google.com/android/binary_transparency/tile
  • Registro de transparência do APK do sistema do Google
    • https://developers.google.com/android/binary_transparency/google1p/tile/

Exemplo de computação com blocos

Para entender melhor como os blocos funcionam, vamos mostrar um exemplo usando o Log de transparência do Pixel. Vamos supor que a árvore tenha tamanho 8. Se você estiver olhando a entrada no índice 3, ela será o primeiro hash no bloco t(0, 1). Os caminhos para blocos estão no formato tile/H/L/NNN[.p/W]. Portanto, o caminho para o bloco t(0, 1) seria https://developers.google.com/android/binary_transparency/tile/1/0/001. A raiz da árvore estaria no bloco t(3, 0)/1, que é o caminho https://developers.google.com/android/binary_transparency/tile/1/3/000.p/1.