Перайсці да зместу
Вярнуцца да Nymchat

База ведаў Пад капотам

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

Адкрыты зыходны код дапамагае толькі ў тым выпадку, калі код, які вы выкарыстоўваеце, гэта той самы код апублікавана. Nymchat пабудаваны дэтэрмінаваным чынам, так што вы можаце праверыць гэта самастойна, знутры прыкладання або з тэрмінала.

Узнаўляльныя зборкі

Стварэнне прыкладання вылучае a build-manifest.json які змяшчае зыходны фікс, a Хэш SHA-256 кожнага абслугоўванага актыву HTML, JavaScript і CSS, а таксама асобнага bundleHash над усім наборам актываў.

Выхад залежыць толькі ад зыходнага кантэнту - нават запісаны час зборкі з'яўляецца пазнака часу фіксацыі, а не момант запуску зборкі - таму кожны, хто перабудоўвае тое ж самае commit атрымлівае ідэнтычныя па байту файлы і тое ж самае bundleHash.

Затым дзеянне GitHub перабудоўвае кожнае фіксаванне незалежна і падпісвае паходжанне зборкі атэстацыі для хэша і маніфеста, таму ёсць падпісаны запіс, які звязвае a bundleHash да фіксацыі ў сховішчы, створанай чымсьці іншым, чым разгортванне.

Што правярае дыялогавае акно "Аб".

Аб у загалоўку запускае праверку ў прамым эфіры ў вашым браўзеры.

Дыялог пра Nymchat, які паказвае версію, цэласнасць зборкі і гарантуе статус канарэйкі.
Дыялогавае акно «Аб праграме»: версія, цэласнасць зборкі, гарантыя і прамая лінія з распрацоўшчыкам.

Ён паўторна атрымлівае кожны актыв, на якім фактычна запушчана старонка, хэшуе яго з дапамогай Web Crypto API і параўноўвае з маніфестам. Затым - і гэта частка, якая мае значэнне - гэта пералічвае bundleHash з хэшаў гэта проста разлічваецца, а не з усё, што сцвярджае маніфест, і шукае гэта ў падпісаных атэстацыях сховішча праз API GitHub.

Вось што перашкаджае разгортванню паручыцца само за сябе: абслугоўванне змененых файлаў разам з адпаведны маніфест па-ранейшаму не атрымліваецца, таму што паўторна вылічаны хэш не мае атэстацыі.

СтатусСродкі
&праверыць; Праверанае афіцыйнае прыкладанне (н/н)Кожны актыв супадае, перавылічаны хэш пакета пацверджаны рэпазіторыем, і старонка абслугоўваецца з афіцыйнага дамена.
⚠ Правераная зборка · не з'яўляецца афіцыйным дадаткамКод сапраўдны і зацверджаны, але гэта люстэрка ў іншым дамене. Люстэрка не можа выдаліць гэтае папярэджанне без праверкі.
✗ НеадпаведнасцьАктывы не хэшуюць тое, што сказана ў маніфесце.
✗ Неафіцыйная зборкаПаўторна вылічаны хэш пакета не мае атэстацыі з рэпазіторыя — гэта самаробны маніфест.
⚠ Паходжанне недасяжнаеAPI GitHub недасяжны, таму атэстацыю немагчыма праверыць у любым выпадку.

Правяраючы гэта самастойна

Аднавіце фіксацыю імёнаў дыялогавых вокнаў «Аб» і параўнайце:

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

Ордэрная канарэйка

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

Жыве ў canary.json у корані сховішча і атрымоўваецца непасрэдна з GitHub, таму яго гісторыю можна правяраць незалежна ад таго, што сказана на разгорнутым сайце. Дыялогавае акно "Аб" пазначае яго колерам:

КолерСродкі
Зялёны — усё зразумелаПадпісана, актуальна, і подпіс адпавядае ключу распрацоўшчыка. Ніякага сакрэтнага загаду не паступала.
Жоўты — пратэрмінавана, ці не ўсё зразумелаЁн не быў абноўлены да заяўленай даты або яго allClear сцяг ілжывы. Нельга выключаць і замоўчаны загад.
Чырвоны — подпіс несапраўдны, або яго нямаПодпіс не супадае з ключом распрацоўшчыка, або файл быў цалкам выдалены. Успрымайце гэта як сур'ёзнае папярэджанне.

Якар свежасці

Падпісаная канарэйка ўбудоўвае апошнюю вышыню блока біткойнаў і хэш на момант падпісання. Гэты хэш не мог быць вядомы да існавання блока, што даказвае, што канарэйка была падпісаны пасля канкрэтны момант часу, а не папярэдне падпісаныя масава месяцамі раней. Дыялогавае акно «Аб праграме» звязвае прывязку з правадыром блокаў, каб вы маглі праверыць яе.