شفافية تطبيقات منتجات Google

لتعزيز الثقة في تطبيقات Google ومنتجاتها، نلتزم بإدراج كل حزمة من حزم منتجات Google في سجلّ الشفافية. لقد نشرنا سجلّ الشفافية للتحقّق علنًا من صحة الادعاءات التي نقدّمها بشأن هذه الحزم (حِزم APK وAPEX).

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

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

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

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

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

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

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

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

  • ‫ClaimGoogleApp: (أنا، Google، أدّعي أنّ $hashApp مخصّص لـ $googleApp)، حيث:
    • $hashApp هي تجزئة مشفّرة (مثل SHA256) لملف الحزمة (بما في ذلك حِزم APK المقسّمة وحِزم APEX) لإصدار معيّن من $googleApp.
    • $googleApp هي حزمة Android (حزمة APK أو APEX) تشكّل تطبيقًا أو منتجًا تنشئه Google وتوزّعه.

يمكن لأي مستخدم لديه نسخة من $googleApp التحقّق من هذا الادعاء، ونصف هذه العملية بالتفصيل في الـ صفحة التحقّق.

محتوى السجلّ

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

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

  1. تجزئة ملف APK أو APEX لحزمة موقَّعة من Google. وهي سلسلة سداسية عشرية لترميز SHA256 للملف بأكمله.
  2. وصف نوع التجزئة السابقة: وهو سلسلة.
  3. اسم حزمة الحزمة: وهو سلسلة.
  4. رقم إصدار الحزمة (versionCode): وهو عدد صحيح غير صفري.

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

hash\nhash_description\npackage_name\npackage_version\n

بما أنّه يمكن توزيع منتج Google كملف APK أو APEX، يتم ضبط وصف التجزئة على SHA256(APK) أو SHA256(APEX). يوفّر ذلك تغطية شاملة لمحتوى كل ملف، ويسهّل على المستخدمين الحصول على هذا القياس.

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

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