Saltà à u cuntenutu
Torna à Nymchat

Base di cunniscenza Sottu u cappucciu

Verificà a custruzione

Open source aiuta solu se u codice chì site in esecuzione hè u codice chì era publicatu. Nymchat hè custruitu deterministically cusì pudete verificà chì tù stessu, da l'internu app o da un terminal.

Custruzzioni riproducibili

Custruisce l'app emette a build-manifest.json chì cuntene l'impegnu fonte, a SHA-256 hash di ogni asset HTML, JavaScript è CSS servitu, è un solu bundleHash nantu à tuttu questu set di attivu.

L'output dipende solu da u cuntenutu di a fonte - ancu u tempu di creazione registratu hè u commit's timestamp piuttostu cà u mumentu chì a custruzione hè stata fatta - cusì qualcunu ricustruisce u listessu commit riceve i schedarii identici à i byte è u listessu bundleHash.

Una Azione GitHub poi ricostruisce ogni impegnu indipindente è firma a custruzzione-provenza attestazioni per l'hash è u manifestu, cusì ci hè un registru firmatu ligatu a bundleHash à un commit in u repository, pruduttu da qualcosa altru ch'è u implementazione.

Ciò chì verifica u dialogu About

À propositu in l'intestazione corre u cuntrollu in diretta, in u vostru navigatore.

U dialogu Nymchat About, chì mostra a versione, custruisce l'integrità è guarantisce u statutu di canari.
U dialogu About: versione, custruisce integrità, guarantisci canari è una linea diretta à u sviluppatore.

Recupera ogni attivu chì a pagina hè veramente in esecuzione, l'hash cù l'API Web Crypto, è compara cun u manifestu. Allora - è questu hè a parte chì importa - hè ricalcula u bundleHash da i hashes lu appena calculatu, micca da tuttu ciò chì u manifestu pretende, è cerca chì in l'attestati firmati di u repository attraversu l'API GitHub.

Hè ciò chì impedisce à una implementazione di cunfirmà per sè stessu: serve i schedari mudificati inseme cù un manifestu currispundente falla sempre, perchè l'hash recalculatu ùn hà micca attestazione.

StatusI mezi
& verificate; App ufficiale verificata (n/n)Ogni asset currisponde, l'hash di bundle ricalculatu hè attestatu da u repository, è a pagina hè servita da u duminiu ufficiale.
⚠ Custruzione verificata · micca l'app ufficialeU codice hè genuinu è attestatu, ma questu hè un specchiu nantu à un altru duminiu. Un specchiu ùn pò micca sguassà stu avvisu senza verificazione falluta.
✗ MismatchUn attivu ùn hà micca à ciò chì u manifestu dice.
✗ Custruzione non ufficialeL'hash di bundle recalculatu ùn hà micca attestazione da u repository - un manifestu self-made.
⚠ Provenienza inaccessibileL'API GitHub ùn pò micca esse ghjunta, cusì l'attestazione ùn pò esse verificata in ogni modu.

Verificà lu stessu

Ricustruite l'impegnu di i nomi di dialogu About è paragunate:

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

L'hash stampatu deve currisponde à quellu in u dialogu About è quellu in quellu commit's riassuntu di custruzzione-provenza. Pudete ancu verificà a firma direttamente cù u GitHub CLI:

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

U mandatu canarinu

Un canarinu di mandatu hè una dichjarazione, publicata in un calendariu fissu, chì u sviluppatore hà micca ricivutu un ordine secretu di u guvernu chì sò pruibiti di divulgà - a Lettera di Sicurezza Naziunale, un ordine FISA. U sviluppatore pò esse obligatu à stà in silenziu un tali ordine, ma ùn pò micca esse obligatu à menti, cusì u canarinu chì si stanca o sparisce hè ellu stessu u signale.

Vive in canary.json à a radica di u repositoriu è hè ritruvatu direttamente da GitHub, cusì a so storia hè auditable indipindente di ciò chì dice u situ implementatu. U dialogu About u codifica in culore:

CuloreI mezi
Verde - tuttu chjaruFirmatu, attuale, è a firma currisponde à a chjave di u sviluppatore. Nisun ordine secretu hè statu ricevutu.
Ghjallu - tardu, o micca tuttu chjaruÙn hè statu rinfriscatu da a so data dichjarata, o u so allClear a bandiera hè falsa. Un ordine silenziu ùn pò micca esse esclusu.
Rossu - firma invalida, o andataA firma ùn currisponde à a chjave di u sviluppatore, o u schedariu hè statu eliminatu sanu. Trattate questu cum'è un avvirtimentu seriu.

L'ancora di freschezza

U canarinu firmatu incorpora l'ultime altezza di bloccu Bitcoin è hash à u mumentu di a firma. Ddu hash ùn pudia esse cunnisciutu prima chì u bloccu esiste, chì prova chì u canarinu era firmatu dopu un puntu specificu in u tempu piuttostu cà pre-firmatu in bulk mesi prima. U dialogu About liga l'ancora à un esploratore di blocchi per pudè verificà.