Batayan ti pannakaammo Iti sirok ti hood
Panangpaneknek ti build
Makatulong laeng ti open source no ti code nga ipatpataraymo ket isu ti code nga idi naipablaak. Ti Nymchat ket naibangon a deterministiko tapno mabalinmo a kitaen a mismo dayta, manipud iti uneg ti app wenno manipud iti terminal.
Daytoy a panid ket naipatarus babaen ti makina para iti kombeniente. Ti Ingles nga orihinal ti bersion nga agaplikar.
Dagiti maulit-ulit a panagbangon
Ti panangibangon ti app ket mangiruar iti a build-manifest.json naglaon ti source commit, a
SHA-256 hash ti tunggal naiserbi nga HTML, JavaScript ken CSS asset, ken maymaysa
bundleHash iti rabaw dayta sibubukel nga asset set.
Ti rimmuar ket agpannuray laeng iti taudan a linaon — urayno ti nairekord nga oras ti panagbangon ket ti
ti timestamp ti commit imbes a ti kanito a nagtaray ti panagbangon — isu nga siasinoman a mangbangbangon manen iti isu met laeng
ti commit ket makaala kadagiti byte-identical a file ken isu met laeng bundleHash.
Kalpasanna ti maysa a GitHub Action ket mangbangon manen ti tunggal maysa a panagkumit nga agwaywayas ken agpirma ti build-provenance
dagiti pammaneknek para iti hash ken ti manipesto, isu nga adda napirmaan a rekord a mangisilpo iti a
bundleHash iti maysa a panagkumit iti pagidulinan, a pinataud babaen ti maysa a banag malaksid ti
pannakaipakat.
Ania ti sukimaten ti dialogo ti Maipapan
Maipapan iti header patarayen ti tseke a sibibiag, iti browsermo.
Daytoy ket mangala manen ti tunggal maysa nga asset nga aktual nga agtartaray ti panid, i-hash daytoy babaen ti Web Crypto API, ken
idilig maibusor iti naiparangarang. Kalpasanna — ket daytoy ti paset a napateg — dayta
kuentaenna manen ti bundleHash manipud kadagiti hashes daytoy nakuenta laeng, saan a manipud
aniaman nga ibagbaga ti manipesto, ken kitaenna dayta kadagiti napirmaan a pammaneknek ti pagidulinan
babaen ti GitHub API.
Dayta ti mangpasardeng ti maysa a deployment manipud iti panag-vouching para iti bagina: panagserbi kadagiti nabaliwan a file a kadua ti ti panagtunos a manipesto ket mapaay pay laeng, gapu ta ti nakumpirma manen a hash ket awan ti pammaneknek.
| Estado | Kayat a saoen |
|---|---|
| &kitaen; Naberipikado nga opisial nga app (n/n) . | Tunggal asset ket agpapada, ti nakuenta manen a bundle hash ket paneknekan babaen ti pagidulinan, . ken ti panid ket naserbian manipud iti opisial a dominio. |
| ⚠ Verified build · saan nga opisial nga app | Ti kodigo ket pudno ken napaneknekan, ngem daytoy ket sarming iti sabali a dominio. Saan a maikkat ti sarming daytoy a pakdaar no saan a mapaay ti panangpaneknek. |
| ✗ Di panagtunos | Saan nga ag-hash ti maysa nga asset iti kuna ti manifest. |
| ✗ Di opisial a panagbangon | Ti nakumpirma manen a bundle hash ket awan ti pammaneknek manipud iti pagidulinan — ti bukod a naaramid a manipesto. |
| ⚠ Di madanon ti nagtaudan | Ti GitHub API ket saan a naabot, isu a ti pammaneknek ket saan a nasukimaten iti uray ania a wagas. |
Panangpaneknek a mismo iti dayta
Bangonen manen ti commit dagiti nagan ti dialogo ti Maipapan ken idilig:
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>"
Ti naimaldit a hash ket rumbeng nga agpada a maipada ti adda iti Maipapan a dialogo ken ti adda iti dayta a panagkumit build-provenance run ti pakagupgopan. Mabalinmo pay a kitaen ti pirma a direkta babaen ti GitHub CLI:
gh attestation verify dist/build-manifest.json --repo Spl0itable/NYM
Ti Android ken iOS apps
Ti tseke iti ngato ket maysa a web-app check, ken ti rason ket maikari a maibaga a nalawag: maysa a katutubo nga app dina maaramid ti isu met laeng a banag iti bagina. Ti agtartaray iti teleponom ket naurnong a machine code, saan a ti... gubuayan iti pagidulinan, ken awan ti aniaman a makomputa ti app iti alikamen a manginaig iti maysa iti dadduma pay.
Mabalin nga aramiden ti Android ti sumaruno a kasayaatan a banag. Ti naikabil .apk ket maysa a file a mabasa ti app
ken hash, ken ti hash ti tunggal naipablaak a pannakairuar ket dati a publiko: panagipablaak iti
Zapstore
agpirma iti Nostr event nga awit ti SHA-256 ti APK ken ti SHA-256 ti sertipiko ti panagpirmana. Isu a ti...
Android Maipapan dialog hashes ti APK a pagtarayanna, alaenna dagidiay napirmaan
dagiti pasamak, pagtalinaedenna laeng dagiti napirmaan babaen ti tulbek ti developer, ken mangidilig. Ipakitana ti dua
hashes met, isu a mabalinmo nga uliten ti check off ti device: i-download ti naipablaak nga APK, tarayen
sha256sum iti dayta, ket kitaem a mismo ti isu met laeng a pasamak.
Saan a ma-check ti app a nai-install manipud iti Google Play iti kastoy a wagasTi Google re-signs iti tunggal upload iti maysa a key ken bimtak ti maysa a APK para iti maysa a device, tapno maaddaantayo iti telepono no isu ti file ti produced ti developer ken ti hash ket maaddaantayo iti saan a publikasion.
Saan a pulos a ma-check ti iOS. I-encrypt ken pirmaan manen ti Apple ti tunggal download indibidual, isu a ti hash a na-computed iti iPhone-mo ket naisangsangayan iti iPhone-mo ken awan ti maipada naipablaak iti sadinoman. Ti dialogo ti Maipapan ket direkta nga ibagana daytoy imbes nga ipakitana ti makapatalged status nga awan ti kaipapanan. No kayatmo ti Nymchat a mabalinmo a paneknekan iti Apple hardware, usarem ti web app, a talaga a mangsukimat iti tunggal file nga ipatpatarayna.
Ti tseke nga agtartaray ti app iti bagina ket dina mapaneknekan a napudno ti app — siasinoman ti nangbalbaliw iti dayta mabalin nga ikkaten met ti tseke. Ti paneknekanna ket ti ordinario a kaso: dayta ti kopiaem nai-install ti kopia a naipablaak. Dayta ti maikari nga adda gapu ta dagiti ipatpateg dayta dagiti idilig ket publiko, isu a ti sabali malaksid kenka ket mabalinna a sukimaten dagitoy, ken saan nga umanamong.
Ti warrant canary
Ti warrant canary ket maysa a statement, a naipablaak iti naikeddeng nga eskediul, nga adda iti developer saan nakaawat iti nalimed a bilin ti gobierno a maiparitda nga ipalgak — a Surat ti Nailian a Seguridad, maysa a bilin ti FISA. Mabalin a mapilit ti developer nga agulimek maipapan iti kasta nga bilin, ngem saan a mapilit nga agulbod, isu a ti canary going stale wenno disappearing ket a mismo ti signal.
Agnanaed dayta iti canary.json iti ramut ti pagidulinan ken direkta a maala
manipud iti GitHub, isu a ti pakasaritaanna ket ma-audit nga agwaywayas iti ania man nga ibaga ti naipakat a site.
Ti Maipapan a dialogo ket mangikodigo ti kolor iti daytoy:
| Maris | Kayat a saoen |
|---|---|
| Berde — amin ket nalawag | Ti napirmaan, agdama, ken ti pirma ket maitunos iti tulbek ti developer. Awan pay ti naawat a nalimed a bilin. |
| Duyaw — overdue, wenno saan nga amin ket nalawag | Saan a na-refresh dayta babaen ti naibaga a petsana, wenno ti allClear bandera ket ulbod. Saan a mailaksid ti naulimek a bilin. |
| Nalabbaga — saan nga umiso a pirma, wenno awanen | Ti pirma ket saan a maitunos iti tulbek ti developer, wenno ti file ket naikkat nga interamente. Tratuem daytoy kas serioso a pakdaar. |
Ti angkla ti kinapresko
Ti napirmaan a canary ket mangikabil ti kaudian a kangato ti bloke ti Bitcoin ken hash iti kanito ti panagpirma. Saan koma a naammuan dayta a hash sakbay nga adda ti bloke, a mangpaneknek a kasta ti canary nagpirma kalpasan maysa nga espesipiko a punto ti panawen imbes a nasaksakbay a napirmaan iti bulk a bulan sakbayna. Ti dialogo ti Maipapan ket mangisilpo ti angkla iti maysa a bloke nga eksplorador tapno mabalinmo a sukimaten daytoy.