VPN aplikazioetarako birkonpilazio errepikagarriak: zer frogatzen du bat-etortzeak
Bat datozen birkonpilazio batek banatutako binario bat adierazitako iturburu-kodeari eta tresnei lotzen die. Ez du ezer esaten binario horren atzeko VPN zerbitzuaz ezta haren erregistroez ere.
Errepikagarritasuna hornikuntza-katearen propietatea da: adierazitako sarrera berberek artefaktu bera ekoitzi behar dute. VPN bezero batentzat, baieztapen horrek deskargatutako instalatzailea edonork berreraiki dezakeen iturburu-kodeari eta tresna-kateari lotzen die. Ez du ezer esaten bezeroa konektatzen den zerbitzuaz.
Galdera erabilgarria, beraz, estua da eta erantzuna du. Proiektuak prozedura bat argitaratzen al du, eta zure artefaktu zehatzak bat egiten al du harekin?
Non uzten dion konpilazioak determinista izateari
Konpiladoreek denbora-zigiluak, bide absolutuak eta konpilazio-ostalarien izenak txertatzen dituzte, berariaz bestela esaten ez bazaie. Artxiboek fitxategien ordena eta aldaketa-orduak erregistratzen dituzte, estekatzaileek beren irteera aldatzen dute tresna-katearen bertsioarekin, eta konpresio paraleloak blokeak berrordenatu ditzake. Horietako edozein nahikoa da iturburu beraren bi konpilazio byteetan desberdinak izan daitezen, ezer arrarorik gertatu gabe. Determinismoa konpilazioan txertatzen da ingeniaritzaz, ez da inoiz lehenespenez heredatzen.
Errepikagarritasuna aldarrikatzen duen proiektuak aplikatzen duen normalizazioa izendatu behar du: denbora-zigilu finkoak, mapatutako bideak, ordenatutako artxibo-sarrerak, konpiladorearen eta mendekotasunen bertsio finkatuak. Zerrenda hori gabe, desadostasuna ezin da interpretatu, bariazio legitimoaren espazioa definitu gabea delako.
Adierazitako sarrerek ere osoak izan behar dute. Etiketa gabeko biltegi-URL bat ez da berrikuspen bat, hashik gabeko blokeo-fitxategi bat ez da mendekotasun-multzo bat, eta exekuzio-unean tresna bat deskargatzen duen konpilazio-script batek inork finka ezin dezakeen sarrera du. Hutsune bakoitza gero desberdintasun bihurtzen da. Bete zerrenda edozer alderatu aurretik, zerrenda osatugabeak ezin duelako huts egin zerbait esan nahi duen moduan.
| Input | How it drifts | What pins it |
|---|---|---|
| Source | Branch moves after release | Commit hash in the build metadata |
| Toolchain | Compiler patch level differs | Container image digest |
| Packaging | Archive order and mtimes vary | Normalised archive settings |
Zer egiaztatzen duen konparazioak benetan
Alderdi independente batek adierazitako ingurunean berreraikitzen du eta irteera argitaratutako artefaktuarekin alderatzen du. Bitez bit berdintasuna forma sendoa da; dokumentatutako normalizazio-urrats bat, erregistratutako desberdintasuna alderantzikatzen dena eta emaitzak gero bat datozena, ahulagoa baina oraindik erabilgarria den forma da.
Konparazioa binarioari buruzkoa da. Sinadurak beste galdera bati erantzuten dio: bertsio bat gako batekin eta gako bat identitate batekin lotzen ditu, eta proiektu batek sinadura baliodunak izan ditzake inork berreraiki gabeko artefaktuen gainean. Bi egiaztapenak elkarren gainean pilatzen dira, elkar ordezkatu beharrean.
sha256sum wireguard-installer.msi gpg --verify wireguard-installer.msi.sig wireguard-installer.msi
Exekutatu biak instalatu aurretik, eta alderatu hash-a bertsio eta plataforma bererako argitaratutakoarekin. Hornitzailearen orriarekin bat datorren hash batek frogatzen du deskarga osorik iritsi zela; hornitzailearen argitaratutako hasharekin bat datorren binario berreraiki batek zerbait sendoagoa frogatzen du nola egin zenari buruz.
Zergatik ez den desadostasuna manipulazioaren froga
Desadostasun gehienak inork kontrolatu ez zuen sarrera batetik datoz. Konpiladorearen adabaki-bertsio desberdin bat, arazketa-sinboloetara ihes egin zuen konpilazio-bide bat, ordena aldatu zuen lokalizazio bat edo konparazioaren ondoren aplikatutako ontziratze-urrats bat, denek lan zintzotik desberdina den hash bat sortzen dute.
Horregatik, desadostasuna dokumentatutako prozeduraren aurka irakurri behar da istorio bihurtu aurretik. Prozedurak dena finkatzen badu eta desberdintasuna azaldu gabe jarraitzen badu, benetako aurkikuntza da, proiektuari planteatzea merezi duena. Prozedura ontziratzeari buruz isilik badago, desberdintasuna erabat espero zitekeen zerbait izan daiteke.
Simetriak ere badu garrantzia hemen: bat-etortzeak ez du frogatzen iturburu-kodea akatsik gabea denik, soilik binarioa hari dagokiola. Ongi auditatu kodea eta kode errepikagarria propietate desberdinak dira, eta proiektu batek bata izan dezake bestea gabe.
Zer esaten duen baieztapenak aplikazioaren atzeko zerbitzuaz
Bezeroa zure gailuko programa bat da; zerbitzua, berriz, beste nonbait dauden zerbitzariak, kontu-sistemak eta atxikipen-politikak dira. Errepikagarritasunak lehena mugatzen du eta ez du ezer esaten bigarrenaz, instalatzailea zenbat eta arretaz egiaztatu.
Bukaerako puntuaren konfigurazioa instalatu ondoren ere alda daiteke, urrutiko ezarpenen edo hornitzaileak kontrolatutako profil baten bidez. Aldaketa horiek saretik iristen dira eta ez daude konektatu aurretik kalkulatutako inolako hashek estalita.
Irakurri baieztapena bere benetako esparruan, eta gero egiaztatu alboko galdera bereizita: hornitzaileak zer erregistratzen duen eta zein jurisdikzioren pean erantzuten dien eskariei. Egiaztatutako binario bat eta egiaztatu gabeko zerbitzu bat batera egon daitezke, eta hori da, hain zuzen, hornikuntza-katearen egiaztapenak ikusgai egiteko diseinatuta dagoen kasua, konpondu ordez.