Přejít na obsah
Zpět k Nymchatu

Znalostní základna Pod kapotou

Ověření sestavení

Open source pomáhá pouze v případě, že kód, který používáte, je kód, který byl zveřejněno. Nymchat je postaven deterministicky, takže si to můžete ověřit sami zevnitř aplikace nebo z terminálu.

Reprodukovatelné sestavení

Vytvoření aplikace vydává a build-manifest.json obsahující zdrojové potvrzení, a SHA-256 hash každého poskytnutého podkladu HTML, JavaScript a CSS a jednoho bundleHash nad celým tímto souborem aktiv.

Výstup závisí pouze na zdrojovém obsahu – dokonce i zaznamenaný čas sestavení je spíše časové razítko commitu než okamžik spuštění sestavení – takže kdokoli přestaví totéž commit dostane bajtově identické soubory a to samé bundleHash.

Akce GitHub poté znovu sestaví každé potvrzení nezávisle a podepíše stav sestavení atestace pro hash a manifest, takže existuje podepsaný záznam svázaný a bundleHash k odevzdání v úložišti, vytvořeném něčím jiným než nasazení.

Co kontroluje dialogové okno O aplikaci

O v záhlaví spustí kontrolu živě ve vašem prohlížeči.

Dialog O Nymchatu zobrazující verzi, integritu sestavení a stav záruky.
Dialog O aplikaci: verze, integrita sestavení, záruka a přímá linka na vývojáře.

Znovu načte každé aktivum, na kterém stránka skutečně běží, hašuje ho pomocí rozhraní Web Crypto API a porovnává s manifestem. Pak – a to je ta část, na které záleží – to přepočítává bundleHash z hashů to jen vypočítané, ne z cokoliv, co manifest tvrdí, a vyhledá to v podepsaných atestacích úložiště prostřednictvím GitHub API.

To je to, co brání nasazení v ručení za sebe: obsluhovat upravené soubory společně s odpovídající manifest stále selže, protože přepočítaný hash nemá žádné ověření.

PostaveníProstředek
&kontrola; Ověřená oficiální aplikace (n/n)Každé aktivum se shoduje, přepočítaný hash balíčku je ověřen úložištěm, a stránka je obsluhována z oficiální domény.
⚠ Ověřené sestavení · není oficiální aplikaceKód je pravý a ověřený, ale toto je zrcadlo na jiné doméně. Zrcadlo nemůže toto varování odstranit, aniž by neprošlo ověřením.
✗ NeshodaAktivum nehašuje to, co říká manifest.
✗ Neoficiální sestaveníPřepočítaný haš svazku nemá žádné potvrzení z úložiště – vlastní manifest.
⚠ Provenience nedosažitelnáRozhraní GitHub API nebylo dostupné, takže atestaci nebylo možné zkontrolovat ani v jednom případě.

Ověřte si to sami

Znovu sestavte názvy dialogů o odevzdání a porovnejte:

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

Vytištěný hash by se měl shodovat jak s hashem v dialogovém okně About, tak s hashem v tomto odevzdání shrnutí běhu výroby a výroby. Podpis můžete také zkontrolovat přímo pomocí GitHub CLI:

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

Kanárek

Warrant kanár je prohlášení zveřejněné v pevném plánu, které má developer ne obdrželi tajný vládní příkaz, který je zakázáno zveřejňovat — a National Security Letter, příkaz FISA. Vývojář může být nucen o tom mlčet takový příkaz, ale nelze ho přinutit lhát, takže kanárek zatuchne nebo zmizí samotný signál.

Žije to v canary.json v kořenovém adresáři úložiště a načítá se přímo z GitHubu, takže jeho historii lze auditovat nezávisle na tom, co říká nasazený web. Dialog O aplikaci to barevně odlišuje:

BarvaProstředek
Zelený — vše jasnéPodepsaný, aktuální a podpis odpovídá klíči vývojáře. Nebyl přijat žádný tajný rozkaz.
Žluť — po splatnosti nebo není vše jasnéNebylo obnoveno svým uvedeným datem nebo jeho allClear vlajka je falešná. Umlčený příkaz nelze vyloučit.
Červený — neplatný podpis nebo pryčPodpis neodpovídá klíči vývojáře nebo byl soubor zcela odstraněn. Berte to jako vážné varování.

Kotva čerstvosti

Podepsaný kanárek obsahuje nejnovější výšku bitcoinového bloku a hash v okamžiku podpisu. Tento hash nemohl být znám před tím, než blok existoval, což dokazuje, že kanár byl podepsané po spíše než předem hromadně podepsané měsíce dříve. Dialog O aplikaci propojí kotvu s průzkumníkem bloků, abyste ji mohli zkontrolovat.