Preskočite na sadržaj
Nazad na Nymchat

Baza znanja Ispod haube

Provjera izrade

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

Reproducibilne građe

Izgradnja aplikacije emituje a build-manifest.json koji sadrži izvorno urezivanje, a SHA-256 hash svakog serviranog HTML, JavaScript i CSS sredstva, i jedan bundleHash preko celog skupa sredstava.

Izlaz ovisi samo o izvornom sadržaju — čak je i zabilježeno vrijeme izrade vremensku oznaku urezivanja, a ne trenutak kada je izgradnja pokrenuta — tako da svako ko ponovo gradi isto commit dobija identične fajlove po bajtovima i iste bundleHash.

GitHub Akcija zatim ponovo gradi svaki urezivanje nezavisno i potpisuje poreklo izgradnje potvrde za hash i manifest, tako da postoji potpisani zapis koji veže a bundleHash na urezivanje u spremištu, proizvedeno nečim drugim osim raspoređivanje.

Šta provjerava dijalog O

O u zaglavlju pokreće provjeru uživo, u vašem pretraživaču.

Dijalog o Nymchatu, koji prikazuje verziju, integritet izgradnje i garantira status kanarinca.
Dijalog O: verzija, integritet gradnje, kanarinac garancije i direktna linija do programera.

Ponovo dohvaća svaki materijal koji stranica zapravo radi, hešira ga sa Web Crypto API-jem i poredi sa manifestom. Onda — i ovo je dio koji je bitan — to ponovo izračunava bundleHash od heša to samo izračunato, ne iz sve što manifest tvrdi, i traži to u potpisanim atestima spremišta preko GitHub API-ja.

To je ono što sprečava implementaciju da jamči za sebe: posluživanje modificiranih datoteka zajedno s odgovarajući manifest i dalje ne uspijeva, jer ponovo izračunati hash nema atest.

StatusSredstva
✓ Verificirana zvanična aplikacija (n/n)Svako sredstvo se poklapa, ponovo izračunati hash paketa je potvrđen od strane spremišta, i stranica se poslužuje sa službenog domena.
⚠ Provjerena verzija · nije zvanična aplikacijaKod je originalan i atestiran, ali ovo je ogledalo na drugom domenu. Ogledalo ne može ukloniti ovo upozorenje bez neuspjeha provjere.
✗ NeusklađenostImovina ne hashira ono što manifest kaže.
✗ Nezvanična gradnjaPonovo izračunati heš paketa nema potvrdu iz spremišta — manifest koji je sam napravio.
⚠ Porijeklo nedostižnoGitHub API nije mogao biti dostupan, tako da se potvrda nije mogla provjeriti na bilo koji način.

Provjeravate sami

Ponovo izgradite urezivanje imena dijaloga About i uporedite:

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

Odštampani heš treba da se podudara i sa onim u dijalogu About i sa onim u tom urezivanju build-provenance run sažetak. Potpis možete provjeriti i direktno sa GitHub CLI:

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

Kanarinac za poternicu

Nalog kanarinca je izjava, objavljena po fiksnom rasporedu, koju ima programer ne primili tajnu vladinu naredbu koju im je zabranjeno otkriti — a Pismo o nacionalnoj sigurnosti, naredba FISA-e. Programer može biti primoran da šuti o tome takav poredak, ali se ne može natjerati da laže, tako da je kanarinac ustajao ili nestao sam signal.

Živi u canary.json u korijenu spremišta i dohvaća se direktno sa GitHub-a, tako da se njegova istorija može revidirati neovisno o tome šta raspoređena stranica kaže. Dijalog O tome označava ga bojama:

BojaSredstva
Zeleno — sve jasnoPotpisano, trenutno i potpis odgovara ključu programera. Tajna naredba nije primljena.
Žuta — kasni, ili nije sve jasnoNije osvježen do navedenog datuma, niti do njegovog allClear zastava je lažna. Prešućena naredba se ne može isključiti.
Crveni — nevažeći potpis ili nestaoPotpis ne odgovara ključu programera ili je datoteka u potpunosti uklonjena. Tretirajte ovo kao ozbiljno upozorenje.

Sidro svježine

Potpisani kanarinac ugrađuje najnoviju visinu Bitcoin bloka i heš u trenutku potpisivanja. Taj heš nije mogao biti poznat prije nego što je blok postojao, što dokazuje da je kanarinac bio potpisan poslije određenom trenutku, a ne unaprijed potpisanim na veliko mjesecima ranije. Dijalog About povezuje sidro sa istraživačem blokova tako da ga možete provjeriti.