Ders 18 / 21
Çok Etmenli Doğrulama
Etmen türlerinin kapattığı yol cinsinden ölçülmesi: 10 yollu bir kümede hiçbir etmen türünün 6'dan fazlasını kapatmaması, 4 yolun altı türün hiçbiriyle kapanmaması, iki etmeni birlikte kullanmanın kapanan yolu artırmaması ve kapatmanın 214 kişi için 428 ile 856 arasında kayıt kalemi, 9 ile 31 arası kurtarma başvurusu ve 41'e kadar dışarıda kalan uç tutması.
İçindekiler
Önceki ders tek bir doğrulamanın 15 uygulamaya taşındığını ve o tek doğrulamanın 1562 bağlantıyı açtığını saydı. Doğrulamanın kendisi hâlâ bir parolaya dayanıyordu: parola bilinirse bağlantıların tamamı tek adımda açılır. Çok etmenli doğrulama (multi-factor authentication) bu tek adımı ikiye böler ve girişi ikinci bir kanıta bağlar.
Etmen sınıflarının bağımsızlığı, zaman tabanlı kodun türetilmesi ve kurtarma kodlarının saklanması Kimlik Doğrulama ve Yetkilendirme kursunda ölçüldü; burada tekrarlanmaz. Bu ders tek bir soruyu sorar: hangi etmen türü hangi yolu kapatıyor ve kaç yol açık kalıyor. Ölçülen şey bir yolun nasıl yürüneceği değil, hangi türün onu kapatıp kapatmadığıdır; bu dersin hiçbir yerinde işleyen bir adım dizisi yoktur. Böyle bir denemenin yazılı yetki ve tanımlı kapsam olmadan yapılması hem yasadışı hem meslek dışıdır.
Etmen Bir Yol Kümesini Daraltır
KK14: bir etmen türü, hesap ele geçirme yollarının bir alt kümesini kapatır; kapattığı küme türünün özelliğidir, gücünün değil. KK15: hiçbir etmen türü bütün yolları kapatmaz; kapanmayan yollar etmenin değil, kayıt ve kurtarma süreçlerinin üzerindedir. KK16: aynı yolu kapatan iki etmeni birlikte kullanmak kapanan yol sayısını artırmaz, yalnız bedeli artırır.
Ölçüm üç sütunla yapılır. Birincisi kapanan yol sayısı, ikincisi açık kalan yol sayısı, üçüncüsü bedeldir. Bedel üç kalemde okunur: kişi başına kayıt adımı, yılda açılan kayıp etmen başvurusu ve etmeni taşıyamadığı için dışarıda kalan uç sayısı. Bedeli yazılmayan savunma ölçülmemiş sayılır; bu kural M24 boyunca sürer ve burada da geçerlidir.
On Yol, Altı Etmen Türü
Aşağıdaki yol kümesi bir modeldir: kurgu bölgesel ölçüm ağı kurumunda 214 kişilik bir hesap kümesi varsayılır. Gerçek bir kurum, gerçek bir hesap ve işleyen hiçbir adım dizisi yoktur.
// etmen/yol.mjs — hesap ele gecirme yollari ile etmen turlerinin kapattigi yol (model): // gercek bir kurum, gercek bir hesap ya da isleyen bir adim dizisi yok; yalnizca hangi etmen // turunun hangi yolu kapatip kapatmadigi sayilir. Rastgelelik yok. // KK14: bir etmen turu bir yol kumesinin bir alt kumesini kapatir; kapattigi yol turunun // ozelligidir, gucunun degil. KK15: hicbir etmen turu butun yollari kapatmaz; kapanmayan // yollar etmenin degil, kayit ve kurtarma sureclerinin ustundedir. // Sinif sutunu, yolun hangi asamada isledigini soyler. export const YOL = ` parola-yeniden-kullanim kimlik-bilgisi parola-tahmini kimlik-bilgisi parola-toplayan-sayfa kimlik-bilgisi gercek-zamanli-araci-sayfa dogrulama-ani onay-yorgunlugu dogrulama-ani kanal-ele-gecirme etmen-kanali yedek-kurtarma-kanali kurtarma dogrulama-sonrasi-oturum dogrulama-sonrasi kayit-aninin-ele-gecmesi kayit surec-uzerinden-sifirlama surec` .trim().split("\n").map((r) => { const p = r.trim().split(/\s{2,}/); return { ad: p[0], sinif: p[1] }; }); // kapatir = o etmen turunun kapattigi yol adlari; kayit = kisi basina kayit adimi; // kurtarma = yilda 214 kisi icin acilan kayip etmen basvurusu; disarida = etmeni // tasiyamayan uc sayisi. export const ETMEN = { "parola": { kapatir: [], kayit: 1, kurtarma: 0, disarida: 0 }, "sms-kodu": { kapatir: [0, 1, 2, 4], kayit: 2, kurtarma: 18, disarida: 6 }, "zaman-kodu": { kapatir: [0, 1, 2, 4, 5], kayit: 3, kurtarma: 31, disarida: 12 }, "onay-bildirimi": { kapatir: [0, 1, 2, 5], kayit: 3, kurtarma: 27, disarida: 24 }, "eslesmeli-onay": { kapatir: [0, 1, 2, 4, 5], kayit: 3, kurtarma: 27, disarida: 24 }, "donanim-etmeni": { kapatir: [0, 1, 2, 3, 4, 5], kayit: 4, kurtarma: 9, disarida: 41 }, }; export const KISI = 214; export const kapanan = (...t) => new Set(t.flatMap((x) => ETMEN[x].kapatir));
// etmen/sayim.mjs — her etmen turu kac yol kapatiyor, kaci acik kaliyor, hangi yollar // hicbir etmenle kapanmiyor ve kapatmanin bedeli kayit, kurtarma ve disarida kalan uc // cinsinden ne tutuyor. import { YOL, ETMEN, KISI, kapanan } from "./yol.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(ETMEN); console.log(`${YOL.length} yol, ${tur.length} etmen turu, ${KISI} kisi`); const A = [-18, 9, 8, 10, 11, 10]; console.log("\n1. etmen turu basina kapanan ve acik kalan yol"); yaz(A, "etmen", "kapanan", "acik", "kayit kal", "kurtarma", "disarida"); for (const t of tur) { const e = ETMEN[t]; yaz(A, t, e.kapatir.length, YOL.length - e.kapatir.length, KISI * e.kayit, e.kurtarma, e.disarida); } const B = [-28, -18, 10, 12]; console.log("\n2. yol basina: kac etmen turu kapatiyor"); yaz(B, "yol", "sinif", "kapatan", "acik kalan"); for (let i = 0; i < YOL.length; i++) { const k = tur.filter((t) => ETMEN[t].kapatir.includes(i)); yaz(B, YOL[i].ad, YOL[i].sinif, k.length, tur.length - k.length); } const hic = YOL.filter((_, i) => tur.every((t) => !ETMEN[t].kapatir.includes(i))); console.log(`hicbir etmenin kapatmadigi yol ${hic.length}/${YOL.length}: ` + hic.map((y) => y.sinif).join(", ")); const C = [-34, 9, 8, 11]; console.log("\n3. iki etmen birlikte kullanilirsa"); yaz(C, "birlesim", "kapanan", "acik", "kayit kal"); for (const [a, b] of [["sms-kodu", "zaman-kodu"], ["zaman-kodu", "eslesmeli-onay"], ["onay-bildirimi", "zaman-kodu"], ["eslesmeli-onay", "donanim-etmeni"]]) { const k = kapanan(a, b); yaz(C, `${a} + ${b}`, k.size, YOL.length - k.size, KISI * (ETMEN[a].kayit + ETMEN[b].kayit)); } const D = [-18, 9, 11, 14, 14]; console.log("\n4. kapatilan yol basina bedel"); yaz(D, "etmen", "kapanan", "kayit/yol", "kurtarma/yol", "disarida/yol"); for (const t of tur.filter((x) => ETMEN[x].kapatir.length > 0)) { const e = ETMEN[t], n = e.kapatir.length; yaz(D, t, n, (KISI * e.kayit / n).toFixed(1), (e.kurtarma / n).toFixed(1), (e.disarida / n).toFixed(1)); }
10 yol, 6 etmen turu, 214 kisi 1. etmen turu basina kapanan ve acik kalan yol etmen kapanan acik kayit kal kurtarma disarida parola 0 10 214 0 0 sms-kodu 4 6 428 18 6 zaman-kodu 5 5 642 31 12 onay-bildirimi 4 6 642 27 24 eslesmeli-onay 5 5 642 27 24 donanim-etmeni 6 4 856 9 41 2. yol basina: kac etmen turu kapatiyor yol sinif kapatan acik kalan parola-yeniden-kullanim kimlik-bilgisi 5 1 parola-tahmini kimlik-bilgisi 5 1 parola-toplayan-sayfa kimlik-bilgisi 5 1 gercek-zamanli-araci-sayfa dogrulama-ani 1 5 onay-yorgunlugu dogrulama-ani 4 2 kanal-ele-gecirme etmen-kanali 4 2 yedek-kurtarma-kanali kurtarma 0 6 dogrulama-sonrasi-oturum dogrulama-sonrasi 0 6 kayit-aninin-ele-gecmesi kayit 0 6 surec-uzerinden-sifirlama surec 0 6 hicbir etmenin kapatmadigi yol 4/10: kurtarma, dogrulama-sonrasi, kayit, surec 3. iki etmen birlikte kullanilirsa birlesim kapanan acik kayit kal sms-kodu + zaman-kodu 5 5 1070 zaman-kodu + eslesmeli-onay 5 5 1284 onay-bildirimi + zaman-kodu 5 5 1284 eslesmeli-onay + donanim-etmeni 6 4 1498 4. kapatilan yol basina bedel etmen kapanan kayit/yol kurtarma/yol disarida/yol sms-kodu 4 107.0 4.5 1.5 zaman-kodu 5 128.4 6.2 2.4 onay-bildirimi 4 160.5 6.8 6.0 eslesmeli-onay 5 128.4 5.4 4.8 donanim-etmeni 6 142.7 1.5 6.8
Sayılar ölçüm sınıfındadır; girdileri KK14–KK16 ile yol kümesidir.
Kapanan Yol, Açık Kalan Yol
Birinci tablo altı türü aynı yol kümesi üzerinde koşturur. Parola tek başına sıfır yol kapatır; on yolun onu da açıktır. İkinci etmen eklendiğinde kapanan yol sayısı dörde ya da beşe çıkar ve hiçbir türde altıyı geçmez. En kapsamlı tür olan kaynağa bağlı donanım etmeni altı yol kapatır ve dördünü açık bırakır.
Kapanan yolların ilk üçü her türde aynıdır: parolanın başka bir yerden bilinmesi, tahmin edilmesi ya da yalnız parola toplayan bir sayfaya yazılması. İkinci etmen bu üçünü kapatır, çünkü üçünde de eksik olan şey ikinci kanıttır. Kurumsal girişte çok etmenli doğrulamanın sağladığı asıl kazanç bu üç satırdır ve tür seçimi bu üçü için fark etmez.
Fark, dördüncü satırdan sonra başlar. Gerçek zamanlı aracı sayfayı — kullanıcının girdiği kodu aynı anda gerçek girişe ileten bir aracı — yalnız bir tür kapatır: kaynağa bağlı donanım etmeni. Bunun nedeni türün daha güçlü olması değil, ürettiği kanıtın bağlandığı adrese bağlı olmasıdır; başka bir adrese sunulduğunda kanıt geçerli değildir. Bir kodu okuyup yazan her tür, kodu kimin istediğini sınayamaz.
Beşinci ve altıncı satırlar iki türü tek tek düşürür. Onay yorgunluğu — istenmeden gelen art arda onay istemleri — yalnız anında onay bildiriminde açıktır; kod isteyen türlerde böyle bir istem hiç oluşmaz. Kanal ele geçirme ise yalnız kısa ileti kodunda açıktır, çünkü kanalın kendisi etmenin taşıyıcısıdır. Her tür kendi mekaniğinden doğan bir yol açar ve bu yol, o türün kapattığı yollar kadar tür özelliğidir.
Dördüncü satırın ağırlığı önceki dersten gelir. Kurumda 15 uygulama tek kimlik sağlayıcısına bağlıdır; ikinci etmen o sağlayıcının giriş sayfasında bir kez uygulanır ve orada kapanan yol 15 uygulamanın hepsi için kapanır. Aynı biçimde, orada açık kalan yol da 15 uygulamanın hepsi için açık kalır. Merkezîleşmenin bu dersteki karşılığı budur: tür seçimi tek bir noktada yapılır ve sonucu 1562 bağlantıya çarpılır. Dört ile altı arasındaki iki yolluk fark, tek bir hesapta iki yol değil, kurumun tamamında iki yoldur.
Hiçbir Etmenin Kapatmadığı Dört Yol
İkinci tablo bu dersin en önemli sonucudur. On yolun dördünü altı türün hiçbiri kapatmaz: yedek kurtarma kanalı, doğrulama sonrası oturumun kullanılması, kayıt anının ele geçmesi ve süreç üzerinden sıfırlama. Dördü de etmenin dışındadır.
Sınıf sütunu nedeni verir. Kurtarma yolu, etmen kaybedildiğinde devreye giren yedek kanaldır ve o kanal ikinci etmenden zayıfsa hesabın gücü yedek kanalın gücüne iner. Doğrulama sonrası oturum, giriş tamamlandıktan sonra üretilen nesnedir; etmen o noktada işini bitirmiştir ve önceki dersteki 72 saatlik oturum penceresi tam olarak bu satırın büyüklüğüdür. Kayıt anı, ikinci etmenin hesaba ilk kez bağlandığı andır: o an yanlış kişiye bağlanmışsa, etmen sonraki her girişte yanlış kişiyi doğru sayar. Süreç üzerinden sıfırlama ise teknik bir kalem değildir; etmeni sıfırlayabilen bir insanın var olmasıdır.
Çok etmenli doğrulamanın gücü, en zayıf kurtarma yolunun gücüdür. Etmen türü seçimi ilk altı satırı belirler; son dört satırı belirleyen şey kayıt ve kurtarma süreçlerinin nasıl yazıldığıdır ve bu, satın alınabilecek bir kalem değildir.
Dört satırın ortak bir özelliği daha vardır: hiçbiri giriş ekranında görünmez. Kapanan altı yol bir denetim listesinde işaretlenebilir ve raporlanabilir; kapanmayan dördü ancak süreç belgelerinde aranarak bulunur. Bir kurumun çok etmenli doğrulama kapsamını yüzde yüz olarak raporlaması, bu dört satırın hiç sorulmadığı anlamına gelir. Kapsam raporu en iyi durumda altı yolu ölçer, on yolu değil; aradaki dört satırlık fark rapora hiç yazılmaz ve ölçülmediği için de kimseye ait değildir.
Bu Mekanizmanın Güven Kökü
Kursun birinci sütunu burada beklenmedik bir yerdedir. Çok etmenli doğrulamanın güven kökü etmenin kendisi değil, etmenin kişiye bağlandığı kayıt anıdır. Kayıt sırasında kurumun elinde, kaydı yapanın gerçekten o kişi olduğuna dair bir kanıt bulunmalıdır; bu kanıt yoksa sonraki her giriş kusursuz çalışır ve yanlış kişiyi doğru sayar.
Kökten kullanıma uzanan zincir dört kalemdir: kayıt anındaki kimlik kanıtı, etmenin hesaba bağlanma kaydı, o bağın değiştirilmesini yöneten yetki ve kurtarma kaydı. Dördü de dizinde durur; yani bu dersin kökü, ilk derste ölçülen deponun bütünlüğüne dayanır. Depo bütünlüğü kırıldığında yenilenmesi gereken 646 kalemin arasında bu dört kalem de vardır ve yenilemeleri en pahalısıdır — bir etmen bağını yenilemek, kişinin fiziksel olarak yeniden tanınmasını gerektirir.
İkinci tablodaki kayıt satırının hiçbir etmenle kapanmamasının nedeni budur. Bir mekanizma kendi kökünü doğrulayamaz; etmen, kendisinin doğru kişiye bağlandığını sınayacak bir kalem taşımaz. Kaydın doğruluğu, mekanizmanın dışındaki bir sürecin çıktısıdır ve o süreç bu kursun ölçtüğü hiçbir anahtara dayanmaz.
İki Etmen Bir Etmenden İyi Değildir
Üçüncü tablo KK16’yı sayar. Kısa ileti kodu ile zaman tabanlı kodun birlikte kullanılması beş yol kapatır; zaman tabanlı kod tek başına da beş yol kapatır. Kapanan yol aynıdır, kayıt kalemi 642’den 1070’e çıkar. Eşleşmeli onay ile zaman tabanlı kodun birleşimi de beşte kalır.
Neden basittir: iki tür aynı alt kümeyi kapatıyorsa birleşimleri o alt kümedir. Kapanan yol sayısını artıran tek birleşim, kümesi diğerlerini kapsayan donanım etmenini içerendir ve o da altıda kalır — donanım etmeni tek başına da altı kapatır. Etmen çoğaltmak yol kapatmaz; kapattığı küme farklı olan bir tür eklemek kapatır.
Bu, iki etmenin hiçbir işe yaramadığı anlamına gelmez. İkinci bir tür, birincinin kullanılamadığı durumda erişimi sürdürür ve kurtarma başvurusu sayısını düşürür — yani birinci tablodaki kurtarma sütununa yazılır, kapanan yol sütununa değil. İki sütunu ayırmayan bir karar, bedeli iki katına çıkarıp kapanan yolu sabit bırakır.
Kapatmanın Bedeli
Dördüncü tablo bedeli kapatılan yol başına böler. Kısa ileti kodu kapattığı yol başına 107 kayıt kalemi ve 1,5 dışarıda kalan uç tutar; donanım etmeni 142,7 kayıt kalemi ve 6,8 uç tutar. Dışarıda kalan uç sayısı donanım etmeninde 41’e çıkar ve bu, ilk derste sayılan eski konsollarla saha aygıtlarının bir bölümüdür.
Tablonun kapsamadığı bir kalem daha vardır ve bedelden çok kapsama yazılır. Sayılan 214 hesap kişilerin hesaplarıdır; ikinci derste sayılan 21 servis hesabı bu ölçümün dışındadır. Bir hizmet hesabının önüne ikinci etmen konamaz, çünkü karşısında onay verecek kimse yoktur. Kurumun kimlik yüzeyinde çok etmenli doğrulama etkileşimli girişleri kapsar ve etkileşimli olmayan her hesap, on yolun ilk üçüne açık kalır. Kapsama oranı 214/235’tir ve dışarıda kalan 21 hesabın her biri, ikinci derste ölçüldüğü gibi bir servisin tamamını temsil eder.
Kurtarma sütunu ters yönde okunur. Donanım etmeninde yılda dokuz başvuru açılır; zaman tabanlı kodda otuz bir. Aradaki fark, aygıt değiştirmenin sıklığından gelir ve her başvuru ikinci tablodaki kurtarma yolunu bir kez daha açar. Kurtarma başvurusu sayısı, kapatılamayan dördüncü yolun yılda kaç kez kullanıldığının ölçüsüdür; bu yüzden düşük kurtarma sayısı, kapanan yol sayısı kadar önemlidir.
Özet
- Bir etmen türü on yollu kümenin bir alt kümesini kapatır; hiçbir tür 6’dan fazlasını kapatmaz ve parola tek başına 0 kapatır.
- İlk üç yol her türde kapanır; dördüncü yolu yalnız kaynağa bağlı donanım etmeni kapatır, çünkü ürettiği kanıt sunulduğu adrese bağlıdır.
- Her tür kendi mekaniğinden bir yol açar: onay yorgunluğu bildirim türünde, kanal ele geçirme kısa ileti türünde açık kalır.
- On yolun 4’ü altı türün hiçbiriyle kapanmaz; dördü de kayıt, kurtarma, doğrulama sonrası oturum ve süreç sınıfındadır.
- Aynı kümeyi kapatan iki etmeni birlikte kullanmak kapanan yolu artırmaz, kayıt kalemini 642’den 1284’e çıkarır; kazanç yalnız kurtarma sütununa yazılır.
Sonraki Adım
Bu ders girişin kendisini ölçtü. Girişten sonra kullanıcının ne yapabildiği ise başka bir mekanizmayla belirlenir: kurum, binlerce makinede hangi ayarın geçerli olacağını tek bir yerden yazar ve makineler bu yazılanı düzenli aralıklarla çeker. Yazılan ile uygulanan arasındaki fark, bu dersin yol kümesindeki kalemlerin bir bölümünü doğrudan etkiler. Sonraki ders merkezî dayatmayı yayılma cinsinden ölçer: politika kaç makineye kaç turda ulaşıyor, ulaşmayan kalem kaç ve yerel geçersiz kılma kaç yol açıyor.
İlerlemeni kaydetmek ve not almak için Giriş yap
Notlarım
Not almak için giriş yapmalısın.