Дахин давтагдах чадвар нь нийлүүлэлтийн сүлжээний шинж чанар: ижил зарласан оролтууд ижил артефактыг гаргах ёстой. 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 тэдгээрийг хамардаггүй.

Мэдэгдлийг бодит хүрээнд нь уншиж, дараа нь хөрш асуултыг тусад нь шалга: нийлүүлэгч юу бүртгэдэг, ямар харьяаллын дор хүсэлтэд хариулдаг вэ. Шалгасан хоёртын файл ба шалгаагүй үйлчилгээ зэрэгцэн оршиж болох бөгөөд нийлүүлэлтийн сүлжээний шалгалт засахын тулд биш, харагдуулахын тулд зохион бүтээгдсэн нь яг энэ тохиолдол юм.

Холбоотой нийтлэлүүд