Preskočiť na obsah
Späť na Nymchat

Znalostná báza Pod kapotou

Overenie zostavy

Open source pomáha iba vtedy, ak kód, ktorý používate, je kód, ktorý bol zverejnené. Nymchat je postavený deterministicky, takže si to môžete skontrolovať sami zvnútra aplikácie alebo z terminálu.

Reprodukovateľné zostavy

Vytvorenie aplikácie vydáva a build-manifest.json obsahujúci zdrojový commit, a SHA-256 hash každého poskytnutého podkladu HTML, JavaScript a CSS a jedného bundleHash nad celým týmto súborom aktív.

Výstup závisí len od zdrojového obsahu – dokonca aj zaznamenaný čas zostavenia je časovú pečiatku odovzdania namiesto momentu spustenia zostavy – takže ktokoľvek prebuduje to isté commit dostane bajtovo identické súbory a to isté bundleHash.

Akcia GitHub potom prebuduje každý záväzok nezávisle a podpíše pôvod zostavenia atestácie pre hash a manifest, takže existuje podpísaný záznam viažuci a bundleHash na odovzdanie v úložisku, vytvorené niečím iným ako nasadenie.

Čo kontroluje dialógové okno Informácie

O v hlavičke spustí kontrolu naživo vo vašom prehliadači.

Dialógové okno O Nymchat, ktoré zobrazuje verziu, integritu zostavy a stav záruky.
Dialógové okno Informácie: verzia, integrita zostavy, záruka a priama linka na vývojára.

Znova načítava každé aktívum, na ktorom je stránka skutočne spustená, hašuje ho pomocou rozhrania Web Crypto API a porovnáva s manifestom. Potom – a to je tá časť, na ktorej záleží – to prepočítava bundleHash z hashov to len vypočítané, nie z čokoľvek, čo manifest tvrdí, a vyhľadá to v podpísaných atestáciách úložiska cez GitHub API.

To je to, čo bráni nasadeniu ručiť za seba: obsluhovať upravené súbory spolu s zodpovedajúci manifest stále zlyhá, pretože prepočítaný hash nemá žiadne osvedčenie.

StavProstriedky
&skontrolovať; Overená oficiálna aplikácia (n/n)Každé aktívum sa zhoduje, prepočítaný haš zväzku je potvrdený úložiskom, a stránka je obsluhovaná z oficiálnej domény.
⚠ Overená zostava · nie je oficiálnou aplikáciouKód je pravý a overený, ale toto je zrkadlo na inej doméne. Zrkadlo nemôže odstrániť toto varovanie bez neúspešného overenia.
✗ NesúladAktívum nehašuje to, čo hovorí manifest.
✗ Neoficiálne zostaveniePrepočítaný haš zväzku nemá žiadne potvrdenie z úložiska – vlastný manifest.
⚠ Miesto pôvodu je nedosiahnuteľnéRozhranie GitHub API sa nepodarilo dosiahnuť, takže atestáciu nebolo možné skontrolovať ani v jednom prípade.

Overte si to sami

Obnovte názvy dialógov o odovzdaní a porovnajte:

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

Vytlačený hash by sa mal zhodovať s hashom v dialógovom okne About aj s hashom v tomto odovzdaní zhrnutie chodu výroby a výroby. Podpis môžete skontrolovať aj priamo pomocou GitHub CLI:

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

Aplikácie pre Android a iOS

Vyššie uvedená kontrola je kontrola webovej aplikácie a dôvod stojí za to povedať jasne: natívna aplikácia nemôže urobiť to isté sám sebe. To, čo beží na vašom telefóne, je skompilovaný strojový kód, nie zdroj v úložisku a nič, čo môže aplikácia vypočítať na zariadení, nesúvisí s iné.

Android dokáže ďalšiu najlepšiu vec. Nainštalované .apk je súbor, ktorý môže aplikácia čítať a hash a hash každého zverejneného vydania je už verejný: publikovanie do Zapstore podpíše udalosť Nostr nesúcu súbor APK SHA-256 a jeho podpisový certifikát SHA-256. Takže Android O dialógové okno hashuje súbor APK, z ktorého je spustený, a načíta podpísané súbory udalosti, ponecháva len tie podpísané kľúčom vývojára a porovnáva. Ukazuje to dvoch hash tiež, takže môžete zopakovať začiarknutie zariadenia: stiahnuť zverejnený súbor APK, spustiť sha256sum a pozrite sa na rovnakú udalosť sami.

Aplikáciu nainštalovanú zo služby Google Play nie je možné týmto spôsobom skontrolovať, a to nie je znamenie, že niečo nie je v poriadku. Google opätovne podpíše každé nahrávanie s vlastným kľúčom a vytvorí samostatný APK pre každé zariadenie, takže to, čo pristane na vašom telefóne, nie je súbor, ktorý vytvoril vývojár a jeho hash nezodpovedá ničomu, čo by mohlo byť publikované. Aplikácia rozpozná inštaláciu Play a hovorí, že skôr než hlásenie zlyhania.

iOS sa nedá skontrolovať vôbec. Apple zašifruje a znovu podpíše každé stiahnutie individuálne, takže hash vypočítaný na vašom iPhone je jedinečný pre váš iPhone a nič sa nezhoduje zverejnené kdekoľvek. Dialógové okno Informácie to hovorí priamo, namiesto toho, aby ukazovalo na upokojenie stav, ktorý nič neznamená. Ak chcete Nymchat, ktorý môžete overiť na hardvéri Apple, použite web aplikácia, ktorá kontroluje každý súbor, ktorý je spustený.

Čo nič z toho nedokazuje

Kontrola, že aplikácia beží sama o sebe, nemôže dokázať, že aplikácia je čestná – nech už ju upravil ktokoľvek mohol tiež odstrániť kontrolu. Dokazuje to obyčajný prípad: že vás kopíruje nainštalovaná je kópia, ktorá bola zverejnená. To sa oplatí mať, pretože si to váži porovnania sú verejné, takže ich môže skontrolovať niekto iný ako vy a nesúhlasiť.

Oprávnený kanárik

Warrant kanárik je vyhlásenie zverejnené podľa pevného harmonogramu, ktoré má developer nie dostali tajný vládny príkaz, ktorý je zakázané zverejniť — a Národný bezpečnostný list, príkaz FISA. Vývojár môže byť nútený mlčať takýto príkaz, ale nemožno ho prinútiť klamať, takže kanárik zatuchne alebo zmizne samotný signál.

Žije v canary.json v koreňovom adresári úložiska a načítava sa priamo z GitHub, takže jeho história je auditovateľná nezávisle od toho, čo hovorí nasadená stránka. Dialógové okno Informácie to farebne odlíši:

FarbaProstriedky
Zelená — všetko jasnéPodpísané, aktuálne a podpis sa zhoduje s kľúčom vývojára. Nebol prijatý žiadny tajný príkaz.
Žltá — po lehote splatnosti alebo nie je všetko jasnéNebolo obnovené podľa uvedeného dátumu alebo jeho allClear vlajka je falošná. Nie je možné vylúčiť umlčanie objednávky.
Červená — neplatný podpis alebo prečPodpis sa nezhoduje s kľúčom vývojára alebo bol súbor úplne odstránený. Berte to ako vážne varovanie.

Kotva čerstvosti

Podpísaný kanárik vkladá najnovšiu výšku bitcoinového bloku a hash v momente podpisu. Tento hash nemohol byť známy skôr, ako blok existoval, čo dokazuje, že kanárik ním bol podpísané po v konkrétnom časovom okamihu, a nie vopred hromadne podpísané mesiace skôr. Dialógové okno Informácie spája kotvu s prieskumníkom blokov, aby ste ju mohli skontrolovať.