Tudásbázis A motorháztető alatt
A build ellenőrzése
A nyílt forráskód csak akkor segít, ha a futtatott kód ugyanaz, mint amilyen volt megjelent. A Nymchat determinisztikusan épül fel, így ezt saját maga is ellenőrizheti, belülről alkalmazásból vagy terminálból.
Ez az oldal a kényelem kedvéért gépi fordítással készült. Az eredeti angol nyelvű változat az érvényes.
Reprodukálható építmények
Az alkalmazás elkészítése a build-manifest.json tartalmazza a forrás commit, a
SHA-256 hash minden kiszolgált HTML-, JavaScript- és CSS-elemről, valamint egyetlen
bundleHash az egész eszközkészlet felett.
A kimenet csak a forrástartalomtól függ – még a rögzített felépítési idő is az
Inkább a véglegesítés időbélyegét használja, mint a build futásának pillanatát – tehát bárki, aki újraépíti ugyanazt
A commit bájt-azonos fájlokat kap, és ugyanazt bundleHash.
A GitHub-művelet ezután minden kötelezettségvállalást önállóan újraépít, és aláírja a build-eredetet
tanúsítványok a hash és a manifeszt, tehát van egy aláírt jegyzőkönyv árukapcsolás a
bundleHash az adattárban való commithoz, amelyet nem a
bevetése.
Mit ellenőriz a Névjegy párbeszédpanel
Körülbelül a fejlécben lefut az ellenőrzés élőben, a böngészőben.
Újra lekéri az oldal ténylegesen futó összes elemét, kivonatolja azokat a Web Crypto API-val, és
összehasonlítja a manifeszttel. Aztán – és ez az a rész, ami számít – ez
újraszámítja a bundleHash a hash-ekből azt csak kiszámoltam, nem abból
bármit, amit a jegyzék állít, és ezt megnézi az adattár aláírt tanúsítványaiban
a GitHub API-n keresztül.
Ez az, ami megakadályozza, hogy a telepítés vállalja önmagát: a módosított fájlokat együtt szolgálja ki az egyező jegyzék továbbra sem sikerül, mert az újraszámított hash-nek nincs tanúsítványa.
| Állapot | Eszközök |
|---|---|
| &ellenőrzés; Ellenőrzött hivatalos alkalmazás (n/n) | Minden eszköz egyezik, az újraszámított köteg hash-t az adattár igazolja, és az oldalt a hivatalos domainről szolgálják ki. |
| ⚠ Ellenőrzött build · nem a hivatalos alkalmazás | A kód eredeti és tanúsított, de ez egy másik tartomány tükörképe. A tükör nem tudja eltávolítani ezt a figyelmeztetést az ellenőrzés sikertelensége nélkül. |
| ✗ Nem megfelelő | Egy tartalom nem hash a jegyzékben leírtakhoz. |
| ✗ Nem hivatalos felépítés | Az újraszámított köteg-kivonat nem rendelkezik a lerakatból származó tanúsítvánnyal – egy saját készítésű jegyzék. |
| ⚠ A származás elérhetetlen | A GitHub API-t nem sikerült elérni, így a tanúsítványt egyik módon sem lehetett ellenőrizni. |
Ellenőrizd magad
Építse újra a véglegesítést a Névjegy párbeszédpanelen, és hasonlítsa össze:
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>"
A kinyomtatott hash-nek meg kell egyeznie a Névjegy párbeszédpanelen és a véglegesítésben szereplővel build-provenance futás összefoglalója. Az aláírást közvetlenül a GitHub CLI-vel is ellenőrizheti:
gh attestation verify dist/build-manifest.json --repo Spl0itable/NYM
Android és iOS alkalmazások
A fenti ellenőrzés egy webalkalmazás-ellenőrzés, és érdemes egyértelműen kijelenteni az okot: natív alkalmazás nem teheti meg ugyanazt önmagával. Ami a telefonodon fut, az egy lefordított gépi kód, nem pedig a forrás a lerakatban, és semmi, amit az alkalmazás az eszközön ki tudja számítani, nem kapcsolódik az egyikhez egyéb.
Az Android a következő legjobb dologra képes. A telepített .apk egy olyan fájl, amelyet az alkalmazás képes olvasni
és hash, és minden közzétett kiadás hash-je már nyilvános: közzététel a
Zapstore
aláír egy Nostr eseményt, amely az APK SHA-256 azonosítóját és az aláíró tanúsítványát SHA-256 tartalmazza. Tehát a
Android Körülbelül párbeszédablak kivonatolja azt az APK-t, amelyről fut, és lekéri az aláírtakat
eseményeket, csak a fejlesztői kulcs által aláírt eseményeket tartja meg, és összehasonlítja. A kettőt mutatja
hasheket is, így megismételheti az ellenőrzést az eszközről: töltse le a közzétett APK-t, futtassa
sha256sum rajta, és nézze meg maga is ugyanazt az eseményt.
A Google Playről telepített alkalmazásokat nem lehet így ellenőrizni, és ez nem jelzi, hogy semmi nincs rendben. A Google minden feltöltést saját kulccsal aláír, és minden eszközre külön APK-t hoz létre, így ami a telefonon leszáll, nem a fejlesztő által előállított fájl, és a hash nem felel meg semmit, ami közzé lehetne tenni. Az alkalmazás felismeri a Play telepítést, és így mondja, ahelyett, hogy hibát jelentene. Ahhoz, hogy ellenőrizze a build-et, telepítse a közvetlenül közzétett APK-t.
Az iOS egyáltalán nem ellenőrizhető. Az Apple minden letöltést titkosít és újra aláír külön-külön, így az iPhone-on kiszámított hash egyedi az iPhone-jára, és semmivel sem egyezik bárhol megjelent. A Névjegy párbeszédpanel ezt egyenesen mondja, nem pedig megnyugtató állapot, ami nem jelent semmit. Ha Nymchatet szeretne, amelyet az Apple hardverén ellenőrizhet, használja az internetet alkalmazást, amely minden futó fájlt ellenőriz.
Egy alkalmazás önmagán futó ellenőrzése nem bizonyítja, hogy az alkalmazás őszinte – akárki módosította is eltávolíthatja a csekket is. Amit ez bizonyít, az a hétköznapi eset: hogy téged másol telepítve a közzétett példány. Ezt megéri, mert az ember értékeli az összehasonlítások nyilvánosak, így valaki más is ellenőrizheti őket, és nem ért egyet.
A szavatos kanári
A jótállási nyilatkozat egy rögzített ütemezéssel közzétett nyilatkozat, amellyel a fejlesztő rendelkezik nem titkos kormányparancsot kapott, amelyet tilos nyilvánosságra hozni - a Nemzetbiztonsági levél, a FISA végzése. A fejlesztő hallgatásra kényszeríthető ilyen rend, de hazugságra kényszeríteni nem lehet, tehát a kanári elhalványul vagy eltűnik maga a jel.
Benne él canary.json az adattár gyökerében, és közvetlenül lekérésre kerül
a GitHubból, így előzményei a telepített webhelytől függetlenül auditálhatók.
A Névjegy párbeszédablak színkódolja:
| Szín | Eszközök |
|---|---|
| Zöld - minden világos | Aláírt, aktuális és az aláírás megegyezik a fejlesztő kulcsával. Titkos parancs nem érkezett. |
| Sárga — lejárt, vagy nem minden világos | Nem frissült a megadott dátumig vagy annak allClear zászló hamis. Nem zárható ki az elhallgatott rend. |
| Piros — érvénytelen aláírás, vagy eltűnt | Az aláírás nem egyezik a fejlesztő kulcsával, vagy a fájlt teljesen eltávolították. Kezelje ezt komoly figyelmeztetésként. |
A frissesség horgonya
Az aláírt kanári beágyazza a legújabb Bitcoin blokk magasságot és hash-t az aláírás pillanatában. Ezt a hash-t nem lehetett tudni a blokk létezése előtt, ami azt bizonyítja, hogy a kanári az volt aláírva után egy adott időpontban, nem pedig hónapokkal korábban tömegesen írták alá. A Névjegy párbeszédpanel összekapcsolja a horgonyt egy blokkböngészővel, így ellenőrizheti.