Saltu al la enhavo
Reen al Nymchat

Sciobazo Sub la kapuĉo

Kontrolante la konstruon

Malferma fonto nur helpas se la kodo, kiun vi funkcias, estas la kodo, kiu estis eldonita. Nymchat estas konstruita determinisme tiel vi povas kontroli tion mem, de ene de la app aŭ de terminalo.

Reprodukteblaj konstruoj

Konstrui la apon elsendas a build-manifest.json enhavanta la fontan kommit, a SHA-256 hash de ĉiu servita HTML, JavaScript kaj CSS valoraĵo, kaj unuopa bundleHash super tiu tuta valoraĵo.

La eligo dependas nur de la fonta enhavo — eĉ la registrita konstrutempo estas la commit-tempomarko prefere ol la momento kiam la konstruo kuris — do iu ajn rekonstruanta la saman commit ricevas bajt-identajn dosierojn kaj same bundleHash.

GitHub-Ago tiam rekonstruas ĉiun devontigon sendepende kaj subskribas konstru-devenon atestoj por la haŝiŝo kaj la manifesto, do estas subskribita rekordo liganta a bundleHash al commit en la deponejo, produktita de io alia ol la deplojo.

Kion kontrolas la dialogo Pri

Pri en la kaplinio ruliĝas la kontrolo viva, en via retumilo.

La dialogo Nymchat Pri, montranta la version, konstruintegrecon kaj garantias kanarian statuson.
La dialogo Pri: versio, konstrua integreco, garantiu kanarion kaj rektan linion al la programisto.

Ĝi rekolektas ĉiun valoraĵon, kiun la paĝo efektive funkcias, haŝigas ĝin per la Web Crypto API, kaj komparas kontraŭ la manifesto. Tiam — kaj ĉi tiu estas la parto kiu gravas — ĝi rekalkulas la bundleHash el la haŝoj ĝi nur kalkulita, ne de ion ajn la manifesto asertas, kaj serĉas tion en la subskribitaj atestoj de la deponejo per la GitHub API.

Tio estas kio malhelpas deplojon garantii por si mem: servi modifitajn dosierojn kune kun kongrua manifesto ankoraŭ malsukcesas, ĉar la rekalkulita haŝiŝo havas neniun ateston.

StatusoRimedoj
✓ Kontrolita oficiala aplikaĵo (n/n)Ĉiu valoraĵo kongruas, la rekalkulita pakaĵo hash estas atestita de la deponejo, kaj la paĝo estas servata de la oficiala domajno.
⚠ Verkita konstruo · ne la oficiala aplikaĵoLa kodo estas aŭtenta kaj atestita, sed ĉi tio estas spegulo sur alia domajno. Spegulo ne povas forigi ĉi tiun averton sen malsukcesi kontrolon.
✗ MiskongruoValoraĵo ne haŝas al tio, kion diras la manifesto.
✗ Neoficiala konstruoLa rekalkulita pakaĵo hash havas neniun ateston de la deponejo - memfarita manifesto.
⚠ Deveno neatingeblaLa GitHub API ne povis esti atingita, do la atesto ne povis esti kontrolita de ajna maniero.

Kontrolante ĝin mem

Rekonstruu la enmetu la nomojn pri dialogoj pri kaj komparu:

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

La presita hash devus kongrui kaj tiu en la Pri dialogo kaj tiu en tiu kommit's konstruo-deveno kura resumo. Vi ankaŭ povas kontroli la subskribon rekte per la GitHub CLI:

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

La mandato kanario

Mandato-kanario estas deklaro, publikigita laŭ fiksa horaro, kiun la programisto havas ne ricevis sekretan registaran ordonon, kiun ili estas malpermesite malkaŝi - a Nacia Sekurecletero, FISA-ordo. La programisto povas esti devigita silenti pri tio tia ordo, sed ne povas esti devigita mensogi, do la kanario malfreŝa aŭ malaperanta estas mem la signalo.

Ĝi loĝas en canary.json ĉe la radiko de la deponejo kaj estas prenita rekte de GitHub, do ĝia historio estas aŭdebla sendepende de ĉio, kion diras la deplojita retejo. La dialogo Pri kolorkodoj ĝin:

KoloroRimedoj
Verda — ĉio klaraSubskribita, aktuala kaj la subskribo kongruas kun la ŝlosilo de la programisto. Neniu sekreta ordono estis ricevita.
Flava — malfruiĝinta, aŭ ne tute klaraĜi ne estis refreŝigita de ĝia deklarita dato, aŭ ĝia allClear flago estas falsa. Silentita ordo ne povas esti ekskludita.
Ruĝa — nevalida subskribo, aŭ malaperisLa subskribo ne kongruas kun la ŝlosilo de la programisto, aŭ la dosiero estis tute forigita. Traktu ĉi tion kiel seriozan averton.

La freŝeco ankro

La subskribita kanario enigas la lastan Bitcoin-blokan altecon kaj haŝiŝon en la momento de subskribo. Tiu haŝiŝo ne povus estinti konata antaŭ ol la bloko ekzistis, kio pruvas ke la kanario estis subskribita post specifa punkto en tempo prefere ol antaŭsubskribita en grandaj monatoj antaŭe. La dialogo Pri ligas la ankron al bloka esploristo por ke vi povu kontroli ĝin.