Kalo te përmbajtja
Kthehu te Nymchat

Baza e njohurive Nën kapuç

Verifikimi i ndërtimit

Burimi i hapur ndihmon vetëm nëse kodi që po ekzekutoni është kodi që ishte botuar. Nymchat është ndërtuar në mënyrë deterministe, kështu që ju mund ta kontrolloni vetë, nga brenda aplikacion ose nga një terminal.

Ndërtime të riprodhueshme

Ndërtimi i aplikacionit lëshon një build-manifest.json që përmban angazhimin burimor, a SHA-256 hash i çdo aseti të shërbyer HTML, JavaScript dhe CSS dhe një të vetme bundleHash mbi të gjithë grupin e aseteve.

Prodhimi varet vetëm nga përmbajtja e burimit - madje edhe koha e regjistrimit të ndërtimit është vulën kohore të kryerjes në vend të momentit kur u zhvillua ndërtimi - kështu që kushdo që rindërton të njëjtën gjë commit merr skedarë identikë me bajt dhe të njëjtat bundleHash.

Një Veprim GitHub më pas rindërton çdo kryerje në mënyrë të pavarur dhe nënshkruan origjinën e ndërtimit vërtetimet për hash-in dhe manifestin, kështu që ekziston një procesverbal i nënshkruar që lidh a bundleHash për një angazhim në depo, i prodhuar nga diçka tjetër nga vendosjen.

Çfarë kontrollon dialogu Rreth

Rreth në kokë shkon kontrolli drejtpërdrejt, në shfletuesin tuaj.

Dialogu "Nymchat About", që tregon versionin, integritetin e ndërtimit dhe garanton statusin e kanarinës.
Dialogu Rreth: versioni, integriteti i ndërtimit, garancia e kanarisë dhe një linjë direkte për zhvilluesin.

Ai rimerr çdo aktiv në të cilin faqja po funksionon, e has atë me Web Crypto API, dhe krahason kundrejt manifestit. Pastaj - dhe kjo është pjesa që ka rëndësi - ajo rillogarit bundleHash nga hashët atë vetëm e llogaritur, jo nga çdo gjë që pretendon manifesti dhe e shikon atë në vërtetimet e nënshkruara të depove përmes GitHub API.

Kjo është ajo që ndalon një dislokim të garantojë për veten e tij: shërbimin e skedarëve të modifikuar së bashku me një manifest që përputhet ende dështon, sepse hash-i i rillogaritur nuk ka vërtetim.

StatusiMjetet
&kontrollo; Aplikacioni zyrtar i verifikuar (n/n)Çdo aktiv përputhet, hash-i i rillogaritur i paketës vërtetohet nga depoja, dhe faqja shërbehet nga domeni zyrtar.
⚠ Ndërtimi i verifikuar · jo aplikacioni zyrtarKodi është origjinal dhe i vërtetuar, por ky është një pasqyrë në një domen tjetër. Një pasqyrë nuk mund ta heqë këtë paralajmërim pa dështuar verifikimin.
✗ MospërputhjeNjë aktiv nuk hash me atë që thotë manifesti.
✗ Ndërtim jozyrtarHash-i i rillogaritur i paketës nuk ka asnjë vërtetim nga depoja - një manifest i krijuar vetë.
⚠ Prejardhja e paarritshmeGitHub API nuk mund të arrihej, kështu që vërtetimi nuk mund të kontrollohej në asnjë mënyrë.

Verifikojeni vetë

Rindërtoni emrat e dialogut commit Rreth dhe krahasoni:

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

Hash-i i printuar duhet të përputhet me atë në dialogun Rreth dhe me atë në atë të kryerjes përmbledhje e drejtimit të ndërtimit-preverance. Ju gjithashtu mund të kontrolloni nënshkrimin drejtpërdrejt me GitHub CLI:

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

Aplikacionet Android dhe iOS

Kontrolli i mësipërm është një kontroll i aplikacionit në ueb dhe arsyeja vlen të thuhet qartë: një aplikacion vendas nuk mund t'i bëjë të njëjtën gjë vetes. Ajo që funksionon në telefonin tuaj është kodi i përpiluar i makinës, jo ai burim në depo dhe asgjë që aplikacioni mund të llogarisë në pajisje nuk e lidh një me të tjera.

Android mund të bëjë gjënë tjetër më të mirë. I instaluar .apk është një skedar që aplikacioni mund të lexojë dhe hash, dhe hash-i i çdo publikimi është tashmë publik: publikimi në Zapstore nënshkruan një ngjarje Nostr që mban SHA-256 të APK-së dhe certifikatën e nënshkrimit të saj SHA-256. Kështu që Android Rreth dialogu hash APK-në nga e cila po ekzekutohet, merr ato të nënshkruara ngjarjet, ruan vetëm ato të nënshkruara nga çelësi i zhvilluesit dhe krahason. Ajo tregon të dy hash gjithashtu, kështu që mund të përsërisni kontrollin e pajisjes: shkarkoni APK-në e publikuar, ekzekutoni sha256sum mbi të dhe shikoni vetë të njëjtën ngjarje.

Një aplikacion i instaluar nga Google Play nuk mund të kontrollohet në këtë mënyrë, dhe kjo nuk është një shenjë se çdo gjë është e gabuar. Google rishikon çdo ngarkim me çelësin e vet dhe ndërton një APK të veçantë për çdo pajisje, kështu që ajo që ulet në telefonin tuaj nuk është skedari i prodhuar nga zhvilluesi dhe hash-i i saj nuk përputhet me asgjë që mund të publikohet. Aplikacioni njeh një instalim Play dhe thotë kështu në vend që të raportojë një dështim.

iOS nuk mund të kontrollohet fare. Apple kodon dhe ri-nënshkruan çdo shkarkim individualisht, kështu që një hash i llogaritur në iPhone tuaj është unik për iPhone tuaj dhe nuk përputhet me asgjë botuar kudo. Dialogu Rreth e thotë këtë drejtpërdrejt në vend që të tregojë një qetësim status që nuk do të thotë asgjë. Nëse dëshironi një Nymchat, mund ta verifikoni në harduerin e Apple, përdorni ueb-in aplikacion, i cili kontrollon çdo skedar që po ekzekuton.

Atë që asnjë nga këto nuk e vërteton

Një kontroll që një aplikacion ekzekutohet në vetvete nuk mund të vërtetojë se aplikacioni është i sinqertë – kushdo që e ka modifikuar atë mund të hiqte edhe çekun. Ajo që dëshmon është rasti i zakonshëm: që ju kopjon i instaluar është kopja që është publikuar. Kjo ia vlen sepse e vlerëson atë krahasimet janë publike, kështu që dikush tjetër përveç jush mund t'i kontrollojë ato dhe të mos pajtohet.

Kanarina e garancisë

Një kanarinë e garancisë është një deklaratë, e publikuar në një orar fiks, që zhvilluesi ka jo kanë marrë një urdhër të fshehtë të qeverisë që ata janë të ndaluar të zbulojnë - a Letër e Sigurisë Kombëtare, një urdhër i FISA-s. Zhvilluesi mund të detyrohet të heshtë një urdhër i tillë, por nuk mund të detyrohet të gënjejë, kështu që kanarina është e ndenjur ose e zhdukur vetë sinjali.

Jeton në canary.json në rrënjën e depove dhe merret drejtpërdrejt nga GitHub, kështu që historia e tij mund të auditohet pavarësisht nga çfarëdo që thotë faqja e vendosur. Dialogu Rreth e kodon atë me ngjyra:

NgjyraMjetet
E gjelbër - të gjitha të qartaNënshkrimi, aktual dhe nënshkrimi përputhet me çelësin e zhvilluesit. Asnjë urdhër sekret nuk është marrë.
E verdha - e vonuar, ose jo e gjitha e qartëNuk u rifreskua nga data e deklaruar ose e saj allClear flamuri është i rremë. Një urdhër i heshtur nuk mund të përjashtohet.
E kuqe — nënshkrim i pavlefshëm, ose ikuNënshkrimi nuk përputhet me çelësin e zhvilluesit, ose skedari është hequr tërësisht. Trajtojeni këtë si një paralajmërim serioz.

Spiranca e freskisë

Kanarina e nënshkruar fut lartësinë dhe hash më të fundit të bllokut të Bitcoin në momentin e nënshkrimit. Ai hash nuk mund të dihej përpara se të ekzistonte blloku, gjë që dëshmon se kanarina ishte nënshkruar pas një pikë specifike në kohë sesa e para-nënshkruar në masë muaj më parë. Dialogu Rreth e lidh spirancën me një eksplorues blloku, në mënyrë që ta kontrolloni.