SHARE THE PERSPECTIVE
चेकसम बाइटों का संदर्भ मान से मेल जाँचता है। हस्ताक्षर अखंडता को कुंजी से जोड़ता है। कोई भी अकेले सॉफ़्टवेयर की सुरक्षा साबित नहीं करता।

Android APK इंस्टॉल करने से पहले तीन जाँचों के बीच अंतर समझें: क्या यह फ़ाइल अपेक्षित रिलीज़ से मेल खाती है? क्या इस पर अपेक्षित कुंजी से हस्ताक्षर किए गए हैं? क्या स्वतंत्र बिल्डकर्ता बताए गए सोर्स कोड से इसे दोबारा बना सकते हैं? SHA-256 चेकसम, APK हस्ताक्षर और पुनरुत्पादनीय बिल्ड इन सवालों के अलग-अलग पहलुओं का जवाब देते हैं।

इनमें से कोई भी अपने आप यह तय नहीं करता कि सॉफ़्टवेयर मैलवेयर है या नहीं। सही हस्ताक्षर वाला, दोबारा बनाया जा सकने वाला प्रोग्राम भी सुरक्षा संबंधी बग या जानबूझकर हानिकारक व्यवहार शामिल कर सकता है।

हर सत्यापन विधि क्या स्थापित करती है

जाँच उपयोगी परिणाम महत्वपूर्ण सीमा
फ़ाइल का SHA-256 डाइजेस्ट आपके फ़ाइल-बाइट किसी खास विश्वसनीय डाइजेस्ट से मेल खाते हैं फ़ाइल और डाइजेस्ट दोनों को बदल सकने वाला हमलावर इस तुलना को निष्प्रभावी कर सकता है
APK हस्ताक्षर का सत्यापन पैकेज के हस्ताक्षर का सत्यापन उसके हस्ताक्षर प्रमाणपत्र के आधार पर सफल होता है आपको स्थापित करना होगा कि अपेक्षित हस्ताक्षर कुंजी कौन-सी है; केवल वैधता से प्रकाशक की पहचान साबित नहीं होती
पुनरुत्पादनीय बिल्ड की तुलना दस्तावेज़ों में बताए गए इनपुट से निर्दिष्ट बिल्ड आउटपुट दोबारा बनाया जा सकता है सोर्स और बाइनरी का मेल यह साबित नहीं करता कि सोर्स सुरक्षित है
सुरक्षा समीक्षा डिज़ाइन या कार्यान्वयन के विशिष्ट मुद्दों का आकलन किया गया है उसका दायरा, संस्करण, निष्कर्ष और अनसुलझे मुद्दे महत्वपूर्ण हैं

Android में इंस्टॉलेशन और अपडेट के लिए APK पर हस्ताक्षर होना ज़रूरी है। Play App Signing में Google ऐप की हस्ताक्षर कुंजी का प्रबंधन कर सकता है और ऐप बंडल से वितरण के लिए APK बना सकता है। ये दस्तावेज़ों में वर्णित भरोसे की व्यवस्थाएँ हैं, इस बात का प्रमाण नहीं कि कोई भी बीच का पक्ष वैध हस्ताक्षर बरकरार रखते हुए पैकेज को चुपके से बदल सकता है। Android की ऐप हस्ताक्षर मार्गदर्शिका देखें।

चरण 1: सटीक बिल्ड आउटपुट की पहचान करें

ऐप का संस्करण, रिलीज़ चैनल, फ़ाइल का नाम और लक्षित प्लेटफ़ॉर्म का प्रकार दर्ज करें। प्रकाशक के आधिकारिक वितरण पेज का उपयोग करें, न कि उसी अनचाहे संदेश से कॉपी किए गए चेकसम का जिससे आपको APK मिला था।

प्रकाशक से सीधे डाउनलोड किया गया APK, किसी ऐप स्टोर द्वारा किसी डिवाइस के लिए बनाए गए APK से अलग हो सकता है। अलग संस्करण, आर्किटेक्चर, पैकेजिंग या हस्ताक्षर व्यवस्थाएँ वैध कारणों से अलग फ़ाइल हैश पैदा कर सकती हैं। बेमेल को छेड़छाड़ का प्रमाण मानने से पहले सुनिश्चित करें कि आप समान प्रकार के आउटपुट की तुलना कर रहे हैं।

व्यावहारिक सवाल यह है: अपेक्षित मान कहाँ से आया, और मुझे उस स्रोत पर भरोसा क्यों है? हैश की गणना ऑफ़लाइन करने से ऑनलाइन प्राप्त डाइजेस्ट पर भरोसे की समस्या हल नहीं होती।

चरण 2: स्थानीय रूप से SHA-256 की गणना करें

messenger.apk की जगह अपनी डाउनलोड की हुई फ़ाइल का नाम लिखें। ये उदाहरण फ़ाइल को पढ़ते हैं; उसे इंस्टॉल नहीं करते।

Linux:

sha256sum messenger.apk

macOS:

shasum -a 256 messenger.apk

Windows कमांड प्रॉम्प्ट:

certutil -hashfile messenger.apk SHA256

केवल प्रदर्शन के लिए इस्तेमाल किए गए स्पेस और अंग्रेज़ी अक्षरों के बड़े-छोटे रूप का अंतर नज़रअंदाज़ करते हुए पूरे डाइजेस्ट की तुलना करें। केवल शुरू या अंत के कुछ अक्षरों की तुलना न करें। अपेक्षित डाइजेस्ट को उसकी रिलीज़ और संस्करण की जानकारी के साथ रखें, ताकि तुलना दोहराई जा सके।

यदि मान अलग हों, तो इंस्टॉल करने से पहले रुक जाएँ। बिल्ड आउटपुट और संस्करण जाँचें, उपयुक्त होने पर विश्वसनीय स्रोत से दोबारा डाउनलोड करें, और जिस बेमेल का कारण स्पष्ट न हो उसके बारे में प्रकाशक से पूछें। संयोग से आपको मिली फ़ाइल से मेल कराने के लिए अपेक्षित चेकसम को “ठीक” न करें।

चरण 3: APK के हस्ताक्षर की जाँच करें

Android SDK Build Tools का उपयोग करने वालों के लिए Google के apksigner दस्तावेज़ हस्ताक्षर सत्यापन और प्रमाणपत्र की जानकारी दिखाने की प्रक्रिया समझाते हैं:

apksigner verify --verbose --print-certs messenger.apk

APK द्वारा समर्थित प्लेटफ़ॉर्म के लिए सत्यापन सफल होना चाहिए। उसके हस्ताक्षरकर्ता के प्रमाणपत्र की जानकारी की तुलना किसी विश्वसनीय रिलीज़ रिकॉर्ड या प्रकाशक द्वारा दस्तावेज़ों में दिए गए हस्ताक्षर कुंजियों के क्रमिक इतिहास से करें। किसी अपरिचित कुंजी से किए गए हस्ताक्षर केवल “सत्यापित” शब्द दिखने से भरोसेमंद नहीं बन जाते। वैध रूप से हस्ताक्षर कुंजी बदलने के लिए भी प्रमाण चाहिए, न कि बेमेल को नज़रअंदाज़ करने का निर्देश।

APK फ़ाइल का SHA-256 डाइजेस्ट और उसके हस्ताक्षर प्रमाणपत्र का SHA-256 फ़िंगरप्रिंट अलग-अलग मान हैं। एक की तुलना दूसरे से न करें।

चरण 4: पुनरुत्पादनीय बिल्ड के प्रमाण तलाशें

बिल्ड को दोबारा उसी रूप में बनाने के दावे के लिए सोर्स का रिविज़न, बिल्ड वातावरण, निर्देश और लक्षित आउटपुट स्पष्ट होना चाहिए। स्वतंत्र पक्षों को उस आउटपुट को दोबारा बनाकर परिणाम की तुलना करने में सक्षम होना चाहिए। Reproducible Builds परियोजना की परिभाषा इन इनपुट को दावे का हिस्सा मानती है।

किसी मैसेंजर के लिए उपयोगी रिलीज़ प्रमाणों में सोर्स टैग, निश्चित किए गए डिपेंडेंसी और टूलचेन संस्करण, बिल्ड निर्देश और स्वतंत्र तुलना के परिणाम शामिल हैं। पूछें कि ठीक किस चीज़ की तुलना की गई: बिना हस्ताक्षर वाला आउटपुट, हस्ताक्षरित APK या पैकेज के कुछ चुनिंदा हिस्से। केवल सोर्स कोड और डाउनलोड फ़ाइल का हैश प्रकाशित होने से पुनरुत्पादनीयता का निष्कर्ष न निकालें।

पुनरुत्पादनीयता समीक्षा किए गए सोर्स और वितरित किए गए कोड के बीच संबंध को मज़बूत करती है। यह बिना समीक्षा वाले कार्यान्वयन को सुरक्षित प्रोटोकॉल नहीं बनाती और न ही यह साबित करती है कि चल रहे फ़ोन में घुसपैठ नहीं हुई है।

Livara के Proof Lab की भूमिका

Livara का Proof Lab APK का हैश स्थानीय रूप से निकालकर उसके प्रकाशित डाइजेस्ट से तुलना करने की सुविधा देता है। उसके क्रिप्टोग्राफ़िक प्रदर्शन का दायरा पूरे मैसेजिंग प्रोटोकॉल के ऑडिट से छोटा है। हैश जाँच को उसके बताए गए उद्देश्य के लिए, अपेक्षित रिलीज़ और हस्ताक्षर की जानकारी के साथ इस्तेमाल करें; इसे पुनरुत्पादनीय बिल्ड या बैकडोर न होने का स्वतंत्र प्रमाण न मानें।

खतरा मॉडल स्पष्ट रूप से उस सीमा का उल्लेख करता है जो तब लागू होती है जब APK और उसका दिखाया गया डाइजेस्ट दोनों बदले जा सकते हों। इसीलिए आपके संदर्भ मान का स्रोत उतना ही महत्वपूर्ण है जितना गणना सही तरीके से करना।

अक्सर पूछे जाने वाले सवाल

क्या चेकसम का मेल साबित करता है कि APK सुरक्षित है?

नहीं। विश्वसनीय संदर्भ और हैश के सुरक्षा गुणों को मानते हुए, यह केवल संदर्भ डाइजेस्ट से मेल स्थापित करता है। यह प्रोग्राम के व्यवहार का आकलन नहीं करता।

यदि चेकसम मेल खाता है, तो क्या हस्ताक्षर सत्यापन अनावश्यक है?

नहीं। दोनों जाँचें अलग-अलग प्रमाण देती हैं। हस्ताक्षर पैकेज की अखंडता को किसी कुंजी से जोड़ता है; फ़ाइल डाइजेस्ट बाइटों के एक विशेष क्रम की पहचान करता है।

क्या स्टोर से डाउनलोड की गई फ़ाइल को वेबसाइट के APK हैश से मेल खाना चाहिए?

केवल तभी, जब दोनों से एक ही बिल्ड आउटपुट होने की अपेक्षा हो। पहले रिलीज़ चैनल, संस्करण और पैकेजिंग जाँचें। जिस बेमेल का कारण स्पष्ट न हो, उसकी जाँच होनी चाहिए; उसे न तो अपने आप आरोप का आधार बनाएँ, न ही अपने आप स्वीकार कर लें।

क्या ये जाँचें मेरे फ़ोन में पहले से मौजूद स्पाइवेयर का पता लगा सकती हैं?

नहीं। ये इंस्टॉलेशन के लिए बने आउटपुट का आकलन करती हैं, डिवाइस की वर्तमान रनटाइम स्थिति के हर घटक का नहीं।

Proof Lab में अपना बिल्ड सत्यापित करें
CONTINUE THE THREADAndroid & device security ↗
YOU’VE REACHED THE ENDBack to the reading room ↗