491 / 691REPRO

Reproducible Firmware Build

بناء قابل لإعادة الإنتاج للبرنامج الثابت

يتيح البناء المستقل مقارنة البرنامج الثابت المنشور بنتيجة ناتجة عن شفرة مصدرية وبيئة محددتين. يعزز التطابق التحقق من أصل الملف الثنائي؛ لكنه لا يثبت وحده أمان الشفرة أو أصالة الجهاز.

⁦Reproducible Firmware Build⁩ هو بناء تؤدي فيه الشفرة المصدرية والبيئة والتعليمات نفسها إلى مخرجات محددة مسبقًا ومتطابقة بايتًا ببايت. يجب تحديد الإصدار وطراز الجهاز ونطاق المقارنة، خصوصًا إذا تضمن الإصدار توقيعًا إضافيًا.

يتعلق الادعاء بمخرج محدد، مثل صورة البرنامج الثابت، ولا يشمل تلقائيًا كل ملف أو سجل. تشابه وظيفة البرنامج لا يكفي: يبحث التحقق عن البايتات نفسها، عادةً باستخدام تجزئة تشفيرية. لا تثبت إتاحة الشفرة المصدرية وحدها صلتها بالملف الثنائي المنشور ما لم يكن البناء قابلًا للتكرار. [Reproducible Builds — Definition] [Reproducible Builds — Build infrastructure threats]

سجّل الالتزام الدقيق، والتبعيات وإصداراتها، والمترجم، وخيارات البناء، ومتغيرات البيئة ذات الصلة، والطراز المستهدف. لا يكفي اسم المشروع أو فرع يتغير بمرور الوقت. يجب نشر المعلومات اللازمة لإعادة البناء أو تسجيلها أثناء البناء؛ وإلا تعذر تقييم الاختلاف بشكل موثوق. [Reproducible Builds — Definition] [Reproducible Builds — Recording the environment]

قد يدرج المترجم مسار دليل العمل في معلومات التصحيح. لذلك قد ينتج عن وجود المصدر نفسه في موقعين ملفان مختلفان. يمكن تحديد المسار مسبقًا أو توحيده بإجراء مدعوم. يجب أن تكون هذه القاعدة جزءًا من الوصفة؛ فحذف اختلافات مجهولة بعد ظهورها يُفقد التحقق قيمته. [Reproducible Builds — Build paths]

يربط التوقيع الصحيح الإصدار بمفتاح التوقيع المعني ضمن نموذج الثقة المستخدم. يفحص البناء المستقل العلاقة بين المصدر والمخرج الثنائي. قد يحتوي الملف الرسمي الموقّع على بيانات غير موجودة في البناء المحلي غير الموقّع. عندئذ قد لا تكون المقارنة المباشرة للملفين كاملين اختبارًا مناسبًا لقابلية إعادة الإنتاج المعلنة. [Trezor — Reproducible build verification]

تحدد وثائق ⁦Trezor⁩ الإصدار والطراز، وتبني الصورة في بيئة محددة، وتقارنها بالإصدار الرسمي. وتصف تصفير حقول توقيع محددة بدقة قبل المقارنة؛ كما تختلف الترويسات في التنسيقات الأقدم. يعتمد التخطيط على الطراز والإصدار. لذا لا يجوز تطبيق إجراء خاص بصورة ما على أخرى دون تحقق، ويجب فصل التحقق من التوقيع الأصلي. [Trezor — Reproducible build verification]

تحقق أولًا من تطابق مراجعة المصدر والطراز ونوع البرنامج الثابت والتبعيات والتعديلات المعلنة على الصورة. احتفظ بالملفات الأصلية وسجل الاختلاف. قد يكون السبب خطأ في الوصفة أو البيئة، أو تغييرًا في الملف الثنائي الموزع؛ وعدم التطابق وحده لا يحدد السبب. لا تصف المخرج بأنه متحقق منه حتى يُفسَّر الاختلاف ويُعاد الفحص. [Reproducible Builds — Definition] [Reproducible Builds — Build infrastructure threats]

يمكن إعادة إنتاج شفرة معيبة أو خبيثة بصورة تامة. وقد يدرج مترجم مشترك غير موثوق التغيير نفسه في جميع النتائج؛ فتكرار استخدام الأداة نفسها ليس تدقيقًا مستقلًا للمترجم. تحد الأجزاء الثنائية المغلقة مما يمكن إعادة بنائه من المصدر المتاح. كما لا يثبت تطابق الملفات أصالة العتاد أو ما هو محمّل فعلًا على جهاز بعينه. [Wheeler — Countering Trusting Trust] [Reproducible Builds — Definition]

يذكر السجل المفيد من أجرى البناء، والالتزام المستخدم، والوصفة المتبعة، والطراز المستهدف، والملفات التي قورنت. أرفق خوارزمية التجزئة والنتائج والاستثناءات الدقيقة الخاصة ببيانات التوقيع. يقلل وجود جهات بناء مستقلة إضافية الاعتماد على ناشر واحد، لكنه لا يحل محل مراجعة المصدر وعملية التحديث وأمان الجهاز ككل. [Reproducible Builds — Recording the environment] [Reproducible Builds — Build infrastructure threats]

مثال · REPRO

الشفرة نفسها، ومنطقة توقيع مختلفة

تستخدم جهتان للبناء الالتزام والطراز والبيئة نفسها. تحمل صورتاهما المحليتان تجزئة ⁦SHA-256⁩ نفسها، بينما تختلف تجزئة الصورة الرسمية الموقّعة. إذا حددت الوثائق حقول التوقيع بدقة، تقارنان نسخًا بعد التعديل الموصوف. يقتصر التطابق حينئذ على المحتوى المحدد بهذه الطريقة؛ ويُتحقق من التوقيع الأصلي بصورة منفصلة. لا يجوز لهما حذف أي اختلاف آخر ببساطة.

للحصول على صورة أوضح، اقرأ هذا المدخل مع Hardware Wallet, مفتاح خاص, Cold Storage, Secure Element. تشير إلى هذا المدخل أيضًا COLDCARD RNG Incident (2026).

01هل يكفي تطابق التجزئة للاستنتاج أن البرنامج الثابت آمن؟

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

02هل تعني تجزئة مختلفة لإصدار موقّع وقوع هجوم تلقائيًا؟

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

DOC · 001Reproducible Builds — Definitionتوثيق ↗DOC · 002Reproducible Builds — Recording the environmentتوثيق ↗DOC · 003Reproducible Builds — Build pathsتوثيق ↗DOC · 004Reproducible Builds — Build infrastructure threatsتوثيق ↗DOC · 005Trezor — Reproducible build verificationتوثيق ↗DOC · 006Wheeler — Countering Trusting Trustمصدر أولي ↗
المصادر أولًا · ليست نصيحة استثمارية