Hoppa till innehållet
Tillbaka till Nymchat

Kunskapsbas Under huven

Verifierar konstruktionen

Öppen källkod hjälper bara om koden du kör är den som var publiceras. Nymchat är byggt deterministiskt så att du kan kontrollera det själv, inifrån app eller från en terminal.

Reproducerbara konstruktioner

Att bygga appen avger en build-manifest.json som innehåller källans commit, a SHA-256-hash för varje serverad HTML-, JavaScript- och CSS-tillgång, och en singel bundleHash över hela tillgångsuppsättningen.

Utdata beror bara på källinnehållet - även den inspelade byggtiden är den commits tidsstämpel snarare än det ögonblick då bygget kördes - så alla som bygger om detsamma commit får byte-identiska filer och detsamma bundleHash.

En GitHub Action bygger sedan om varje commit oberoende och undertecknar bygghärkomst intyg för hashen och manifestet, så det finns en signerad post som knyter a bundleHash till en commit i förvaret, producerad av något annat än utplacering.

Vad kontrollerar dialogen Om

Om i rubriken körs kontrollen live, i din webbläsare.

Dialogrutan Nymchat Om, som visar versionen, byggintegritet och garanterar kanariefågelstatus.
Dialogrutan Om: version, byggintegritet, garanterar kanariefågel och en direktlinje till utvecklaren.

Den återhämtar varje tillgång som sidan faktiskt kör, hashas den med Web Crypto API och jämför med manifestet. Sedan - och det här är den del som betyder något - det räknar om bundleHash från hasharna det bara beräknat, inte från allt som manifestet hävdar, och letar upp det i förvarets undertecknade intyg genom GitHub API.

Det är det som hindrar en distribution från att garantera sig själv: servera modifierade filer tillsammans med ett matchande manifest misslyckas fortfarande, eftersom den omräknade hashen inte har något attestation.

StatusMedel
&kontrollera; Verifierad officiell app (n/n)Varje tillgång matchar, den omräknade pakethashen intygas av förvaret, och sidan serveras från den officiella domänen.
⚠ Verifierad konstruktion · inte den officiella appenKoden är äkta och bestyrkt, men det här är en spegel på en annan domän. En spegel kan inte ta bort denna varning utan att verifieringen misslyckas.
✗ MissmatchEn tillgång hash inte till vad manifestet säger.
✗ Inofficiell konstruktionDen omräknade pakethashen har inget intyg från förvaret – ett självgjort manifest.
⚠ Ursprung oåtkomligtGitHub API kunde inte nås, så attestationen kunde inte kontrolleras på något sätt.

Verifierar det själv

Bygg om commit the About-dialognamnen och jämför:

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

Den utskrivna hashen bör matcha både den i Om-dialogrutan och den i den commitens bygg-härkomst kör sammanfattning. Du kan också kontrollera signaturen direkt med GitHub CLI:

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

Den beordrade kanariefågeln

En warrant canary är ett uttalande, publicerat enligt ett fast schema, som byggherren har inte fått en hemlig regeringsorder som de är förbjudna att avslöja — a National Security Letter, en FISA-order. Utvecklaren kan tvingas vara tyst om en sådan order, men kan inte tvingas att ljuga, så kanariefågeln försvinner eller försvinner själv signalen.

Den bor i canary.json i roten av förvaret och hämtas direkt från GitHub, så dess historik kan granskas oberoende av vad den distribuerade webbplatsen säger. Dialogrutan Om färgkodar det:

FärgMedel
Grön – allt klartSignerad, aktuell och signaturen matchar utvecklarens nyckel. Ingen hemlig order har mottagits.
Gul — försenad, eller inte helt klartDen uppdaterades inte av det angivna datumet eller dess allClear flaggan är falsk. En nedtystad order kan inte uteslutas.
Röd — ogiltig signatur, eller bortaSignaturen matchar inte utvecklarens nyckel, eller så har filen tagits bort helt. Behandla detta som en allvarlig varning.

Friskhetsankaret

Den signerade kanariefågeln bäddar in den senaste Bitcoin-blockhöjden och hashen vid undertecknandet. Den haschen kunde inte ha varit känd innan blocket existerade, vilket bevisar att kanariefågeln var det undertecknad efter en specifik tidpunkt snarare än förhandstecknad i bulk månader tidigare. Dialogrutan Om länkar ankaret till en blockutforskare så att du kan kontrollera det.