Məzmuna keçin
Nymchat səhifəsinə qayıt

Bilik bazası Başlıq altında

Quraşdırmanın yoxlanılması

Açıq mənbə yalnız işlətdiyiniz kod əvvəlki koddursa kömək edir nəşr edilmişdir. Nymchat deterministik şəkildə qurulub ki, içəridən özünüz yoxlayasınız proqramdan və ya terminaldan.

Təkrarlana bilən quruluşlar

Tətbiqin qurulması a build-manifest.json mənbə öhdəliyini ehtiva edən, a Hər təqdim edilən HTML, JavaScript və CSS aktivinin SHA-256 hash və tək bundleHash bütün aktiv dəsti üzərində.

Çıxış yalnız mənbə məzmunundan asılıdır - hətta qeydə alınmış tikinti vaxtı belədir Quraşdırmanın başa çatdığı andan deyil, öhdəliyin vaxt damğası - buna görə də hər kəs eyni şeyi yenidən qurar commit bayt-eyni faylları alır və eyni bundleHash.

GitHub Fəaliyyəti sonra hər bir öhdəliyi müstəqil şəkildə yenidən qurur və tikinti sübutunu imzalayır hash və manifest üçün attestations, belə ki, tying imzalanmış rekord var bundleHash deyil, başqa bir şey tərəfindən istehsal edilən depoda bir öhdəliyə yerləşdirmə.

Haqqında dialoq nəyi yoxlayır

Haqqında başlıqda yoxlama canlı olaraq brauzerinizdə aparılır.

Versiyanı göstərən Nymchat Haqqında dialoq, bütövlüyü qurmaq və kanareyka statusunu təmin etmək.
Haqqında dialoq: versiya, bütövlük, zəmanət kanaryası və tərtibatçıya birbaşa xətt.

O, səhifənin əslində işlədiyi hər bir aktivi yenidən gətirir, onu Web Crypto API ilə hash edir və manifestlə müqayisə edir. Sonra - və bu vacib olan hissədir - bu yenidən hesablayır bundleHash hashlardan o -dən deyil, sadəcə hesablanıb açıq-aşkar iddia etdiyi hər şeyi və deponun imzalanmış sertifikatlarına baxır GitHub API vasitəsilə.

Bu, yerləşdirmənin özünə zəmanət verməsini dayandıran şeydir: dəyişdirilmiş fayllarla birlikdə xidmət göstərmək uyğun manifest hələ də uğursuz olur, çünki yenidən hesablanmış hashın təsdiqi yoxdur.

Vəziyyətdeməkdir
&yoxlayın; Doğrulanmış rəsmi proqram (n/n)Hər bir aktiv uyğun gəlir, yenidən hesablanmış paket hashı repozitoriya tərəfindən təsdiqlənir, səhifə rəsmi domendən xidmət göstərir.
⚠ Təsdiqlənmiş quruluş · rəsmi proqram deyilKod orijinaldır və təsdiqlənmişdir, lakin bu, başqa domendə güzgüdür. Güzgü yoxlamadan keçmədən bu xəbərdarlığı silə bilməz.
✗ UyğunsuzluqAktiv manifestdə deyilənlərə uyğun gəlmir.
✗ Qeyri-rəsmi quruluşYenidən hesablanmış paket hashının anbardan heç bir təsdiqi yoxdur — özü tərəfindən hazırlanmış manifest.
⚠ Mənşəyi əldə etmək mümkün deyilGitHub API-yə çatmaq mümkün olmadı, buna görə də attestasiyanı hər iki yolla yoxlamaq mümkün olmadı.

Bunu özünüz yoxlayın

Haqqında dialoq adlarını yerinə yetirməyi yenidən qurun və müqayisə edin:

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>"

Çap edilmiş hash həm Haqqında dialoq qutusunda, həm də həmin öhdəlikdəki ilə uyğun olmalıdır qurma mənşəli qaçış xülasəsi. İmzanı birbaşa GitHub CLI ilə yoxlaya bilərsiniz:

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

Android və iOS proqramları

Yuxarıdakı yoxlama veb-tətbiq yoxlamasıdır və səbəbi açıq şəkildə ifadə etməyə dəyər: yerli proqram özünə eyni şeyi edə bilməz. Telefonunuzda işləyən kod deyil, tərtib edilmiş maşın kodudur mənbə depodadır və proqramın cihazda hesablaya biləcəyi heç bir şey onunla əlaqəli deyil başqa.

Android növbəti ən yaxşı şeyi edə bilər. Quraşdırılmış .apk proqramın oxuya biləcəyi fayldır və hash və hər dərc edilmiş buraxılışın hashı artıq açıqdır: nəşriyyat Zapstore APK-nın SHA-256 və onun imza sertifikatının SHA-256-nı daşıyan Nostr hadisəsini imzalayır. Belə ki, Android Haqqında dialoq işlədiyi APK-nı hesh edir, imzalananları gətirir hadisələr, yalnız tərtibatçının açarı ilə imzalananları saxlayır və müqayisə edir. İkisini göstərir heshlər də var, beləliklə cihazın yoxlanışını təkrarlaya bilərsiniz: dərc edilmiş APK-ni yükləyin, işə salın sha256sum üzərində və eyni hadisəyə özünüz baxın.

Google Play-dən quraşdırılmış proqram bu şəkildə yoxlanıla bilməzGoogle hər bir yüklüyünü öz anahtarı ilə yenisign edir və hər bir cihaz üçün ayrı bir APK yaratır, belə ki, telefonunuzda yerləşdirilən dosya geliştiricinin istehsal etdiyi dosya deyil və hash-i yayımlanmayacağı heç bir şeyə eşidmir.

iOS ümumiyyətlə yoxlanıla bilməz. Apple hər yükləməni şifrələyir və yenidən imzalayır fərdi olaraq, buna görə də iPhone-da hesablanmış hash sizin iPhone üçün unikaldır və heç bir şeyə uyğun gəlmir hər yerdə dərc olunur. Haqqında dialoqu bunu əminlik verici deyil, açıq şəkildə deyir heç nə demək olmayan status. Nymchat istəyirsinizsə, Apple aparatında yoxlaya bilərsiniz, internetdən istifadə edin işlədiyi hər faylı yoxlayan proqram.

Bunların heç biri nəyi sübut etmir

Tətbiqin öz üzərində işlədiyi yoxlama proqramın dürüst olduğunu sübut edə bilməz - onu dəyişdirən şəxs çeki də silə bilər. Bunun sübut etdiyi adi haldır: sizi kopyalayan quraşdırılmış nəşr edilmiş nüsxədir. Buna dəyər, çünki dəyər verir müqayisələr açıqdır, ona görə də sizdən başqa kimsə onları yoxlaya və razılaşmaya bilər.

Zəmanət kanareyası

Zəmanət kanaryası, tərtibatçının sahib olduğu müəyyən bir cədvəl üzrə dərc edilmiş bir bəyanatdır yox onlara açıqlaması qadağan edilmiş gizli dövlət sifarişi almışlar — a Milli Təhlükəsizlik Məktubu, FISA əmri. Tərtibatçı bu barədə susmağa məcbur edilə bilər belə bir sifarişdir, lakin yalan danışmağa məcbur edilə bilməz, buna görə də kanareyka köhnəlir və ya yox olur. özü siqnaldır.

İçində yaşayır canary.json deponun kökündə yerləşir və birbaşa gətirilir GitHub-dan, ona görə də onun tarixçəsi yerləşdirilən saytın dediklərindən asılı olmayaraq yoxlanıla bilər. Haqqında dialoq onu rənglə kodlayır:

Rəngdeməkdir
Yaşıl - hər şey aydındırİmzalanmış, cari və imza tərtibatçının açarına uyğun gəlir. Heç bir gizli sifariş alınmayıb.
Sarı — vaxtı keçmiş və ya hər şey aydın deyilGöstərilən tarixə və ya ona görə təzələnmədi allClear bayraq yalandır. Susdurulmuş sifarişi istisna etmək olmaz.
Qırmızı — etibarsız imza və ya getdiİmza tərtibatçının açarı ilə uyğun gəlmir və ya fayl tamamilə silinib. Bunu ciddi bir xəbərdarlıq kimi qəbul edin.

Təzəlik lövbəri

İmzalanmış kanareyka, imzalanma anında ən son Bitcoin blokunun hündürlüyünü və hashını özündə cəmləşdirir. Blok mövcud olmadan əvvəl bu hash bilinə bilməzdi, bu da kanareyanın olduğunu sübut edir imzaladı sonra aylar əvvəl toplu şəkildə əvvəlcədən imzalanmış deyil, müəyyən bir zaman nöqtəsi. Haqqında dialoqu lövbəri blok tədqiqatçısına bağlayır ki, siz onu yoxlaya biləsiniz.