Preskoči na vsebino
Nazaj v Nymchat

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.

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.

Pogovorno okno O Nymchatu, ki prikazuje različico, celovitost gradnje in zagotavlja status kanarčka.
Pogovorno okno O programu: različica, celovitost zgradbe, garancijski kanarček in neposredna povezava z razvijalcem.

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.

StanjePomeni
&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 aplikacijaKoda je pristna in potrjena, vendar je to ogledalo na drugi domeni. Zrcalo ne more odstraniti tega opozorila brez neuspešnega preverjanja.
✗ NeujemanjeSredstvo se ne ujema s tem, kar piše v manifestu.
✗ Neuradna zgradbaPonovno izračunana zgoščena vrednost svežnja nima potrdila iz repozitorija – lastnoročno izdelan manifest.
⚠ Izvor nedosegljivAPI-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.

Česa nič od tega ne dokazuje

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:

barvaPomeni
zelena — vse jasnoPodpisano, veljavno in podpis se ujema s ključem razvijalca. Prejeto ni bilo nobeno tajno naročilo.
Rumena — zamuja ali ni vse jasnoNi 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 izginilPodpis 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.