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.
Această pagină este tradusă automat pentru comoditate. Originalul în limba engleză este versiunea care se aplică.
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.
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.
| Stare | Mijloace |
|---|---|
| &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. |
| ✗ Nepotrivire | Un 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 inaccesibil | API-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:
| Culoare | Mijloace |
|---|---|
| Verde — totul clar | Semnat, curent și semnătura se potrivește cu cheia dezvoltatorului. Nu a fost primit niciun ordin secret. |
| Galben — întârziat sau nu este clar | Nu 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ărut | Semnă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.