Laktaw sa sulod
Balik ngadto ha Nymchat

Base sa kahibalo Ubos sa tabon

Pagpamatuod sa pagtukod

Ang bukas nga tinubdan makatabang lamang kung ang code nga imong gipadagan mao ang code nga kaniadto gipatik. Ang Nymchat gitukod deterministiko aron masusi nimo kana sa imong kaugalingon, gikan sa sulod sa app o gikan sa usa ka terminal.

Reproducible nga mga pagtukod

Ang pagtukod sa app nagpagawas sa usa ka build-manifest.json naglangkob sa tinubdan commit, a SHA-256 hash sa matag gisilbi nga HTML, JavaScript ug CSS asset, ug usa bundleHash ibabaw nianang tibuok set sa asset.

Ang output nagdepende ra sa gigikanan nga sulud - bisan ang natala nga oras sa pagtukod mao ang commit kay sa higayon nga ang pagtukod midagan - mao nga bisan kinsa nga nagtukod pag-usab sa mao gihapon nga commit makakuha og byte-parehas nga mga file ug parehas bundleHash.

Usa ka GitHub Action unya nagtukod pag-usab sa matag commit nga independente ug nagpirma sa build-provenance mga pagpamatuod alang sa hash ug sa manifest, mao nga adunay gipirmahan nga rekord nga naghigot sa a bundleHash sa usa ka commit sa repository, nga gihimo sa usa ka butang gawas sa pagdeploy.

Unsa ang gisusi sa About dialog

Mahitungod sa sa header nagpadagan ang tseke nga buhi, sa imong browser.

Ang Nymchat About dialog, nga nagpakita sa bersyon, pagtukod sa integridad ug warrant canary status.
Ang About dialog: version, build integrity, warrant canary ug direktang linya sa developer.

Gikuha niini pag-usab ang matag asset nga aktwal nga gipadagan sa panid, gi-hash kini sa Web Crypto API, ug nagtandi batok sa dayag. Unya - ug kini ang bahin nga hinungdanon - kini gi-compute pag-usab ang bundleHash gikan sa mga hash kini kalkulado lang, dili gikan bisan unsa nga giangkon sa dayag, ug tan-awon kana sa gipirmahan nga mga pagpamatuod sa repository pinaagi sa GitHub API.

Mao kana ang nagpahunong sa usa ka pag-deploy gikan sa paggarantiya sa kaugalingon: pag-alagad sa giusab nga mga file kauban ang ang usa ka pagpares nga manifest napakyas gihapon, tungod kay ang gi-compute nga hash walay pamatuod.

StatusNagpasabot
&susi; Gi-verify nga opisyal nga app (n/n)Ang matag asset magkatugma, ang gi-compute nga bundle hash gipamatud-an sa repository, ug ang panid giserbisyuhan gikan sa opisyal nga dominyo.
⚠ Napamatud-an nga pagtukod · dili ang opisyal nga appAng code tinuod ug gipamatud-an, apan kini usa ka salamin sa laing domain. Ang usa ka salamin dili makatangtang niini nga pasidaan nga dili mapakyas sa pag-verify.
✗ Dili tugmaAng usa ka asset dili hash sa unsay gisulti sa manifest.
✗ Dili opisyal nga pagtukodAng recomputed bundle hash walay pamatuod gikan sa repository - usa ka self-made manifest.
⚠ Provenance dili maabotAng GitHub API dili maabot, busa ang pamatuod dili masusi sa bisan asa nga paagi.

Pag-verify niini sa imong kaugalingon

Pagtukod pag-usab sa commit ang About dialog names ug itandi:

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

Ang giimprinta nga hash kinahanglan nga motakdo sa usa sa About dialog ug sa usa sa commit's build-provenance run summary. Mahimo usab nimo nga susihon ang pirma direkta sa GitHub CLI:

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

Ang Android ug iOS apps

Ang tseke sa ibabaw usa ka tseke sa web-app, ug ang hinungdan angay nga isulti nga yano: usa ka lumad nga app dili makahimo sa samang butang sa iyang kaugalingon. Ang nagdagan sa imong telepono gihugpong nga code sa makina, dili ang tinubdan sa repositoryo, ug walay makwenta ang app sa device nga may kalabutan sa usa sa uban.

Ang Android makahimo sa sunod nga labing maayo nga butang. Ang gi-install .apk usa ka file nga mabasa sa app ug hash, ug ang hash sa matag gipatik nga pagpagawas kay publiko na: pagmantala sa Zapstore nagpirma sa usa ka panghitabo sa Nostr nga nagdala sa SHA-256 sa APK ug SHA-256 sa sertipiko sa pagpirma niini. Busa ang Android Mahitungod sa Ang dialog nag-hash sa APK nga gikan niini, gikuha ang mga gipirmahan mga panghitabo, nagtago lamang sa mga gipirmahan sa yawe sa developer, ug nagtandi. Kini nagpakita sa duha hash usab, aron imong masubli ang check off sa device: i-download ang gipatik nga APK, run sha256sum niini, ug tan-awa ang samang panghitabo sa imong kaugalingon.

Ang app nga na-install gikan sa Google Play dili masusi niining paagihaAng Google re-sign sa matag pag-upload uban sa iyang bag-o nga key ug makahimo sa usa ka separado APK alang sa matag device, aron ang unsa nga land sa imong telepono mao ang sa file nga gihimo sa developer ug ang iyang hash matches bisan unsa nga ang mahimong gipublikado. Ang app makahimo sa Play install ug nag-ingon sa wala pa sa pag-report sa usa ka bug. Alang sa pag-configure sa usa ka build kaninyo, pag-install ang APK nga gipublikado direktang.

Ang iOS dili masusi sa tanan. Gi-encrypt ug gipirmahan usab sa Apple ang matag pag-download tinagsa, mao nga ang usa ka hash nga gikalkula sa imong iPhone talagsaon sa imong iPhone ug wala’y katumbas gipatik bisan asa. Ang About dialog nagsulti niini nga direkta imbes nga magpakita usa ka pagpasalig status nga walay kahulogan. Kung gusto nimo ang usa ka Nymchat nga imong mapamatud-an sa Apple hardware, gamita ang web app, nga nagsusi sa matag file nga gipadagan niini.

Ang wala niini nagpamatuod

Ang usa ka tseke nga ang usa ka app nagpadagan sa iyang kaugalingon dili makapamatuod nga ang app matinud-anon - bisan kinsa nga nagbag-o niini matangtang usab ang tseke. Ang gipamatud-an niini mao ang ordinaryo nga kaso: nga ang kopya kanimo na-install mao ang kopya nga gipatik. Angay kana nga mabatonan tungod kay ang mga bili niini Ang mga pagtandi kay publiko, aron ang usa ka tawo gawas kanimo makasusi niini, ug dili mouyon.

Ang warrant canary

Ang warrant canary usa ka pahayag, nga gipatik sa usa ka piho nga iskedyul, nga naa sa developer dili nakadawat ug sekretong mando sa gobyerno nga gidid-an sila sa pagbutyag — a Sulat sa Nasyonal nga Seguridad, usa ka mando sa FISA. Ang developer mahimong mapugos sa pagpabilin nga hilom mahitungod sa ang ingon nga usa ka mando, apan dili mapugos sa pagpamakak, mao nga ang kanaryo madaot o mawala mismo ang signal.

Kini nagpuyo sa canary.json sa gamut sa repository ug direkta nga gikuha gikan sa GitHub, mao nga ang kasaysayan niini ma-audit nga independente sa bisan unsa nga gisulti sa gi-deploy nga site. Ang About dialog color-codes niini:

KolorNagpasabot
Berde - klaro ang tananAng pinirmahan, kasamtangan, ug ang pirma motakdo sa yawe sa developer. Walay sekretong order nga nadawat.
Dilaw - overdue, o dili tanan klaroWala kini gi-refresh sa gipahayag nga petsa, o niini allClear bandera kay bakak. Ang usa ka gipahilom nga mando dili mahimong isalikway.
Pula — dili balido nga pirma, o nawalaAng pirma dili motakdo sa yawe sa developer, o ang file hingpit nga natangtang. Tagda kini ingong seryosong pasidaan.

Ang kabag-o nga angkla

Ang gipirmahan nga canary nag-embed sa pinakabag-o nga Bitcoin block gitas-on ug hash sa higayon sa pagpirma. Kana nga hash dili unta mahibal-an sa wala pa ang block, nga nagpamatuod nga ang kanaryo gipirmahan pagkahuman usa ka espesipikong punto sa panahon imbes nga gipirmahan nang daan sa daghang mga bulan sa sayo pa. Ang About dialog nagsumpay sa angkla ngadto sa block explorer aron masusi nimo kini.