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
Aplikace pro Android a iOS
Výše uvedená kontrola je kontrola webové aplikace a důvod stojí za to uvést jasně: nativní aplikace nemůže udělat totéž pro sebe. To, co běží na vašem telefonu, je kompilovaný strojový kód, nikoli zdroj v úložišti a nic z toho, co může aplikace na zařízení vypočítat, s ním nesouvisí jiné.
Android umí další nejlepší věc. Nainstalovaný .apk je soubor, který může aplikace číst
a hash a hash každé publikované verze je již veřejný: publikování do
Zapstore
podepisuje událost Nostr nesoucí SHA-256 souboru APK a SHA-256 jeho podpisového certifikátu. Takže
Android O dialog hashuje soubor APK, ze kterého běží, a načte ty podepsané
události, uchovává pouze ty podepsané klíčem vývojáře a porovnává. Ukazuje ty dva
hash také, takže můžete zopakovat zaškrtnutí zařízení: stáhnout publikovaný APK, spustit
sha256sum a podívejte se na stejnou událost sami.
Aplikaci nainstalovanou z Google Play nelze tímto způsobem zkontrolovat, a to není znamení, že je něco špatně. Google znovu podepisuje každé nahrávání s vlastním klíčem a vytváří samostatný APK pro každé zařízení, takže to, co přistane na vašem telefonu, není soubor, který vytvořil vývojář a jeho hash se neshoduje s ničím, co by mohlo být zveřejněno. Aplikace rozpozná instalaci Play a říká, že spíše než hlášení selhání.
iOS nelze vůbec zkontrolovat. Apple zašifruje a znovu podepíše každé stažení individuálně, takže hash vypočítaný na vašem iPhone je jedinečný pro váš iPhone a nic se neshoduje zveřejněny kdekoliv. Dialogové okno O to říká přímo, místo aby ukazovalo uklidnění stav, který nic neznamená. Pokud chcete Nymchat, který můžete ověřit na hardwaru Apple, použijte web aplikace, která kontroluje každý spuštěný soubor.
Kontrola, že aplikace běží sama na sobě, nemůže prokázat, že je aplikace poctivá – ať už ji upravil kdokoli mohl také odstranit kontrolu. Dokazuje to běžný případ: že vás kopíruje nainstalována je kopie, která byla publikována. To stojí za to mít, protože si toho váží srovnání jsou veřejná, takže je může zkontrolovat a nesouhlasit někdo jiný než vy.
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.