Վերարտադրելիությունը մատակարարման շղթայի հատկություն է․ նույն հայտարարված մուտքերը պետք է արտադրեն նույն արտեֆակտը։ 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-ով, որը հաշվարկել եք միանալուց առաջ։

Կարդացեք պնդումը իրական ծավալով, ապա առանձին ստուգեք հարևան հարցը․ ինչ է գրանցում մատակարարը, և որ իրավազորության ներքո է պատասխանում հարցումներին։ Ստուգված բինար ֆայլը և չստուգված ծառայությունը կարող են գոյակցել, և հենց այդ դեպքն է, որ մատակարարման շղթայի ստուգումը նախատեսված է տեսանելի դարձնելու, ոչ թե ուղղելու համար։

Առնչվող հոդվածներ