Prijeđi na sadržaj
Povratak u Nymchat

Baza znanja Ispod haube

Provjera građe

Otvoreni kod pomaže samo ako je kod koji izvodite onaj koji je bio objavljeno. Nymchat je izgrađen deterministički tako da to možete sami provjeriti iznutra aplikacije ili s terminala.

Ponovljive građe

Izrada aplikacije emitira a build-manifest.json koji sadrži izvornu predaju, a SHA-256 raspršivanje svakog posluženog HTML, JavaScript i CSS elementa i jednog bundleHash nad tim cijelim skupom sredstava.

Izlaz ovisi samo o izvornom sadržaju — čak je i zabilježeno vrijeme izrade vremensku oznaku uvrštenja, a ne trenutak kada je izgradnja pokrenuta — tako da svatko ponovno izrađuje istu commit dobiva bajt-identične datoteke i iste bundleHash.

GitHub radnja zatim ponovno gradi svaki commit neovisno i potpisuje podrijetlo izgradnje potvrde za hash i manifest, tako da postoji potpisani zapis koji povezuje a bundleHash na predaju u spremištu, koju proizvodi nešto što nije raspoređivanje.

Što provjerava dijaloški okvir O

Oko u zaglavlju pokreće provjeru uživo, u vašem pregledniku.

Dijalog O Nymchatu, koji prikazuje verziju, integritet izrade i jamči status kanarinca.
Dijaloški okvir O programu: verzija, integritet izrade, garancija i izravna veza s programerom.

Ponovno dohvaća svako sredstvo koje stranica zapravo pokreće, hashira ga s Web Crypto API-jem i uspoređuje s manifestom. Zatim - a ovo je dio koji je važan - to ponovno izračunava bundleHash od haseva to samo izračunato, ne iz sve što manifest tvrdi, i to traži u potpisanim atestima repozitorija putem GitHub API-ja.

To je ono što sprječava implementaciju da jamči za sebe: posluživanje izmijenjenih datoteka zajedno s odgovarajući manifest i dalje ne uspijeva jer ponovno izračunati hash nema potvrdu.

StatusSredstva
&provjeriti; Potvrđena službena aplikacija (n/n)Svako se sredstvo podudara, repozitorij potvrđuje ponovno izračunati hash paketa, i stranica se poslužuje sa službene domene.
⚠ Provjerena verzija · nije službena aplikacijaKod je originalan i potvrđen, ali ovo je ogledalo na drugoj domeni. Zrcalo ne može ukloniti ovo upozorenje bez neuspjele provjere.
✗ NeusklađenostSredstvo se ne raspršuje prema onome što kaže manifest.
✗ Neslužbena izradaPonovno izračunati hash paketa nema potvrdu iz repozitorija — vlastiti manifest.
⚠ Podrijetlo nedostupnoNije bilo moguće doći do GitHub API-ja, pa se atest nije mogao provjeriti ni na koji način.

Uvjerite se sami

Ponovno izgradite commit imena dijaloškog okvira O i usporedite:

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

Ispisani hash trebao bi odgovarati i onom u dijaloškom okviru About i onom u tom urezivanju build-provenance run summary. Također možete provjeriti potpis izravno pomoću GitHub CLI-ja:

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

Kanarinac s nalogom

Kanarinac naloga je izjava, objavljena prema fiksnom rasporedu, koju ima programer ne primili su tajnu vladinu naredbu koju je zabranjeno otkriti — a Pismo o nacionalnoj sigurnosti, nalog FISA-e. Programer može biti prisiljen šutjeti o tome takav red, ali se ne može prisiliti na laž, tako da kanarinac ustajao ili nestaje sam signal.

Živi u canary.json u korijenu repozitorija i izravno se dohvaća s GitHuba, tako da se njegova povijest može revidirati neovisno o tome što kaže postavljeno mjesto. Dijaloški okvir O označava ga bojom:

BojaSredstva
zelena — sve jasnoPotpisan, aktualan, a potpis odgovara ključu programera. Nikakva tajna naredba nije primljena.
Žuta boja — kasni ili nije sve jasnoNije osvježeno do navedenog datuma, niti je allClear zastava je lažna. Ne može se isključiti prešućena naredba.
crveno — nevažeći potpis ili nestaoPotpis ne odgovara ključu programera ili je datoteka u potpunosti uklonjena. Shvatite ovo kao ozbiljno upozorenje.

Sidro svježine

Potpisani kanarinac ugrađuje najnoviju visinu i hash bloka Bitcoina u trenutku potpisivanja. Taj hash nije mogao biti poznat prije nego što je blok postojao, što dokazuje da je kanarinac bio potpisan nakon određenoj točki u vremenu, a ne unaprijed potpisanim skupnim mjesecima ranije. Dijaloški okvir About povezuje sidro s block explorerom tako da ga možete provjeriti.