Прескокнете до содржината
Назад на Nymchat

База на знаење Под хаубата

Потврдување на изградбата

Отворениот код помага само ако кодот што го извршувате е кодот што беше објавено. Nymchat е изграден детерминистички за да можете сами да го проверите тоа, од внатре апликација или од терминал.

Репродуктивни градби

Градењето на апликацијата емитува a build-manifest.json што ја содржи изворната заложба, а SHA-256 хаш на секој сервиран HTML, JavaScript и CSS средство и едно bundleHash над целиот тој сет на средства.

Излезот зависи само од изворната содржина - дури и снименото време за градење е временскиот печат на commit наместо моментот кога работи изградбата - така што секој што ќе го обнови истото commit добива датотеки со идентични бајти и истото bundleHash.

Потоа, GitHub Action ја обновува секоја заложба независно и потпишува build-provenance атестации за хашот и манифестот, така што постои потпишан запис кој врзува a bundleHash на заложба во складиштето, произведена од нешто друго освен од распоредување.

Што проверува дијалогот About

За во заглавјето се извршува проверката во живо, во вашиот прелистувач.

Дијалогот Nymchat About, кој ја прикажува верзијата, интегритетот на градбата и гарантира статус на канаринци.
Дијалогот За: верзија, интегритет на градбата, гаранција канари и директна линија до развивачот.

Повторно го презема секое средство што страницата всушност го работи, го хашира со Web Crypto API и споредува против манифестот. Тогаш - и ова е делот што е важен - тоа повторно го пресметува bundleHash од хашите тоа само пресметано, не од сè што тврди манифестот и тоа го бара во потпишаните потврди на складиштето преку GitHub API.

Тоа е она што го спречува распоредувањето да се гарантира за себе: сервирање на изменети датотеки заедно со манифестот што се совпаѓа сè уште не успева, бидејќи повторно пресметаниот хаш нема атест.

СтатусСредства
&провери; Потврдена официјална апликација (n/n)Секое средство се совпаѓа, хашот на повторно пресметаниот пакет е потврден од складиштето, и страницата се сервира од официјалниот домен.
⚠ Потврдена верзија · не е официјална апликацијаКодот е оригинален и потврден, но ова е огледало на друг домен. Огледалото не може да го отстрани ова предупредување без неуспешна потврда.
✗ НесовпаѓањеСредството не се хашира со она што го кажува манифестот.
✗ Неофицијална градбаПовторно пресметаниот хаш на пакетот нема потврда од складиштето - манифест направен самостојно.
⚠ Потеклото е недостапноНе можеше да се достигне GitHub API, така што атестирањето не можеше да се провери на ниту еден начин.

Потврдете го сами

Повторно изградете ги имињата на дијалогот за commit и споредете:

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

Испечатениот хаш треба да одговара и на оној во дијалогот About и на оној во тој заложба резиме на изведба на изведба. Можете исто така да го проверите потписот директно со GitHub CLI:

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

Налогот канаринци

Налог канари е изјава, објавена на фиксен распоред, што ја има инвеститорот не добиле тајна владина наредба која им е забрането да ја објават - а Писмо за национална безбедност, наредба на ФИСА. Инвеститорот може да биде принуден да молчи таква наредба, но не може да се принуди да лаже, па затоа канаринот застоел или исчезнува е самиот сигнал.

Живее во canary.json во коренот на складиштето и се зема директно од GitHub, така што неговата историја може да се ревидира независно од тоа што вели распоредената локација. Дијалогот About го шифрира со боја:

БојаСредства
Зелена - се е јасноПотпишаниот, тековниот и потписот се совпаѓаат со клучот на развивачот. Не е добиена тајна наредба.
Жолта - задоцнето, или не е јасноТоа не беше освежено од неговиот наведен датум, или неговиот allClear знамето е лажно. Не може да се исклучи замолчената наредба.
Црвено — неважечки потпис или исчезнаПотписот не се совпаѓа со клучот на развивачот или датотеката е целосно отстранета. Третирајте го ова како сериозно предупредување.

Сидро за свежина

Потпишаниот канаринец ја вградува најновата висина на блокот на Биткоин и хаш во моментот на потпишување. Тој хаш не можеше да се знае пред да постои блокот, што докажува дека канаринецот бил потпишан после специфична временска точка наместо претходно потпишана на големо неколку месеци порано. Дијалогот About го поврзува сидрото со блок-истражувач за да можете да го проверите.