Skip menyang isi
Bali menyang Nymchat

Basis kawruh Ing ngisor hood

Verifikasi mbangun

Open source mung mbantu yen kode sing sampeyan gunakake yaiku kode sing ana diterbitake. Nymchat dibangun deterministik supaya sampeyan bisa mriksa sing dhewe, saka nang ing app utawa saka terminal.

Dibangun reproducible

Nggawe app emit a build-manifest.json ngemot komit sumber, a SHA-256 hash saka saben aset HTML, JavaScript lan CSS, lan siji bundleHash liwat set aset kabeh.

Output mung gumantung ing isi sumber - malah wektu mbangun sing direkam yaiku stempel wektu commit tinimbang nalika mbangun mlaku - supaya sapa wae sing mbangun maneh commit entuk file sing padha karo byte lan padha bundleHash.

A Tindakan GitHub banjur mbangun maneh saben komitmen kanthi mandiri lan menehi tandha build-provenance attestations kanggo hash lan manifest, supaya ana cathetan mlebu naleni a bundleHash kanggo commit ing gudang, diprodhuksi dening soko liyane saka panyebaran.

Apa mriksa dialog Babagan

Babagan ing header mbukak mriksa urip, ing browser Panjenengan.

Dialog Nymchat About, nuduhake versi, mbangun integritas lan njamin status kenari.
Dialog Babagan: versi, mbangun integritas, njamin kenari lan garis langsung menyang pangembang.

Iku njupuk maneh saben aset kaca sing bener mlaku, hash karo Web Crypto API, lan mbandhingaké marang manifest. Banjur - lan iki bagean sing penting - iku recomputes ing bundleHash saka hash iku mung diwilang, ora saka apa-apa sing diklaim manifest, lan katon ing bukti sing ditandatangani ing gudang liwat API GitHub.

Iki sing mandhegake penyebaran saka njamin dhewe: nglayani file sing diowahi bebarengan karo manifes sing cocog isih gagal, amarga hash sing dihitung maneh ora duwe bukti.

StatusTegese
& mriksa; Aplikasi resmi sing diverifikasi (n/n)Saben aset cocog, hash bundel sing diitung maneh dibuktekake dening repositori, lan kaca dilayani saka domain resmi.
⚠ Diverifikasi mbangun · dudu aplikasi resmiKode kasebut asli lan dibuktekake, nanging iki minangka pangilon ing domain liyane. Pangilon ora bisa mbusak bebaya iki tanpa verifikasi gagal.
✗ Ora cocogAset ora hash kanggo apa manifest ngandika.
✗ Bangunan ora resmiHash bundle sing dihitung maneh ora duwe bukti saka repositori - manifes sing digawe dhewe.
⚠ Asal ora bisa digayuhAPI GitHub ora bisa digayuh, mula bukti kasebut ora bisa dicenthang kanthi cara apa wae.

Verifikasi dhewe

Mbangun maneh jeneng dialog Babagan lan mbandhingake:

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

Hash sing dicithak kudu cocog karo sing ana ing dialog Babagan lan sing ana ing komitmen kasebut build-provenance run summary. Sampeyan uga bisa mriksa tandha langsung karo GitHub CLI:

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

Aplikasi Android lan iOS

Priksa ing ndhuwur minangka mriksa aplikasi web, lan alasane kudu dicritakake kanthi jelas: aplikasi asli ora bisa nindakake bab sing padha kanggo awake dhewe. Sing mlaku ing telpon sampeyan yaiku kode mesin sing disusun, dudu kode mesin sumber ing gudang, lan apa-apa app bisa ngetung ing piranti hubungane siji menyang liyane.

Android bisa nindakake sing paling apik sabanjure. Sing diinstal .apk iku file sing bisa diwaca app lan hash, lan hash saben release diterbitake wis umum: nerbitake menyang Zapstore mlebu acara Nostr mawa APK SHA-256 lan sertifikat tandha SHA-256. Dadi ing Android Babagan dialog hashes APK sing lagi mlaku, njupuk sing ditandatangani acara, tetep mung sing mlebu dening tombol pangembang, lan mbandhingaké. Iku nuduhake loro hashes uga, supaya sampeyan bisa mbaleni mriksa mati piranti: download APK diterbitake, mbukak sha256sum ing, lan katon ing acara padha dhewe.

Aplikasi sing diinstal saka Google Play ora bisa dicenthang kanthi cara iki, lan iku ora tanda apa-apa salah. Google re-signs saben ngunggah karo kunci dhewe lan ngembangake APK terpisah kanggo saben piranti, supaya apa sing ngandhut ing telpon sampeyan ora file developer diprodhuksi lan hash sajrone apa-apa sing bisa diterbitake. Aplikasi njaluk instalasi Play lan ngandika iku alih saka melaporkan kegagalan. Kanggo nguji build dhewe, nginstal APK diterbitake langsung.

iOS ora bisa dicenthang ing kabeh. Apple encrypts lan maneh tandha saben download individu, supaya hash sing diitung ing iPhone unik kanggo iPhone lan ora cocog diterbitake ing ngendi wae. Dialog Babagan ujar iki kanthi terang-terangan tinimbang nuduhake reassuring status sing ora ateges apa-apa. Yen sampeyan pengin Nymchat sampeyan bisa verifikasi ing hardware Apple, nggunakake web app, sing mriksa saben file sing lagi mlaku.

Apa ora iki mbuktekaken

A mriksa app mlaku dhewe ora bisa mbuktekaken app jujur - sapa sing ngowahi bisa mbusak mriksa uga. Apa mbuktekaken kasus biasa: sing salinan sampeyan diinstal minangka salinan sing diterbitake. Iku worth gadhah amarga nilai iku mbandhingake iku umum, supaya wong liya saka sampeyan bisa mriksa wong, lan ora setuju.

Kenari jaminan

A kenari warrant minangka statement, diterbitake ing jadwal tetep, sing pangembang wis ora nampa pesen rahasia pemerintah sing dilarang kanggo mbukak - a Surat Keamanan Nasional, pesenan FISA. Pangembang bisa dipeksa kanggo tetep bisu babagan dhawuh kasebut, nanging ora bisa dipeksa ngapusi, mula kenari dadi basi utawa ilang sinyal dhewe.

Iku manggon ing canary.json ing oyod gudang lan dijupuk langsung saka GitHub, mula sejarahe bisa diaudit kanthi bebas saka apa wae sing dikandhakake situs sing disebarake. Dialog About menehi kode warna:

warnaTegese
Ijo - kabeh cethaTandha, saiki, lan teken cocog karo kunci pangembang. Ora ana pesenan rahasia sing ditampa.
kuning - telat, utawa ora kabeh cethaIku ora dianyari dening tanggal kasebut, utawa sawijining allClear gendera iku palsu. A pesen silenced ora bisa ditolak lewat.
abang - teken ora bener, utawa ilangTandha ora cocog karo kunci pangembang, utawa file wis dibusak kabeh. Nambani iki minangka bebaya serius.

Jangkar kesegaran

Kenari sing ditandatangani ngemot dhuwur blok Bitcoin paling anyar lan hash nalika mlebu. Hash kasebut ora bisa dingerteni sadurunge blok kasebut ana, sing mbuktekake kenari kasebut mlebu sawise titik tartamtu ing wektu tinimbang wis mlebu ing akeh sasi sadurungé. Dialog Babagan nyambungake jangkar menyang panjelajah blok supaya sampeyan bisa mriksa.