Репродуктивност је својство ланца снабдевања: исти декларисани улази морају да произведу исти артефакт. За VPN клијента, та тврдња повезује инсталатер који сте преузели са изворним кодом и ланцем алата који свако може поново да изгради. О услузи на коју се клијент повезује не говори ништа.

Корисно питање је зато уско и има одговор. Да ли пројекат објављује поступак и да ли ваш конкретни артефакт одговара њему?

Где градња престаје да буде детерминистичка

Компајлери уграђују временске ознаке, апсолутне путање и имена хостова за градњу, осим ако им се то не забрани. Архиви бележе редослед фајлова и времена измена, линкери мењају излаз са верзијом ланца алата, а паралелна компресија може да преуреди блокове. Било шта од тога чини да се две градње истог извора разликују у бајтовима, а да се при том не догоди ништа злокобно. Детерминизам се уграђује у градњу инжењерски, никада се не наслеђује подразумевано.

Пројекат који тврди репродуктивност мора да наведе нормализацију коју примењује: фиксне временске ознаке, мапиране путање, сортиране архивске уносе, приковане верзије компајлера и зависности. Без тог списка одступање се не може протумачити, јер простор легитимне варијације није дефинисан.

Декларисани улази такође морају бити потпуни. URL складишта без ознаке није ревизија, датотека закључавања без хеша није скуп зависности, а скрипта за градњу која преузима алат у време извршавања има улаз који нико не може да прикује. Свака празнина се касније претвара у разлику. Допуните списак пре него што било шта упоредите, јер непотпуним списком не може да се доживи неуспех на начин који нешто значи.

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

Покрените обе пре инсталације и упоредите хеш са оним објављеним за исто издање и платформу. Хеш који се поклапа са страницом добављача доказује да је преузимање стигло неоштећено; поново изграђен бинарни фајл који се поклапа са објављеним хешем добављача доказује нешто јаче о томе како је направљен.

Зашто одступање није доказ неовлашћеног мењања

Већина одступања долази од улаза који нико није контролисао. Друго издање закрпе компајлера, путања градње која је процурила у симболе за отклањање грешака, локалитет који је променио редослед сортирања или корак паковања примењен после поређења, сви дају другачији хеш од поштеног рада.

Зато се одступање мора читати уз документовани поступак пре него што постане прича. Ако поступак прикује све, а разлика остане необјашњена, то је стварно откриће које вреди саопштити пројекту. Ако поступак ћути о паковању, разлика може бити потпуно очекивана.

Симетрија је овде такође важна: подударање не доказује да је извор без дефеката, већ само да бинарни фајл одговара њему. Добро ревидиран код и репродуктивни код су различита својства, а пројекат може имати једно без другог.

Шта тврдња говори о услузи иза апликације

Клијент је програм на вашем уређају; услуга су сервери, системи налога и политике чувања другде. Репродуктивност ограничава прво и не говори ништа о другом, колико год пажљиво инсталатер био проверен.

Конфигурација крајње тачке може се променити и после инсталације, преко удаљених подешавања или профила који контролише провајдер. Те промене стижу преко мреже и нису обухваћене ниједним хешем који сте израчунали пре повезивања.

Прочитајте тврдњу у њеном стварном обиму, па затим одвојено проверите суседно питање: шта провајдер бележи и по којој јурисдикцији одговара на захтеве. Проверен бинарни фајл и непроверена услуга могу постојати заједно, и управо је то случај који провера ланца снабдевања треба да учини видљивим, а не да поправи.

Повезани чланци