Laktawan ti linaonna
Agsubli iti Nymchat

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.

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.

Ti dialogo ti Maipapan ti Nymchat, a mangipakpakita ti bersion, mangbangon ti integridad ken warrant ti kasasaad ti canary.
Ti Maipapan a dialogo: bersion, panagbangon ti kinatarnaw, warrant canary ken ti direkta a linia iti developer.

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.

EstadoKayat 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 appTi 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 panagtunosSaan nga ag-hash ti maysa nga asset iti kuna ti manifest.
✗ Di opisial a panagbangonTi nakumpirma manen a bundle hash ket awan ti pammaneknek manipud iti pagidulinan — ti bukod a naaramid a manipesto.
⚠ Di madanon ti nagtaudanTi 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.

No ania ti paneknekan ti aniaman kadagitoy

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:

MarisKayat a saoen
Berde — amin ket nalawagTi 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 nalawagSaan 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 awanenTi 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.