Treci la conținut
Înapoi la Nymchat

Baza de cunoștințe Sub capotă

Se verifică construcția

Sursa deschisă ajută doar dacă codul pe care îl executați este codul care a fost publicat. Nymchat este construit în mod determinist, astfel încât să puteți verifica asta singur, din interiorul aplicație sau de pe un terminal.

Construcții reproductibile

Construirea aplicației emite a build-manifest.json care conține comiterea sursă, a Hash SHA-256 pentru fiecare material HTML, JavaScript și CSS servit și unul singur bundleHash asupra întregului set de active.

Ieșirea depinde doar de conținutul sursă - chiar și timpul de construcție înregistrat este marca temporală a commit-ului, mai degrabă decât momentul în care a rulat construcția - deci oricine reconstruiește același lucru commit primește fișiere identice la octeți și la fel bundleHash.

O acțiune GitHub reconstruiește apoi fiecare commit în mod independent și semnează originea construcției atestări pentru hash și manifest, deci există o înregistrare semnată care leagă a bundleHash la un commit în depozit, produs de altceva decât de desfășurare.

Ce verifică dialogul Despre

Despre în antet rulează verificarea live, în browser.

Fereastra de dialog Nymchat Despre, care arată versiunea, integritatea construcției și garantează starea de canar.
Dialogul Despre: versiunea, integritatea construirii, garantează canar și o linie directă cu dezvoltatorul.

Preluează din nou fiecare material pe care pagina îl rulează de fapt, îl face hash cu API-ul Web Crypto și se compară cu manifestul. Apoi - și aceasta este partea care contează - ea recalculează bundleHash din hashuri ea doar calculat, nu de la orice pretinde manifestul și caută asta în atestările semnate ale depozitului prin API-ul GitHub.

Acesta este ceea ce oprește o implementare să se garanteze pentru sine: servirea fișierelor modificate împreună cu un manifest de potrivire încă eșuează, deoarece hashul recalculat nu are nicio atestare.

StareMijloace
&verifica; Aplicație oficială verificată (n/n)Fiecare material se potrivește, hash-ul pachetului recalculat este atestat de depozit, şi pagina este servită din domeniul oficial.
⚠ Versiunea verificată · nu este aplicația oficialăCodul este autentic și atestat, dar aceasta este o oglindă pe alt domeniu. O oglindă nu poate elimina acest avertisment fără a eșua verificarea.
✗ NepotrivireUn activ nu corespunde cu ceea ce spune manifestul.
✗ Construcție neoficialăHash-ul pachetului recalculat nu are nicio atestare din depozit - un manifest auto-realizat.
⚠ Proveniența inaccesibilAPI-ul GitHub nu a putut fi accesat, astfel încât atestarea nu a putut fi verificată în niciun caz.

Verificați singuri

Reconstruiți numele casetei de dialog Despre commit și comparați:

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

Hash-ul imprimat ar trebui să se potrivească atât cu cel din dialogul Despre, cât și cu cel din acel commit rezumatul executării build-provenency. De asemenea, puteți verifica semnătura direct cu CLI-ul GitHub:

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

Canarul de mandat

Un canar de mandat este o declarație, publicată pe un program fix, pe care dezvoltatorul o are nu a primit un ordin secret al guvernului pe care le este interzis să îl dezvăluie — a Scrisoare de securitate națională, un ordin FISA. Dezvoltatorul poate fi obligat să tacă un astfel de ordin, dar nu poate fi obligat să mintă, așa că canarul devine învechit sau dispare însuși semnalul.

Trăiește în canary.json la rădăcina depozitului și este preluat direct de la GitHub, astfel încât istoria sa este auditabilă independent de ceea ce spune site-ul implementat. Fereastra de dialog Despre codifică culorile:

CuloareMijloace
Verde — totul clarSemnat, curent și semnătura se potrivește cu cheia dezvoltatorului. Nu a fost primit niciun ordin secret.
Galben — întârziat sau nu este clarNu a fost reîmprospătat până la data declarată sau la data sa allClear steag este fals. O comandă redusă la tăcere nu poate fi exclusă.
Roşu — semnătură nevalidă sau dispărutSemnătura nu se potrivește cu cheia dezvoltatorului sau fișierul a fost eliminat în întregime. Tratează asta ca pe un avertisment serios.

Ancora de prospețime

Canarul semnat încorporează cea mai recentă înălțime a blocului Bitcoin și hash în momentul semnării. Acel haș nu ar fi putut fi cunoscut înainte de a exista blocul, ceea ce demonstrează că canarul a fost semnat după un anumit moment în timp, mai degrabă decât pre-semnat în vrac luni mai devreme. Fereastra de dialog Despre leagă ancora la un explorator de blocuri, astfel încât să o puteți verifica.