Ders 09 / 21
Sertifika Otoriteleri ve Güven Zinciri
Tek kökün taşıdığı yük sayıyla ölçülür: dört ara otorite altında 4.397 uç kalem ve 4.400 güven deposu kopyası tek köke bağlı, ara otorite kırılması 10 ile 4.101 kalem arasında değişirken kök kırılması 8.802 kalem düşürüyor ve 95 iş günü elle dokunuş istiyor; yedek kök kesintiyi sıfırlıyor ama dokunuş sayısını değiştirmiyor.
İçindekiler
Önceki ders sertifikayı bir iddialar kümesi olarak ölçtü ve bir kalemi varsayım olarak bıraktı: doğrulayan taraf, verenin açık anahtarını zaten elinde tutuyordu. O anahtar oraya kendiliğinden gelmedi. Bir uç kalem bir ara otorite tarafından, ara otorite bir kök tarafından imzalanır; kökü imzalayan ise kimse yoktur — kök kendi kendini imzalar ve doğrulanmadığı için değil, doğrudan kabul edildiği için geçerlidir. Güven kökü tam olarak burasıdır: zincirin ilk halkası kanıtla değil, kararla yerleştirilir.
Bu ders o kararın taşıdığı yükü sayar. Kurgu bölgesel ölçüm ağının sertifika envanteri bir grafik olarak kurulur ve üç şey ölçülür: tek kök kaç kalemi birden taşıyor, ara otorite eklemek her doğrulamaya kaç kalem ekliyor, bir otorite kırıldığında kaç kalem düşüp yenilenmesi kaç dokunuş tutuyor.
- PK6. Bir otoritenin kırılması, özel anahtarının denetim dışına çıkması ya da otoritenin yetkisiz bir kalemi imzalamış olmasıdır. İkisinin de sonucu aynıdır: o otoritenin imzası artık kanıt taşımaz.
- PK7. Güven deposu, kök kaleminin yazılı olduğu yerdir. Bir makinede bir kopya bulunur ve kopya sayısı makine sayısına eşittir.
- PK8. Bir makine sınıfı ya uzaktan ulaşılır ya da elle. Uzaktan ulaşılan sınıfta yenileme dağıtım kanalından geçer; elle ulaşılan sınıfta makine başına bir dokunuş gerekir ve dokunuş dakikası kurgu model değeridir.
- PK9. Kesik uç, kırılmadan yenilemenin bitişine kadar doğrulanamayan uç kalemdir; o kalemin taşıdığı bağlantı bu süre boyunca kurulamaz.
- PK10. Yedek kök, ikinci bir kök kaleminin bütün depolara önceden yazılmış ve ara otoritelerin bu ikinci kökle de imzalanmış olması demektir. Adetler, sınıflar ve dakikalar kurgudur.
Kökün Taşıdığı Kalem
Grafik iki türden düğüm taşır: otoriteler ve makineler. Otorite, başka sertifika imzalayabilen bir kalemdir; makine ise bir uç kalem taşıyan ve güven deposunda kökün bir kopyasını bulunduran düğümdür.
// zincir.mjs — kurgu guven zinciri grafigi ve makine envanteri. MODELDIR. // Bolgesel olcum agi KURGUDUR: otorite adlari tur adidir, adetler ve dakikalar uydurmadir. export const OTORITE = [ // id, veren, tur, ozel anahtarin durdugu yer (kurgu) ["kurum-koku", null, "kok", "cevrimdisi kasa"], ["aygit-ara", "kurum-koku", "ara", "donanim guvenlik birimi"], ["sunucu-ara", "kurum-koku", "ara", "donanim guvenlik birimi"], ["personel-ara", "kurum-koku", "ara", "dizin sunucusu diski"], ["imza-ara", "kurum-koku", "ara", "donanim guvenlik birimi"], ].map(([id, veren, tur, yer]) => ({ id, veren, tur, yer })); export const MAKINE = [ // sinif, adet, tasidigi uc kalemin vereni, kok deposu var mi, uzaktan ulasilir mi, elle dk ["sayac ucu", 4100, "aygit-ara", true, false, 11], ["ic servis", 26, "sunucu-ara", true, true, 2], ["personel is istasyonu", 262, "personel-ara", true, true, 1], ["sube ag gecidi", 9, "imza-ara", true, true, 4], ["is ortagi dogrulayicisi", 3, null, true, false, 90], ].map(([sinif, adet, veren, depo, uzaktan, dk]) => ({ sinif, adet, veren, depo, uzaktan, dk })); export const ara = () => OTORITE.filter((o) => o.tur === "ara"); export const altUc = (id) => MAKINE.filter((m) => m.veren === id).reduce((t, m) => t + m.adet, 0); export const UC = ara().reduce((t, o) => t + altUc(o.id), 0); export const DEPO = MAKINE.filter((m) => m.depo).reduce((t, m) => t + m.adet, 0); // Bir dogrulamada ayni anda dogru olmasi gereken kalem sayisi. // sertifika basina gecerlilik + bag basina imza + otorite basina temel kisit // + uc kalem icin ad ve kullanim + anahtar basina gizlilik + depo kaydi + saat export const kalemSayisi = (zincir) => zincir + (zincir - 1) + (zincir - 1) + 2 + zincir + 1 + 1; export const yaz = (g) => (h) => h.map((v, i) => (i ? String(v).padStart(g[i]) : String(v).padEnd(g[0]))).join("");
// kirilma.mjs — grafigin tasidigi kalem, kirilan otoritenin dusurdugu kalem ve yenileme bedeli import { OTORITE, MAKINE, ara, altUc, UC, DEPO, kalemSayisi, yaz } from "./zincir.mjs"; const y1 = yaz([16, 10, 14, 26, 8]); console.log(`grafik: 1 kok, ${ara().length} ara otorite, ${UC} uc kalem, ` + `${DEPO} guven deposu kopyasi, ${MAKINE.reduce((t, m) => t + m.adet, 0)} makine`); console.log("\n" + y1(["otorite", "uc kalem", "makine sinif", "ozel anahtar", "zincir"])); for (const o of OTORITE) { const alt = o.tur === "kok" ? UC : altUc(o.id); const sinif = MAKINE.filter((m) => m.veren === o.id).length; console.log(y1([o.id, alt, o.tur === "kok" ? MAKINE.length : sinif, o.yer, o.tur === "kok" ? 1 : 2])); } console.log(`\nbir uc kalem dogrulanirken ayni anda dogru olmasi gereken kalem:`); for (const z of [2, 3]) console.log(` ${z} sertifikalik zincir (${z === 2 ? "kok dogrudan imzalar" : "kok -> ara -> uc"}): ${kalemSayisi(z)} kalem`); console.log(` ara otorite eklemenin dogrulama basina bedeli: ` + `${kalemSayisi(3) - kalemSayisi(2)} kalem`); // Kirilma: hangi otorite kirilirsa kac kalem duser, kac makineye dokunulur, kac dakika. const dokunulan = (siniflar) => siniflar.reduce((t, m) => t + m.adet, 0); const dakika = (siniflar) => siniflar.filter((m) => !m.uzaktan).reduce((t, m) => t + m.adet * m.dk, 0); const KOK_DEPO = MAKINE.filter((m) => m.depo); const SENARYO = []; for (const o of ara()) { const s = MAKINE.filter((m) => m.veren === o.id); SENARYO.push([`${o.id} kirildi`, 1 + altUc(o.id), altUc(o.id), s, altUc(o.id)]); } SENARYO.push(["kurum-koku kirildi", 1 + ara().length + UC + DEPO, UC, KOK_DEPO, UC]); SENARYO.push(["kurum-koku kirildi, yedek kok var", 1 + DEPO, 0, KOK_DEPO, 0]); const y2 = yaz([34, 10, 11, 11, 10, 11]); console.log("\n" + y2(["senaryo", "dusen", "yenilenen", "dokunulan", "elle dk", "kesik uc"])); for (const [ad, dusen, yenilenen, siniflar, kesik] of SENARYO) console.log(y2([ad, dusen, yenilenen, dokunulan(siniflar), dakika(siniflar), kesik])); // Elle ulasilan ve uzaktan ulasilan depo kopyalari. const elle = KOK_DEPO.filter((m) => !m.uzaktan); const uzak = KOK_DEPO.filter((m) => m.uzaktan); console.log(`\nkok deposu ${DEPO} kopya: uzaktan ${dokunulan(uzak)}, elle ${dokunulan(elle)}`); for (const m of elle) console.log(` ${m.sinif.padEnd(24)}${String(m.adet).padStart(6)} kopya, ` + `${String(m.adet * m.dk).padStart(6)} dk`); console.log(`elle dokunus toplami ${dakika(KOK_DEPO)} dk = ` + `${Math.round(dakika(KOK_DEPO) / 60)} saat = ${Math.round(dakika(KOK_DEPO) / 480)} is gunu`); console.log(`kirilan kok cikarilana kadar onu kabul etmeye devam eden makine: ` + `${dokunulan(elle)}`);
grafik: 1 kok, 4 ara otorite, 4397 uc kalem, 4400 guven deposu kopyasi, 4400 makine otorite uc kalem makine sinif ozel anahtar zincir kurum-koku 4397 5 cevrimdisi kasa 1 aygit-ara 4100 1 donanim guvenlik birimi 2 sunucu-ara 26 1 donanim guvenlik birimi 2 personel-ara 262 1 dizin sunucusu diski 2 imza-ara 9 1 donanim guvenlik birimi 2 bir uc kalem dogrulanirken ayni anda dogru olmasi gereken kalem: 2 sertifikalik zincir (kok dogrudan imzalar): 10 kalem 3 sertifikalik zincir (kok -> ara -> uc): 14 kalem ara otorite eklemenin dogrulama basina bedeli: 4 kalem senaryo dusen yenilenen dokunulan elle dk kesik uc aygit-ara kirildi 4101 4100 4100 45100 4100 sunucu-ara kirildi 27 26 26 0 26 personel-ara kirildi 263 262 262 0 262 imza-ara kirildi 10 9 9 0 9 kurum-koku kirildi 8802 4397 4400 45370 4397 kurum-koku kirildi, yedek kok var 4401 0 4400 45370 0 kok deposu 4400 kopya: uzaktan 297, elle 4103 sayac ucu 4100 kopya, 45100 dk is ortagi dogrulayicisi 3 kopya, 270 dk elle dokunus toplami 45370 dk = 756 saat = 95 is gunu kirilan kok cikarilana kadar onu kabul etmeye devam eden makine: 4103
İlk tablo kökün yükünü tek satırda veriyor: dört ara otoritenin altında 4.397 uç kalem duruyor ve hepsi tek bir kalemin imzasına bağlı. Kökün kendisi hiçbir uç kalemi doğrudan imzalamaz; buna rağmen dört bin üç yüz doksan yedisinin de üzerindedir, çünkü zincirin ucundadır.
Yükün yarısından fazlası ise sertifika bile değil. 4.400 güven deposu kopyası aynı kök kaleminin makinelere yazılmış kopyasıdır ve grafikte imzayla değil, dağıtımla bağlanır. Bu kopyaların her biri bağımsız bir kalemdir: biri eksikse o makine hiçbir zinciri doğrulayamaz, biri fazlaysa o makine fazladan bir kökü kabul eder. İş ortağı doğrulayıcıları bunu açıkça gösteriyor — üç makine hiçbir uç kalem taşımıyor, yalnız kök deposu var, yani ağdaki rolleri sadece doğrulamak.
Özel anahtarın durduğu yer sütunu grafiğin şeklinden okunamayan bir şey söylüyor. Kök anahtarı
çevrimdışı bir kasadadır ve yalnız ara otorite imzalamak için çıkarılır; yılda birkaç kez
kullanılan bir anahtarın çevrimiçi durmasının bir gerekçesi yoktur. Üç ara otoritenin anahtarı
donanım güvenlik biriminde durur — anahtar birimin dışına çıkmaz, imzalama isteği içeri gönderilir.
Dördüncüsü, personel-ara, anahtarını bir dizin sunucusunun diskinde tutuyor. Grafikte bu dört
düğüm birbirinin eşidir; kırılma olasılıkları eş değildir ve o farkı taşıyan tek sütun budur.
Diskteki anahtarın altında 262 uç kalem duruyor.
Zincir uzunluğu ölçüsü ikinci tabloyu kuruyor. Kök uç kalemleri doğrudan imzalasaydı bir doğrulamada aynı anda tutması gereken kalem sayısı on olurdu. Araya bir otorite girdiğinde bu sayı on dörde çıkıyor: bir sertifikanın geçerlilik penceresi, bir imza bağı, bir temel kısıt denetimi ve bir özel anahtarın daha gizli kalması. Ara otorite bedava değildir; her doğrulamaya dört kalem ekler ve bu bedel dört bin üç yüz doksan yedi kalemin her doğrulamasında yeniden ödenir.
Kırılma: Hangi Kök, Kaç Kalem
Karşılığı ise ikinci tabloda görünüyor. Aynı grafik, kırılan otoriteye göre tamamen farklı sayılar
üretiyor. imza-ara kırıldığında düşen kalem sayısı on; aygit-ara kırıldığında 4.101.
Aradaki fark dört yüzden fazla kattır ve grafiğin şekliyle değil, alt ağaçların büyüklüğüyle
ilgilidir. Ara otoritelere bölmenin asıl işi budur: kırılmayı bir alt ağaca hapseder.
Elle dokunuş sütunu aynı hikâyeyi anlatmıyor. sunucu-ara, personel-ara ve imza-ara
kırılmalarının elle dokunuş bedeli sıfırdır, çünkü bu üç sınıfın makinelerine uzaktan ulaşılıyor ve
yenileme dağıtım kanalından geçiyor. aygit-ara kırılması ise 4.100 saha ziyareti demek: 45.100
dakika. Düşen kalem sayısıyla yenileme bedeli arasında sabit bir oran yoktur; belirleyici olan
kalem sayısı değil, o kalemlerin durduğu makinelere nasıl ulaşıldığıdır.
Aygıt tarafında bunun bir nedeni daha var. Sayaç ucunun yeni kalemini alabilmesi için toplayıcıyla bağlantı kurması gerekir; o bağlantıyı kurmak için sunduğu kalem ise tam da yenilenmesi gereken kalemdir. Yenileme kanalı, yenilenecek kalemin kendisine dayanıyorsa uzaktan yenileme yapılamaz. Bu, ölçüm ağında kalem sayısından bağımsız bir sınırdır ve saha ziyaretini bir tercih olmaktan çıkarır.
Tablonun hiçbir sütununda görünmeyen bir sayı daha var: kırılmanın ne zaman fark edildiği. Model, kırılma anıyla yenilemenin başlangıcını aynı an sayar. Gerçekte bu ikisinin arasında bir süre vardır ve o süre boyunca kırılan otoritenin imzaladığı her kalem, doğrulamanın on dört kaleminin on dördünü de geçer — çünkü kırılma, doğrulanan alanların hiçbirinde iz bırakmaz. Bu dersin sayıları yenilemenin bedelini verir, fark etmenin süresini vermez; ikincisi bu kursta ölçülmez.
Kök satırı ölçeği değiştiriyor. Kök kırıldığında düşen kalem sayısı 8.802: bir kök, dört ara otorite, 4.397 uç kalem ve 4.400 güven deposu kaydı. Bunun 4.400’ü sertifika değil, kayıt; yani kökü yenilemenin işi yalnız yeniden imzalamak değil, dört bin dört yüz makinedeki yazıyı değiştirmektir. Elle dokunuş toplamı 45.370 dakika, yani 95 iş günü. Bu sayının anlamı bir maliyet değil, bir süredir: kök kırıldığında olayın kapanması üç aydan uzun sürer.
Yedek Kök Neyi Kurtarır
Son satır tek başına dersin en öğretici kısmıdır. Bütün depolarda ikinci bir kök önceden yazılıysa ve ara otoriteler bu ikinci kökle de imzalanmışsa, kök kırıldığında düşen kalem 8.802’den 4.401’e iniyor ve kesik uç sayısı 4.397’den sıfıra. Hiçbir bağlantı kopmuyor; ölçüm ağı çalışmaya devam ediyor, çünkü her uç kalemin köke ikinci bir yolu var.
Değişmeyen iki sütun ise kararı asıl belirleyen sütunlardır. Dokunulan makine sayısı yine 4.400, elle dokunuş yine 45.370 dakika. Yedek kök yenileme işini ortadan kaldırmaz, çünkü kırılan kökün depolardan çıkarılması gerekir ve bu, her makineye ayrı ayrı dokunmak demektir. Yedek kökün kurtardığı şey iş değil, kesintidir: aynı 95 iş günü, hizmet açıkken geçer.
Süreyi belirleyen şey depo kopyalarının sayısı değil, dağılımıdır. Dört bin dört yüz kopyanın 297’sine uzaktan ulaşılıyor ve bunların dokunuş bedeli toplam dakikaya hiç girmiyor; kalan 4.103’ü sürenin tamamını üretiyor. Kopya sayısını azaltmak bu tabloyu değiştirmez, çünkü azaltılacak kopyalar uzaktan ulaşılan taraftadır. Değiştiren tek şey, elle ulaşılan sınıflara bir dağıtım kanalı açmaktır — ve o kanalın kendisi de bir güven kökü ister.
Son satır bu yüzden aynı zamanda kökün yetmediği yeri gösteriyor. Elle ulaşılan 4.103 makine kırılan kökü kabul etmeye devam eder ve bu, dokunuş sırası neyse o sırayla, en son makineye kadar sürer. Kırılan bir kök iptal edilmiş sayılmaz; çıkarılmadığı her makinede geçerlidir. Ortalama bir sayaç ucunun ziyaret sırası ortada bir yerdeyse, o uç için pencere yaklaşık kırk yedi iş günü sürer. Bu sürede kırılan kökle imzalanmış yeni bir kalem üretilebilir ve o makinede kabul edilir; grafikte hiçbir şey bunu engellemez.
Bu boşluk yenilemeyle kapanmıyor. Kapatabilecek tek şey, doğrulayanın “bu kalem hâlâ geçerli mi” sorusunu kalemin kendi alanlarından değil, başka bir yerden sorabilmesidir. Bu, sertifika alanlarının hiçbirinde yazmayan bir bilgidir ve grafiğin dışında durur.
Özet
- Kurgu grafikte 1 kök, 4 ara otorite ve 4.397 uç kalem var; kök hiçbir uç kalemi doğrudan imzalamadığı hâlde hepsinin üzerindedir. Yükün 4.400 kalemi ise sertifika değil, güven deposu kopyasıdır ve grafiğe imzayla değil dağıtımla bağlanır.
- Kök uç kalemleri doğrudan imzalasa bir doğrulamada 10 kalem tutmalıydı; ara otorite bu sayıyı 14’e çıkarır. Ara otorite kırılmayı bir alt ağaca hapseder ama her doğrulamaya 4 kalem ekler.
- Kırılan otoriteye göre düşen kalem 10 ile 4.101 arasında değişiyor; elle dokunuş ise 0 ile 45.100 dakika arasında. Belirleyici olan kalem sayısı değil, makinelere nasıl ulaşıldığıdır.
- Kök kırıldığında 8.802 kalem düşüyor, 4.400 makineye dokunuluyor ve elle dokunuş 95 iş günü tutuyor. Yenileme kanalı yenilenecek kaleme dayandığı için 4.100 sayaç ucunda uzaktan yenileme yapılamıyor.
- Yedek kök düşen kalemi 4.401’e, kesik ucu 0’a indiriyor ama dokunulan makineyi ve süreyi hiç değiştirmiyor: kurtardığı şey iş değil kesintidir. Kırılan kök, çıkarılmadığı 4.103 makinede geçerli kalmaya devam eder.
Sonraki Adım
Kök kırıldığında ortaya çıkan boşluk yenilemenin hızıyla ilgili değil. Bir kalem geçerliliğini yitirdiğinde bunu doğrulayan tarafın öğrenmesi gerekir ve sertifikanın içinde bunu söyleyen bir alan yoktur; kalem, alanları değişmediği sürece kendini geçerli göstermeye devam eder. Öğrenmenin iki yolu vardır: iptal edilmiş kalemlerin listesini dağıtmak ya da her kullanımda otoriteye tek tek sormak. Sonraki ders ikisini aynı ölçüde karşılaştırır — iptal kararı ile istemcinin bunu öğrenmesi arasında kaç saat geçiyor, o pencerede kaç bağlantı kabul ediliyor ve sorgu yanıtsız kaldığında verilen karar kaç yol açıyor.
İlerlemeni kaydetmek ve not almak için Giriş yap
Notlarım
Not almak için giriş yapmalısın.