База на знаење Под хаубата
Потврдување на изградбата
Отворениот код помага само ако кодот што го извршувате е кодот што беше објавено. Nymchat е изграден детерминистички за да можете сами да го проверите тоа, од внатре апликација или од терминал.
Оваа страница е машински преведена за погодност. Англискиот оригинал е верзијата што се применува.
Репродуктивни градби
Градењето на апликацијата емитува a build-manifest.json што ја содржи изворната заложба, а
SHA-256 хаш на секој сервиран HTML, JavaScript и CSS средство и едно
bundleHash над целиот тој сет на средства.
Излезот зависи само од изворната содржина - дури и снименото време за градење е
временскиот печат на commit наместо моментот кога работи изградбата - така што секој што ќе го обнови истото
commit добива датотеки со идентични бајти и истото bundleHash.
Потоа, GitHub Action ја обновува секоја заложба независно и потпишува build-provenance
атестации за хашот и манифестот, така што постои потпишан запис кој врзува a
bundleHash на заложба во складиштето, произведена од нешто друго освен од
распоредување.
Што проверува дијалогот 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
Апликациите за Android и iOS
Проверката погоре е проверка на веб-апликација, а причината вреди да се каже јасно: домашна апликација не може да си го направи истото сам на себе. Она што работи на вашиот телефон е компајлиран машински код, а не извор во складиштето и ништо што апликацијата може да пресмета на уредот не го поврзува еден со други.
Андроид може да го направи следното најдобро нешто. Инсталираниот .apk е датотека што апликацијата може да ја чита
и хаш, а хашот на секое објавено издание е веќе јавно: објавување до
Zapstore
потпишува настан Nostr кој носи SHA-256 на APK и SHA-256 на неговиот сертификат за потпишување. Значи на
Андроид За дијалогот ја хаши АПК-та од која работи, ги презема потпишаните
настани, ги чува само оние потпишани со клучот на програмерите и споредува. Ги покажува двете
хашови исто така, за да можете да го повторите чекирањето на уредот: преземете ја објавената АПК, стартувајте
sha256sum на неа, и сами погледнете го истиот настан.
Апликација инсталирана од Google Play не може да се провери на овој начин, и тоа не е знак дека ништо не е во ред. Google повторно го потпишува секое поставување со свој клуч и гради посебен АПК за секој уред, така што она што слета на вашиот телефон не е датотеката произведена од страна на програмерот и нејзиниот хаш не одговара на ништо што би можело да се објави. Апликацијата препознава инсталација на игра и вели така наместо да пријавува неуспех.
iOS воопшто не може да се провери. Apple го шифрира и повторно го потпишува секое преземање поединечно, така што хашот пресметан на вашиот iPhone е единствен за вашиот iPhone и не одговара на ништо објавено каде било. Дијалогот За ова директно го кажува наместо да покажува смирувачко статус кој не значи ништо. Ако сакате Nymchat, можете да потврдите на хардверот на Apple, користете ја веб-страницата апликација, која ја проверува секоја датотека што ја работи.
Проверката што ја извршува апликацијата сама по себе не може да докаже дека апликацијата е искрена - кој и да ја изменил може да го отстрани и чекот. Она што го докажува е обичниот случај: дека ве копира инсталирана е копијата што беше објавена. Тоа вреди да се има затоа што го цени споредбите се јавни, па некој друг освен вас може да ги провери и да не се согласува.
Налогот канаринци
Налог канари е изјава, објавена на фиксен распоред, што ја има инвеститорот не добиле тајна владина наредба која им е забрането да ја објават - а Писмо за национална безбедност, наредба на ФИСА. Инвеститорот може да биде принуден да молчи таква наредба, но не може да се принуди да лаже, па затоа канаринот застоел или исчезнува е самиот сигнал.
Живее во canary.json во коренот на складиштето и се зема директно
од GitHub, така што неговата историја може да се ревидира независно од тоа што вели распоредената локација.
Дијалогот About го шифрира со боја:
| Боја | Средства |
|---|---|
| Зелена - се е јасно | Потпишаниот, тековниот и потписот се совпаѓаат со клучот на развивачот. Не е добиена тајна наредба. |
| Жолта - задоцнето, или не е јасно | Тоа не беше освежено од неговиот наведен датум, или неговиот allClear знамето е лажно. Не може да се исклучи замолчената наредба. |
| Црвено — неважечки потпис или исчезна | Потписот не се совпаѓа со клучот на развивачот или датотеката е целосно отстранета. Третирајте го ова како сериозно предупредување. |
Сидро за свежина
Потпишаниот канаринец ја вградува најновата висина на блокот на Биткоин и хаш во моментот на потпишување. Тој хаш не можеше да се знае пред да постои блокот, што докажува дека канаринецот бил потпишан после специфична временска точка наместо претходно потпишана на големо неколку месеци порано. Дијалогот About го поврзува сидрото со блок-истражувач за да можете да го проверите.