Preskoči na vsebino
Nazaj v Nymchat

Baza znanja Pod pokrovom

Preverjanje zgradbe

Odprta koda pomaga le, če je koda, ki jo izvajate, koda, ki je bila objavljeno. Nymchat je zgrajen deterministično, tako da lahko to preverite sami, od znotraj aplikacije ali iz terminala.

Ponovljive zgradbe

Gradnja aplikacije oddaja a build-manifest.json ki vsebuje izvorno potrditev, a Zgoščena vrednost SHA-256 vsakega uporabljenega sredstva HTML, JavaScript in CSS ter enega samega bundleHash nad tem celotnim naborom sredstev.

Izhod je odvisen le od izvorne vsebine - tudi zabeleženi čas gradnje je pomemben časovni žig potrditve namesto trenutka, ko se je izdelava izvajala — tako da vsakdo, ki znova gradi isto commit dobi bajtno enake datoteke in iste bundleHash.

Dejanje GitHub nato znova zgradi vsako objavo neodvisno in podpiše izvor gradnje potrdila za hash in manifest, tako da obstaja podpisan zapis, ki povezuje a bundleHash na objavo v repozitoriju, ki jo je ustvaril nekaj drugega kot uvajanje.

Kaj preveri pogovorno okno O programu

O tem v glavi zažene preverjanje v živo v vašem brskalniku.

Pogovorno okno O Nymchatu, ki prikazuje različico, celovitost gradnje in zagotavlja status kanarčka.
Pogovorno okno O programu: različica, celovitost zgradbe, garancijski kanarček in neposredna povezava z razvijalcem.

Ponovno pridobi vsako sredstvo, ki se stran dejansko izvaja, ga zgosti z vmesnikom Web Crypto API in primerja z manifestom. Potem - in to je tisti del, ki je pomemben - to ponovno izračuna bundleHash iz hašiša to samo izračunano, ne iz vse, kar zahteva manifest, in to poišče v podpisanih potrdilih skladišča prek API-ja GitHub.

To je tisto, kar prepreči, da bi uvedba jamčila zase: streženje spremenjenih datotek skupaj z ujemajoči se manifest še vedno ne uspe, ker ponovno izračunana zgoščena vrednost nima potrdila.

StanjePomeni
&preveri; Preverjena uradna aplikacija (n/n)Vsako sredstvo se ujema, ponovno izračunano zgoščeno vrednost svežnja potrdi repozitorij, in stran je postrežena z uradne domene.
⚠ Preverjena zgradba · ni uradna aplikacijaKoda je pristna in potrjena, vendar je to ogledalo na drugi domeni. Zrcalo ne more odstraniti tega opozorila brez neuspešnega preverjanja.
✗ NeujemanjeSredstvo se ne ujema s tem, kar piše v manifestu.
✗ Neuradna zgradbaPonovno izračunana zgoščena vrednost svežnja nima potrdila iz repozitorija – lastnoročno izdelan manifest.
⚠ Izvor nedosegljivAPI-ja GitHub ni bilo mogoče doseči, zato potrdila tako ali tako ni bilo mogoče preveriti.

Preverite sami

Ponovno zgradite objavo imen pogovornega okna O in primerjajte:

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

Natisnjena zgoščena vrednost se mora ujemati s tisto v pogovornem oknu About in s tisto v tej objavi povzetek poteka gradnje-provenence. Podpis lahko preverite tudi neposredno z GitHub CLI:

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

Upravni kanarček

Nalogni kanarček je izjava, objavljena po določenem urniku, ki jo ima razvijalec ne prejel tajni vladni ukaz, ki ga je prepovedano razkriti — a Dopis o nacionalni varnosti, odredba FISA. Razvijalca je mogoče prisiliti, da o tem molči takšen ukaz, vendar ga ni mogoče prisiliti v laž, zato kanarček zastara ali izgine sam signal.

Živi v canary.json v korenu repozitorija in se pridobi neposredno iz GitHuba, tako da je njegovo zgodovino mogoče revidirati neodvisno od tega, kar piše na nameščenem mestu. Pogovorno okno O tem ga barvno kodira:

barvaPomeni
zelena — vse jasnoPodpisano, veljavno in podpis se ujema s ključem razvijalca. Prejeto ni bilo nobeno tajno naročilo.
Rumena — zamuja ali ni vse jasnoNi bil osvežen do navedenega datuma ali njegovega allClear zastava je lažna. Zamolčanega naročila ni mogoče izključiti.
Rdeča — neveljaven podpis ali izginilPodpis se ne ujema s ključem razvijalca ali pa je bila datoteka v celoti odstranjena. Vzemite to kot resno opozorilo.

Sidro svežine

Podpisani kanarček v trenutku podpisa vdela zadnjo višino bloka Bitcoin in zgoščeno vrednost. Ta hash ni mogel biti znan, preden je blok obstajal, kar dokazuje, da je bil kanarček podpisan po določeno časovno točko, namesto vnaprej podpisanih več mesecev prej. Pogovorno okno About povezuje sidro z raziskovalcem blokov, tako da ga lahko preverite.