База знания Под капака
Проверка на компилацията
Отвореният код помага само ако кодът, който изпълнявате, е кодът, който е бил публикувани. Nymchat е изграден детерминистично, така че можете да проверите това сами отвътре приложение или от терминал.
Тази страница е машинно преведена за удобство. Английският оригинал е версията, която се прилага.
Възпроизводими конструкции
Изграждането на приложението излъчва a build-manifest.json съдържащ ангажимента на източника, a
SHA-256 хеш на всеки сервиран HTML, JavaScript и CSS актив и единичен
bundleHash над целия този набор от активи.
Резултатът зависи само от изходното съдържание - дори записаното време за изграждане е
клеймото на commit, а не момента, в който компилацията е стартирана - така че всеки, който възстановява същото
commit получава идентични по байт файлове и същите bundleHash.
След това GitHub Action възстановява всеки комит независимо и подписва произхода на компилацията
атестации за хеша и манифеста, така че има подписан запис, обвързващ a
bundleHash към ангажимент в хранилището, произведен от нещо различно от
разгръщане.
Какво проверява диалоговият прозорец Информация
За в заглавката изпълнява проверката на живо във вашия браузър.
Той повторно извлича всеки актив, който страницата действително работи, хешира го с 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 свързва котвата с изследовател на блокове, така че можете да го проверите.