Funkcja logu przejrzystości plików binarnych Pixela wykorzystuje technologię dzienników przejrzystości.
Przydatność logów przejrzystości została udowodniona dzięki Certificate Transparency – internet protokołu, który wymaga od urzędów certyfikacji publikowania swoich certyfikatów w publicznych logach projektu Certificate Transparency. Proces ten znacznie skrócił czas błędnego wystawiania zaświadczeń i tym samym zwiększyć bezpieczeństwo Internet. Wielu operatorów logów protokołu Certificate Transparency korzysta z implementacji dzienników przejrzystości dostępnych na stronie transparency.dev.
Logi przejrzystości są zaimplementowane za pomocą drzew Merkle. Ta strona zakłada, że ogólne ustawienia Wiedza o drzewach Merkle'a i przejrzystości binarnej. Zobacz weryfikowalne struktury danych, znajdziesz omówienie m.in. drzew i krzewów. Strona docelowa zawiera przegląd elementów binarnych i przejrzystością.
Implementacja logów
Dziennik przejrzystości plików binarnych Pixela jest zaimplementowany jako oparte na kafelkach drzewo Merkle. Poziom główny z zawartości kafelków jest wyświetlanych na https://developers.google.com/android/binary_transparency/tile. Uwaga: to jest nie jest zwykłą stroną internetową, wpisy logu zawarte w jego podkatalogach powinny mogą być programowo odczytywane za pomocą bazy danych Golang SumDB, biblioteką TLog, a nie za pomocą przeglądarki.
Zobacz Zawartość dziennika, aby dowiedzieć się, przez opis ich zawartości.
Hash pierwiastka drzewa Merkle'a logu, zawarty w punkcie kontrolnym, jest udostępniany https://developers.google.com/android/binary_transparency/checkpoint.txt. Jest on prezentowany w formatu punktu kontrolnego. Liście tego drzewa Merkle są dostępne na stronie https://developers.google.com/android/binary_transparency/image_info.txt. Podpis punktu kontrolnego można zweryfikować za pomocą tego klucza publicznego:
-----BEGIN CERTIFICATE-----
MIICPDCCAeOgAwIBAgIVAPooxISw/nFF/dPwmCUaV36Z4s3hMAoGCCqGSM49BAMCMHQxCzAJBgNV
BAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYD
VQQKEwtHb29nbGUgSW5jLjEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDAgFw0y
MTA3MTkyMjQxNDFaGA8yMDUxMDcxOTIyNDE0MVowdDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNh
bGlmb3JuaWExFjAUBgNVBAcTDU1vdW50YWluIFZpZXcxFDASBgNVBAoTC0dvb2dsZSBJbmMuMRAw
DgYDVQQLEwdBbmRyb2lkMRAwDgYDVQQDEwdBbmRyb2lkMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcD
QgAEU83uXNUiTYE53c2TfdWmqpW20bBXy4KEf5Ff8dV8GLKlVAXKHyjw3Lp9J3E0yCRJ/39XKeuA
AMF7KzSvhD248KNQME4wDAYDVR0TBAUwAwEB/zAdBgNVHQ4EFgQUHRpvuNkzjtBY213BWgUyWWHm
3VYwHwYDVR0jBBgwFoAUHRpvuNkzjtBY213BWgUyWWHm3VYwCgYIKoZIzj0EAwIDRwAwRAIgZsZb
CNBXRkCKLS+LG/41VWj1cTszt9QCdJQNuy7aT94CIDPgn7v5b1ykBVUTuLgRSofxAzHg9R4dg1oA
7tTFAuDg
-----END CERTIFICATE-----
Proces weryfikacji odczytuje punkt kontrolny i kafelki zawierający wpisy w dzienniku.
Proces weryfikacji
Log przejrzystości został zaimplementowany za pomocą drzewa Merkle'a składającego się z haszy. O węzeł liścia zawiera dane, a węzeł nadrzędny zawiera hasz swoich elementów podrzędnych.
Na drzewie Merkle'a wykonywane są 2 obliczenia, aby zweryfikować właściwości dzienników przejrzystości: dowodu włączenia i spójności. dowodzi, że dziennik zawiera wpis odpowiadający wersji obrazu, tj. Wpis w dzienniku zawiera parametr skrót VBMeta, hasz, który reprezentuje obrazy systemu operacyjnego, który może być zwracany z urządzenia. Dzięki temu po dodaniu do drzewa nowych wpisów, nowy punkt zgodne z poprzednią wersją drzewa.
Aby zweryfikować obraz Pixela, przeprowadź weryfikację. Wykonuję i dowód spójności obliczeń są opcjonalne, ponieważ firmy zewnętrzne w ten sposób.
Jeśli chcesz zapoznać się z pojęciami weryfikacji na Pixelu Przezroczystość plików binarnych; postępuj zgodnie z poniższymi instrukcjami, aby użyć obrazu na Twoim urządzeniu Pixel. Jeśli chcesz korzystać z oprogramowania Pixela z najwyższą wersją pewnego stopnia pewności, patrz proces weryfikacji na Pełna weryfikacja technologii Binary Transparency.
Wymagania wstępne
Sprawdź, czy są dostępne te zależności:
- Golang: Narzędzie do weryfikacji musi być utworzone w wersji 1.17 lub nowszej (dostępne) ze strony Go.
- Android Debug Bridge (adb): komunikuje się z urządzeniem z Androidem, aby przeprowadzić badanie. obrazu, który jest dostępny Strona narzędzi platformy Android SDK.
- Weryfikator potwierdzający dodanie: interfejsy z dziennika w celu sprawdzenia, czy Pixel w binarnym logu przejrzystości.
# Source code for the inclusion proof verifier is found at avb/tools/transparency/verify
git clone https://android.googlesource.com/platform/external/avb
Potwierdzenie włączenia
Właściciel Pixela może sprawdzić, czy jego obraz znajduje się w dzienniku, wyodrębniając najpierw odpowiednich metadanych, a następnie porównując ich obliczony hasz główny z haszem głównym. zawarte w opublikowany punkt kontrolny. Jeśli są zgodne, właściciel Pixela może mieć pewność, że posiada pewne zabezpieczenia. o których mowa Model zagrożenia.
Aby sprawdzić, czy obraz na urządzeniu Pixel znajduje się w dzienniku przejrzystości, połączyć się z urządzeniem za pomocą narzędzia adb, a następnie uruchom te polecenia:
FINGERPRINT=$(adb shell getprop ro.build.fingerprint)
VBMETA_DIGEST=$(adb shell getprop ro.boot.vbmeta.digest)
LOG_ENTRY="${FINGERPRINT}\n${VBMETA_DIGEST}\n"
PAYLOAD_PATH="/tmp/log_payload.txt"
echo -e $LOG_ENTRY >> $PAYLOAD_PATH
cd avb/tools/transparency/verify/
go build cmd/verifier/verifier.go
./verifier --payload_path=$PAYLOAD_PATH
Pierwsza część pobiera metadane z urządzenia Pixel w formacie
i zapisze go w /tmp/log_payload.txt.
W drugiej części tekstu pojawia się weryfikator dowodów włączenia opublikowany Repozytorium weryfikacji podczas uruchamiania Androida. To narzędzie oblicza hasz wpisu logu kandydata, pobiera drugi hasze niezbędne do ponownego obliczenia punktu kontrolnego z logu, a następnie porównuje go z punktu kontrolnego opublikowanego przez dziennik.
Dane wyjściowe polecenia są zapisywane w stdout:
OK, jeśli obraz znajduje się w dzienniku,FAILURE.
Dowód spójności (opcjonalnie)
Co jakiś czas Google udostępnia nowe wersje fabrycznego obrazu urządzenia Pixel, dziennik przejrzystości stale się powiększa. Świadek sprawdza, czy drzewo rośnie w sposób taki sam jak w przypadku poprzednich liści. Świadek śledzi hasz pierwiastka drzewa i oblicza następny kandydujący hasz pierwiastka, wysyłając żądanie nowego hasze liścia z drzewa. Aby dziennik przejrzystości mógł zostać zmodyfikowany, musi być być stale sprawdzane pod kątem spójności.
Dziennik przejrzystości sprawdza, czy tylko dołączanie do niego i w związku z tym większość użytkowników nie musi robić tego samodzielnie, ale jest możliwe które umożliwia ktoś monitorowanie spójności dziennika. Google opublikowało oprogramowanie open source wdrożenia świadka w tym sensie, repozytorium GitHub. Trzeba użyj konfiguracja związane z dziennikiem funkcji Pixel Binary Transparency (PixelBT).