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प्राथमिक स्रोत ↗
स्रोत पहले · यह निवेश सलाह नहीं है