Преминете към съдържанието
Обратно към Нимчат

База знания Под капака

Проверка на компилацията

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

Възпроизводими конструкции

Изграждането на приложението излъчва a build-manifest.json съдържащ ангажимента на източника, a SHA-256 хеш на всеки сервиран HTML, JavaScript и CSS актив и единичен bundleHash над целия този набор от активи.

Резултатът зависи само от изходното съдържание - дори записаното време за изграждане е клеймото на commit, а не момента, в който компилацията е стартирана - така че всеки, който възстановява същото commit получава идентични по байт файлове и същите bundleHash.

След това GitHub Action възстановява всеки комит независимо и подписва произхода на компилацията атестации за хеша и манифеста, така че има подписан запис, обвързващ a bundleHash към ангажимент в хранилището, произведен от нещо различно от разгръщане.

Какво проверява диалоговият прозорец Информация

За в заглавката изпълнява проверката на живо във вашия браузър.

Диалоговият прозорец Относно Nymchat, показващ версията, целостта на компилацията и гарантиращ статус на канарче.
Диалоговият прозорец About: версия, цялост на компилация, гаранция за канарче и директна връзка с разработчика.

Той повторно извлича всеки актив, който страницата действително работи, хешира го с Web Crypto API и сравнява с манифеста. Тогава - и това е важната част - то преизчислява bundleHash от хъшовете то просто изчислено, не от всичко, което манифестът твърди, и го търси в подписаните атестации на хранилището чрез GitHub API.

Това е, което спира внедряването да гарантира само за себе си: обслужване на модифицирани файлове заедно с съвпадащ манифест все още е неуспешен, тъй като преизчисленият хеш няма атестация.

СтатусСредства
&проверете; Потвърдено официално приложение (n/n)Всеки актив съвпада, преизчисленият хеш на пакета се удостоверява от хранилището, и страницата се обслужва от официалния домейн.
⚠ Проверена компилация · не е официалното приложениеКодът е оригинален и удостоверен, но това е огледало на друг домейн. Огледалото не може да премахне това предупреждение без проверката да е неуспешна.
✗ НесъответствиеЕдин актив не хешира това, което се казва в манифеста.
✗ Неофициална компилацияПреизчисленият хеш на пакета няма атестация от хранилището — самостоятелно направен манифест.
⚠ Произходът е недостижимAPI на GitHub не може да бъде достигнат, така че атестацията не може да бъде проверена по двата начина.

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

Създайте отново ангажимента на имената на диалоговия прозорец About и сравнете:

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

Канарчето варант

Варантът е изявление, публикувано по фиксиран график, което разработчикът има не са получили секретна правителствена заповед, която им е забранено да разкриват — a Писмо за национална сигурност, заповед на FISA. Разработчикът може да бъде принуден да мълчи такава заповед, но не може да бъде принуден да лъже, така че канарчето застоява или изчезва самият сигнал.

То живее в canary.json в основата на хранилището и се извлича директно от GitHub, така че неговата история може да се проверява независимо от това, което казва внедреният сайт. Диалоговият прозорец Информация го кодира с цвят:

ЦвятСредства
Зелено — всичко ясноПодписан, актуален и подписът съответства на ключа на разработчика. Не е получена тайна поръчка.
Жълто — просрочено или не всичко е ясноНе е обновен до посочената дата или до allClear флагът е фалшив. Не може да се изключи заглушена поръчка.
червено — невалиден подпис или го нямаПодписът не съответства на ключа на програмиста или файлът е премахнат изцяло. Приемете това като сериозно предупреждение.

Котвата на свежестта

Подписаното канарче вгражда най-новата височина на биткойн блок и хеш в момента на подписване. Този хеш не може да е бил известен преди съществуването на блока, което доказва, че канарчето е било подписан след конкретен момент от време, а не предварително подписани групово месеци по-рано. Диалоговият прозорец About свързва котвата с изследовател на блокове, така че можете да го проверите.