The Chromium Chronicle رقم 23: إصدارات تم التحقّق منها في Chrome Infra

الحلقة 23: من تأليف "أكاش موخيرجي" في مدينة ماونتن فيو في كاليفورنيا (تموز/يوليو 2021)
الحلقات السابقة

عند تصميم Chrome، تساهم العديد من القطع في البيئة التي تؤثر على ناتج العنصر. ومن نظام التشغيل، والمكتبات الداعمة المثبتة، وتبعيات الجهات الخارجية، والأدوات المثبّتة وبيئة وقت التشغيل نفسها تم إعداد كل من هذه الأدوات بمستويات مختلفة من السلامة الأمنية.

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

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

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

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

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

def CreateProvenance(self, build_manifest: Mapping[str, Any]):
  """Builder generates and signs provenance given build manifest. Signed JWT is placed
  alongside built artifact."""

بالنسبة إلى Chrome، قبل توقيع عناصر البرامج المنتجة باستخدام البنية الأساسية للتوقيع من Google، يتم فرض السياسة لاستيفاء الحد الأدنى من متطلبات الأمان المحدّدة في الإصدار.

def VerifyProvenance(self, artifact_hash: str, provenance: str):
  """Provenance is verified using a policy engine service before signing an artifact."""

تنقسم المتطلبات إلى 4 مجالات تقريبًا:

  • عنصر التحكّم في المصدر: يحمي البيانات التي تم تضمينها في عملية الإنشاء.
  • إنشاء: يحمي العملية العملية التي تحوّل المصدر إلى برنامج ثنائي.
  • المصدر: هو الإقرار الذي يتضمّن بيان إصدار قابلاً للتحقق.
  • السياسة: القواعد التي تحدد ما إذا كانت أداة معيّنة مؤهّلة في سياق معيّن.

تنفيذ عملية تحقّق من الالتزام بالسياسات كجزء من عمليتَي تسهيل الاستخدام (CI) و"التخصيص" في Chrome والبنية الأساسية تمكنا من التحقق من أن الرمز والتهيئة التي تلبي حد أدنى معين من معايير الأمان. وهو عنصر تحكم بالغ الأهمية يستخدم للحد من القدرة من حساب داخلي يُحتمل أن يكون ضارًا أو حسابًا داخليًا تم اختراقه تعديل البرامج التي نوزعها على المستخدمين.