Қайталанымдық — жеткізу тізбегінің қасиеті: бірдей мәлімделген кірістер бірдей артефактіні шығаруға тиіс. VPN клиенті үшін бұл тұжырым жүктеп алған орнатушыны кез келген адам қайта құрастыра алатын бастапқы кодпен және құралдар тізбегімен байланыстырады. Ол клиент қосылатын қызмет туралы ештеңе айтпайды.

Сондықтан пайдалы сұрақ тар және жауабы бар. Жоба рәсімді жариялай ма, және сіздің нақты артефактіңіз оған сәйкес пе?

Құрастыру қай жерде детерминді болудан қалады

Компиляторлар уақыт белгілерін, абсолютті жолдарды және құрастыру хосттарының атауларын енгізеді, егер оларға бұған тыйым салынбаса. Мұрағаттар файлдар ретін және өзгерту уақыттарын жазады, линкерлер шығысын құралдар тізбегінің нұсқасына қарай өзгертеді, ал параллель сығу блоктарды қайта реттей алады. Осылардың кез келгені бір бастапқы кодтан екі құрастырудың байттар бойынша өзгеруіне әкеледі, бірақ ешбір қорқынышты нәрсе болмайды. Детерминизм құрастыруға инженерия арқылы енгізіледі, ол әдепкі бойынша мұрагерлікке берілмейді.

Қайталанымдықты мәлімдейтін жоба қолданылатын нормалауды атауға тиіс: тіркелген уақыт белгілері, салыстырылған жолдар, сұрыпталған мұрағат жазбалары, бекітілген компилятор мен тәуелділік нұсқалары. Бұл тізімсіз сәйкессіздікті түсіндіру мүмкін емес, өйткені заңды вариация кеңістігі анықталмаған.

Мәлімделген кірістер де толық болуы керек. Тегі жоқ қойма URL-ы ревизия емес, hash-сыз құлыптау файлы тәуелділіктер жиыны емес, ал іске қосу кезінде құралды жүктейтін құрастыру скриптінің ешкім бекіте алмайтын кірісі бар. Әрбір олқылық кейін айырмашылыққа айналады. Бірдеңені салыстырмас бұрын тізімді толықтырыңыз, өйткені толық емес тізім мағынасы бар түрде сәтсіздікке ұшырай алмайды.

InputHow it driftsWhat pins it
SourceBranch moves after releaseCommit hash in the build metadata
ToolchainCompiler patch level differsContainer image digest
PackagingArchive order and mtimes varyNormalised archive settings

Салыстыру шын мәнінде нені тексереді

Тәуелсіз тарап мәлімделген ортада қайта құрастырады және шығысты жарияланған артефактімен салыстырады. Биттік сәйкестік — күшті форма; тіркелген айырмашылық қайтарылатын және нәтижелер содан кейін сәйкес келетін құжатталған нормалау қадамы — әлсіздеу, бірақ әлі де пайдалы форма.

Салыстыру бинарлық файлға қатысты. Қолтаңба басқа сұраққа жауап береді: ол шығарылымды кілтпен, ал кілтті сәйкестікпен байланыстырады, және жобада ешкім қайта құрастырмаған артефактілерге жарамды қолтаңбалар болуы мүмкін. Екі тексеру бірін-бірі алмастырудың орнына қабаттасады.

sha256sum wireguard-installer.msi
gpg --verify wireguard-installer.msi.sig wireguard-installer.msi

Орнату алдында екеуін де іске қосыңыз және hash-ты сол шығарылым мен платформа үшін жарияланған hash-пен салыстырыңыз. Жеткізушінің бетіне сәйкес келетін hash жүктеудің бүтін жеткенін дәлелдейді; жеткізуші жариялаған hash-қа сәйкес келетін қайта құрастырылған бинарлық файл оның қалай жасалғаны туралы неғұрлым күшті нәрсені дәлелдейді.

Неге сәйкессіздік араласудың дәлелі емес

Сәйкессіздіктердің көбі ешкім бақыламаған кірістен келеді. Компилятордың басқа патч шығарылымы, жөндеу таңбаларына сіңген құрастыру жолы, сұрыптау ретін өзгерткен локаль немесе салыстырудан кейін қолданылған қаптау қадамы — бәрі адал жұмыстан өзгеше hash береді.

Сондықтан сәйкессіздікті әңгімеге айналдырмас бұрын құжатталған рәсімге қарсы оқу керек. Егер рәсім бәрін бекітіп, айырмашылық түсіндірілмей қалса, бұл жобаға жеткізуге тұрарлық нақты табыс. Егер рәсім қаптау туралы үнсіз болса, айырмашылық толығымен күтілетін болуы мүмкін.

Мұнда симметрия да маңызды: сәйкестік бастапқы кодтың ақаусыз екенін дәлелдемейді, тек бинарлық файлдың оған сәйкес келетінін дәлелдейді. Жақсы аудиттелген код пен қайталанатын код — әртүрлі қасиеттер, және жоба бірін екіншісінсіз ұстай алады.

Мәлімдеме қолданбаның артындағы қызмет туралы нені айтады

Клиент — құрылғыңыздағы бағдарлама; қызмет — басқа жердегі серверлер, тіркелгі жүйелері және сақтау саясаттары. Қайталанымдық біріншісін шектейді және екіншісі туралы ештеңе айтпайды, орнатушы қаншалықты мұқият тексерілсе де.

Соңғы нүкте конфигурациясы орнатудан кейін де өзгеруі мүмкін: қашықтағы параметрлер немесе жеткізуші басқаратын профиль арқылы. Бұл өзгерістер желі арқылы келеді және қосылу алдында есептеген кез келген hash-пен қамтылмайды.

Мәлімдемені нақты ауқымында оқыңыз, содан кейін көршілес сұрақты бөлек тексеріңіз: жеткізуші нені жазады және қандай юрисдикцияда сұрауларға жауап береді. Тексерілген бинарлық файл мен тексерілмеген қызмет қатар өмір сүре алады, және бұл дәл жеткізу тізбегін тексеру көрінетін ету үшін жасалған жағдай, түзету үшін емес.

Қатысты мақалалар