İçeriğe geç
academia.sh

Ders 01 / 20

Katman Modelleri ve Saldırı Yüzeyi

Ağ yüzeyinin iddia cinsinden ölçülmesi: tek bir sayaç okumasının dört katmanda taşıdığı 18 iddianın hiçbirinin kanıtı olmaması, beş savunmanın 11 iddiayı doğrulanabilir kılıp 7'sini açık bırakması, bir savunmanın altındaki katmanın hiçbir iddiasını görememesi ve doğrulamanın 4 ek tur, 13 anahtar kalemi, 25 elle kalem, 11 reddedilen bağlantı ve 6 dışarıda kalan aygıt tutması.

İçindekiler

Önceki kurs makinenin sınırını saydı: izin bitleri, hipervizör duvarı, bölme. Kapanışta kalan soru şuydu — şube sunucusu yalnız başına durmuyor, ona bağlanan her uç işletim sisteminin çizdiği sınırın dışından geçen bir yol açıyor ve o yolları kimse saymıyor. Bu ders o yolları sayılabilir bir birime çevirir.

Birim, bağlantının kendisi değildir. İki makine arasında bir kablo olması tek başına bir şey söylemez; o kablodan geçen mesajların ne söylediği ve alıcının neye dayanarak inandığı belirleyicidir. Ağ üzerindeki her mesaj bir ya da birkaç iddia (claim) taşır: “kaynak adres benim”, “şu ad şu adrese karşılık gelir”, “bu segment açık bir oturuma ait”. Bu kursun ölçü birimi, doğrulanmadan kabul edilen iddia sayısıdır.

İddianın Kanıtı

PG1: her mesaj bir iddia taşır; iddia, alıcının doğru sayması beklenen bir önermedir. PG2: bir iddianın kanıtı, alıcının o iddiayı gönderenden bağımsız olarak sınayabildiği veridir; kanıtı olmayan iddia doğrulanmadan kabul edilir. PG3: bir savunma yalnız kendi katmanının ve üstündeki katmanın iddialarını doğrulanabilir kılar; altındaki katmanın iddiası ona görünmez.

“Bu protokol güvensizdir” bir karar taşımaz. Karar taşıyan üç sayı vardır ve bu kurs boyunca her ders bu üçünü yazar: kaç iddia doğrulanmadan kabul ediliyor, savunma kaçını doğrulanabilir kılıyor ve kaçı hâlâ doğrulanamıyor, doğrulamanın bedeli ne. Bedel dört kalemde ölçülür: el sıkışmaya eklenen tur sayısı, sürekli yönetilen anahtar kalemi, elle tutulan yapılandırma kalemi ve reddedilen meşru bağlantı ile dışarıda kalan eski aygıt sayısı.

Katmanların görevleri, başlık alanları ve protokol mekaniği Ağ Modelleri ve Protokoller kursunda ölçüldü; burada tekrarlanmaz. Katman burada yalnız bir sayma ekseni olarak kullanılır: her katman kaç iddia taşıyor ve kaçının kanıtı var.

Bir Okumanın Taşıdığı On Sekiz İddia

Aşağıdaki liste bir modeldir: kurgu bölgesel ölçüm ağında bir sayaç okumasının sahadan merkeze giderken taşıdığı iddialar sayılır. Gerçek bir ağ, gerçek bir ana bilgisayar adı ya da gerçek bir genel adres yoktur. Bu sayımın gerçek bir ağ üzerinde yapılması yazılı yetki ve tanımlı kapsam olmadan hem yasadışı hem meslek dışıdır.

// aglar/iddia.mjs — kurgu bolgesel olcum aginda tek bir sayac okumasinin sahadan merkeze
// giderken tasidigi iddialar (model): gercek bir ag, gercek bir ana bilgisayar adi ya da
// gercek bir genel adres yok. Rastgelelik yok.

// PG1: her mesaj bir iddia tasir; iddia, alicinin dogru saymasi beklenen bir onermedir.
// PG2: bir iddianin kaniti, alicinin iddiayi gondericiden bagimsiz sinayabildigi veridir;
// kaniti olmayan iddia dogrulanmadan kabul edilir. Son sutun, iddianin bu konudaki hangi
// derste olculdugudur.
export const IDDIA = `
  baglanti  kaynak donanim adresi bana ait          uc-kaydi        03
  baglanti  su ag adresi su donanim adresine ait    uc-kaydi        03
  baglanti  bu bolutun ag gecidi benim              uc-kaydi        03
  baglanti  bu cerceve su bolute ait                -                -
  ag        paketin kaynak adresi benim             kaynak-suzme    06
  ag        bu ag benim uzerimden gecilir           -               07
  ag        bu parca su butunun parcasidir          -               06
  ag        bu denetim iletisi agdan geliyor        -               06
  tasima    bu segment acik oturuma ait             oturum-baglama  08
  tasima    bu oturumu ben actim                    oturum-baglama  06
  tasima    bu oturumu ben kapatiyorum              oturum-baglama  07
  uygulama  su ad su adrese karsilik gelir          imzali-ad       04
  uygulama  adres dagitimini yapan sunucu benim     -               05
  uygulama  karsi uc sunucu benim                   uc-dogrulama    07
  uygulama  ben su saha terminaliyim                uc-dogrulama    02
  uygulama  bu yanit benim istegime karsiliktir     uc-dogrulama    04
  uygulama  bu okuma su sayactan geldi              -               08
  uygulama  bu istek daha once gonderilmedi         -               08`
  .trim().split("\n").map((r) => {
    const p = r.trim().split(/\s{2,}/);
    return { kat: p[0], ad: p[1], dog: p[2], ders: p[3] };
  });

// PG3: bir savunma yalnizca kendi katmaninin ve ustundeki katmanin iddialarini
// dogrulanabilir kilar; alt katmanin iddiasi ona gorunmez.
// Bedel sutunlari: ek tur = el sikismaya eklenen gidis-donus; anahtar = surekli yonetilen
// anahtar kalemi; elle = elle tutulan yapilandirma kalemi; red = reddedilen mesru baglanti;
// eski = disarida kalan eski aygit.
export const SAVUNMA = {
  "uc-kaydi":       { kat: "baglanti", tur: 0, anahtar: 0, elle: 14, red: 3, eski: 0 },
  "kaynak-suzme":   { kat: "ag",       tur: 0, anahtar: 0, elle: 6,  red: 2, eski: 0 },
  "oturum-baglama": { kat: "tasima",   tur: 1, anahtar: 0, elle: 0,  red: 0, eski: 2 },
  "imzali-ad":      { kat: "uygulama", tur: 1, anahtar: 4, elle: 2,  red: 1, eski: 0 },
  "uc-dogrulama":   { kat: "uygulama", tur: 2, anahtar: 9, elle: 3,  red: 5, eski: 4 },
};

export const KATMAN = ["baglanti", "ag", "tasima", "uygulama"];
export const BEDEL = ["tur", "anahtar", "elle", "red", "eski"];
export const acik = (etkin) =>
  IDDIA.filter((i) => i.dog === "-" || !etkin.includes(i.dog)).length;
export const toplamBedel = (etkin) => BEDEL.map((b) =>
  etkin.reduce((s, d) => s + SAVUNMA[d][b], 0));
// aglar/sayim.mjs — katman basina iddia sayimi: kacinin kaniti var, savunma kacini
// dogrulanabilir kiliyor, kaci hala dogrulanamiyor ve bunun bedeli ne.
import { IDDIA, SAVUNMA, KATMAN, acik, toplamBedel } from "./iddia.mjs";

const yaz = (g, ...s) => console.log(s.map((v, i) =>
  (g[i] < 0 ? String(v).padEnd(-g[i]) : String(v).padStart(g[i]))).join(""));
const hepsi = Object.keys(SAVUNMA);

console.log(`${IDDIA.length} iddia, ${KATMAN.length} katman, ${hepsi.length} savunma; ` +
  `kaniti olan iddia ${IDDIA.length - acik([])}, dogrulanmadan kabul edilen ${acik([])}`);

const A = [-11, 8, 9, 14, 13];
console.log("\n1. katman basina iddia ve kaniti olan iddia sayisi");
yaz(A, "katman", "iddia", "kaniti", "kilinabilir", "savunmasiz");
for (const k of KATMAN) {
  const s = IDDIA.filter((i) => i.kat === k);
  yaz(A, k, s.length, 0, s.filter((i) => i.dog !== "-").length,
    s.filter((i) => i.dog === "-").length);
}

const B = [-16, -10, 12, 8, 8, 9, 7, 6];
console.log("\n2. her savunma tek basina acikken");
yaz(B, "savunma", "katman", "dogrulanan", "kalan", "ek tur", "anahtar", "elle", "red");
for (const d of hepsi) {
  const s = SAVUNMA[d];
  yaz(B, d, s.kat, IDDIA.filter((i) => i.dog === d).length, acik([d]),
    s.tur, s.anahtar, s.elle, s.red);
}

const C = [-16, 12, 8, 8, 9, 7, 6, 6];
console.log("\n3. savunmalar alttan uste eklenirse (birikimli)");
yaz(C, "eklenen", "dogrulanan", "kalan", "ek tur", "anahtar", "elle", "red", "eski");
const etkin = [];
yaz(C, "hicbiri", 0, acik([]), 0, 0, 0, 0, 0);
for (const d of hepsi) {
  etkin.push(d);
  yaz(C, d, IDDIA.length - acik(etkin), acik(etkin), ...toplamBedel(etkin));
}

const D = [-40, -11, 7];
console.log("\n4. butun savunmalar acikken dogrulanamayan iddialar");
yaz(D, "iddia", "katman", "ders");
for (const i of IDDIA.filter((x) => x.dog === "-")) yaz(D, i.ad, i.kat, i.ders);

const E = [-16, 8, 13, 13, 13];
console.log("\n5. bir savunma altindaki katmanlarin kac iddiasini goruyor");
yaz(E, "savunma", "altta", "dogruladigi", "alttan acik", "ustten acik");
for (const d of hepsi) {
  const sinir = KATMAN.indexOf(SAVUNMA[d].kat);
  const a = IDDIA.filter((i) => KATMAN.indexOf(i.kat) < sinir);
  const u = IDDIA.filter((i) => KATMAN.indexOf(i.kat) >= sinir);
  yaz(E, d, a.length, IDDIA.filter((i) => i.dog === d).length,
    a.filter((i) => i.dog !== d).length, u.filter((i) => i.dog !== d).length);
}
18 iddia, 4 katman, 5 savunma; kaniti olan iddia 0, dogrulanmadan kabul edilen 18

1. katman basina iddia ve kaniti olan iddia sayisi
katman        iddia   kaniti   kilinabilir   savunmasiz
baglanti          4        0             3            1
ag                4        0             1            3
tasima            3        0             3            0
uygulama          7        0             4            3

2. her savunma tek basina acikken
savunma         katman      dogrulanan   kalan  ek tur  anahtar   elle   red
uc-kaydi        baglanti             3      15       0        0     14     3
kaynak-suzme    ag                   1      17       0        0      6     2
oturum-baglama  tasima               3      15       1        0      0     0
imzali-ad       uygulama             1      17       1        4      2     1
uc-dogrulama    uygulama             3      15       2        9      3     5

3. savunmalar alttan uste eklenirse (birikimli)
eklenen           dogrulanan   kalan  ek tur  anahtar   elle   red  eski
hicbiri                    0      18       0        0      0     0     0
uc-kaydi                   3      15       0        0     14     3     0
kaynak-suzme               4      14       0        0     20     5     0
oturum-baglama             7      11       1        0     20     5     2
imzali-ad                  8      10       2        4     22     6     2
uc-dogrulama              11       7       4       13     25    11     6

4. butun savunmalar acikken dogrulanamayan iddialar
iddia                                   katman        ders
bu cerceve su bolute ait                baglanti         -
bu ag benim uzerimden gecilir           ag              07
bu parca su butunun parcasidir          ag              06
bu denetim iletisi agdan geliyor        ag              06
adres dagitimini yapan sunucu benim     uygulama        05
bu okuma su sayactan geldi              uygulama        08
bu istek daha once gonderilmedi         uygulama        08

5. bir savunma altindaki katmanlarin kac iddiasini goruyor
savunma            altta  dogruladigi  alttan acik  ustten acik
uc-kaydi               0            3            0           15
kaynak-suzme           4            1            4           13
oturum-baglama         8            3            8            7
imzali-ad             11            1           11            6
uc-dogrulama          11            3           11            4

Sayılar ölçüm sınıfındadır; girdileri PG1–PG3’tür.

On Sekiz İddia, Sıfır Kanıt

Başlık satırı bu kursun çıkış noktasıdır: on sekiz iddianın hiçbirinin kanıtı yoktur. Hiçbir savunma açık değilken alıcı, on sekiz önermenin tamamını yalnız gönderenin söylediği için doğru sayar. Bu bir arıza değildir; sayılan protokollerin çoğu, ağ üzerindeki tarafların birbirine zarar vermek istemediği bir ortam için tasarlanmıştır ve doğrulama o tasarımın parçası değildir.

Birinci tablo dağılımı verir. Uygulama katmanı yedi iddia ile en yüklüsüdür, çünkü bir okumanın anlamı orada kurulur: kim gönderdi, hangi sayaçtan geldi, hangi ada karşılık geliyor. Bağlantı katmanı dört, ağ katmanı dört, taşıma katmanı üç iddia taşır. Ağ katmanı dört iddiasının üçünü hiçbir savunmaya bağlayamaz; taşıma katmanı üç iddiasının üçünü de bağlar. İki katman arasındaki bu fark, savunma bütçesinin nereye gittiğini önceden belirler.

Taşıma katmanının üçünü birden bağlayabilmesinin nedeni, üç iddianın da aynı kanıta dayanmasıdır: bir oturumun açılışında iki tarafın üzerinde anlaştığı ve sonraki her mesajda sınanabilen bir bağ. Ağ katmanının üç açık iddiası ise üç ayrı kanıt ister ve hiçbiri mesajın içinde taşınamaz — bir paketin hangi yoldan geçtiği, alıcının elindeki veriden çıkarılamaz. Bir katmandaki iddiaların tek bir kanıta indirgenip indirgenemediği, o katmanın savunma maliyetini belirleyen asıl özelliktir.

Bir Savunma Neyi Göremez

İkinci tablo her savunmayı tek başına açar. En pahalı savunma olan uç doğrulama üç iddia doğrular ve on beşini açık bırakır; en ucuz savunmalardan uç kaydı da üç iddia doğrular ve aynı on beşi bırakır. Tek başına hiçbir savunma iddiaların altıda birinden fazlasını kapatmaz.

Beşinci tablo bunun nedenini gösterir ve PG3’ü sayıya çevirir. Uç doğrulama uygulama katmanındadır; altında on bir iddia vardır ve bunların on biri de ona açık kalır. İmzalı ad çözümleme için aynı sayı on birdir. Oturum bağlama sekiz alt iddianın sekizini görmez. Bir savunmanın alt katmanda kapattığı iddia sayısı her satırda sıfırdır.

Bu, güvenli bir uygulama katmanı bağlantısının altındaki ağın hangi hâlde olduğunu neden söylemediğinin ölçüsüdür. Uç doğrulama açıkken karşı ucun kim olduğu doğrulanır; o uca hangi adres üzerinden gidildiği, o adresin hangi donanım adresine çözüldüğü ve paketin hangi ağdan geçtiği doğrulanmaz. Bunlar ayrı iddialardır ve ayrı savunma ister.

Doğrulamanın Bedeli

Üçüncü tablo beş savunmayı alttan üste birikimli açar. Doğrulanan iddia sayısı 0, 3, 4, 7, 8, 11 diye ilerler; kalan 18’den 7’ye iner. Aynı satırlarda bedel de birikir: dört ek tur, on üç anahtar kalemi, yirmi beş elle tutulan yapılandırma kalemi, on bir reddedilen meşru bağlantı ve altı dışarıda kalan eski aygıt.

Bedelin biçimi savunmadan savunmaya değişir ve bu fark yönetim yükünü belirler. Uç kaydı hiçbir ek tur ve hiçbir anahtar istemez, ama tek başına on dört elle kalem getirir: her uç için bir kayıt. Uç doğrulama ise elle üç kalem tutar ama dokuz anahtar kalemi ve iki ek tur ekler. Birincinin maliyeti insana, ikincininki her bağlantıya yazılır. On dört elle kalem, ağ büyüdükçe doğrusal artar ve unutulan bir kalem sessizce açık bırakır; iki ek tur ise ağ büyüdükçe artmaz, her bağlantıda aynı kalır.

Kaynak süzme satırı ters uçtadır: bir tek iddia doğrular ve altı elle kalem ile iki reddedilen bağlantıya mal olur. Doğrulanan iddia başına düşen bedel, tablodaki en kötü orandır. Yine de o tek iddia — kaynak adresin gerçekten göndericiye ait olması — altıncı derste ölçülecek bütün kapasite aritmetiğinin girdisidir. Doğrulanan iddia sayısı tek başına bir sıralama ölçütü değildir; hangi iddianın doğrulandığı sayıdan önce gelir.

Yedi İddia Açık Kalır

Dördüncü tablo bu dersin en önemli sonucudur. Beş savunmanın beşi de açıkken yedi iddia hâlâ doğrulanamaz. Bunlar zayıf yapılandırmanın sonucu değildir; sayılan savunmaların hiçbirinin kapsamına girmezler. Ağ katmanında üç, uygulama katmanında üç, bağlantı katmanında bir tane vardır.

Yedisinin altısı bu konunun geri kalanında tek tek ölçülür. Adres dağıtımını yapan sunucunun kim olduğu beşinci derste, yolun kimin üzerinden geçtiği yedinci derste, parçalama ve denetim iletisi altıncı derste, okumanın kaynağı ve isteğin tazeliği sekizinci derste sayılır. Yalnız biri — bir çerçevenin hangi bölüte ait olduğu — bu konuda ölçülmez, çünkü karşılığı protokolde değil ağın çizildiği sınırdadır.

Bu yedi satır aynı zamanda konunun haritasıdır. Sonraki yedi dersin her biri buradaki bir ya da birkaç satırı alır, kendi mesaj kümesinde koşturur ve aynı üç sütunu yazar. Sayı on sekizden başlar ve her derste yalnız o dersin ele aldığı iddialar için değişir.

Özet

  • Ağ yüzeyinin ölçü birimi doğrulanmadan kabul edilen iddia sayısıdır: bir sayaç okuması dört katmanda 18 iddia taşır ve savunma yokken bunların kanıtı olan sayısı sıfırdır.
  • Dağılım eşit değildir: uygulama katmanı 7, bağlantı ve ağ katmanı 4’er, taşıma katmanı 3 iddia taşır; ağ katmanı 4 iddiasının 3’ünü hiçbir savunmaya bağlayamaz.
  • Tek başına hiçbir savunma üçten fazla iddia doğrulamaz; en pahalı savunma da en ucuzu da 15 iddiayı açık bırakır.
  • Bir savunma altındaki katmanların iddialarının hiçbirini doğrulamaz: beş savunmanın beşinde de alt katmanda kapanan iddia sayısı sıfırdır.
  • Beş savunma birlikte 11 iddia doğrular, 7’sini açık bırakır ve bedeli 4 ek tur, 13 anahtar kalemi, 25 elle kalem, 11 reddedilen bağlantı ile 6 dışarıda kalan aygıttır.

Sonraki Adım

Bu ders iddiaları bir okumanın yolculuğu boyunca saydı — yani ağın konuştuğu anı ölçtü. Oysa bir uç, hiç kimse ona bir şey göndermeden önce de bir şey yapar: dinler. Açık bir bağlantı noktası, üzerinden hiçbir mesaj geçmese bile bir bildirimdir; o uçtaki servisin belirli bir iddia sınıfını kabul etmeye hazır olduğunu söyler. Yedi açık uç, yedi ayrı hazır bekleyen kabul demektir ve bunların kaçının o makinede gerçekten bir işi olduğu ayrı bir sayıdır. Sonraki ders bir servis envanterini bu gözle sayar: hangi bağlantı noktası hangi iddiayı kabul ediyor, kaç servis hiç kullanılmıyor ve kullanılmayanları kapatmak kaç iddiayı ortadan kaldırıyor.

İlerlemeni kaydetmek ve not almak için Giriş yap

Notlarım

Not almak için giriş yapmalısın.

Aramak için yazmaya başlayın.

↑↓ Esc gezin · aç · kapat