VPN uygulamaları için yeniden üretilebilir derlemeler: eşleşme neyi kanıtlar
Eşleşen bir yeniden derleme, dağıtılan ikili dosyayı beyan edilen kaynak ve araçlara bağlar. O ikilinin arkasındaki VPN hizmeti ya da günlükleri hakkında hiçbir şey söylemez.
Yeniden üretilebilirlik bir tedarik zinciri özelliğidir: aynı beyan edilen girdiler aynı çıktıyı üretmelidir. Bir VPN istemcisi için bu ifade, indirdiğiniz yükleyiciyi herkesin yeniden derleyebileceği kaynak koda ve araç zincirine bağlar. İstemcinin bağlandığı hizmet hakkında hiçbir şey söylemez.
Dolayısıyla yararlı soru dar ve yanıtlanabilirdir. Proje bir yöntem yayımlıyor mu ve sizin belirli çıktınız buna uyuyor mu?
Derlemenin deterministik olmaktan çıktığı yer
Derleyiciler, aksi söylenmedikçe zaman damgalarını, mutlak yolları ve derleme ana bilgisayar adlarını gömer. Arşivler dosya sırasını ve değişiklik zamanlarını kaydeder, bağlayıcılar çıktılarını araç zinciri sürümüne göre değiştirir ve paralel sıkıştırma blokları yeniden sıralayabilir. Bunlardan herhangi biri, aynı kaynağın iki derlemesinin, korkutucu hiçbir şey olmadan bayt düzeyinde farklılaşmasına yol açar. Determinizm derlemeye mühendislikle yerleştirilir, varsayılan olarak asla miras alınmaz.
Yeniden üretilebilirlik iddiasında bulunan proje, uyguladığı normalleştirmeyi adlandırmalıdır: sabit zaman damgaları, eşlenmiş yollar, sıralanmış arşiv girdileri, sabitlenmiş derleyici ve bağımlılık sürümleri. Bu liste olmadan bir uyuşmazlık yorumlanamaz, çünkü meşru değişkenlik alanı tanımlı değildir.
Beyan edilen girdiler de eksiksiz olmalıdır. Etiketsiz bir depo URL'si revizyon değil, hash'siz bir kilit dosyası bağımlılık kümesi değil ve çalışma zamanında araç indiren bir derleme betiği, kimsenin sabitleyemeyeceği bir girdiye sahiptir. Her boşluk sonradan bir farklılığa dönüşür. Herhangi bir şeyi karşılaştırmadan önce listeyi tamamlayın, çünkü eksik bir liste anlamlı bir biçimde başarısız olamaz.
| 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 |
Karşılaştırmanın gerçekte denetlediği şey
Bağımsız bir taraf beyan edilen ortamda yeniden derler ve çıktıyı yayımlanan çıktıyla karşılaştırır. Bit düzeyinde özdeşlik güçlü biçimdir; kaydedilen farkın tersine çevrildiği ve sonuçların sonra örtüştüğü belgelenmiş bir normalleştirme adımı, daha zayıf ama yine de yararlı biçimdir.
Karşılaştırma ikili dosyayla ilgilidir. İmza başka bir soruya yanıt verir: bir sürümü bir anahtara, anahtarı da bir kimliğe bağlar ve bir projenin kimsenin yeniden derlemediği çıktılar üzerinde geçerli imzaları olabilir. İki denetim birbirinin yerini almak yerine üst üste biner.
sha256sum wireguard-installer.msi gpg --verify wireguard-installer.msi.sig wireguard-installer.msi
Kurmadan önce ikisini de çalıştırın ve hash'i aynı sürüm ve platform için yayımlananla karşılaştırın. Satıcının sayfasıyla eşleşen bir hash, indirmenin bozulmadan ulaştığını kanıtlar; satıcının yayımladığı hash ile eşleşen yeniden derlenmiş bir ikili dosya, nasıl yapıldığına dair daha güçlü bir şey kanıtlar.
Bir uyuşmazlık neden kurcalama kanıtı değildir
Uyuşmazlıkların çoğu kimsenin denetlemediği bir girdiden gelir. Farklı bir derleyici yama sürümü, hata ayıklama sembollerine sızan bir derleme yolu, sıralama düzenini değiştiren bir yerel ayar ya da karşılaştırmadan sonra uygulanan bir paketleme adımı, hepsi dürüst işten farklı bir hash üretir.
Bu yüzden bir uyuşmazlık, bir hikâyeye dönüşmeden önce belgelenmiş yönteme karşı okunmalıdır. Yöntem her şeyi sabitliyorsa ve fark açıklanamıyorsa, bu projeye iletilmeye değer gerçek bir bulgudur. Yöntem paketleme konusunda sessizse, fark tamamen beklenen olabilir.
Burada simetri de önemlidir: bir eşleşme kaynağın kusursuz olduğunu kanıtlamaz, yalnızca ikili dosyanın ona karşılık geldiğini kanıtlar. İyi denetlenmiş kod ile yeniden üretilebilir kod farklı özelliklerdir ve bir proje birini diğeri olmadan taşıyabilir.
İddia uygulamanın arkasındaki hizmet hakkında ne söylüyor
İstemci cihazınızdaki bir programdır; hizmet ise başka bir yerdeki sunucular, hesap sistemleri ve saklama politikalarıdır. Yeniden üretilebilirlik ilkini sınırlar ve ikincisi hakkında hiçbir şey söylemez, yükleyici ne kadar dikkatle doğrulanırsa doğrulansın.
Uç nokta yapılandırması kurulumdan sonra da değişebilir; uzak ayarlar ya da sağlayıcının denetlediği bir profil aracılığıyla. Bu değişiklikler ağ üzerinden gelir ve bağlanmadan önce hesapladığınız hiçbir hash tarafından kapsanmaz.
İddiayı gerçek kapsamında okuyun, ardından komşu soruyu ayrıca denetleyin: sağlayıcı neyi kaydediyor ve hangi yargı yetkisi altında taleplere yanıt veriyor. Doğrulanmış bir ikili dosya ile doğrulanmamış bir hizmet bir arada bulunabilir ve tedarik zinciri denetiminin görünür kılmak için tasarlandığı, düzeltmek için değil, tam olarak bu durumdur.