Nhật ký về tính minh bạch nhị phân của Pixel tận dụng công nghệ nhật ký về tính minh bạch.
Tiện ích của nhật ký về tính 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 công bố 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ể tình trạng cấp sai chứng chỉ, từ đó tăng cường tính bảo mật của Internet. Nhiều nhà khai thác nhật ký về Tính minh bạch của chứng chỉ dựa vào việc triển khai nhật ký về tính minh bạch tại transparency.dev.
Nhật ký về tính 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. Hãy xem bài viết 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ý về tính 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 ô được phân phát tại https://developers.google.com/android/binary_transparency/tile. Lưu ý: đây không phải là trang web thông thường; các mục nhật ký có trong thư mục con của trang này phải được đọc theo phương thức lập trình bằng thư viện Golang SumDBTLog chứ không phải thông qua trình duyệt.
Hãy xem Nội dung nhật ký để biết nội dung mô tả về các mục.
Giá trị băm gốc của cây Merkle của một nhật ký, có trong điểm kiểm tra, được phân phát tại https://developers.google.com/android/binary_transparency/checkpoint.txt. Giá trị này được trình bày ở định dạng điểm kiểm tra. Các nút 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 sẽ đọc điểm kiểm tra và các ô chứa mục nhật ký từ nhật ký.
Quy trình xác minh
Nhật ký về tính minh bạch được triển khai bằng cây Merkle bao gồm các giá trị băm. Nút lá chứa dữ liệu và nút gốc chứa giá trị 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 giả mạo của nhật ký về tính minh bạch: bằng chứng về việc đưa vào và bằng chứng về tính nhất quán. The bằng chứng về việc đưa vào chứng minh rằng nhật ký bao gồm một mục tương ứng với phiên bản hình ảnh, tức là. Mục nhật ký bao gồm bản tóm tắt VBMeta, một giá trị 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 về tính nhất quán 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 bằng chứng về việc đưa vào. Bạn không bắt buộc phải thực hiện phép tính bằng chứng về tính nhất quán vì các bên thứ ba liên tục thực hiện việc này.
Nếu muốn làm quen với các khái niệm về quy trình xác minh trong tính minh bạch nhị phân của Pixel, bạn có thể làm theo hướng dẫn bên dưới để sử dụng hình ảnh 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 đủ về tính minh bạch nhị phân của Pixel.
Điều kiện tiên quyết để được chứng nhận
Trước khi tiếp tục xác minh rằng cấu phần phần mềm (chương trình cơ sở hoặc APK) phù hợp với thông báo xác nhận quyền sở hữu, hãy đảm bảo rằng bạn có các công cụ sau trên máy tính được kết nối vớ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 công cụ này.
Golang
Công cụ xác minh được viết bằng Go. Để tạo công cụ này, hãy cài đặt Go 1.24 trở lên từ trang web 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 website.
Trình xác minh bằng chứng về việc đưa vào
Trình xác minh bằng chứng về việc đưa vào là một mô-đun Go truy vấn nhật ký về tính 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.
Mô-đun này được xuất bản trong kho lưu trữ android-binary-transparency trên GitHub tại
https://github.com/android/android-binary-transparency/tree/main
Cách sao chép kho lưu trữ avb của AOSP:
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 các 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 công cụ độc lập trong Bộ công cụ bản 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). Bạn cũng có thể dùng công cụ này để xác minh chữ ký mã APK.
Bạn có thể tải công cụ này xuống từ GitHub.
wget hoặc curl
wget và curl là các 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 các công cụ này vì tập lệnh xác minh có thể dựa vào các công cụ này.
Avbtool
avbtool
được dùng để tính toán bản tóm tắt VBMeta của hình ảnh gốc và xác minh
tệp nhị phân.
Sau khi sao chép kho lưu trữ avb (như trong phần Trình xác minh bằng chứng về việc đưa vào
section), 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 các thành phần riêng lẻ trong Pixel's
bootloader.img.
Bạn không cần công cụ này nếu đang xác minh APK.
Công cụ này rất quan trọng vì cho phép avbtool.py phát hiện các hình ảnh cần thiết để xác minh.
Để sử dụng công cụ này, bạn nên tải 3 tập lệnh Python sau đây
xuống thư mục chứa avbtool.py,
tạo tệp thực thi fbpacktool.py,
và tạo một liên kết tượng trưng có tên là fbpacktool đến fbpacktool.py để thuận tiện.
Nếu bạn có wget:
computer:dir_to_avbtool$ wget https://source.android.com/devices/bootloader/tools/pixel/fw_unpack/fbpacktool.py \
https://source.android.com/devices/bootloader/tools/pixel/fw_unpack/fbpack.py \
https://source.android.com/devices/bootloader/tools/pixel/fw_unpack/packedstruct.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 -O https://source.android.com/devices/bootloader/tools/pixel/fw_unpack/fbpacktool.py
computer:dir_to_avbtool$ curl -O https://source.android.com/devices/bootloader/tools/pixel/fw_unpack/fbpack.py
computer:dir_to_avbtool$ curl -O https://source.android.com/devices/bootloader/tools/pixel/fw_unpack/packedstruct.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. Hãy đảm bảo rằng bạn đã cài đặt công cụ 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 rằng kết quả trả về không 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 giá trị băm gốc được tính toán lại với giá trị băm gốc có trong điểm kiểm tra đã xuất bản. Nếu các giá trị này khớp nhau, 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ó trong nhật ký về tính 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
Khổ thơ đầu tiên truy xuất siêu dữ liệu từ thiết bị Pixel ở định dạng mục nhật ký và lưu siêu dữ liệu đó vào /tmp/log_payload.txt.
Khổ thơ thứ hai chạy trình xác minh bằng chứng về việc đưa vào được xuất bản trong kho lưu trữ Android Verified Boot. Công cụ này tính toán giá trị băm của mục nhật ký ứng cử viên, truy xuất các giá trị 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 giá trị này 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 đưa vào nhật ký,FAILUREnếu không.
Bằng chứng về tính 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ý về tính minh bạch liên tục phát triển. Nhân chứng kiểm tra để đảm bảo rằng cây phát triển theo cách nhất quán với các nút lá trước đó. Nhân chứng theo dõi giá trị băm gốc của cây và tính toán giá trị băm gốc ứng cử viên tiếp theo bằng cách yêu cầu các giá trị băm nút lá mới từ cây. Để nhật ký về tính minh bạch có bằng chứng chống giả mạo, nhật ký đó phải được liên tục kiểm tra tính nhất quán.
Hành vi chỉ cho phép thêm của nhật ký về tính 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 tự thực hiện 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 cách triển khai nguồn mở của nhân chứng trong kho lưu trữ Github này. Bạn cần sử dụng cấu hình dành riêng cho nhật ký về Tính minh bạch nhị phân của Pixel (PixelBT).