Nhật ký minh bạch nhị phân của Pixel sử dụng công nghệ nhật ký minh bạch.
Tính hữu ích của nhật ký minh bạch đã được chứng minh bằng Tính minh bạch của chứng chỉ, một giao thức Internet yêu cầu Tổ chức phát hành chứng chỉ phải xuất bản các chứng chỉ mà họ phát hành vào nhật ký công khai về Tính minh bạch của chứng chỉ. Quy trình này đã giảm đáng kể việc cấp chứng chỉ sai, nhờ đó tăng cường tính bảo mật của Internet. Nhiều nhà điều hành nhật ký Tính minh bạch của chứng chỉ dựa vào một cách triển khai nhật ký minh bạch tại transparency.dev.
Nhật ký minh bạch được triển khai bằng cây Merkle. Trang này giả định rằng bạn đã có kiến thức chung về cây Merkle và tính minh bạch nhị phân. Xem Cấu trúc dữ liệu có thể xác minh để biết thông tin tổng quan về cây Merkle và trang đích để biết thông tin tổng quan về tính minh bạch nhị phân.
Triển khai nhật ký
Nhật ký minh bạch nhị phân của Pixel được triển khai dưới dạng cây Merkle dựa trên ô. Gốc của nội dung thẻ thông tin được phân phát tại https://developers.google.com/android/binary_transparency/tile. Lưu ý: đây không phải là một trang web thông thường; các mục nhập nhật ký có trong thư mục con của trang web này phải được đọc theo phương thức lập trình bằng thư viện TLog SumDB Golang chứ không phải thông qua trình duyệt.
Hãy xem phần Nội dung nhật ký để biết nội dung của các mục.
Hàm băm gốc cây Merkle của một nhật ký, có trong một điểm kiểm tra, được phân phát tại https://developers.google.com/android/binary_transparency/checkpoint.txt. Thông tin này được trình bày ở định dạng điểm kiểm tra. Các lá của cây Merkle này được phân phát tại https://developers.google.com/android/binary_transparency/image_info.txt. Bạn có thể xác minh chữ ký của điểm kiểm tra bằng khoá công khai sau:
-----BEGIN CERTIFICATE-----
MIICPDCCAeOgAwIBAgIVAPooxISw/nFF/dPwmCUaV36Z4s3hMAoGCCqGSM49BAMCMHQxCzAJBgNV
BAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYD
VQQKEwtHb29nbGUgSW5jLjEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDAgFw0y
MTA3MTkyMjQxNDFaGA8yMDUxMDcxOTIyNDE0MVowdDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNh
bGlmb3JuaWExFjAUBgNVBAcTDU1vdW50YWluIFZpZXcxFDASBgNVBAoTC0dvb2dsZSBJbmMuMRAw
DgYDVQQLEwdBbmRyb2lkMRAwDgYDVQQDEwdBbmRyb2lkMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcD
QgAEU83uXNUiTYE53c2TfdWmqpW20bBXy4KEf5Ff8dV8GLKlVAXKHyjw3Lp9J3E0yCRJ/39XKeuA
AMF7KzSvhD248KNQME4wDAYDVR0TBAUwAwEB/zAdBgNVHQ4EFgQUHRpvuNkzjtBY213BWgUyWWHm
3VYwHwYDVR0jBBgwFoAUHRpvuNkzjtBY213BWgUyWWHm3VYwCgYIKoZIzj0EAwIDRwAwRAIgZsZb
CNBXRkCKLS+LG/41VWj1cTszt9QCdJQNuy7aT94CIDPgn7v5b1ykBVUTuLgRSofxAzHg9R4dg1oA
7tTFAuDg
-----END CERTIFICATE-----
Quy trình xác minh đọc điểm kiểm tra và các ô chứa mục nhập nhật ký từ nhật ký.
Quy trình xác minh
Nhật ký minh bạch được triển khai bằng cây Merkle bao gồm các hàm băm. Nút lá chứa dữ liệu và nút mẹ chứa hàm băm của các nút con.
Hai phép tính được thực hiện trên cây Merkle để xác minh thuộc tính chống can thiệp của nhật ký minh bạch: bằng chứng bao gồm và bằng chứng nhất quán. Cụ thể, bằng chứng trước chứng minh rằng nhật ký có chứa một mục nhập tương ứng với một phiên bản hình ảnh. Mục nhập nhật ký bao gồm thông báo tóm tắt VBMeta, một hàm băm đại diện cho hình ảnh hệ điều hành, có thể được trả về từ một thiết bị. Bằng chứng thứ hai chứng minh rằng khi các mục mới được thêm vào cây, điểm kiểm tra mới sẽ nhất quán với phiên bản trước của cây.
Để xác minh hình ảnh Pixel, hãy thực hiện quy trình chứng minh sự hiện diện. Việc thực hiện tính toán bằng chứng về tính nhất quán là không bắt buộc vì các bên thứ ba liên tục làm việc này.
Nếu muốn làm quen với các khái niệm về hoạt động xác minh trong tính minh bạch của tệp nhị phân Pixel, bạn có thể làm theo hướng dẫn bên dưới để sử dụng hình ảnh đang chạy trên thiết bị Pixel. Nếu bạn muốn chạy chương trình cơ sở Pixel với độ tin cậy cao nhất, hãy xem quy trình xác minh trên trang Xác minh đầy đủ tính minh bạch của tệp nhị phân Pixel.
Điều kiện tiên quyết để được chứng nhận
Trước khi tiến hành xác minh rằng cấu phần phần mềm (chương trình cơ sở hoặc APK) tuân thủ tuyên bố, hãy đảm bảo rằng các công cụ sau đây có sẵn trên một máy tính có kết nối mạng. Tuỳ thuộc vào mục tiêu xác minh, bạn có thể không cần tất cả các thông tin này.
Golang
Công cụ xác minh được viết bằng Go. Để xây dựng công cụ này, hãy cài đặt Go 1.24 trở lên từ trang web của Go.
Cầu gỡ lỗi Android (ADB)
ADB là một công cụ giao tiếp với thiết bị Android để kiểm tra hình ảnh hoặc trích xuất APK, có trên trang web Công cụ nền tảng SDK Android.
Trình xác minh bằng chứng về việc đưa vào
Trình xác minh bằng chứng bao gồm là một mô-đun Go truy vấn nhật ký minh bạch và cho biết liệu một cấu phần phần mềm có được đưa vào nhật ký hay không.
Thông tin này được xuất bản trong kho lưu trữ android-binary-transparency GitHub tại https://github.com/android/android-binary-transparency/tree/main
Cách sao chép kho lưu trữ AOSP avb:
computer:~$ git clone https://android.googlesource.com/platform/external/avb
Cách sao chép kho lưu trữ android-binary-transparency trên GitHub:
computer:~$ git clone https://github.com/android/android-binary-transparency
AAPT2
AAPT2 (Công cụ đóng gói tài nguyên Android) là một công cụ bản dựng dùng để biên dịch và đóng gói tài nguyên của ứng dụng Android. Bạn có thể tìm thấy công cụ này dưới dạng một công cụ độc lập trong Bộ công cụ xây dựng SDK Android phiên bản 26.0.2 trở lên.
bundletool
bundletool là một công cụ dùng để tạo Android App Bundle (AAB). Công cụ này cũng có thể được dùng để xác minh chữ ký mã APK.
Bạn có thể tải trình điều khiển này xuống từ GitHub.
wget hoặc curl
wget và curl là những công cụ có thể dùng để truy xuất hoặc tải tệp xuống từ Internet. Hãy nhớ cài đặt một trong hai công cụ này vì tập lệnh xác minh có thể dựa vào chúng.
Avbtool
avbtool
được dùng để tính toán chuỗi đại diện VBMeta của hình ảnh gốc và xác minh
các tệp nhị phân.
Sau khi sao chép kho lưu trữ avb (như minh hoạ trong phần Trình xác minh bằng chứng bao gồm), bạn có thể tìm thấy avbtool.py trong thư mục avb đã sao chép.
Bạn nên thêm thư mục này vào biến môi trường $PATH.
computer:~$ PATH=$PATH:DIRECTORY_CONTAINING_AVBTOOL
Fbpacktool
fbpacktool là một tập lệnh Python dùng để giải nén từng thành phần trong bootloader.img của Pixel.
Bạn không cần đến bước này nếu đang xác minh APK.
Công cụ này rất quan trọng vì giúp avbtool.py tìm thấy những hình ảnh cần thiết để xác minh.
fbpacktool yêu cầu Python 3.6 trở lên và gói PyYAML (ví dụ: python3 -m pip install pyyaml).
Để sử dụng công cụ này, bạn nên tải xuống sáu tập lệnh python sau đây vào thư mục nơi avbtool.py của bạn lưu trú, thực thi fbpacktool.py và tạo một liên kết tượng trưng có tên fbpacktool đến fbpacktool.py để thuận tiện.
Nếu bạn có wget:
computer:dir_to_avbtool$ wget https://developers.google.com/android/binary_transparency/tools/pixel/fbpacktool/fbpacktool.py \
https://developers.google.com/android/binary_transparency/tools/pixel/fbpacktool/fbpack.py \
https://developers.google.com/android/binary_transparency/tools/pixel/fbpacktool/packedstruct.py \
https://developers.google.com/android/binary_transparency/tools/pixel/fbpacktool/xmlparser.py \
https://developers.google.com/android/binary_transparency/tools/pixel/fbpacktool/xmlserializer.py \
https://developers.google.com/android/binary_transparency/tools/pixel/fbpacktool/yamlparser.py
computer:dir_to_avbtool$ chmod +x fbpacktool.py
computer:dir_to_avbtool$ ln -s fbpacktool.py fbpacktool
Nếu bạn có curl:
computer:dir_to_avbtool$ curl -LO https://developers.google.com/android/binary_transparency/tools/pixel/fbpacktool/fbpacktool.py
computer:dir_to_avbtool$ curl -LO https://developers.google.com/android/binary_transparency/tools/pixel/fbpacktool/fbpack.py
computer:dir_to_avbtool$ curl -LO https://developers.google.com/android/binary_transparency/tools/pixel/fbpacktool/packedstruct.py
computer:dir_to_avbtool$ curl -LO https://developers.google.com/android/binary_transparency/tools/pixel/fbpacktool/xmlparser.py
computer:dir_to_avbtool$ curl -LO https://developers.google.com/android/binary_transparency/tools/pixel/fbpacktool/xmlserializer.py
computer:dir_to_avbtool$ curl -LO https://developers.google.com/android/binary_transparency/tools/pixel/fbpacktool/yamlparser.py
computer:dir_to_avbtool$ chmod +x fbpacktool.py
computer:dir_to_avbtool$ ln -s fbpacktool.py fbpacktool
OpenSSL
openssl giúp thực hiện nhiều thao tác mã hoá bằng cách sử dụng thiết bị đầu cuối trong quy trình xác minh. Đảm bảo bạn đã cài đặt ứng dụng này trên hệ thống. Bạn có thể kiểm tra trên thiết bị đầu cuối bằng cách chạy lệnh sau và đảm bảo kết quả trả về không bị trống:
computer:~$ which openssl
/usr/bin/openssl
Bằng chứng về việc đưa vào
Chủ sở hữu Pixel có thể kiểm tra xem hình ảnh của họ có trong nhật ký hay không bằng cách trước tiên trích xuất siêu dữ liệu có liên quan, sau đó so sánh hàm băm gốc được tính toán lại với hàm băm gốc có trong điểm kiểm tra đã xuất bản. Nếu khớp, thì chủ sở hữu Pixel có thể yên tâm về một số biện pháp bảo vệ được minh hoạ trong Mô hình mối đe doạ.
Để kiểm tra xem hình ảnh trên thiết bị Pixel có nằm trong nhật ký minh bạch hay không, hãy kết nối với thiết bị bằng adb, sau đó chạy các lệnh sau:
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 --log_type=pixel
Khổ thơ đầu tiên truy xuất siêu dữ liệu từ thiết bị Pixel ở định dạng mục nhập nhật ký và lưu vào /tmp/log_payload.txt.
Khổ thơ thứ hai chạy trình xác minh bằng chứng bao gồm được xuất bản trong kho lưu trữ Xác minh quy trình khởi động trên Android. Công cụ này tính toán hàm băm của mục nhập nhật ký đề xuất, truy xuất các hàm băm khác cần thiết để tính toán lại điểm kiểm tra từ nhật ký và so sánh điểm kiểm tra đó với điểm kiểm tra do nhật ký xuất bản.
Kết quả của lệnh được ghi vào stdout:
OKnếu hình ảnh có trong nhật ký,FAILUREnếu không.
Bằng chứng nhất quán (Không bắt buộc)
Vì Google định kỳ phát hành các phiên bản mới của hình ảnh gốc Pixel, nên nhật ký minh bạch sẽ liên tục tăng lên. Nhân chứng kiểm tra để đảm bảo cây phát triển theo cách nhất quán với các lá trước đó. Nhân chứng theo dõi hàm băm gốc của cây và tính toán hàm băm gốc đề xuất tiếp theo bằng cách yêu cầu hàm băm lá mới từ cây. Để nhật ký minh bạch có thể phát hiện hành vi can thiệp, bạn phải liên tục kiểm tra tính nhất quán của nhật ký.
Hành vi chỉ nối thêm của nhật ký minh bạch được các bên thứ ba tích cực kiểm tra, vì vậy, hầu hết người dùng không cần phải tự làm việc này, nhưng bất kỳ ai cũng có thể theo dõi tính nhất quán của nhật ký. Google đã xuất bản một quy trình triển khai nguồn mở của một chứng nhân trong kho lưu trữ Github này. Bạn cần phải sử dụng cấu hình dành riêng cho nhật ký Tính minh bạch nhị phân của Pixel (PixelBT).