شفافیت برنامه‌های کاربردی محصولات گوگل

برای افزایش اعتماد به برنامه‌های گوگل، اکنون متعهد هستیم که هر برنامه محصول گوگل را در گزارش شفافیت خود فهرست کنیم. ما گزارش شفافیت را منتشر کردیم تا ادعاهایی را که در مورد این APKها مطرح می‌کنیم، به طور عمومی تأیید کنیم.

مدل تهدید

سیستم‌های شفافیت می‌توانند برای شناسایی و در نتیجه جلوگیری از حملات زنجیره تأمین مورد استفاده قرار گیرند. ما با چند مثال این موضوع را روشن می‌کنیم.

فرض کنید یک مهاجم به طور مخرب یک برنامه گوگل را تغییر می‌دهد و حتی موفق می‌شود آن را با کلید امضایی که برای توزیع از طریق گوگل پلی استفاده می‌شود، امضا کند. با یک گزارش شفافیت دودویی، هر کسی که یک APK مشکوک دریافت کند، می‌تواند از آن به عنوان یک منبع قابل تأیید برای تأیید صحت APK استفاده کند. آنها متوجه خواهند شد که گوگل فراداده‌های APK مربوطه را به گزارش اضافه نکرده است و می‌دانند که نباید به APK آسیب‌دیده اعتماد کنند.

از آنجایی که انتشار در لاگ فرآیندی جداگانه از فرآیند انتشار با امضا است (همانطور که در نمودار اکوسیستم نشان داده شده است)، این امر موانع را برای مهاجم فراتر از به خطر انداختن کلید افزایش می‌دهد.

در حالی که ما قصد داریم این گزارش را با استفاده از یک پروتکل استاندارد شاهد ، در یک شبکه عمومی از شاهدان ادغام کنیم، طرف‌های خارجی و مستقل را تشویق می‌کنیم تا بر صحت این گزارش که در دسترس عموم است، نظارت کنند. این طرف‌ها می‌توانند ویژگی فقط-افزودن گزارش را تأیید کنند و هرگونه دستکاری را گزارش دهند.

وجود چنین سیستم شفافیتی و قابلیت کشف بیشتر حملات، فعالیت‌های مخرب را کاهش می‌دهد. اگر یک APK به خطر بیفتد اما کاربران فقط به آنهایی که در گزارش هستند اعتماد کنند، APK به خطر افتاده باید به صورت عمومی در معرض دید قرار گیرد. این امر احتمال کشف وجود APK به خطر افتاده را افزایش می‌دهد و می‌توان برای حذف توزیع آن اقدام کرد.

مدل مدعی

مدل مدعی ، چارچوبی است که برای تعریف نقش‌ها و مصنوعات در یک سیستم قابل تأیید استفاده می‌شود. در مورد شفافیت برنامه‌های شخص اول گوگل، ادعایی که ما مطرح می‌کنیم این است که هش یک فایل APK ثبت شده در این گزارش، نشان‌دهنده نسخه خاصی از یک برنامه رسمی گوگل است که برای مصرف عمومی در نظر گرفته شده است.

  • ادعای GoogleApp : (من، گوگل، ادعا می‌کنم که $hashApp برای $googleApp است)، که در آن:
    • $hashApp یک هش رمزنگاری‌شده (مثلاً SHA256) از فایل APK (شامل APKهای تقسیم‌شده ) از یک نسخه خاص از $googleApp است.
    • $googleApp یک بسته اندروید ( APK ) است که برنامه‌ای را تشکیل می‌دهد که گوگل آن را ایجاد و توزیع می‌کند.

هر کسی که یک نسخه از $googleApp را داشته باشد می‌تواند این ادعا را تأیید کند و ما این فرآیند را با جزئیات کامل در صفحه تأیید شرح می‌دهیم.

محتوای گزارش

وقتی گوگل نسخه جدیدی از یک APK را منتشر می‌کند، یک ورودی مربوطه را به گزارش شفافیت APK شخص اول گوگل اضافه می‌کند.

هر ورودی در این لاگ شامل چهار قطعه فراداده است:

  1. هش فایل APK یک برنامه امضا شده توسط گوگل. این یک رشته هگز از خلاصه SHA256 کل فایل است.
  2. توضیح نوع هش قبلی. این یک رشته است.
  3. نام بسته‌ی APK. این یک رشته است.
  4. شماره نسخه ( versionCode ) فایل APK. این یک عدد صحیح غیر صفر است.

قالب یک ورودی لاگ، الحاق چهار قطعه اطلاعات با یک کاراکتر خط جدید ( \n ) است، همانطور که در شکل زیر نشان داده شده است:

hash\nSHA256(APK)\npackage_name\npackage_version\n

از آنجایی که ما کل فایل APK را اندازه‌گیری می‌کنیم، توضیحات هش روی SHA256(APK) تنظیم شده است. این کار پوشش جامعی از محتوای هر فایل را فراهم می‌کند و به دست آوردن این اندازه‌گیری را برای کاربران آسان‌تر می‌کند.

نمودار اکوسیستم

Verifiable Log Ecosystem Diagram