Pereiti prie turinio
Grįžti į Nymchat

Žinių bazė Po gaubtu

Konstrukcijos tikrinimas

Atvirasis šaltinis padeda tik tuo atveju, jei naudojamas kodas yra toks, koks buvo paskelbta. „Nymchat“ sukurtas deterministiškai, todėl galite tai patikrinti patys iš vidaus programėlę arba iš terminalo.

Atkuriamos konstrukcijos

Programėlės kūrimas skleidžia a build-manifest.json kuriame yra šaltinio įsipareigojimas, a SHA-256 maiša kiekvienam teikiamam HTML, JavaScript ir CSS ištekliui ir vienam bundleHash per visą tą turto rinkinį.

Išvestis priklauso tik nuo šaltinio turinio – netgi įrašytas kūrimo laikas įsipareigojimo laiko žyma, o ne momentas, kai buvo paleistas kūrimas – taigi, bet kas atkuria tą patį commit gauna baitų tapačius failus ir tuos pačius bundleHash.

Tada „GitHub Action“ atkuria kiekvieną įsipareigojimą atskirai ir pasirašo kūrimo kilmę maišos ir manifesto patvirtinimai, todėl yra pasirašytas įrašas, susiejantis a bundleHash į įsipareigojimą saugykloje, kurį sukūrė kažkas kitas nei dislokavimas.

Ką tikrina dialogo langas Apie

Apie antraštėje paleidžiamas tiesioginis patikrinimas jūsų naršyklėje.

„Nymchat About“ dialogo langas, kuriame rodoma versija, konstrukcijos vientisumas ir garantuojamas „Canary“ statusas.
Dialogo langas Apie: versija, kūrimo vientisumas, garantija ir tiesioginė linija kūrėjui.

Jis iš naujo gauna kiekvieną išteklį, kurį puslapis iš tikrųjų veikia, sumaišo jį su Web Crypto API ir lygina su manifestu. Tada – ir tai yra svarbiausia dalis – tai perskaičiuoja bundleHash iš maišos tai tik paskaičiavo, o ne iš viskas, ko reikalauja manifestas, ir tai peržiūri saugyklos pasirašytuose patvirtinimuose per GitHub API.

Būtent tai neleidžia diegimui laiduoti už save: modifikuotų failų aptarnavimas kartu su atitikties manifestas vis tiek nepavyksta, nes perskaičiuota maiša neturi patvirtinimo.

BūsenaReiškia
✓ Patvirtinta oficiali programa (n/n)Kiekvienas išteklius atitinka, perskaičiuotą paketo maišą patvirtina saugykla, ir puslapis aptarnaujamas iš oficialaus domeno.
⚠ Patvirtinta konstrukcija · ne oficiali programaKodas yra autentiškas ir patvirtintas, tačiau tai yra kito domeno veidrodis. Veidrodis negali pašalinti šio įspėjimo be nesėkmingo patikrinimo.
✗ NeatitikimasTurtas neturi maišos su tuo, kas sakoma manifeste.
✗ Neoficiali konstrukcijaPerskaičiuota rinkinio maiša neturi saugyklos patvirtinimo – savaime sukurtas manifestas.
⚠ Kilmė nepasiekiamaNepavyko pasiekti „GitHub“ API, todėl patvirtinimo nepavyko patikrinti nė vienu būdu.

Pats tai patikrinęs

Iš naujo sukurkite įsipareigojimo dialogo lange Apie pavadinimus ir palyginkite:

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

Spausdinta maiša turi atitikti ir tą, kuri yra dialogo lange Apie, ir tą, kuri yra tame įsipareigojime statybos kilmės paleidimo santrauka. Taip pat galite patikrinti parašą tiesiogiai naudodami „GitHub CLI“:

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

„Android“ ir „iOS“ programos

Aukščiau pateiktas patikrinimas yra žiniatinklio programos patikrinimas, todėl verta aiškiai nurodyti priežastį: vietinė programa negali sau to paties padaryti. Tai, kas veikia jūsų telefone, yra sukompiliuotas mašinos kodas, o ne šaltinį saugykloje, ir niekas, ką programa gali apskaičiuoti įrenginyje, nesusijęs su kitas.

„Android“ gali padaryti kitą geriausią dalyką. Įdiegtas .apk yra failas, kurį programa gali nuskaityti ir maišos, o kiekvieno paskelbto leidimo maiša jau yra vieša: publikavimas į Zapstore pasirašo Nostr įvykį su APK SHA-256 ir jo pasirašymo sertifikatu SHA-256. Taigi, Android Apie dialogo langas sumaišo APK, iš kurio paleidžiamas, ir paima pasirašytus įvykius, pasilieka tik tuos, kuriuos pasirašė kūrėjo raktas, ir lygina. Tai rodo du maišos taip pat, kad galėtumėte pakartoti patikrinimą iš įrenginio: atsisiųskite paskelbtą APK, paleiskite sha256sum ant jo ir patys pažiūrėkite į tą patį įvykį.

Tokiu būdu negalima patikrinti programos, įdiegtos iš „Google Play“., ir tai nėra ženklas, kad kažkas negerai. "Google" iš naujo pasirašo kiekvieną įkėlimą su savo raktu ir sukuria atskirą APK kiekvienam įrenginiui, todėl tai, kas nusileidžia jūsų telefone, nėra kūrėjo sukurtas failas ir jo hash neatitinka nieko, kas galėtų būti paskelbta. programa atpažįsta "Play" diegimą ir sako, kad vietoj to, kad praneštų apie gedimą.

iOS iš viso negalima patikrinti. „Apple“ užšifruoja ir iš naujo pasirašo kiekvieną atsisiuntimą atskirai, todėl jūsų iPhone apskaičiuota maiša yra unikali jūsų iPhone ir nieko neatitinka paskelbta bet kur. Dialogo lange apie tai sakoma tiesiai, o ne raminamai statusas, kuris nieko nereiškia. Jei norite Nymchat, kurį galite patikrinti naudodami Apple aparatinę įrangą, naudokite žiniatinklį programa, kuri tikrina kiekvieną paleistą failą.

Ko tai neįrodo

Patikrinimas, kad programa veikia pati, negali įrodyti, kad programa yra sąžininga – nesvarbu, kas ją pakeitė taip pat galėtų pašalinti čekį. Tai įrodo įprastas atvejis: kad nukopijuoja tave įdiegta yra paskelbta kopija. Tai verta turėti, nes tai vertina palyginimai yra vieši, todėl kas nors kitas, o ne jūs, gali juos patikrinti ir nesutikti.

Garantinis kanarėlė

Garantinis kanarėlė yra pareiškimas, paskelbtas fiksuotu grafiku, kurį kūrėjas turi ne gavo slaptą vyriausybės įsakymą, kurį jiems draudžiama atskleisti – a Nacionalinio saugumo laiškas, FISA įsakymas. Kūrėjas gali būti priverstas tylėti tokia tvarka, bet negalima priversti meluoti, todėl kanarėlė pasensta ar dingsta pats signalas.

Tai gyvena canary.json saugyklos šaknyje ir gaunamas tiesiogiai iš „GitHub“, todėl jos istoriją galima patikrinti nepriklausomai nuo to, ką sako įdiegta svetainė. Dialogo langas Apie tai spalvomis koduoja:

SpalvaReiškia
Žalia - viskas aiškuPasirašytas, dabartinis ir parašas atitinka kūrėjo raktą. Jokio slapto užsakymo negauta.
Geltona — pavėluota arba ne viskas aiškuJis nebuvo atnaujintas pagal nurodytą datą arba jos allClear vėliava netikra. Neatmestina ir nutildyta tvarka.
Raudona — neteisingas parašas arba dingoParašas neatitinka kūrėjo rakto arba failas buvo visiškai pašalintas. Laikykite tai rimtu įspėjimu.

Šviežumo inkaras

Pasirašyta kanarėlė įdeda naujausią Bitcoin bloko aukštį ir maišą pasirašymo momentu. Šis maišas negalėjo būti žinomas prieš blokui egzistuojant, o tai įrodo, kad kanarėlė buvo pasirašė po to konkrečiu momentu, o ne iš anksto pasirašyta daugybe mėnesių anksčiau. Dialogo langas Apie susieja inkarą su blokų naršykle, kad galėtumėte jį patikrinti.