پایگاه دانش زیر کاپوت
تایید ساخت
منبع باز تنها در صورتی کمک می کند که کدی که اجرا می کنید همان کدی باشد که بود منتشر شده است. Nymchat به طور قطعی ساخته شده است، بنابراین شما می توانید خودتان آن را از داخل بررسی کنید برنامه یا از یک ترمینال
این صفحه برای سهولت به صورت ماشینی ترجمه شده است. نسخه اصلی انگلیسی نسخه ای است که اعمال می شود.
ساخت های قابل تکرار
ساخت برنامه یک را منتشر می کند build-manifest.json حاوی تعهد منبع، الف
هش SHA-256 از هر دارایی HTML، جاوا اسکریپت و CSS ارائه شده و یک واحد
bundleHash بیش از کل مجموعه دارایی
خروجی فقط به محتوای منبع بستگی دارد - حتی زمان ساخت ضبط شده نیز همین است
مُهر زمانی commit به جای لحظه اجرای بیلد - بنابراین هر کسی که همان را بازسازی کند
commit فایل های یکسان بایت و همینطور دریافت می کند bundleHash.
سپس یک GitHub Action هر commit را بهطور مستقل بازسازی میکند و منشأ ساخت را امضا میکند
گواهی برای هش و مانیفست، بنابراین یک رکورد امضا شده وجود دارد که a
bundleHash به یک تعهد در مخزن، تولید شده توسط چیزی غیر از
استقرار
آنچه را که گفتگوی About بررسی می کند
درباره در هدر چک را به صورت زنده در مرورگر شما اجرا می کند.
هر دارایی را که صفحه در حال اجرا است دوباره واکشی می کند، آن را با Web Crypto API هش می کند و
با آشکار مقایسه می کند. سپس - و این بخشی است که مهم است - آن
را دوباره محاسبه می کند bundleHash از هش ها آن را فقط محاسبه شده است، نه از
هر چیزی که مانیفست ادعا می کند، و آن را در گواهی های امضا شده مخزن بررسی می کند
از طریق API GitHub.
این همان چیزی است که یک استقرار را از تضمین خود باز می دارد: ارائه فایل های اصلاح شده همراه با یک مانیفست منطبق همچنان ناموفق است، زیرا هش مجدد محاسبه شده گواهی ندارد.
| وضعیت | به معنی |
|---|---|
| &بررسی برنامه رسمی تأیید شده (n/n) | هر دارایی مطابقت دارد، هش بسته مجدد محاسبه شده توسط مخزن تأیید می شود. و صفحه از دامنه رسمی ارائه می شود. |
| ⚠ ساخت تایید شده · برنامه رسمی نیست | کد اصلی و تایید شده است، اما این یک آینه در دامنه دیگری است. یک آینه نمی تواند این هشدار را بدون انجام تأیید صحت حذف کند. |
| ✗ عدم تطابق | دارایی با آنچه مانیفست می گوید هش نمی کند. |
| ✗ ساخت غیر رسمی | هش بستهای که مجدداً محاسبهشده است، هیچ تأییدی از مخزن ندارد - یک مانیفست خودساخته. |
| ⚠ منشأ غیر قابل دسترس | دسترسی به API GitHub امکانپذیر نیست، بنابراین گواهی به هیچ وجه قابل بررسی نیست. |
خودت تاییدش کنی
commit نام های گفتگوی About را دوباره بسازید و مقایسه کنید:
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>"
هش چاپ شده باید هم با یکی در گفتگوی About و هم در آن commit مطابقت داشته باشد خلاصه اجرای ساخت و منشأ همچنین میتوانید امضا را مستقیماً با GitHub CLI بررسی کنید:
gh attestation verify dist/build-manifest.json --repo Spl0itable/NYM
برنامه های اندروید و iOS
چک بالا یک بررسی برنامه وب است، و دلیل آن را باید به صراحت بیان کرد: یک برنامه بومی نمی تواند همین کار را با خودش انجام دهد آنچه روی تلفن شما اجرا می شود، کد ماشین کامپایل شده است، نه کد منبع در مخزن است، و هیچ چیزی که برنامه نمی تواند روی دستگاه محاسبه کند، آن را به آن مرتبط نمی کند دیگر
اندروید می تواند بهترین کار بعدی را انجام دهد. نصب شده .apk فایلی است که برنامه می تواند بخواند
و هش، و هش هر نسخه منتشر شده در حال حاضر عمومی است: انتشار به
Zapstore
رویداد Nostr حاوی SHA-256 APK و گواهی امضای SHA-256 آن را امضا می کند. بنابراین
اندروید درباره دیالوگ APK را که از آن اجرا می شود هش می کند، موارد امضا شده را واکشی می کند
رویدادها، فقط موارد امضا شده توسط کلید توسعه دهنده را نگه می دارد و مقایسه می کند. این دو را نشان می دهد
همچنین هش میکند، بنابراین میتوانید چک کردن دستگاه را تکرار کنید: APK منتشر شده را دانلود کنید، اجرا کنید
sha256sum روی آن، و خودتان به همان رویداد نگاه کنید.
برنامه نصب شده از Google Play را نمی توان با این روش بررسی کردگوگل هر اپلیکیشن را با کلید خود امضا می کند و یک APK جداگانه برای هر دستگاه ایجاد می کند، بنابراین آنچه روی گوشی شما زمین می کند، فایل تولید کننده نیست و هشچ آن چیزی نیست که می تواند منتشر شود. برنامه یک اپلیکیشن Play را شناسایی می کند و چنین می گوید به جای گزارش شکست.
iOS اصلا قابل بررسی نیست. اپل هر بارگیری را رمزگذاری می کند و دوباره امضا می کند به صورت جداگانه، بنابراین هش محاسبه شده در آیفون شما منحصر به فرد آیفون شما است و با هیچ چیز مطابقت ندارد منتشر شده در هر جایی گفتگوی About این را آشکارا به جای نشان دادن اطمینان می گوید وضعیتی که معنی ندارد اگر Nymchat میخواهید میتوانید روی سختافزار Apple تأیید کنید، از وب استفاده کنید برنامه ای که هر فایلی را که در حال اجرا است بررسی می کند.
چکی که یک برنامه روی خودش اجرا میکند نمیتواند صادق بودن برنامه را ثابت کند - هر کسی که آن را تغییر داده است می تواند چک را نیز حذف کند چیزی که ثابت می کند یک مورد معمولی است: اینکه شما را کپی می کند نصب شده نسخه ای است که منتشر شده است. این ارزش داشتن را دارد زیرا برای آن ارزش قائل است مقایسهها عمومی هستند، بنابراین شخص دیگری غیر از شما میتواند آنها را بررسی کند و با آن مخالفت کند.
قناری گارانتی
قناری گارانتی بیانیهای است که در یک برنامه زمانبندی ثابت منتشر شده است که توسعهدهنده آن را دارد نه یک دستور مخفی دولتی دریافت کرده اند که از افشای آنها منع شده اند - الف نامه امنیت ملی، یک دستور FISA. می توان توسعه دهنده را مجبور کرد که در مورد آن سکوت کند چنین دستوری است، اما نمی توان آن را مجبور به دروغ گفتن کرد، بنابراین قناری کهنه یا ناپدید می شود خود سیگنال
در آن زندگی می کند canary.json در ریشه مخزن قرار دارد و مستقیماً واکشی می شود
از GitHub، بنابراین تاریخچه آن مستقل از هر چیزی که سایت مستقر می گوید قابل ممیزی است.
گفتگوی About آن را کد رنگی می کند:
| رنگ | به معنی |
|---|---|
| سبز - همه چیز روشن است | امضا، فعلی و امضا با کلید توسعه دهنده مطابقت دارد. هیچ دستور محرمانه ای دریافت نشده است. |
| زرد - عقب افتاده، یا همه چیز مشخص نیست | تا تاریخ اعلام شده یا آن به روز نشد allClear پرچم دروغ است دستور خاموشی را نمی توان رد کرد. |
| قرمز - امضای نامعتبر یا از بین رفته است | امضا با کلید توسعه دهنده مطابقت ندارد یا فایل به طور کامل حذف شده است. با این به عنوان یک هشدار جدی برخورد کنید. |
لنگر طراوت
قناری امضا شده آخرین ارتفاع بلوک بیت کوین و هش آن را در لحظه امضا درج می کند. این هش نمیتوانست قبل از وجود بلوک شناخته شده باشد، که ثابت میکند قناری بوده است امضا کرد بعد از یک نقطه زمانی خاص به جای اینکه ماه ها قبل به صورت انبوه از قبل امضا شده باشد. گفتگوی About لنگر را به یک بلوک کاوشگر پیوند می دهد تا بتوانید آن را بررسی کنید.