Pixel Binary Transparency Log از فناوری ثبت شفافیت بهره می برد.
سودمندی گزارشهای شفافیت با Certificate Transparency ، یک پروتکل اینترنتی که مقامات گواهی را ملزم میکند گواهیهایی را که صادر میکنند در گزارشهای عمومی شفافیت گواهی منتشر کنند، به اثبات رسیده است. این فرآیند تا حد زیادی از صدور اشتباه گواهینامه ها کاسته و در نتیجه امنیت اینترنت را افزایش داده است. بسیاری از اپراتورهای گزارش شفافیت گواهی بر پیاده سازی گزارش های شفافیت موجود در transparency.dev متکی هستند.
سیاهههای مربوط به شفافیت با درختان مرکل پیاده سازی می شوند. این صفحه دانش عمومی درختان مرکل و شفافیت باینری را در نظر گرفته است. برای نمای کلی از درختان Merkle به ساختارهای داده قابل تأیید و برای نمای کلی شفافیت باینری به صفحه فرود مراجعه کنید.
پیاده سازی گزارش
گزارش شفافیت باینری پیکسل به عنوان درخت Merkle مبتنی بر کاشی پیادهسازی میشود. ریشه محتوای کاشی در https://developers.google.com/android/binary_transparency/tile ارائه می شود. توجه: این یک صفحه وب معمولی نیست. ورودی های گزارش موجود در زیر شاخه های آن باید به صورت برنامه نویسی با کتابخانه Golang SumDB TLog خوانده شوند و نه از طریق مرورگر.
برای توضیحاتی در مورد محتوای ورودی ها به محتوای گزارش مراجعه کنید.
هش ریشه درخت مرکل یک سیاهه، موجود در یک نقطه بازرسی ، در https://developers.google.com/android/binary_transparency/checkpoint.txt ارائه می شود. در قالب ایست بازرسی ارائه شده است. برگ های این درخت مرکل در https://developers.google.com/android/binary_transparency/image_info.txt سرو می شود. امضای ایست بازرسی را می توان با کلید عمومی زیر تأیید کرد:
-----BEGIN CERTIFICATE-----
MIICPDCCAeOgAwIBAgIVAPooxISw/nFF/dPwmCUaV36Z4s3hMAoGCCqGSM49BAMCMHQxCzAJBgNV
BAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYD
VQQKEwtHb29nbGUgSW5jLjEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDAgFw0y
MTA3MTkyMjQxNDFaGA8yMDUxMDcxOTIyNDE0MVowdDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNh
bGlmb3JuaWExFjAUBgNVBAcTDU1vdW50YWluIFZpZXcxFDASBgNVBAoTC0dvb2dsZSBJbmMuMRAw
DgYDVQQLEwdBbmRyb2lkMRAwDgYDVQQDEwdBbmRyb2lkMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcD
QgAEU83uXNUiTYE53c2TfdWmqpW20bBXy4KEf5Ff8dV8GLKlVAXKHyjw3Lp9J3E0yCRJ/39XKeuA
AMF7KzSvhD248KNQME4wDAYDVR0TBAUwAwEB/zAdBgNVHQ4EFgQUHRpvuNkzjtBY213BWgUyWWHm
3VYwHwYDVR0jBBgwFoAUHRpvuNkzjtBY213BWgUyWWHm3VYwCgYIKoZIzj0EAwIDRwAwRAIgZsZb
CNBXRkCKLS+LG/41VWj1cTszt9QCdJQNuy7aT94CIDPgn7v5b1ykBVUTuLgRSofxAzHg9R4dg1oA
7tTFAuDg
-----END CERTIFICATE-----
فرآیند تأیید، ایست بازرسی و کاشیهای حاوی ورودیهای گزارش را از لاگ میخواند.
فرآیند تأیید
گزارش شفافیت با درخت مرکل متشکل از هش پیاده سازی می شود. یک گره برگ حاوی داده است و یک گره والد حاوی هش فرزندانش است.
دو محاسبات روی درخت مرکل انجام میشود تا خاصیت دستکاری آشکار گزارشهای شفافیت را تأیید کند: اثبات گنجاندن و اثبات سازگاری. اولی ثابت می کند که گزارش شامل ورودی مربوط به یک نسخه تصویر است، یعنی. ورودی گزارش شامل خلاصه VBMeta است، یک هش که تصاویر سیستم عامل را نشان می دهد، که می توانند از یک دستگاه برگردانده شوند. مورد دوم ثابت میکند که وقتی ورودیهای جدید به درخت اضافه میشوند، نقطه بازرسی جدید با نسخه قبلی درخت سازگار است.
برای تأیید تصویر Pixel خود، اثبات درج را انجام دهید. انجام محاسبات اثبات سازگاری اختیاری است، زیرا اشخاص ثالث به طور مداوم این کار را انجام می دهند.
اگر میخواهید با مفاهیم تأیید صحت در شفافیت Pixel Binary آشنا شوید، میتوانید دستورالعملهای زیر را برای استفاده از تصویر در حال اجرا در دستگاه Pixel خود دنبال کنید. اگر میخواهید میانافزار Pixel را با بالاترین درجه اطمینان اجرا کنید، روند تأیید را در تأیید کامل شفافیت باینری Pixel مشاهده کنید.
پیش نیازها
اطمینان حاصل کنید که وابستگی های زیر در دسترس هستند:
- Golang: ابزار تأیید باید با Go 1.17 یا جدیدتر ساخته شود که از سایت Go در دسترس است.
- Android Debug Bridge (adb): با یک دستگاه Android برای بازرسی تصویر ارتباط برقرار می کند که در وب سایت Android SDK Platform Tools موجود است.
- تأییدکننده اثبات گنجاندن: برای بررسی اینکه تصویر Pixel در گزارش شفافیت باینری قرار دارد، با گزارش ارتباط برقرار میکند.
# Source code for the inclusion proof verifier is found at avb/tools/transparency/verify
git clone https://android.googlesource.com/platform/external/avb
اثبات شمول
یک مالک Pixel میتواند با استخراج ابرداده مربوطه، سپس با مقایسه هش ریشه مجدداً محاسبهشده خود با هش ریشه موجود در نقطه بازرسی منتشر شده ، بررسی کند که تصویر او در گزارش وجود دارد. اگر مطابقت داشته باشند، مالک Pixel میتواند از برخی از محافظتهایی که در مدل تهدید نمونهای از آنها است مطمئن باشد.
برای بررسی اینکه تصویر یک دستگاه پیکسل در گزارش شفافیت قرار دارد، با adb به دستگاه متصل شوید ، سپس دستورات زیر را اجرا کنید:
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
مصراع اول متادیتا را از دستگاه Pixel در قالب یک ورودی گزارش بازیابی می کند و آن را در /tmp/log_payload.txt
ذخیره می کند.
مصراع دوم تأیید کننده اثبات گنجاندن منتشر شده در مخزن Android Verified Boot را اجرا می کند. این ابزار هش ورودی لاگ نامزد را محاسبه میکند، هشهای دیگر لازم برای محاسبه مجدد چکپوینت را از گزارش بازیابی میکند و آن را با نقطه بازرسی منتشر شده توسط گزارش مقایسه میکند.
خروجی دستور در stdout نوشته می شود:
-
OK
اگر تصویر در گزارش گنجانده شده باشد، -
FAILURE
اگر نیست.
اثبات سازگاری (اختیاری)
از آنجایی که Google به صورت دورهای نسخههای جدیدی از تصویر کارخانه Pixel را منتشر میکند، گزارش شفافیت به طور مداوم در حال رشد است. یک شاهد بررسی می کند که درخت به روشی مطابق با برگ های قبلی خود رشد می کند. شاهد هش ریشه درخت را پیگیری می کند و با درخواست هش برگ جدید از درخت، هش ریشه نامزد بعدی را محاسبه می کند. برای اینکه گزارش شفافیت غیرقابل دستکاری باشد، باید به طور مداوم از نظر سازگاری بررسی شود.
رفتار فقط پیوست گزارش شفافیت به طور فعال توسط اشخاص ثالث بررسی می شود و بنابراین اکثر کاربران نیازی ندارند خودشان این کار را انجام دهند، اما این امکان برای هر کسی وجود دارد که سازگاری گزارش را کنترل کند. گوگل پیاده سازی منبع باز یک شاهد را در این مخزن Github منتشر کرده است. لازم است از پیکربندی خاص برای گزارش شفافیت باینری پیکسل (PixelBT) استفاده کنید.