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.
Denne siden er maskinoversatt for enkelhets skyld. Den engelske originalen er versjonen som gjelder.
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.
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.
| Status | Betyr |
|---|---|
| &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 appen | Koden er ekte og attestert, men dette er et speil på et annet domene. Et speil kan ikke fjerne denne advarselen uten sviktende verifisering. |
| ✗ Mismatch | En eiendel hash ikke til det manifestet sier. |
| ✗ Uoffisiell konstruksjon | Den omberegnede pakkehashen har ingen attestasjon fra depotet – et selvlaget manifest. |
| ⚠ Herkomst uoppnåelig | GitHub 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
Android- og iOS-appene
Sjekken ovenfor er en web-app-sjekk, og årsaken er verdt å si tydelig: en innebygd app kan ikke gjøre det samme mot seg selv. Det som kjører på telefonen din er kompilert maskinkode, ikke kilden i depotet, og ingenting appen kan beregne på enheten relaterer en til annet.
Android kan gjøre det nest beste. Den installerte .apk er en fil appen kan lese
og hash, og hashen til hver publisert utgivelse er allerede offentlig: publisering til
Zapstore
signerer en Nostr-hendelse som bærer APKs SHA-256 og signeringssertifikatets SHA-256. Så den
Android Om dialog hasheser APK-en den kjører fra, henter de signerte
hendelser, beholder bare de som er signert av utviklerens nøkkel, og sammenligner. Det viser de to
hashes også, slik at du kan gjenta avmerkingen av enheten: last ned den publiserte APK-en, kjør
sha256sum på den, og se på den samme hendelsen selv.
En app installert fra Google Play kan ikke sjekkes på denne måten, og det er ikke et tegn på at noe er galt. Google re-signerer hver opplasting med sin egen nøkkel og bygger en egen APK for hver enhet, så hva som lander på telefonen din er ikke filen utvikleren produserte og dens hash matcher ingenting som kunne bli publisert. Appen gjenkjenner en Play installasjon og sier det i stedet for å rapportere en feil.
iOS kan ikke sjekkes i det hele tatt. Apple krypterer og signerer på nytt hver nedlasting individuelt, så en hash beregnet på din iPhone er unik for din iPhone og matcher ingenting publisert hvor som helst. Om-dialogen sier dette rett ut i stedet for å vise en betryggende status som ikke betyr noe. Hvis du vil ha en Nymchat kan du verifisere på Apple-maskinvare, bruk nettet app, som sjekker hver fil den kjører.
En sjekk en app kjører på seg selv kan ikke bevise at appen er ærlig - den som endret den kunne fjerne sjekken også. Det det beviser er det vanlige tilfellet: at kopien du installert er kopien som ble publisert. Det er verdt å ha fordi de verdsetter det sammenligninger er offentlige, så noen andre enn deg kan sjekke dem og være uenige.
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:
| Farge | Betyr |
|---|---|
| Grønn – alt klart | Signert, gjeldende og signaturen samsvarer med utviklerens nøkkel. Ingen hemmelig ordre er mottatt. |
| Gul — forsinket, eller ikke helt klart | Den ble ikke oppdatert etter den angitte datoen, eller dens allClear flagget er falskt. En fortiet ordre kan ikke utelukkes. |
| Rød — ugyldig signatur, eller borte | Signaturen 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.