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.
Tato stránka je pro usnadnění přeložena strojově. Platí anglický originál.
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.
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í aplikace | Kó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. |
| ✗ Neshoda | Aktivum 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:
| Barva | Prostř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.