Vidensgrundlag Under hætten
Bekræftelse af bygningen
Open source hjælper kun, hvis den kode, du kører, er den kode, der var offentliggjort. Nymchat er bygget deterministisk, så du selv kan tjekke det inde fra app eller fra en terminal.
Denne side er maskinoversat for nemheds skyld. Den engelske original er den version, der gælder.
Reproducerbare opbygninger
Opbygning af appen udsender en build-manifest.json indeholdende kilden begå, en
SHA-256 hash af hver serveret HTML, JavaScript og CSS aktiv, og en enkelt
bundleHash over hele det aktivsæt.
Outputtet afhænger kun af kildeindholdet - selv den registrerede byggetid er den
commits tidsstempel snarere end det øjeblik, hvor builden kørte - så enhver, der genopbygger det samme
commit får byte-identiske filer og det samme bundleHash.
En GitHub Action genopbygger derefter hver commit uafhængigt og underskriver build-herkomst
attester for hashen og manifestet, så der er en underskrevet post, der binder en
bundleHash til en commit i depotet, produceret af noget andet end
indsættelse.
Hvad kontrollerer dialogen Om
Om i overskriften kører kontrollen live, i din browser.
Det genhenter hvert aktiv, siden faktisk kører, hash det med Web Crypto API og
sammenligner med manifestet. Så - og det er den del, der betyder noget - det
genberegner bundleHash fra hasherne det bare beregnet, ikke fra
alt, hvad manifestet hævder, og slår det op i depotets underskrevne attester
gennem GitHub API.
Det er det, der forhindrer en implementering i at stå inde for sig selv: servere modificerede filer sammen med et matchende manifest mislykkes stadig, fordi den genberegnede hash ikke har nogen attest.
| Status | Midler |
|---|---|
| ✓ Verificeret officiel app (n/n) | Hvert aktiv matcher, den genberegnet bundle-hash attesteres af depotet, og siden serveres fra det officielle domæne. |
| ⚠ Verificeret build · ikke den officielle app | Koden er ægte og attesteret, men dette er et spejl på et andet domæne. Et spejl kan ikke fjerne denne advarsel uden at fejle bekræftelsen. |
| ✗ Uoverensstemmelse | Et aktiv hash ikke til, hvad manifestet siger. |
| ✗ Uofficiel konstruktion | Den genberegnede bundle-hash har ingen attest fra lageret - et selvfremstillet manifest. |
| ⚠ Herkomst uopnåelig | GitHub API kunne ikke nås, så attestationen kunne ikke kontrolleres på nogen måde. |
Bekræfter det selv
Genopbyg commit the About-dialognavnene 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 udskrevne hash skal matche både den i Om-dialogen og den i den commit's opsummering af bygge-herkomstkørsel. Du kan også tjekke signaturen direkte med GitHub CLI:
gh attestation verify dist/build-manifest.json --repo Spl0itable/NYM
Den berettigede kanariefugl
En garanti kanariefugl er en erklæring, offentliggjort efter en fast tidsplan, som bygherren har ikke modtaget en hemmelig regeringsordre, som de er forbudt at afsløre - en National Security Letter, en FISA-ordre. Udvikleren kan tvinges til at tie om sådan en ordre, men kan ikke tvinges til at lyve, så kanariefuglen bliver forældet eller forsvinder er sig selv signalet.
Den bor i canary.json i roden af depotet og hentes direkte
fra GitHub, så dens historie kan revideres uafhængigt af, hvad den installerede side siger.
Dialogen Om farvekoder det:
| Farve | Midler |
|---|---|
| Grøn - alt klart | Signeret, aktuel og signaturen matcher udviklerens nøgle. Der er ikke modtaget nogen hemmelig ordre. |
| Gul — forsinket, eller ikke helt klart | Den blev ikke opdateret af dens angivne dato eller dens allClear flag er falsk. En forstummet ordre kan ikke udelukkes. |
| Rød — ugyldig underskrift, eller væk | Signaturen matcher ikke udviklerens nøgle, eller filen er blevet fjernet helt. Behandl dette som en alvorlig advarsel. |
Friskhedsankeret
Den signerede kanariefugl indlejrer den seneste Bitcoin-blokhøjde og hash i underskrivelsesøjeblikket. Den hash kunne ikke have været kendt, før blokken eksisterede, hvilket beviser, at kanariefuglen var det underskrevet efter et specifikt tidspunkt i stedet for forhåndsunderskrevet i bulk måneder tidligere. Dialogen Om linker ankeret til en blokudforsker, så du kan tjekke det.