Lumaktaw sa nilalaman
Bumalik sa Nymchat

Batayan ng kaalaman Sa ilalim ng talukbong

Bine-verify ang build

Nakakatulong lang ang open source kung ang code na iyong pinapatakbo ay ang code noon inilathala. Ang Nymchat ay binuo nang deterministiko upang masuri mo iyon sa iyong sarili, mula sa loob ng app o mula sa isang terminal.

Reproducible build

Ang pagbuo ng app ay naglalabas ng a build-manifest.json naglalaman ng source commit, a SHA-256 hash ng bawat naihatid na HTML, JavaScript at CSS asset, at isang solong bundleHash sa buong set ng asset na iyon.

Ang output ay nakasalalay lamang sa pinagmulang nilalaman — kahit na ang naitala na oras ng pagbuo ay ang timestamp ng commit kaysa sa sandaling tumakbo ang build — kaya ganoon din ang muling pagtatayo ng sinuman commit ay nakakakuha ng mga byte-magkaparehong file at pareho bundleHash.

Ang isang GitHub Action ay muling bubuo sa bawat commit nang nakapag-iisa at pumipirma ng build-provenance mga pagpapatotoo para sa hash at manifest, kaya mayroong nilagdaang talaan na nagtali a bundleHash sa isang commit sa repository, na ginawa ng isang bagay maliban sa deployment.

Ano ang sinusuri ng dialog na Tungkol

Tungkol sa sa header pinapatakbo ang tseke nang live, sa iyong browser.

Ang dialog ng Nymchat About, na nagpapakita ng bersyon, bumuo ng integridad at ginagarantiyahan ang katayuan ng canary.
Ang dialog na Tungkol sa: bersyon, bumuo ng integridad, warrant canary at isang direktang linya sa developer.

Kinukuha nito muli ang bawat asset na aktwal na pinapatakbo ng page, hina-hash ito gamit ang Web Crypto API, at inihahambing laban sa manifest. Pagkatapos - at ito ang bahagi na mahalaga - ito nirecompute ang bundleHash mula sa mga hash ito kalkulado lang, hindi galing anuman ang sinasabi ng manifest, at tinitingnan iyon sa mga nilagdaang pagpapatotoo ng repositoryo sa pamamagitan ng GitHub API.

Iyan ang pumipigil sa isang deployment mula sa pagtiyak para sa sarili nito: paghahatid ng mga binagong file kasama ng nabigo pa rin ang isang katugmang manifest, dahil walang pagpapatunay ang na-recompute na hash.

Katayuanibig sabihin
✓ Na-verify na opisyal na app (n/n)Ang bawat asset ay tumutugma, ang recomputed bundle hash ay pinatutunayan ng repository, at inihahatid ang page mula sa opisyal na domain.
⚠ Na-verify na build · hindi ang opisyal na appAng code ay tunay at pinatunayan, ngunit ito ay isang salamin sa ibang domain. Hindi maalis ng salamin ang babalang ito nang hindi nabigo ang pag-verify.
✗ Hindi tugmaHindi hina-hash ng asset ang sinasabi ng manifest.
✗ Hindi opisyal na buildAng recomputed bundle hash ay walang pagpapatunay mula sa repository - isang self-made na manifest.
⚠ Ang pinagmulan ay hindi maabotAng GitHub API ay hindi maabot, kaya ang pagpapatunay ay hindi masuri sa alinmang paraan.

Bine-verify ito sa iyong sarili

Buuin muli ang commit ang Tungkol sa mga pangalan ng dialog at ihambing:

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 naka-print na hash ay dapat tumugma sa parehong nasa dialog ng Tungkol at sa isa sa commit na iyon buod ng build-provenance run. Maaari mo ring suriin ang pirma nang direkta sa GitHub CLI:

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

Ang warrant canary

Ang warrant canary ay isang pahayag, na inilathala sa isang nakapirming iskedyul, na mayroon ang developer hindi nakatanggap ng lihim na utos ng pamahalaan na ipinagbabawal nilang ibunyag - a National Security Letter, isang utos ng FISA. Maaaring mapilitan ang developer na manatiling tahimik ganoong utos, ngunit hindi mapipilitang magsinungaling, kaya ang kanaryo ay nauubos o nawawala mismo ang signal.

Nakatira ito sa canary.json sa ugat ng repositoryo at direktang kinukuha mula sa GitHub, kaya ang kasaysayan nito ay maaring ma-audit nang independyente sa anumang sinasabi ng naka-deploy na site. Ang About dialog color-codes ito:

Kulayibig sabihin
Berde — malinaw ang lahatAng lagda, kasalukuyan, at ang lagda ay tumutugma sa susi ng developer. Walang lihim na utos ang natanggap.
Dilaw — overdue, o hindi lahat malinawHindi ito na-refresh ng nakasaad na petsa nito, o nito allClear huwad ang bandila. Ang isang pinatahimik na utos ay hindi maaaring ilabas.
Pula — di-wastong lagda, o nawalaAng lagda ay hindi tumutugma sa susi ng developer, o ang file ay ganap na naalis. Tratuhin ito bilang isang seryosong babala.

Ang kasariwaan anchor

Ang nilagdaang canary ay naka-embed ng pinakabagong Bitcoin block height at hash sa sandali ng pagpirma. Ang hash na iyon ay hindi maaaring malaman bago ang bloke ay umiiral, na nagpapatunay na ang kanaryo ay pinirmahan pagkatapos isang partikular na punto sa oras sa halip na paunang nilagdaan nang maramihang buwan na mas maaga. Ang dialog na Tungkol sa ay nagli-link sa anchor sa isang block explorer para masuri mo ito.