Spring til indholdet
Tilbage til Nymchat

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.

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.

Nymchat Om-dialogen, der viser versionen, build-integritet og garanterer kanarie-status.
Dialogen Om: version, bygningsintegritet, garanterer canary og en direkte linje til udvikleren.

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.

StatusMidler
✓ 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 appKoden 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.
✗ UoverensstemmelseEt aktiv hash ikke til, hvad manifestet siger.
✗ Uofficiel konstruktionDen genberegnede bundle-hash har ingen attest fra lageret - et selvfremstillet manifest.
⚠ Herkomst uopnåeligGitHub 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:

FarveMidler
Grøn - alt klartSigneret, aktuel og signaturen matcher udviklerens nøgle. Der er ikke modtaget nogen hemmelig ordre.
Gul — forsinket, eller ikke helt klartDen 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ækSignaturen 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.