Baza znanja Pod pokrovom
Preverjanje zgradbe
Odprta koda pomaga le, če je koda, ki jo izvajate, koda, ki je bila objavljeno. Nymchat je zgrajen deterministično, tako da lahko to preverite sami, od znotraj aplikacije ali iz terminala.
Ta stran je zaradi priročnosti strojno prevedena. Velja angleški izvirnik.
Ponovljive zgradbe
Gradnja aplikacije oddaja a build-manifest.json ki vsebuje izvorno potrditev, a
Zgoščena vrednost SHA-256 vsakega uporabljenega sredstva HTML, JavaScript in CSS ter enega samega
bundleHash nad tem celotnim naborom sredstev.
Izhod je odvisen le od izvorne vsebine - tudi zabeleženi čas gradnje je pomemben
časovni žig potrditve namesto trenutka, ko se je izdelava izvajala — tako da vsakdo, ki znova gradi isto
commit dobi bajtno enake datoteke in iste bundleHash.
Dejanje GitHub nato znova zgradi vsako objavo neodvisno in podpiše izvor gradnje
potrdila za hash in manifest, tako da obstaja podpisan zapis, ki povezuje a
bundleHash na objavo v repozitoriju, ki jo je ustvaril nekaj drugega kot
uvajanje.
Kaj preveri pogovorno okno O programu
O tem v glavi zažene preverjanje v živo v vašem brskalniku.
Ponovno pridobi vsako sredstvo, ki se stran dejansko izvaja, ga zgosti z vmesnikom Web Crypto API in
primerja z manifestom. Potem - in to je tisti del, ki je pomemben - to
ponovno izračuna bundleHash iz hašiša to samo izračunano, ne iz
vse, kar zahteva manifest, in to poišče v podpisanih potrdilih skladišča
prek API-ja GitHub.
To je tisto, kar prepreči, da bi uvedba jamčila zase: streženje spremenjenih datotek skupaj z ujemajoči se manifest še vedno ne uspe, ker ponovno izračunana zgoščena vrednost nima potrdila.
| Stanje | Pomeni |
|---|---|
| &preveri; Preverjena uradna aplikacija (n/n) | Vsako sredstvo se ujema, ponovno izračunano zgoščeno vrednost svežnja potrdi repozitorij, in stran je postrežena z uradne domene. |
| ⚠ Preverjena zgradba · ni uradna aplikacija | Koda je pristna in potrjena, vendar je to ogledalo na drugi domeni. Zrcalo ne more odstraniti tega opozorila brez neuspešnega preverjanja. |
| ✗ Neujemanje | Sredstvo se ne ujema s tem, kar piše v manifestu. |
| ✗ Neuradna zgradba | Ponovno izračunana zgoščena vrednost svežnja nima potrdila iz repozitorija – lastnoročno izdelan manifest. |
| ⚠ Izvor nedosegljiv | API-ja GitHub ni bilo mogoče doseči, zato potrdila tako ali tako ni bilo mogoče preveriti. |
Preverite sami
Ponovno zgradite objavo imen pogovornega okna O in primerjajte:
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>"
Natisnjena zgoščena vrednost se mora ujemati s tisto v pogovornem oknu About in s tisto v tej objavi povzetek poteka gradnje-provenence. Podpis lahko preverite tudi neposredno z GitHub CLI:
gh attestation verify dist/build-manifest.json --repo Spl0itable/NYM
Aplikacije za Android in iOS
Zgornje preverjanje je preverjanje spletne aplikacije in razlog je vredno jasno navesti: izvorna aplikacija sam sebi ne more narediti iste stvari. Kar teče v vašem telefonu, je prevedena strojna koda, ne koda vir v repozitoriju in nič, kar aplikacija lahko izračuna v napravi, ni povezano z drugo.
Android lahko naredi naslednjo najboljšo stvar. Nameščen .apk je datoteka, ki jo aplikacija lahko prebere
in hash, in hash vsake objavljene izdaje je že javen: objava v
Zapstore
podpiše dogodek Nostr, ki nosi SHA-256 APK-ja in SHA-256 njegovega podpisnega potrdila. Torej
Android O tem pogovorno okno zgosti APK, iz katerega se izvaja, pridobi podpisane
dogodke, hrani samo tiste, ki so podpisani s ključem razvijalca, in jih primerja. Prikazuje oba
tudi hashe, tako da lahko ponovite preverjanje naprave: prenesite objavljeni APK, zaženite
sha256sum na njem in si oglejte isti dogodek sami.
Aplikacije, nameščene iz Google Play, ni mogoče preveriti na ta način, in to ni znak, da je vse narobe. Google ponovno podpiše vsako nalaganje z lastnim ključem in ustvari ločen APK za vsako napravo, tako da tisto, kar pristane na vašem telefonu, ni datoteka, ki jo je proizvedel razvijalec, in njegov hash ne ujema ničesar, kar bi bilo mogoče objaviti. Aplikacija prepozna Play namestitev in tako pravi, namesto da poroča o napaki.
iOS sploh ni mogoče preveriti. Apple šifrira in znova podpiše vsak prenos posamično, tako da je zgoščena vrednost, izračunana na vašem iPhoneu, edinstvena za vaš iPhone in se ne ujema z ničemer objavljen kjerkoli. V pogovornem oknu O tem je to jasno navedeno, namesto da bi bilo pomirjujoče status, ki ne pomeni nič. Če želite Nymchat, ki ga lahko preverite na Applovi strojni opremi, uporabite splet aplikacijo, ki preveri vsako datoteko, ki jo izvaja.
Preverjanje, ki ga izvaja aplikacija sama, ne more dokazati, da je aplikacija poštena – kdor koli jo je spremenil lahko odstrani tudi ček. To dokazuje običajen primer: da vas kopirajo nameščena je kopija, ki je bila objavljena. To je vredno imeti, ker to ceni primerjave so javne, tako da jih lahko kdo drug razen vas preveri in se ne strinja.
Upravni kanarček
Nalogni kanarček je izjava, objavljena po določenem urniku, ki jo ima razvijalec ne prejel tajni vladni ukaz, ki ga je prepovedano razkriti — a Dopis o nacionalni varnosti, odredba FISA. Razvijalca je mogoče prisiliti, da o tem molči takšen ukaz, vendar ga ni mogoče prisiliti v laž, zato kanarček zastara ali izgine sam signal.
Živi v canary.json v korenu repozitorija in se pridobi neposredno
iz GitHuba, tako da je njegovo zgodovino mogoče revidirati neodvisno od tega, kar piše na nameščenem mestu.
Pogovorno okno O tem je barvno kodirano:
| barva | Pomeni |
|---|---|
| zelena — vse jasno | Podpisano, veljavno in podpis se ujema s ključem razvijalca. Prejeto ni bilo nobeno tajno naročilo. |
| Rumena — zamuja ali ni vse jasno | Ni bil osvežen do navedenega datuma ali njegovega allClear zastava je lažna. Zamolčanega naročila ni mogoče izključiti. |
| Rdeča — neveljaven podpis ali izginil | Podpis se ne ujema s ključem razvijalca ali pa je bila datoteka v celoti odstranjena. Vzemite to kot resno opozorilo. |
Sidro svežine
Podpisani kanarček v trenutku podpisa vdela zadnjo višino bloka Bitcoin in zgoščeno vrednost. Ta hash ni mogel biti znan, preden je blok obstajal, kar dokazuje, da je bil kanarček podpisan po določeno časovno točko, namesto vnaprej podpisanih več mesecev prej. Pogovorno okno About povezuje sidro z raziskovalcem blokov, tako da ga lahko preverite.