सामग्री पर जाएं
निमचैट को लौटें

ज्ञानधार हुड के नीचे

निर्माण का सत्यापन

ओपन सोर्स केवल तभी मदद करता है जब आप जो कोड चला रहे हैं वह वही कोड है जो पहले था प्रकाशित. निमचैट को निश्चित रूप से बनाया गया है ताकि आप इसे स्वयं, अंदर से जांच सकें ऐप या टर्मिनल से।

प्रतिलिपि प्रस्तुत करने योग्य निर्माण

ऐप बनाने से एक उत्सर्जन होता है build-manifest.json स्रोत प्रतिबद्धता युक्त, ए प्रत्येक प्रस्तुत HTML, JavaScript और CSS परिसंपत्ति का SHA-256 हैश और एक एकल bundleHash उस संपूर्ण संपत्ति सेट पर।

आउटपुट केवल स्रोत सामग्री पर निर्भर करता है - यहां तक कि रिकॉर्ड किया गया निर्माण समय भी है निर्माण के चलने के क्षण के बजाय कमिट का टाइमस्टैम्प - इसलिए कोई भी इसे फिर से बना सकता है कमिट को बाइट-समान फ़ाइलें और वही मिलती हैं bundleHash.

फिर GitHub एक्शन प्रत्येक कमिट को स्वतंत्र रूप से पुनर्निर्माण करता है और बिल्ड-प्रोवेंस पर हस्ताक्षर करता है हैश और मेनिफेस्ट के लिए सत्यापन, इसलिए एक हस्ताक्षरित रिकॉर्ड बांध रहा है bundleHash रिपॉजिटरी में किसी प्रतिबद्धता के लिए, इसके अलावा किसी अन्य चीज़ द्वारा उत्पादित तैनाती.

अबाउट डायलॉग क्या जाँचता है

के बारे में हेडर में आपके ब्राउज़र में चेक लाइव चलता है।

निमचैट अबाउट संवाद, संस्करण दिखाते हुए, अखंडता का निर्माण करता है और कैनरी स्थिति की गारंटी देता है।
संवाद के बारे में: संस्करण, निर्माण अखंडता, वारंट कैनरी और डेवलपर के लिए एक सीधी रेखा।

यह वास्तव में पेज पर चल रहे प्रत्येक एसेट को पुनः प्राप्त करता है, इसे वेब क्रिप्टो एपीआई के साथ हैश करता है, और प्रकट के विरुद्ध तुलना करता है। फिर - और यही वह हिस्सा है जो मायने रखता है - यह की पुनर्गणना करता है bundleHash हैश से यह अभी गणना की है, से नहीं मैनिफ़ेस्ट में जो कुछ भी दावा किया गया है, और उसे रिपॉजिटरी के हस्ताक्षरित सत्यापन में देखा जाता है GitHub API के माध्यम से।

यही वह चीज़ है जो किसी परिनियोजन को स्वयं के लिए प्रमाणित करने से रोकती है: संशोधित फ़ाइलों को एक साथ प्रस्तुत करना मिलान मैनिफ़ेस्ट अभी भी विफल रहता है, क्योंकि पुनर्गणना किए गए हैश का कोई सत्यापन नहीं है।

स्थितिमतलब
&जाँच करना; सत्यापित आधिकारिक ऐप (एन/एन)प्रत्येक परिसंपत्ति का मिलान होता है, पुनर्गणना किए गए बंडल हैश को रिपॉजिटरी द्वारा प्रमाणित किया जाता है, और पेज आधिकारिक डोमेन से परोसा जाता है।
⚠ सत्यापित बिल्ड · आधिकारिक ऐप नहींकोड वास्तविक और प्रमाणित है, लेकिन यह किसी अन्य डोमेन का दर्पण है। सत्यापन में असफल हुए बिना दर्पण इस चेतावनी को नहीं हटा सकता।
✗ बेमेलकिसी परिसंपत्ति में मेनिफ़ेस्ट में कही गई बातों पर कोई असर नहीं पड़ता है।
✗ अनौपचारिक निर्माणपुनर्गणना किए गए बंडल हैश का भंडार से कोई सत्यापन नहीं है - एक स्व-निर्मित प्रकटीकरण।
⚠ उद्गम अप्राप्यGitHub API तक नहीं पहुंचा जा सका, इसलिए सत्यापन की किसी भी तरह से जाँच नहीं की जा सकी।

इसकी पुष्टि आप खुद कर रहे हैं

संवाद नामों के बारे में प्रतिबद्धता का पुनर्निर्माण करें और तुलना करें:

git clone https://github.com/Spl0itable/NYM
cd NYM
git checkout <commit shown in the About dialog>
npm ci
npm run build   # prints "Build hash: <bundleHash>"

मुद्रित हैश को अबाउट डायलॉग और उस कमिट के दोनों से मेल खाना चाहिए बिल्ड-प्रोवेंस रन सारांश। आप सीधे GitHub CLI से भी हस्ताक्षर की जांच कर सकते हैं:

gh attestation verify dist/build-manifest.json --repo Spl0itable/NYM

एंड्रॉइड और आईओएस ऐप

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

एंड्रॉइड अगला सबसे अच्छा काम कर सकता है। स्थापित .apk एक फ़ाइल है जिसे ऐप पढ़ सकता है और हैश, और प्रत्येक प्रकाशित रिलीज़ का हैश पहले से ही सार्वजनिक है: प्रकाशन के लिए Zapstore एपीके के SHA-256 और उसके हस्ताक्षर प्रमाणपत्र के SHA-256 वाले एक नोस्ट्र इवेंट पर हस्ताक्षर करता है। तो एंड्रॉइड के बारे में डायलॉग जिस एपीके से चल रहा है उसे हैश करता है, हस्ताक्षरित लोगों को लाता है ईवेंट, केवल डेवलपर की कुंजी द्वारा हस्ताक्षरित ईवेंट रखता है, और तुलना करता है। यह दो को दर्शाता है हैश भी, ताकि आप डिवाइस की जांच दोबारा कर सकें: प्रकाशित एपीके डाउनलोड करें, चलाएं sha256sum उस पर, और उसी घटना को स्वयं देखें।

Google Play से इंस्टॉल किए गए ऐप को इस तरह से चेक नहीं किया जा सकता है, और यह संकेत नहीं है कि कुछ भी गलत है। गूगल प्रत्येक अपलोड को अपनी कुंजी के साथ फिर से साइन करता है और प्रत्येक डिवाइस के लिए एक अलग एपीके बनाता है, इसलिए आपके फोन पर जो आता है वह डेवलपर द्वारा बनाई गई फ़ाइल नहीं है और इसका हैश कुछ भी प्रकाशित नहीं हो सकता है। ऐप एक प्ले इंस्टॉल को पहचानता है और विफलता की रिपोर्ट करने के बजाय ऐसा कहता है। स्वयं एक बिल्ड की जांच करने के लिए, सीधे प्रकाशित एपीके इंस्टॉल करें।

iOS को बिल्कुल भी चेक नहीं किया जा सकता. Apple प्रत्येक डाउनलोड को एन्क्रिप्ट और पुन: हस्ताक्षरित करता है व्यक्तिगत रूप से, इसलिए आपके iPhone पर गणना किया गया हैश आपके iPhone के लिए अद्वितीय है और किसी भी चीज़ से मेल नहीं खाता है कहीं भी प्रकाशित. अबाउट डायलॉग आश्वस्त करने के बजाय इसे स्पष्ट रूप से कहता है स्थिति जिसका कोई मतलब नहीं है। यदि आप Nymchat चाहते हैं तो आप Apple हार्डवेयर पर सत्यापित कर सकते हैं, वेब का उपयोग करें ऐप, जो चल रही प्रत्येक फ़ाइल की जाँच करता है।

इनमें से कोई भी क्या साबित नहीं करता

किसी ऐप द्वारा स्वयं चलाया गया चेक यह साबित नहीं कर सकता कि ऐप ईमानदार है - जिसने भी इसे संशोधित किया है चेक भी हटा सकता है. यह जो साबित करता है वह सामान्य मामला है: वह आपकी नकल है स्थापित वह प्रति है जिसे प्रकाशित किया गया था। यह रखने लायक है क्योंकि यह इसे महत्व देता है तुलनाएँ सार्वजनिक होती हैं, इसलिए आपके अलावा कोई अन्य व्यक्ति उनकी जाँच कर सकता है और असहमत हो सकता है।

वारंट कैनरी

वारंट कैनरी एक बयान है, जो डेवलपर के पास एक निश्चित समय पर प्रकाशित होता है नहीं एक गुप्त सरकारी आदेश प्राप्त हुआ जिसे प्रकट करने से उन्हें मना किया गया है - a राष्ट्रीय सुरक्षा पत्र, एक FISA आदेश। डेवलपर को चुप रहने के लिए मजबूर किया जा सकता है ऐसा आदेश, लेकिन झूठ बोलने के लिए मजबूर नहीं किया जा सकता है, इसलिए कैनरी बासी हो रही है या गायब हो रही है स्वयं संकेत.

वो में रहता है canary.json रिपॉजिटरी के मूल में और सीधे लाया जाता है GitHub से, इसलिए तैनात साइट जो कुछ भी कहती है, उसका इतिहास स्वतंत्र रूप से सुनने योग्य है। अबाउट डायलॉग इसे रंग-कोड करता है:

रंगमतलब
हरा - सब साफहस्ताक्षरित, वर्तमान, और हस्ताक्षर डेवलपर की कुंजी से मेल खाता है। कोई गुप्त आदेश नहीं मिला है.
पीला - अतिदेय, या सब कुछ स्पष्ट नहींइसे इसकी बताई गई तारीख या इसके द्वारा ताज़ा नहीं किया गया था allClear झंडा झूठा है. एक मौन आदेश से इंकार नहीं किया जा सकता।
लाल -अमान्य हस्ताक्षर, या चला गयाहस्ताक्षर डेवलपर की कुंजी से मेल नहीं खाता है, या फ़ाइल पूरी तरह से हटा दी गई है। इसे एक गंभीर चेतावनी मानें.

ताजगी का लंगर

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