Ders 15 / 21
Bilet Tabanlı Kimlik Doğrulama
Bilet akışının bilet veren servisin anahtarına indirgenmesi: altı adımda kanıtlanan iddialar ve her adımın dayandığı anahtar, 471 anahtar kaleminin beş türe dağılması, tek bir kök anahtarın ele geçmesinin 214 aslın ve 21 servisin tamamını düşürmesi, yenilemenin iki tur ve 176 saatlik pencere tutması.
İçindekiler
Önceki ders merkezî deponun kesintisinde 13 sistemde 609 hesap girişinin durduğunu saydı. Bu bağımlılığın kaynağı, her sistemin her girişte depoya sorması ve parolanın her seferinde ağdan geçmesidir. Kurumsal ağlarda bunun yerine tek bir doğrulamadan süreli bir kanıt üretilir ve sonraki erişimlerde parola yerine o kanıt sunulur. Kanıtın adı bilettir (ticket); onu üreten mekanizmanın açık şartnamesi Kerberos adıyla anılır.
Bu ders biletin nasıl çalıştığını değil, biletin neye dayandığını ölçer. Akış kaç adım, hangi adımda hangi iddia kanıtlanıyor, kaç anahtar kalemi aynı anda doğru olmalı, hangi anahtar ele geçerse kaç kalem düşer ve o anahtarı yenilemek kaç tur tutar.
Parolanın Yerini Alan Kanıt
KK5: bilet tabanlı doğrulamada parola yalnız ilk adımda kullanılır; sonraki her erişimde sunulan şey süreli bir bilettir ve bilet parolayı taşımaz. KK6: bir bileti üretebilen, o biletin taşıdığı iddiaların hepsini üretebilir; bu yüzden bilet veren servisin anahtarı alanın güven köküdür. KK7: bir anahtarın yenilenmesi, o anahtarla üretilmiş geçerli kanıtları geçmişe dönük geçersiz kılmaz; yenileme penceresi en uzun ömürlü kanıt kadar sürer.
KK5 iki yönlü bir kazançtır. Parolanın ağdan yalnız bir kez, o da doğrudan değil türetilmiş bir anahtarla geçmesi, hattı dinleyen için parolayı erişilmez kılar. Aynı tasarım maliyeti de getirir: kanıt artık bağımsız bir nesnedir, kopyalanabilir ve süresi dolana kadar kimin elinde olduğu sorulmaz. Ölçülmesi gereken şey biletin gücü değil, bileti üreten anahtarın kapsamı ve biletin ömrüdür.
Altı Adım, Beş Anahtar
Aşağıdaki akış bir modeldir: kurgu bölgesel ölçüm ağı alanında 214 kullanıcı aslı ve 21 servis aslı vardır. Gerçek bir alan, gerçek bir asıl ya da gerçek bir anahtar yoktur.
// bilet/akis.mjs — bilet tabanli kimlik dogrulamanin adimlari ve dayandigi anahtarlar (model): // kurgu bolgesel olcum agi alaninda 214 kullanici asli ve 21 servis asli var. Gercek bir alan, // gercek bir asil ya da gercek bir anahtar yok. Rastgelelik yok. // KK5: bilet tabanli dogrulamada parola yalnizca ilk adimda kullanilir; sonraki her erisimde // sunulan sey sureli bir bilettir. KK6: bir bileti uretebilen, o bileti tasidigi iddialarin // hepsini uretebilir; bilet veren servisin anahtari bu yuzden alanin guven kokudur. export const ADIM = ` 1 on dogrulama istegi parolayi bilen benim kullanici kimlik-servisi 2 bilet veren bilet bu bileti merkez verdi bilet-servisi istemci 3 bilet ve dogrulayici bileti alan taraf benim oturum-1 bilet-servisi 4 servis bileti bu bileti merkez verdi servis-hesabi istemci 5 bilet ve dogrulayici bileti alan taraf benim oturum-2 hedef-servis 6 karsilikli dogrulama karsi uc gercekten o servis servis-hesabi istemci` .trim().split("\n").map((r) => { const p = r.trim().split(/\s{2,}/); return { no: +p[0], ileti: p[1], iddia: p[2], anahtar: p[3], dogrulayan: p[4] }; }); // Anahtar envanteri: adet = alandaki kalem sayisi, asil = anahtar ele gecerse dogrudan // dusen asil sayisi, servis = dusen servis sayisi, tur = yenilemenin kac turda yapildigi. export const ANAHTAR = { "kullanici": { adet: 214, asil: 1, servis: 0, tur: 1, omurSaat: 2160 }, "servis-hesabi": { adet: 21, asil: 214, servis: 1, tur: 1, omurSaat: 8760 }, "oturum-1": { adet: 214, asil: 1, servis: 0, tur: 0, omurSaat: 10 }, "oturum-2": { adet: 21, asil: 1, servis: 1, tur: 0, omurSaat: 10 }, "bilet-servisi": { adet: 1, asil: 214, servis: 21, tur: 2, omurSaat: 8760 }, }; export const BILET_OMUR = 10; // saat export const YENILEME_OMUR = 168; // saat export const KOPYA = 3; export const YAYILMA = 4; // bir anahtar degisikliginin kopyalara ulasma suresi, saat
// bilet/sayim.mjs — akis kac adim, hangi adimda hangi iddia kanitlaniyor, hangi anahtar ele // gecerse kac kalem duser ve bilet veren servisin anahtarini yenilemek kac adim tutar. import { ADIM, ANAHTAR, BILET_OMUR, YENILEME_OMUR, KOPYA, YAYILMA } from "./akis.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 tur = Object.keys(ANAHTAR); const kalem = tur.reduce((a, t) => a + ANAHTAR[t].adet, 0); console.log(`${ADIM.length} adim, ${tur.length} anahtar turu, ${kalem} anahtar kalemi; ` + `bilet omru ${BILET_OMUR} saat, yenileme penceresi ${YENILEME_OMUR} saat`); const A = [-3, -24, -30, 18]; console.log("\n1. adim basina kanitlanan iddia ve dayandigi anahtar"); yaz(A, "no", "ileti", "kanitlanan iddia", "dayandigi anahtar"); for (const a of ADIM) yaz(A, a.no, a.ileti, a.iddia, a.anahtar); const B = [-16, 7, 10, 10, 9, 6]; console.log("\n2. anahtar turu ele gecerse dusen kalem"); yaz(B, "anahtar", "adet", "dusen as", "dus srv", "omur sa", "tur"); for (const t of tur) { const k = ANAHTAR[t]; yaz(B, t, k.adet, k.asil, k.servis, k.omurSaat, k.tur); } const kok = ANAHTAR["bilet-servisi"]; console.log(`tek kalemle dusen oran: asil ${kok.asil}/${ANAHTAR["kullanici"].adet}, ` + `servis ${kok.servis}/${ANAHTAR["servis-hesabi"].adet}`); const C = [-4, -30, 7, 23]; console.log("\n3. bilet veren servisin anahtarini yenileme plani"); const plan = [ ["birinci anahtar degisikligi", 0, "gecmis bilet cozulur"], ["kopyalara yayilma", YAYILMA, `${KOPYA} kopya`], ["acik biletlerin sonu", BILET_OMUR, "yeni bilet alinir"], ["ikinci anahtar degisikligi", 0, "eski anahtar duser"], ["kopyalara yayilma", YAYILMA, `${KOPYA} kopya`], ["yenileme biletlerinin sonu", YENILEME_OMUR - BILET_OMUR, "yeniden giris"], ]; yaz(C, "no", "adim", "saat", "sonuc"); let gecen = 0; plan.forEach((p, i) => { gecen += p[1]; yaz(C, i + 1, p[0], p[1], p[2]); }); console.log(`toplam pencere ${gecen} saat, elle dokunulan kalem ` + `${kok.tur + ANAHTAR["servis-hesabi"].adet}`); const D = [-16, 12, 12, 14]; console.log("\n4. bir anahtar turunun yenilenmesinde duran mesru is"); yaz(D, "anahtar", "elle kalem", "duran asil", "duran servis"); for (const t of tur.filter((x) => ANAHTAR[x].tur > 0)) { const k = ANAHTAR[t]; yaz(D, t, k.adet * k.tur, k.asil, k.servis); }
6 adim, 5 anahtar turu, 471 anahtar kalemi; bilet omru 10 saat, yenileme penceresi 168 saat 1. adim basina kanitlanan iddia ve dayandigi anahtar no ileti kanitlanan iddia dayandigi anahtar 1 on dogrulama istegi parolayi bilen benim kullanici 2 bilet veren bilet bu bileti merkez verdi bilet-servisi 3 bilet ve dogrulayici bileti alan taraf benim oturum-1 4 servis bileti bu bileti merkez verdi servis-hesabi 5 bilet ve dogrulayici bileti alan taraf benim oturum-2 6 karsilikli dogrulama karsi uc gercekten o servis servis-hesabi 2. anahtar turu ele gecerse dusen kalem anahtar adet dusen as dus srv omur sa tur kullanici 214 1 0 2160 1 servis-hesabi 21 214 1 8760 1 oturum-1 214 1 0 10 0 oturum-2 21 1 1 10 0 bilet-servisi 1 214 21 8760 2 tek kalemle dusen oran: asil 214/214, servis 21/21 3. bilet veren servisin anahtarini yenileme plani no adim saat sonuc 1 birinci anahtar degisikligi 0 gecmis bilet cozulur 2 kopyalara yayilma 4 3 kopya 3 acik biletlerin sonu 10 yeni bilet alinir 4 ikinci anahtar degisikligi 0 eski anahtar duser 5 kopyalara yayilma 4 3 kopya 6 yenileme biletlerinin sonu 158 yeniden giris toplam pencere 176 saat, elle dokunulan kalem 23 4. bir anahtar turunun yenilenmesinde duran mesru is anahtar elle kalem duran asil duran servis kullanici 214 1 0 servis-hesabi 21 214 1 bilet-servisi 2 214 21
Sayılar ölçüm sınıfındadır; girdileri KK5–KK7 ile anahtar envanteridir.
Hangi Adımda Hangi İddia Kanıtlanıyor
Birinci tablo altı adımı ve her adımın kanıtladığı tek iddiayı verir. Adım 1 parolayı bilen tarafın kim olduğunu kanıtlar ve bu, akıştaki tek parola kullanımıdır. Adım 2 ve 4 aynı iddiayı taşır — biletin merkezden geldiği — ama farklı anahtarlara dayanır: ilki bilet veren servisin anahtarına, ikincisi hedef servisin hesap anahtarına. Adım 3 ve 5, bileti sunanın onu almış taraf olduğunu kanıtlar; kanıt oturum anahtarıyla üretilen ve zaman damgası taşıyan bir doğrulayıcıdır.
Zaman damgası, önceki derste zincirin dışında kalan kalemlerden biri olan saat eşitliğinin buradaki karşılığıdır. Doğrulayıcının tazeliği yalnız saate dayanır; iki tarafın saati kabul edilen pencereden fazla ayrıldığında hiçbir hesap değişmemiş olmasına rağmen giriş durur. Bir güven kökünün altında, güvenlikle ilgisi olmayan bir servis daha vardır.
Altıncı adım listedeki tek ters yönlü kanıttır: istemci karşı ucun gerçekten o servis olduğunu doğrular. Bu adım isteğe bağlıdır ve atlandığında akış çalışmaya devam eder; kanıtlanmayan tek iddia, istemcinin bağlandığı ucun kimliğidir. Çalışan bir akış, kanıtlanmamış bir iddia bırakabilir ve bunu hiçbir hata iletisi söylemez.
Bir Erişimin Zinciri
Kursun ikinci sütunu burada beş anahtar türünün tamamıyla doludur. Tek bir aslın tek bir servise erişmesi için beş türün beşi de aynı anda doğru olmalıdır: kullanıcı anahtarı ilk adımı, kök anahtar ikinciyi, birinci oturum anahtarı üçüncüyü, servis hesabı anahtarı dördüncüyü ve ikinci oturum anahtarı beşinciyi tutar. Bunların yanına iki kalem daha eklenir — saat penceresi ve adın asıla çözülmesi.
İkinci kalem ilk bakışta görünmez. İstemci bir servise bağlanırken elindeki ad üzerinden bilet ister; bilet veren servis o adı bir asıla çevirir ve bileti o asılın hesap anahtarıyla üretir. Ad ile asıl arasındaki eşleme dizinde durur ve doğruluğu bu akış içinde hiçbir yerde sınanmaz. Yanlış eşlenmiş bir ad, doğru üretilmiş bir bileti yanlış servise götürür. Zincirin yedi kaleminden yalnız beşi kriptografiktir; kalan ikisi bir kayıt ve bir saattir.
Biletin İçindeki Yetki
Bilet kimliği taşır ama yalnız kimliği taşımaz. Hedef servis, aslın hangi gruplara üye olduğunu öğrenmek için dizine ayrıca sormaz; bu bilgi biletin içine konur ve servis onu kabul eder. Böylece bir erişim kararı, dizine hiç dokunmadan verilebilir ve önceki derste sayılan kesinti bağımlılığı azalır.
Bunun bedeli, yetki verisinin biletin ömrü kadar donmuş olmasıdır. Bir asıl bir gruptan çıkarıldığında elindeki bilet on saat daha eski üyeliği söylemeye devam eder; servis, iddiaya inanmak için elinde başka bir kalem tutmadığından farkı göremez. Kimlik doğrulama ile yetkilendirmenin ayrı katmanlar olduğu Siber Güvenliğe Giriş kursunda ölçülmüştü; burada görülen, iki katmanın aynı kanıt nesnesine paketlenmesinin bir tazelik penceresi ürettiğidir. Yetkinin geri alınması, kimliğin geri alınmasından on saat yavaştır.
Kök: Tek Kalem, İki Yüz On Dört Asıl
İkinci tablo bu dersin merkezidir. Alanda 471 anahtar kalemi vardır ve bunların 428’i tek bir asıl ya da tek bir oturumla sınırlı kapsam taşır. Bir kullanıcı anahtarı ele geçerse düşen asıl sayısı birdir; bir oturum anahtarı ele geçerse düşen kalem yine birdir ve zaten on saat sonra kendiliğinden değersizleşir.
Servis hesabı anahtarı sıçramayı gösterir: tek bir kalem, o servise yapılan bütün girişleri kapsar; 214 aslın hepsi o servis için sahte biletle temsil edilebilir. Bilet veren servisin anahtarı ise sınırın sonudur — tek kalem, 214 aslın 214’ü ve 21 servisin 21’i. Oran iki satırda da tamdır.
Bunun nedeni KK6’dır ve mekanizmanın kusuru değil tasarımıdır. Bilet, taşıdığı iddiaların doğru olduğunu bilet veren servisin anahtarıyla üretilmiş olmasına dayanarak söyler. O anahtarı bilen taraf, herhangi bir asıl için herhangi bir servise geçerli bir bilet üretebilir ve bunu yapmak için hiçbir parolayı bilmesine gerek yoktur. Böyle bir üretim, yazılı yetki ve tanımlı kapsam olmadan yapıldığında hem yasadışı hem meslek dışıdır; burada ölçülen şey üretimin nasıl yapıldığı değil, yapıldığı varsayıldığında düşen kalem sayısıdır.
Tabloda gizli kalan bir ayrıntı bu kökü daha da kırılgan yapar. Kök anahtar ayrıcalıklı bir donanım biriminde üretilmiş bağımsız bir değer değildir; alandaki bir hesabın anahtarıdır ve o hesabın parolasından türetilir. Yani 471 kalemin en geniş kapsamlısı, listedeki 214 kullanıcı anahtarıyla aynı türden bir kalemdir ve dayanıklılığı, arkasındaki parolanın uzunluğuyla iş çarpanının verdiği maliyet eğrisiyle sınırlıdır. O eğri Kriptografi Temelleri konusunda ölçüldü ve burada doğrudan girdidir: kökün kapsamı en geniş, kökü koruyan mekanizma ise kullanıcı hesaplarıyla aynıdır.
Yenileme Penceresi
Üçüncü tablo KK7’yi sayıya çevirir. Kök anahtarın yenilenmesi tek bir değişiklik değildir. Eski anahtar bir süre saklanmak zorundadır, çünkü dolaşımdaki biletler onunla üretilmiştir; ilk değişiklikten sonra eski anahtar hâlâ geçerlidir. Gerçek yenileme ikinci değişikliktir ve bunun için önce yayılmanın tamamlanması, sonra açık biletlerin süresinin dolması beklenir.
Pencere altı adımda birikir: iki yayılma turu sekiz saat, açık biletlerin sonu on saat, yenileme biletlerinin sonu 158 saat. Toplam 176 saat. Bu sürenin 158 saati tek bir ayardan gelir — yenileme biletinin yedi günlük ömründen. Kök anahtarın yenilenme süresini belirleyen şey anahtarın kendisi değil, en uzun ömürlü kanıtın ömrüdür; bilet ömrünü kısaltmadan pencere kısalmaz.
Elle dokunulan kalem sayısı 23’tür: kök anahtarın iki turu ve 21 servis hesabı anahtarının denetimi. Dördüncü tablo bunun karşılığını verir. Kullanıcı anahtarlarının yenilenmesi 214 elle kalem tutar ama her biri yalnız bir aslı durdurur; kök anahtarın yenilenmesi iki elle kalem tutar ve 214 aslın hepsini birden durdurur. Elle kalem sayısı ile durdurulan meşru iş, ters yönlü iki ölçüdür ve yenileme planı ikincisine göre yapılır.
Bu ters oran, yenilemenin neden ertelendiğini de açıklar. İki elle kalem küçük bir iştir; 214 aslın yedi güne yayılan kesintisi ise kurumun her ekibini durduran bir olaydır. Kök anahtarın yenilenmesi tek başına teknik bir işlem değil, planlanmış bir kesintidir ve planlanmadığı sürece yapılmayacaktır. Üçüncü sütun — yenilemenin ne tuttuğu — bu yüzden bir maliyet kalemi değil, kökün ne sıklıkta gerçekten yenilendiğini belirleyen sayıdır. Yenilenmemiş bir kök, ele geçtiği tarihten sonraki her bileti sessizce geçerli kılar ve tabloda yazılı 176 saat hiç harcanmaz.
Özet
- Bilet tabanlı doğrulamada parola yalnız ilk adımda kullanılır; kalan beş adımda sunulan şey süreli bir kanıttır ve akış 6 adımda 6 ayrı iddia kanıtlar.
- Altıncı adım atlandığında akış çalışır ama istemcinin bağlandığı ucun kimliği kanıtsız kalır.
- Alandaki 471 anahtar kaleminin 428’i tek asıl ya da tek oturum kapsamındadır; kapsam sıçraması servis hesabı anahtarında başlar, bilet veren servisin anahtarında tamamlanır.
- Kök anahtar tek kalemdir ve ele geçtiğinde 214 aslın 214’ü ile 21 servisin 21’i düşer; bunun için hiçbir parola bilinmesi gerekmez.
- Kök anahtarı yenilemek iki tur, 23 elle kalem ve 176 saatlik pencere tutar; pencerenin 158 saati en uzun ömürlü kanıtın ömründen gelir.
Sonraki Adım
Bu ders bir aslın bir servise erişmesini ölçtü; erişimin başlayabilmesi için istemcinin ağa çoktan bağlanmış olması gerekiyordu. Kurumsal ağlarda bu bağlantının kendisi de bir karar noktasıdır: bir kablo takıldığında ya da bir aygıt kablosuz ağa katılmak istediğinde, ağ donanımı kimliği kendisi doğrulamaz, merkezî bir doğrulama servisine sorar ve yanıta göre bağlantıyı açar. Sonraki ders bunu erişim kararı cinsinden ölçer: kaç aygıt tek servise soruyor, servis erişilemez olduğunda hangi geri düşme davranışı seçiliyor ve o davranışların her biri kaç yol açıyor.
İlerlemeni kaydetmek ve not almak için Giriş yap
Notlarım
Not almak için giriş yapmalısın.