انتقل إلى المحتوى
العودة إلى Nymchat

قاعدة المعرفة تحت غطاء محرك السيارة

التحقق من البناء

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

بنيات قابلة للتكرار

يؤدي إنشاء التطبيق إلى إصدار أ build-manifest.json يحتوي على التزام المصدر، أ تجزئة SHA-256 لكل أصل HTML وJavaScript وCSS معروض وواحد bundleHash على مجموعة الأصول بأكملها.

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

يقوم إجراء GitHub بعد ذلك بإعادة بناء كل التزام بشكل مستقل ويوقع على مصدر البناء شهادات التجزئة والبيان، لذلك هناك سجل موقع يربط أ bundleHash للالتزام في المستودع، الذي تم إنتاجه بواسطة شيء آخر غير النشر.

ما الذي يتحقق منه مربع الحوار "حول".

عن في الرأس يتم تشغيل الشيك مباشرة في متصفحك.

مربع الحوار Nymchat About، الذي يعرض الإصدار ويضمن التكامل ويضمن حالة الكناري.
مربع الحوار "حول": الإصدار، وتكامل البناء، وضمان الكناري، والخط المباشر للمطور.

فهو يعيد جلب كل أصل تعمل عليه الصفحة فعليًا، ويجزئه باستخدام Web Crypto API، ثم يقارن ضد البيان. ثم - وهذا هو الجزء المهم - يعيد حساب bundleHash من التجزئة هو - هي تحسب فقط، وليس من أي شيء يدعيه البيان، ويبحث عن ذلك في الشهادات الموقعة للمستودع من خلال واجهة برمجة تطبيقات GitHub.

هذا هو ما يمنع النشر من ضمان نفسه: تقديم الملفات المعدلة مع لا يزال البيان المطابق يفشل، لأن التجزئة المعاد حسابها لا تحتوي على شهادة.

حالةوسائل
&يفحص؛ التطبيق الرسمي الذي تم التحقق منه (n/n)يتطابق كل أصل، ويتم التصديق على تجزئة الحزمة المُعاد حسابها بواسطة المستودع، و يتم تقديم الصفحة من المجال الرسمي.
⚠ تم التحقق من البنية · ليس التطبيق الرسميالكود أصلي وموثق، ولكنه مرآة لمجال آخر. لا يمكن للمرآة إزالة هذا التحذير دون فشل عملية التحقق.
✗ عدم التطابقلا يتم تجزئة الأصل إلى ما يقوله البيان.
✗ بناء غير رسميلا تحتوي تجزئة الحزمة المُعاد حسابها على شهادة من المستودع — وهو بيان تم إعداده ذاتيًا.
⚠ المصدر لا يمكن الوصول إليهتعذر الوصول إلى واجهة برمجة تطبيقات GitHub، لذلك لا يمكن التحقق من الشهادة في كلتا الحالتين.

التحقق من ذلك بنفسك

أعد إنشاء أسماء مربعات الحوار حول الالتزام وقارن:

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

تطبيقات Android و iOS

الفحص أعلاه هو فحص لتطبيق الويب، والسبب يستحق ذكره بوضوح: تطبيق أصلي لا يستطيع أن يفعل نفس الشيء لنفسه. ما يتم تشغيله على هاتفك هو رمز الجهاز المترجم، وليس رمز الجهاز المصدر في المستودع، ولا شيء يمكن للتطبيق حسابه على الجهاز يتعلق بالمصدر أخرى.

يمكن لنظام Android أن يفعل الشيء الأفضل التالي. المثبتة .apk هو ملف يمكن للتطبيق قراءته والتجزئة، وتكون تجزئة كل إصدار منشور عامة بالفعل: النشر إلى Zapstore يوقع على حدث Nostr يحمل SHA-256 الخاص بـ APK وشهادة التوقيع الخاصة به SHA-256. لذلك أندرويد عن يقوم مربع الحوار بتجزئة ملف APK الذي يعمل منه، ويجلب الملفات الموقعة الأحداث، ويحتفظ فقط بالأحداث الموقعة بواسطة مفتاح المطور، ويقارنها. ويظهر الاثنين التجزئات أيضًا، حتى تتمكن من تكرار التحقق من الجهاز: قم بتنزيل ملف APK المنشور، ثم قم بتشغيله sha256sum عليه، وإلقاء نظرة على نفس الحدث بنفسك.

لا يمكن التحقق من التطبيق المثبت من Google Play بهذه الطريقة، وهذا ليس علامة على ما إذا كان شيء خاطئ. Google يتم تسجيل كل إرسال مع مفتاحه الخاص وتصنيع APK منفصل لكل جهاز ، لذلك ما يقع على هاتفك ليس الملف الذي أُجريت له المدير التنفيذي وتتوافق مع أي شيء يمكن أن يتم نشره. يُعرف التطبيق عن تثبيت Play ويقول ذلك بدلاً من التقرير عن فشل.

لا يمكن التحقق من iOS على الإطلاق. تقوم Apple بتشفير كل تنزيل وإعادة تسجيله بشكل فردي، لذا فإن التجزئة المحسوبة على جهاز iPhone الخاص بك تكون فريدة لجهاز iPhone الخاص بك ولا تتطابق مع أي شيء نشرت في أي مكان. يوضح مربع الحوار "حول" هذا الأمر بشكل صريح بدلاً من إظهار ما يبعث على الاطمئنان الوضع الذي لا يعني شيئا. إذا كنت تريد Nymchat، يمكنك التحقق منه على أجهزة Apple، فاستخدم الويب التطبيق، الذي يقوم بالتحقق من كل ملف قيد التشغيل.

ما لا يثبته أي من هذا

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

كناري الوصية

مذكرة الكناري هي بيان منشور وفقًا لجدول زمني محدد لدى المطور لا تلقوا أمرًا حكوميًا سريًا يُحظر عليهم الكشف عنه - أ خطاب الأمن القومي، أمر قانون مراقبة الاستخبارات الأجنبية (FISA). يمكن إجبار المطور على التزام الصمت مثل هذا الأمر، ولكن لا يمكن إجباره على الكذب، لذلك يصبح الكناري قديمًا أو يختفي نفسها الإشارة.

يعيش في canary.json في جذر المستودع ويتم جلبه مباشرة من GitHub، لذا فإن تاريخه قابل للتدقيق بشكل مستقل عما يقوله الموقع المنشور. يقوم مربع الحوار "حول" بترميز الألوان إلى ما يلي:

لونوسائل
أخضر — كل شيء واضحموقعة وحالية والتوقيع يطابق مفتاح المطور. ولم يتم تلقي أي أمر سري.
أصفر - تأخر موعد استحقاقه، أو لم يكن كل شيء واضحًالم يتم تحديثه بتاريخه المعلن أو بتاريخه allClear العلم كاذب. ولا يمكن استبعاد الأمر الصامت.
أحمر — توقيع غير صالح، أو ذهبالتوقيع لا يتطابق مع مفتاح المطور، أو تمت إزالة الملف بالكامل. تعامل مع هذا كتحذير خطير.

مرساة النضارة

يشتمل الكناري الموقع على أحدث ارتفاع لكتلة البيتكوين والتجزئة في وقت التوقيع. لا يمكن أن يكون هذا التجزئة معروفًا قبل وجود الكتلة، مما يثبت أن الكناري كان معروفًا وقعت بعد نقطة زمنية محددة بدلاً من التوقيع المسبق بكميات كبيرة قبل أشهر. يقوم مربع الحوار "حول" بربط المرساة بمستكشف الكتل حتى تتمكن من التحقق منها.