Gå til innholdet
Tilbake til Nymchat

Kunnskapsgrunnlag Under panseret

Verifiserer bygget

Åpen kildekode hjelper bare hvis koden du kjører er koden som var publisert. Nymchat er bygget deterministisk slik at du kan sjekke det selv, fra innsiden av app eller fra en terminal.

Reproduserbare bygg

Å bygge appen avgir en build-manifest.json som inneholder kildebekreftelsen, en SHA-256-hash for hver servert HTML-, JavaScript- og CSS-element, og en enkelt bundleHash over hele aktivasettet.

Utgangen avhenger bare av kildeinnholdet - selv den registrerte byggetiden er commits tidsstempel i stedet for øyeblikket byggingen kjørte - så alle som bygger om det samme commit får byte-identiske filer og det samme bundleHash.

En GitHub-handling gjenoppbygger deretter hver forpliktelse uavhengig og signerer byggeherkomst attester for hashen og manifestet, så det er en signert post som knytter en bundleHash til en commit i depotet, produsert av noe annet enn utplassering.

Hva Om-dialogen sjekker

Om i overskriften kjører sjekken live, i nettleseren din.

Nymchat About-dialogen som viser versjonen, byggeintegritet og garanterer kanariøystatus.
Dialogboksen Om: versjon, byggeintegritet, garanti kanarifugl og en direkte linje til utvikleren.

Den henter på nytt hver ressurs siden faktisk kjører, hasheser den med Web Crypto API og sammenligner med manifestet. Så - og dette er den delen som betyr noe - det beregner på nytt bundleHash fra hashen den bare beregnet, ikke fra alt manifestet hevder, og slår det opp i depotets signerte attester gjennom GitHub API.

Det er det som stopper en distribusjon fra å gå god for seg selv: servere modifiserte filer sammen med et samsvarende manifest mislykkes fortsatt, fordi den omberegnet hashen ikke har noen attestasjon.

StatusBetyr
&sjekke; Verifisert offisiell app (n/n)Hvert aktiva samsvarer, den omberegnet bunt-hash attesteres av depotet, og siden serveres fra det offisielle domenet.
⚠ Verifisert bygg · ikke den offisielle appenKoden er ekte og attestert, men dette er et speil på et annet domene. Et speil kan ikke fjerne denne advarselen uten sviktende verifisering.
✗ MismatchEn eiendel hash ikke til det manifestet sier.
✗ Uoffisiell konstruksjonDen omberegnede pakkehashen har ingen attestasjon fra depotet – et selvlaget manifest.
⚠ Herkomst uoppnåeligGitHub API kunne ikke nås, så attestasjonen kunne ikke sjekkes uansett.

Verifiserer det selv

Gjenoppbygg navnene på commit the About-dialogboksen og sammenlign:

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 utskrevne hashen skal samsvare med både den i Om-dialogen og den i den forpliktelsen oppsummering av bygge-herkomst. Du kan også sjekke signaturen direkte med GitHub CLI:

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

Warrantkanarifuglen

En garanti kanarifugl er en erklæring, publisert på en fast tidsplan, som utvikleren har ikke mottatt en hemmelig myndighetsordre de er forbudt å avsløre — a National Security Letter, en FISA-ordre. Utvikleren kan bli tvunget til å tie om en slik ordre, men kan ikke tvinges til å lyve, så kanarifuglen blir foreldet eller forsvinner selve signalet.

Den bor i canary.json ved roten av depotet og hentes direkte fra GitHub, så historien kan revideres uavhengig av hva det distribuerte nettstedet sier. Dialogboksen Om fargekoder det:

FargeBetyr
Grønn – alt klartSignert, gjeldende og signaturen samsvarer med utviklerens nøkkel. Ingen hemmelig ordre er mottatt.
Gul — forsinket, eller ikke helt klartDen ble ikke oppdatert etter den angitte datoen, eller dens allClear flagget er falskt. En fortiet ordre kan ikke utelukkes.
Rød — ugyldig signatur, eller borteSignaturen samsvarer ikke med utviklerens nøkkel, eller filen har blitt fjernet helt. Behandle dette som en alvorlig advarsel.

Friskhetsankeret

Den signerte kanarifuglen legger inn den siste Bitcoin-blokkhøyden og hashen i signeringsøyeblikket. Den hasjen kunne ikke vært kjent før blokken eksisterte, noe som beviser at kanarifuglen var det signert etter et bestemt tidspunkt i stedet for forhåndssignert i bulk måneder tidligere. Dialogboksen Om kobler ankeret til en blokkutforsker slik at du kan sjekke det.