Перейти до вмісту
Назад до Німчату

База знань Під капотом

Перевірка збірки

Відкритий вихідний код допомагає, лише якщо код, який ви використовуєте, є тим самим опубліковано. Nymchat побудовано детерміновано, тому ви можете перевірити це самостійно, зсередини або з терміналу.

Відтворювані збірки

Створення програми випромінює a build-manifest.json містить вихідний комміт, a Хеш SHA-256 кожного активу HTML, JavaScript і CSS, а також окремого bundleHash над усім набором активів.

Результат залежить лише від вихідного вмісту — навіть записаний час збірки є важливим мітка часу коміту, а не момент запуску збірки — тому будь-хто, хто збирає заново, те саме commit отримує байтово-ідентичні файли та те саме bundleHash.

Потім GitHub Action перебудовує кожен комміт незалежно та підписує походження збірки атестації для хешу та маніфесту, тож існує підписаний запис, що зв’язує a bundleHash до коміту в сховищі, створеного чимось іншим, ніж розгортання.

Що перевіряє діалогове вікно «Про».

про у заголовку запускає перевірку в реальному часі у вашому браузері.

Діалогове вікно «Про Nymchat», яке показує версію, цілісність збірки та гарантує статус канарки.
Діалогове вікно «Про програму»: версія, цілісність збірки, гарантійна програма та прямий зв’язок із розробником.

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

Саме це заважає розгортанню ручатися за себе: обслуговування змінених файлів разом із відповідний маніфест все ще не вдається, оскільки повторно обчислений хеш не має атестації.

Статусзасоби
&перевірити; Перевірений офіційний додаток (n/n)Кожен актив збігається, повторно обчислений хеш пакета засвідчується репозиторієм, і сторінка обслуговується з офіційного домену.
⚠ Перевірена збірка · не офіційний додатокКод справжній і підтверджений, але це дзеркало в іншому домені. Дзеркало не може видалити це попередження, не пройшовши перевірку.
✗ НевідповідністьАктив не хешує те, що зазначено в маніфесті.
✗ Неофіційна збіркаПереобчислений хеш пакета не має атестації зі сховища — маніфест, створений самостійно.
⚠ Походження недоступнеНе вдалося отримати доступ до GitHub API, тому атестацію неможливо перевірити в будь-який спосіб.

Перевірте це самостійно

Перебудуйте коміт імен діалогового вікна Про та порівняйте:

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

Надрукований хеш має збігатися з хеш-кодом у діалоговому вікні «Про програму» та хеш-кодом у коміті підсумок запуску збірки походження. Ви також можете перевірити підпис безпосередньо за допомогою GitHub CLI:

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

Ордерна канарка

Ордерна канарка - це заява, опублікована за фіксованим графіком, яку має розробник ні отримали таємне урядове розпорядження, яке заборонено розголошувати — a Лист національної безпеки, наказ FISA. Забудовника можна змусити промовчати такий наказ, але не можна змусити брехати, тому канарейка несвіжа або зникає сам сигнал.

Воно живе в canary.json у корені сховища та витягується безпосередньо з GitHub, тому його історію можна перевірити незалежно від того, що повідомляє розгорнутий сайт. Діалогове вікно «Про» позначає його кольором:

колірзасоби
Зелений — все ясноПідписано, актуально, і підпис відповідає ключу розробника. Ніякого секретного наказу не отримано.
Жовтий — прострочено, або не все зрозумілоЙого не було оновлено до зазначеної дати або до його allClear прапор хибний. Не можна виключати замовчування.
Червоний — недійсний підпис або його немаєПідпис не відповідає ключу розробника, або файл повністю видалено. Сприймайте це як серйозне попередження.

Якір свіжості

Підписана канарка вбудовує останню висоту блоку біткойна та хеш на момент підписання. Цей хеш не міг бути відомий до того, як існував блок, що доводить, що канарка була підписаний після певний момент часу, а не попередньо підписані масово місяцями раніше. Діалогове вікно «Про» пов’язує прив’язку з провідником блоків, щоб ви могли його перевірити.