Ders 19 / 20
Depo Yapılandırması
Depo tanımının bileşenleri, imzalı dizin ve paket özetlerinden oluşan güven zinciri, anahtar parmak izinin doğrulanması ve depo önceliğinin sonuçları.
İçindekiler
Önceki iki ders paketlerin “depodan” geldiğini söyledi ama deponun ne olduğunu tanımlamadı. Depo bir dosya sunucusundan ibaret değildir; olsaydı, indirilen paketin doğru paket olduğunu söyleyecek hiçbir şey bulunmazdı.
Bu ders deponun yapısını ve üzerine kurulu güven zincirini ele alır. Zincir, dosya aktarımı dersindeki özet doğrulamasının ve şifreli kabuk dersindeki parmak izi onayının birleşimidir; ikisi de burada tek bir düzenekte buluşur.
Depo Tanımı
Sisteme bir depo tanıtmak, ona en az şu bilgileri vermektir:
| Alan | Anlamı |
|---|---|
| Adres | Dosyaların indirileceği temel konum |
| Yayın | Deponun hangi sürüm dalını sunduğu |
| Bileşen | Depo içindeki alt bölüm (örneğin özgür yazılım ayrımı) |
| Mimari | Hangi işlemci ailesi için paket isteneceği |
| Anahtar | Deponun imzalarını doğrulayacak açık anahtar |
Tanımlar /etc altında, dizin hiyerarşisi dersinde anlatılan “yapılandırma metin
dosyalarında durur” ilkesine uygun biçimde tutulur. Adlandırma ve söz dizimi paket
yöneticisi ailesine göre değişir, alanlar değişmez.
Adres alanının bir sonucu, aynı içeriğin birden çok sunucudan sunulabilmesidir: yansılar. Yansı, deponun birebir kopyasını taşıyan bağımsız bir sunucudur ve indirmeyi hızlandırmak için kullanılır. Yansının içeriğini doğrulamak, aşağıdaki zincirin var olma nedenidir; aksi hâlde her yansıya ayrı ayrı güvenmek gerekirdi.
Güven Zinciri
Depo iki tür dosya sunar: paketlerin kendisi ve bir dizin dosyası. Dizin, her paketin adını, sürümünü, bağımlılıklarını ve içerik özetini taşır. Dizin dosyası ise imzalanır.
Zincir üç halkadır:
- Açık anahtar, depoyu yöneten tarafın kimliğini temsil eder ve sisteme bir kez tanıtılır.
- Dizin dosyasının imzası bu anahtarla doğrulanır; imza geçerliyse dizinin içeriği değiştirilmemiştir.
- İndirilen her paketin özeti, dizindeki değerle karşılaştırılır; eşleşiyorsa paket değiştirilmemiştir.
Tek bir imza, binlerce paketi dolaylı olarak kapsar. Paketlerin ayrı ayrı imzalanması gerekmez; özetleri imzalı bir dosyada durduğu için yeterlidir.
Zincir küçük ölçekte kurulup doğrulanabilir. Aşağıdaki depo iki paket, bir dizin dosyası, dizinin imzası ve deponun açık anahtarından oluşur:
$ ls DIZIN DIZIN.asc cizim-2.0.pkg depo-anahtari.asc rapor-1.4.pkg
Anahtarın Tanıtılması
İlk adım anahtarı incelemektir. Anahtarın kimliği, parmak izi denen sabit uzunluktaki özetiyle temsil edilir:
$ gpg --show-keys --with-fingerprint depo-anahtari.asc
gpg: directory '/home/ogrenci/.gnupg' created
gpg: keybox '/home/ogrenci/.gnupg/pubring.kbx' created
pub ed25519 2026-07-26 [SC]
E31E 9629 AEBE 63E9 0EEB EDEE A258 E130 F14C ACAA
uid Depo Bakimcisi <bakim@ornek>
Bu noktada kritik bir adım vardır ve atlanması zincirin tamamını anlamsızlaştırır: parmak izi, anahtarın indirildiği kanaldan bağımsız bir kaynakla karşılaştırılmalıdır. Anahtarı deponun kendisinden indirip yine deponun söylediği parmak iziyle doğrulamak, hiçbir şey doğrulamaz.
Aynı sorun şifreli kabuk dersinde sunucu parmak izinde de vardı ve çözümü aynıdır: ilk karşılaşmada kimlik başka bir kanaldan teyit edilir, sonrasında değişiklik otomatik yakalanır.
Teyitten sonra anahtar sisteme alınır:
$ gpg --import depo-anahtari.asc gpg: /home/ogrenci/.gnupg/trustdb.gpg: trustdb created gpg: key A258E130F14CACAA: public key "Depo Bakimcisi <bakim@ornek>" imported gpg: Total number processed: 1 gpg: imported: 1
Zincirin Doğrulanması
Dizinin imzası anahtarla sınanır:
$ gpg --verify DIZIN.asc DIZIN gpg: Signature made Sun Jul 26 19:37:53 2026 UTC gpg: using EDDSA key E31E9629AEBE63E90EEBEDEEA258E130F14CACAA gpg: Good signature from "Depo Bakimcisi <bakim@ornek>" [unknown] gpg: WARNING: This key is not certified with a trusted signature! gpg: There is no indication that the signature belongs to the owner. Primary key fingerprint: E31E 9629 AEBE 63E9 0EEB EDEE A258 E130 F14C ACAA
İki satır ayrı şeyler söyler ve karıştırılmamalıdır. “Good signature”, dosyanın bu anahtarla imzalandığını ve imzadan sonra değişmediğini bildirir — bu, matematiksel bir doğrulamadır. Uyarı ise anahtarın sahibinin gerçekten iddia ettiği kişi olduğuna dair bir kanıt bulunmadığını söyler; bu, yukarıdaki bağımsız kanal teyidinin yapılmadığı anlamına gelir. İmza geçerlidir, ama kime ait olduğu ayrı bir sorudur.
Dizin doğrulandıktan sonra paketlerin özetleri sınanır:
$ cat DIZIN 3375dab7d8aa59a185e9e8f5e0f4095517d89bdb75245ef22a25966e2e348756 cizim-2.0.pkg 3fe6fac9c36f99b284199580aead74c6c2d33f3a60449954c90dac700ca48e08 rapor-1.4.pkg $ sha256sum -c DIZIN cizim-2.0.pkg: OK rapor-1.4.pkg: OK
Zincir tamamlanmıştır: imza dizini, dizin paketleri garanti eder.
Zincir Neyi Yakalar
Paket dosyası yolda değiştirilirse özet uyuşmaz:
$ printf 'zararli icerik\n' > cizim-2.0.pkg $ sha256sum -c DIZIN cizim-2.0.pkg: FAILED rapor-1.4.pkg: OK sha256sum: WARNING: 1 computed checksum did NOT match
Saldırgan bunu aşmak için dizini de değiştirmek zorundadır. Özetler yeniden hesaplandığında dizin kendi içinde tutarlı hâle gelir:
$ sha256sum *.pkg > DIZIN $ sha256sum -c DIZIN cizim-2.0.pkg: OK rapor-1.4.pkg: OK
Ama imza artık uymaz:
$ gpg --verify DIZIN.asc DIZIN gpg: Signature made Sun Jul 26 19:37:53 2026 UTC gpg: using EDDSA key E31E9629AEBE63E90EEBEDEEA258E130F14CACAA gpg: BAD signature from "Depo Bakimcisi <bakim@ornek>" [unknown]
Zincirin gücü buradadır: dizini değiştirmek için imzalama anahtarı gerekir ve o anahtar depoda değil, bakımcıdadır. Bu nedenle bir yansının ele geçirilmesi paketleri değiştirmeye yetmez.
Bu, taşıma katmanındaki şifrelemenin sağlayamadığı bir güvencedir. Şifreli bir indirme, verinin yolda değişmediğini gösterir; sunucudaki içeriğin doğru içerik olduğunu göstermez. İmza ise içeriğin kaynağını doğrular ve yansılardan geçmiş olması bunu değiştirmez. İki koruma birbirinin yerine geçmez.
Depo Eklemek Bir Güven Kararıdır
Sisteme yeni bir depo eklemek, o deponun bakımcısına şu yetkileri vermektir: sisteme paket kurabilme, kurulum betiklerini kök yetkisiyle çalıştırabilme ve var olan paketleri kendi sürümleriyle değiştirebilme.
Son madde en az fark edilenidir. Yeni depo, sistem deposundaki bir paketle aynı adı taşıyan ve daha yüksek sürüm numaralı bir paket sunarsa, yükseltmede o paket sistemin paketinin yerini alır. Bu nedenle paket yöneticileri öncelik düzeneği sunar: her depoya bir ağırlık verilir ve aynı paketin hangi kaynaktan alınacağı bu ağırlıkla belirlenir.
Uygulamada üç ölçüt izlenir:
Depo sayısı az tutulur. Her ek depo, güvenilmesi gereken bir taraf ekler.
Ek depoların kapsamı daraltılır. Yalnızca gereken paketlerin o depodan alınması, öncelik kuralları veya paket adı sınırlamalarıyla sağlanır.
Anahtarlar depo başına ayrılır. Tek bir anahtarın tüm depolar için geçerli sayılması, bir anahtarın ele geçirilmesini tüm depoları ele geçirmeye dönüştürür.
Bir depodan yalnızca birkaç paket gerekiyorsa, deponun tamamını eklemek yerine paket dosyalarını indirip özetleriyle doğrulamak daha dar bir güven alanı bırakır. Bunun bedeli, güncellemelerin otomatik gelmemesidir.
Özet
- Depo tanımı adres, yayın, bileşen, mimari ve doğrulama anahtarından oluşur.
- Depo, paketlerin yanında paket özetlerini taşıyan bir dizin dosyası sunar ve bu dosya imzalanır.
- Güven zinciri üç halkadır: anahtar bakımcıyı, imza dizini, dizindeki özetler paketleri doğrular.
- Anahtarın parmak izi, anahtarın geldiği kanaldan bağımsız bir kaynakla teyit edilmelidir; aksi hâlde zincir kendi kendini doğrular.
- Geçerli imza, dosyanın değişmediğini gösterir; anahtarın sahibinin kim olduğu ayrı bir sorudur ve uyarı satırı bunu bildirir.
- Taşıma şifrelemesi verinin yolda değişmediğini, imza ise içeriğin kaynağını doğrular; ikisi birbirinin yerine geçmez.
Sonraki Adım
Sistem tanındı, dosyalar düzenlendi, izinler kuruldu ve yazılım kurma yolu açıldı. Geriye tek bir eksik kalıyor: bu kursta oluşturulan betik ve yapılandırma dosyaları, terminalden çıkmadan nasıl düzenlenir? Kursun son dersi terminal metin editörlerini — kip tabanlı ve kipsiz tasarımları — ele alır ve hangi durumda hangisinin seçileceğini gösterir.
İlerlemeni kaydetmek ve not almak için Giriş yap
Notlarım
Not almak için giriş yapmalısın.