Ž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.
Patogumui šis puslapis išverstas mašininiu būdu. Tinkama versija anglų kalba.
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.
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ūsena | Reiš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 programa | Kodas yra autentiškas ir patvirtintas, tačiau tai yra kito domeno veidrodis. Veidrodis negali pašalinti šio įspėjimo be nesėkmingo patikrinimo. |
| ✗ Neatitikimas | Turtas neturi maišos su tuo, kas sakoma manifeste. |
| ✗ Neoficiali konstrukcija | Perskaičiuota rinkinio maiša neturi saugyklos patvirtinimo – savaime sukurtas manifestas. |
| ⚠ Kilmė nepasiekiama | Nepavyko 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ą.
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:
| Spalva | Reiškia |
|---|---|
| Žalia - viskas aišku | Pasirašytas, dabartinis ir parašas atitinka kūrėjo raktą. Jokio slapto užsakymo negauta. |
| Geltona — pavėluota arba ne viskas aišku | Jis nebuvo atnaujintas pagal nurodytą datą arba jos allClear vėliava netikra. Neatmestina ir nutildyta tvarka. |
| Raudona — neteisingas parašas arba dingo | Paraš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.