شفافية حِزم APK لخدمات نظام Google

في إطار استثمارات Google المستمرة في شفافية منتجاتها، نضيف شفافية إلى حِزم APK الجديدة لخدمة نظام التشغيل من Google: Android System SafetyCore‏ (com.google.android.safetycore) و Android System Key Verifier‏ (com.google.android.contactkeys). توفّر حِزم APK هذه ميزة التحقّق من مفتاح التشفير وتحذيرات بوجود محتوًى حسّاس في رسائل Google على التوالي. سجلّ الشفافية الذي نشرناه للتحقّق من صحة الادعاءات التي ندّعيها بشأن حِزم APK هذه

الحِزم المشمولة

يصف هذا القسم الحِزم التي يشملها سجلّ الشفافية، بالإضافة إلى مفاتيح توقيع الشفافية في الرموز البرمجية الخاصة بها.

Android System SafetyCore

Android System SafetyCore (com.google.android.safetycore) هو مكوّن من نظام Android يقدّم بنية أساسية للحماية على الجهاز تحافظ على الخصوصية للتطبيقات.

تم توقيع الرمز البرمجي من حزمة APK هذه حاليًا باستخدام المفتاح التالي الموضّح في هذه الشهادة:

-----BEGIN CERTIFICATE-----
MIIFyDCCA7CgAwIBAgIUf3otg1DSj4EfxlP2OjAapoQ/moEwDQYJKoZIhvcNAQELBQAwdDELMAkG
A1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDU1vdW50YWluIFZpZXcxFDAS
BgNVBAoTC0dvb2dsZSBJbmMuMRAwDgYDVQQLEwdBbmRyb2lkMRAwDgYDVQQDEwdBbmRyb2lkMCAX
DTI0MDcxNzIwNDQzMFoYDzIwNTQwNzE3MjA0NDMwWjB0MQswCQYDVQQGEwJVUzETMBEGA1UECBMK
Q2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEUMBIGA1UEChMLR29vZ2xlIEluYy4x
EDAOBgNVBAsTB0FuZHJvaWQxEDAOBgNVBAMTB0FuZHJvaWQwggIiMA0GCSqGSIb3DQEBAQUAA4IC
DwAwggIKAoICAQCw93tMu9bD3tAfP1XDj2Y/vvBqDTvi86HesUK8gq0M7kxttep0BP2AkZS5AdVa
DNW6kuMhUN1XOao/Ib/mpgdi3pK6w0WDIlpHsg3coRuCxeniROw3+XUSLNox1mqfLSgHNg9gNoxK
dUyGf8nEIYVgLBUH8OX2oKeirRT7DyR64uVJmts0B0RvNt5VfP5vf6KFpa0prqCNGqQLHLyev3g/
35RH1oAVVsjZnylDYAm9qdAVugL0sgExY01vRNluZZKJuItNpdt+AMOTgStZAEwkhAg7pMbNF27g
AJDCC+XDS16/x1Jnxc+Exlw66aHB++1+dFK/rYkbB+ql4dHjs/LTGqPIeUuE3Xd7UkguKZRRLNtI
Ls9DP1UYuQGZ1IQ9kQamkxScNFgNmymkgTXhBajDKSPy4jb2t5yLHTIJn0OvyMLg2J7/ImHHmc99
07OuXCfy55aW99lqaYsc+rLPOHFi6GjvTUkkyxXqJlhQYb9uQznxkqsfbnBefxCCO924uVIwWDlt
rA+mQ3Bw7TNgb3NmKUmUrmFaRBmrAxnag/jj0N4ff7vXVBR0WkXpb3qRPlSvsEXGYOWPJtc2+U2Q
IFcNyEeu6zWD5yYIcnoX1go2zEVt99b1AFsN0zRWo0mNyeLizDNiDkGT9AtB8rdajhchDqfmZGGX
XqhhJVT9IRMBFQIDAQABo1AwTjAMBgNVHRMEBTADAQH/MB0GA1UdDgQWBBQY4GYL4FxVcxk2Euj8
otSQHVYz7zAfBgNVHSMEGDAWgBQY4GYL4FxVcxk2Euj8otSQHVYz7zANBgkqhkiG9w0BAQsFAAOC
AgEAoDuItwszr0yIPcvn/l3s5xZs+3rXe52KcY+ZgMVyM4q5CTEHwX89+K+hMFMTqp8vkrLhjnhz
/SYEY0ZXMQsQ0GWrMHbfIbzUsLhIoMBYn1JA+AH+CCZIYo9GbxaCqu4KJPQNC7sqA3goWf6UqHya
rj8wzXT5+qmOVwBUHgQUap5406/DaPqU0g+w4+hiV/zI67ugWU1z+6WElYIsXjN59zA5rVIJTdnV
w04RNK5fldWUsbkPGQ7hwoyJG4wZewCZ0sU4NUqVecb8z52hdlGj15+rUhDJq0pbDRjFEnulfUFJ
gA5s6iosSYyXrGQgE6NOszxu7nMvSg7MPrS7GQUMnaadQAye/7ELBY4jxlHMOAuj9iwz2Asjuy0a
ye64nfcYBbFSIzV7xRgeUJy42jyRq9ZoILU9fW/I4rHNIcntgB2POpzFOZrKXLC/B8rHKZT9AZOd
iXEKqFRBnHEaGy+MARO7guCQLO8XIVQixDHWS6OJRIvw0LKaf4dSlCxcUEpYSSHJmt6JMOujapCa
JmKz7K+wZWSClJnrc0HhJnZFt6S3TakZx7ALVi0SqxBaxHYFieSn9rmXHOWrSxEz5cmASnsfqnc0
w//Yhjm+gGOmLs/5TzrCyYvYt8Ynsd1G1GHipwc8JXGxLqbOPrNcUpjM65m+sshERIua30du0GOm
4ZM=
-----END CERTIFICATE-----

خدمة التحقّق من مفتاح نظام التشغيل Android

Android System Key Verifier APK (com.google.android.contactkeys) هي خدمة للتحقّق من جهات الاتصال على Android. ويسمح هذا الإجراء للمستخدم بالتحقّق من المفاتيح العامة لجهة اتصال لتأكيد أنّه يتواصل مع الشخص المطلوب إرسال رسالة إليه. وتقدّم الخدمة نظامًا موحّدًا للتحقّق من المفاتيح العامة في التطبيقات المختلفة، وذلك من خلال مسح رمز الاستجابة السريعة ضوئيًا أو مقارنة الأرقام.

تم توقيع الرمز البرمجي من حزمة APK هذه حاليًا باستخدام المفتاح التالي الموضّح في هذه الشهادة:

-----BEGIN CERTIFICATE-----
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
PLM=
-----END CERTIFICATE-----

نموذج التهديد

يمكن استخدام أنظمة الشفافية لرصد هجمات سلسلة الإمداد وبالتالي منعها. سنوضّح ذلك من خلال بعض الأمثلة.

لنفترض أنّ أحد المهاجمين عدائيًا عدّل حزمة APK لخدمات نظام Google وتمكن حتى من توقيعها باستخدام مفتاح التوقيع الذي يستخدمه Google Play. يمكن لأي مستخدم يتلقّى حزمة APK الضارة طلب البحث في سجلّ شفافية البرامج الثنائية لتأكيد صحة حزمة APK. سيتبيّن لهم أنّ Google لم تُضِف البيانات الوصفية لملف APK المقابل إلى ملف السجلّ، وسيعرفون أنّه لا يمكن الوثوق بملف APK المخترَق.

بما أنّ النشر في السجلّ عملية منفصلة عن عملية الإصدار باستخدام التوقيع (كما هو موضّح في مخطّط المنظومة المتكاملة)، يرفع ذلك من مستوى المهاجم إلى ما هو أبعد من مجرد اختراق المفتاح.

على الرغم من أنّنا نخطّط أيضًا لدمج هذا السجلّ في شبكة عامة من الشهود باستخدام بروتوكول شاهد عادي، ننصح الأطراف الخارجية المستقلة بمراقبة سلامة هذا السجلّ المتاح للجميع. ويمكن لهذه الجهات الإقرار بخاصية الإضافة فقط للسجلّ والإبلاغ عن أي محاولة تلاعب.

ويؤدي توفّر نظام الشفافية هذا وإمكانية رصد الهجمات بشكلٍ إضافي إلى الحدّ من النشاط الضار. إذا تم اختراق حزمة APK ولكن المستخدمين يثقون فقط في الحِزم المدرَجة في السجلّ، يجب عرض حزمة APK المخترَقة بشكل علني. ويزيد ذلك من احتمالية اكتشاف توفّر حزمة APK المخترَقة، ويمكن اتّخاذ إجراء لإزالة توزيعها.

نموذج المدّعي

نموذج المدّعي هو إطار عمل يُستخدَم لتحديد الأدوار والعناصر في نظام قابل للتحقّق. في ما يتعلّق بشفافية حِزم APK لخدمات نظام Google، نؤكّد أنّه تمثّل تجزئة الملفات الثنائية الموقَّعة المسجّلة في هذا السجلّ الرمز الرسمي لحِزم APK الخاصة بخدمات نظام Google المعنيّة.

  • المطالبةGoogleSystemServicesApk: (أنا، Google، أُقدّم مطالبة بأنّه $codeSignature مخصّص لـ $googleSystemServicesApk)، حيث:
    • $codeSignature هو رمز JSON مميّز للويب (JWT) موقَّع يحتوي على قائمة بملفات DEX والمكتبات الأصلية وعلامات التجزئة المقابلة لها والمضمّنة في إصدار محدّد من $googleSystemServicesApk.
    • $googleSystemServicesApk هي حزمة Android (APK) من المجموعة التالية من الحِزم: {Android System SafetyCore (com.google.android.safetycore), Android System Key Verifier (com.google.android.contactkeys)}

يمكن لأي شخص لديه نسخة من $googleSystemServicesApk إثبات صحة المطالبة أعلاه، وقد شرحنا هذه العملية بالتفصيل الكامل في صفحة إثبات الملكية.

محتوى السجلّ

عندما تُصدر Google إصدارًا جديدًا من حِزم APK المُدرَجة أعلاه، تُضيف إدخالاً متوافقًا إلى سجلّ شفافية حِزم APK لخدمات نظام Google.

يحتوي كل إدخال في هذا السجلّ على أربع أجزاء من البيانات الوصفية لحزمة APK:

  1. تشير إلى تجزئة توقيع الرمز لحزمة APK التي طوّرتها Google. هذه سلسلة سداسية عشرية لملخّص SHA256 لرمز شفافية الترميز (المعروف أيضًا باسم رمز شفافية الترميز JWT).
  2. وصف لنوع التجزئة أعلاه هذه سلسلة.
  3. اسم الحزمة لحزمة APK هذه سلسلة.
  4. رقم الإصدار (versionCode) لملف APK هذا عدد صحيح.

تنسيق إدخال السجلّ هو تسلسل القطع الأربعة من المعلومات مع حرف سطر جديد (\n)، كما هو موضّح في ما يلي:

hash\nSHA256(Signed Code Transparency JWT)\npackage_name\npackage_version\n

يُرجى العلم أنّنا نختبر في هذا الإصدار استخدام ميزة شفافية الترميز. وهذا يعني أنّنا نسجل خلاصة رمز شفافية الرموز البرمجية بدلاً من تجزئة حِزمة APK. وبالتالي، تمّ إصلاح وصف التجزئة حاليًا على النحو التالي: SHA256(Signed Code Transparency JWT).

بالإضافة إلى ذلك، يوضّح ذلك طريقة يمكن من خلالها لمطوّري التطبيقات الاستفادة من شفافية الرموز البرمجية عندما يكون مفتاح توقيع التطبيق محتفظًا به Google Play.

مخطّط المنظومة المتكاملة

مخطّط المنظومة المتكاملة للسجلّات القابلة للتحقّق