Ogólne informacje o przejrzystości binarnych plików na Androida znajdziesz na głównej stronie przejrzystości binarnych plików.
Na tej stronie znajdziesz więcej informacji o formacie plików w różnych katalogach tile/
.
Te pliki zawierają hasze drzewa Merkla reprezentujące dziennik przejrzystości binarnej dla obrazów z Pixel Factory. Ponadto te wartości są pakowane w płytki. Informacje o tym, jak podzielić drzewo na elementy, znajdziesz w artykule Rozdzielanie pliku dziennika na elementy.
W tym pliku logowania węzły są zahaszowane za pomocą algorytmu SHA256. Do zapisywania kafelków o wysokości 1 używamy biblioteki tlog. Oznacza to, że każda płytka zawiera maksymalnie 2^height = 2 hasze, z których każdy ma 32 bajty.
Szczegółowe informacje o konstrukcji ścieżek znajdziesz w dokumentacji Tile.
Płytka z rootem dla każdego dziennika jest wyświetlana pod adresem:
- Dziennik przejrzystości Pixela
https://developers.google.com/android/binary_transparency/tile
- Dziennik przejrzystości plików APK w systemie Google
https://developers.google.com/android/binary_transparency/google1p/tile/
Przykład obliczeń z użyciem kafelków
Aby lepiej zrozumieć, jak działają kafelki, omówimy przykład na podstawie dziennika przejrzystości Pixela.
Załóżmy, że drzewo ma rozmiar 8. Jeśli interesuje Cię wpis o indeksie 3, będzie to pierwszy hash w płytce t(0, 1)
. Ścieżki do kafelków mają postać
tile/H/L/NNN[.p/W]
. Ścieżka do kafelka t(0, 1)
to https://developers.google.com/android/binary_transparency/tile/1/0/001.
Korzeń drzewa znajduje się w płytce t(3, 0)/1
, czyli na ścieżce
https://developers.google.com/android/binary_transparency/tile/1/3/000.p/1.