Ders 09 / 22
Diğer Kanallar
Kısa mesaj ve sesli arama temelli kimlik avını doğrulanabilirlik cinsinden ölçmek: on doğrulama kaleminin dört kanaldaki gücü, sesli aramada güçlü kalem sayısının sıfır olması, kanal başına kırılabilen halka sayısı ve geri doğrulama yordamının yalnız bir kanalda kazandırdığı halka ile dört kanalda ödenen bedel.
İçindekiler
Önceki dersin bütün göstergeleri tek bir kanala aitti ve o kanalın belirleyici bir özelliği vardı: ileti saklanır. Başlıklar okunabilir, alan adı sorgulanabilir, bağlantı hedefi metinle karşılaştırılabilir — ve bunların hepsi ileti açılmadan önce yapılabilir. Kısa mesajda bu kalemlerin bir bölümü, sesli aramada neredeyse tamamı yoktur.
Bu ders kanalları üslupla değil, tek bir ölçüyle karşılaştırır: kanal başına kaç doğrulama kalemi uygulanabiliyor. Bir kalem üç durumdan birindedir — kanalda uygulanabilir, kanalda vardır ama taklit edilebilir, kanalda hiç yoktur. Aynı beş adımlık zincir dört kanalda koşturulur ve her kanalda kaç halkanın kırıldığı sayılır. Sonuçta bir kanal ortaya çıkar ki zincir hiçbir halkada kırılmaz; o kanalın hangi yordamla kırılabildiği ve o yordamın neye mal olduğu dersin son bölümüdür.
- SM13. Kanal listesi, doğrulama kalemleri ve güç değerleri kurgusal bölgesel ölçüm ağının saha
ekipleri ile abone hizmetleri masasına aittir. Ölçülen şey
nodeile kurulan modeldir. - SM14. Güç değeri üç basamaklıdır (2, 1, 0). Gerçekte doğrulanabilirlik süreklidir; üç basamak kanallar arası sıralamayı korur, kanal içi ince farkları siler.
- SM15. Kalemin “taklit edilebilir” sayılması, gösterilen kaynağın kaynağın kendisi olduğunun bağımsız bir kayıtla doğrulanamadığı anlamına gelir. Kanal altyapısının hangi durumda bunu sağladığı modellenmedi.
- SM16. Zincir dört kanalda aynı kabul edildi. Gerçekte kanal, zincirin uzunluğunu da değiştirir; sabit zincir kanallar arası karşılaştırmayı mümkün kılar.
- SM17. Trafik sayıları günlüktür ve kurgudur. Kapsama giren talep, yetki ya da ödeme isteyen taleptir; pencereye sığmayan talep, geri arama tamamlanmadan geçmesi gereken taleptir.
- SM18. Bir adım ya kırılır ya kırılmaz. Kısmi kırılma — talebin yavaşlaması, ikinci bir soru sorulması — modellenmedi.
Kanal Başına Doğrulanabilirlik
// kanal.mjs — kanal basina dogrulama kalemi gucu, zincir ve mesru trafik; model export const KANAL = ['e-posta', 'kisa mesaj', 'sesli arama', 'anlik ileti']; // kalem: kanal sirasiyla guc (2 uygulanabilir, 1 zayif/taklit edilebilir, 0 yok) export const KALEM = { 'gonderen alan adi sorgusu': [2, 0, 0, 1], 'gonderen dogrulama kaydi': [2, 0, 0, 0], 'baglanti hedefi karsilastirmasi': [2, 2, 0, 2], 'iletiyi acmadan inceleme': [2, 2, 0, 2], 'kayitli rehberde bulma': [2, 1, 1, 1], 'sonradan yeniden okuma': [2, 2, 0, 2], 'gecmis yazismayla esleme': [2, 1, 0, 2], 'kaynagi bagimsiz kayitla dogrulama': [1, 1, 1, 1], 'ikinci kisiye danisma penceresi': [2, 2, 0, 2], 'kaydi denetim icin saklama': [2, 2, 0, 1], }; // [adim, onkosul, adimi kiran kalem (guc 2 gerekir), adim bitince dusen kalem] export const ZINCIR = [ ['kanal secimi ve hazirlik', 'ulasilabilir kanal adresi', null, 0], ['temas', 'alicinin yanit vermesi', 'kayitli rehberde bulma', 1], ['guven kurma', 'dogrulanamayan ic ayrinti', 'gecmis yazismayla esleme', 1], ['talep iletme', 'alicinin ilgisi', 'iletiyi acmadan inceleme', 3], ['eylem', 'karar vericinin tek basina olmasi', 'ikinci kisiye danisma penceresi', 6], ]; export const GERI_SURE = 180; // saniye // [kanal, gunluk mesru talep, yordam kapsamina giren, kapsamda geri arama penceresine sigmayan] export const TRAFIK = [['e-posta', 240, 36, 1], ['kisa mesaj', 60, 15, 3], ['sesli arama', 45, 18, 7], ['anlik ileti', 120, 24, 2]]; export const guc = (kalem, k) => KALEM[kalem][k]; export function kirilan(k, yordam = false) { const d = ZINCIR.map((a, i) => (a[2] && guc(a[2], k) === 2 ? i : -1)).filter((i) => i >= 0); return yordam && !d.includes(4) ? [...d, 4] : d; }
// kosum1.mjs — kanal basina dogrulama kalemi sayisi ve toplam dogrulanabilirlik gucu import { KANAL, KALEM } from './kanal.mjs'; console.log(`${Object.keys(KALEM).length} dogrulama kalemi, ${KANAL.length} kanal ` + `(2 uygulanabilir, 1 zayif, 0 yok)\n`); console.log(`${'kalem'.padEnd(35)} ${KANAL.map((k) => k.padStart(12)).join('')}`); for (const [ad, v] of Object.entries(KALEM)) console.log(`${ad.padEnd(35)} ${v.map((g) => String(g).padStart(12)).join('')}`); console.log(`\n${'kanal'.padEnd(13)} ${'guclu kalem'.padStart(11)} ${'zayif kalem'.padStart(11)} ` + `${'hic yok'.padStart(7)} ${'toplam guc'.padStart(10)} ${'e-postanin yuzdesi'.padStart(18)}`); const guclu = KANAL.map((_, k) => Object.values(KALEM).filter((v) => v[k] === 2).length); const toplam = KANAL.map((_, k) => Object.values(KALEM).reduce((a, v) => a + v[k], 0)); KANAL.forEach((ad, k) => console.log(`${ad.padEnd(13)} ${String(guclu[k]).padStart(11)} ` + `${String(Object.values(KALEM).filter((v) => v[k] === 1).length).padStart(11)} ` + `${String(Object.values(KALEM).filter((v) => v[k] === 0).length).padStart(7)} ${String(toplam[k]).padStart(10)} ` + `${`%${Math.round((toplam[k] / toplam[0]) * 100)}`.padStart(18)}`)); const hepsinde = Object.entries(KALEM).filter(([, v]) => v.every((g) => g >= 1)); console.log(`\ndort kanalda da bulunan kalem ${hepsinde.length}: ${hepsinde.map(([a, v]) => `${a} (guc ${v.join('/')})`).join('; ')}`); console.log(`sesli aramada guclu kalem sayisi: ${guclu[2]}`);
10 dogrulama kalemi, 4 kanal (2 uygulanabilir, 1 zayif, 0 yok) kalem e-posta kisa mesaj sesli arama anlik ileti gonderen alan adi sorgusu 2 0 0 1 gonderen dogrulama kaydi 2 0 0 0 baglanti hedefi karsilastirmasi 2 2 0 2 iletiyi acmadan inceleme 2 2 0 2 kayitli rehberde bulma 2 1 1 1 sonradan yeniden okuma 2 2 0 2 gecmis yazismayla esleme 2 1 0 2 kaynagi bagimsiz kayitla dogrulama 1 1 1 1 ikinci kisiye danisma penceresi 2 2 0 2 kaydi denetim icin saklama 2 2 0 1 kanal guclu kalem zayif kalem hic yok toplam guc e-postanin yuzdesi e-posta 9 1 0 19 %100 kisa mesaj 5 3 2 13 %68 sesli arama 0 2 8 2 %11 anlik ileti 5 4 1 14 %74 dort kanalda da bulunan kalem 2: kayitli rehberde bulma (guc 2/1/1/1); kaynagi bagimsiz kayitla dogrulama (guc 1/1/1/1) sesli aramada guclu kalem sayisi: 0
Kanal tablosu tek bir satırda toplanıyor: sesli aramada güçlü doğrulama kalemi sayısı sıfırdır. On kalemin sekizi bu kanalda hiç yok, ikisi var ama taklit edilebilir. Toplam güç ikidir ve e-postanın on dokuzunun yüzde on birine karşılık gelir. Bunun nedeni kanalın kötü tasarlanmış olması değil, canlı ve saklanmayan bir kanalda incelenecek bir nesnenin bulunmamasıdır: konuşma açılmadan önce bakılamaz, sonradan yeniden okunamaz, denetim için saklanmaz.
Kısa mesaj ile anlık ileti arasındaki fark da öğretici. İkisinde de beş güçlü kalem var, ama dağılımları farklı: anlık iletide geçmiş yazışmayla eşleme güçlü, kısa mesajda zayıftır; kısa mesajda kaydı denetim için saklama güçlü, anlık iletide zayıftır. Toplam güç yakın olsa da zincirin hangi halkasında kırıldıkları farklı çıkacak, çünkü halkalar toplama değil belirli kalemlere bağlıdır.
Toplam güç sütununun yüzdesi kanalları tek bir sayıyla sıralasa da yanıltıcı olabilir: kısa mesaj e-postanın yüzde altmış sekizi görünür, oysa e-postanın en güçlü iki kalemi — alan adı sorgusu ve gönderen doğrulama kaydı — bu kanalda hiç yoktur. Yüzde, eksik olanın hangisi olduğunu söylemez; zincirdeki karşılığı bir sonraki bölümde ayrıca sayılacaktır.
Dört kanalda da bulunan iki kalemden birincisi güçlü olduğu tek kanalda e-postadır; ikincisi hiçbir kanalda güçlü değildir. Bütün kanallarda çalışan bir doğrulama kalemi yoktur; kanaldan bağımsız bir doğrulama yordamı ancak dışarıdan eklenebilir.
Zincir Hangi Kanalda Kırılıyor
// kosum2.mjs — kanal basina kirilan halka, geri dogrulama yordaminin kazanci ve bedeli import { KANAL, ZINCIR, TRAFIK, GERI_SURE, kirilan } from './kanal.mjs'; let s = 0; const kumul = ZINCIR.map((a) => (s += a[3])); console.log(`${'#'.padStart(2)} ${'adim'.padEnd(24)} ${'onkosul'.padEnd(33)} ${'adimi kiran kalem'.padEnd(31)} kumul`); ZINCIR.forEach((a, i) => console.log(`${String(i + 1).padStart(2)} ${a[0].padEnd(24)} ${a[1].padEnd(33)} ` + `${(a[2] ?? '-').padEnd(31)} ${kumul[i]}`)); const TAM = kumul[ZINCIR.length - 1]; const satir = (ad, d) => { const e = d.length ? (d[0] ? kumul[d[0] - 1] : 0) : TAM, g = d.length ? kumul[d[d.length - 1] - 1] : TAM; return `${ad.padEnd(13)} ${String(d.length).padStart(6)} ${(d.length ? String(d[0] + 1) : '-').padStart(10)} ` + `${String(e).padStart(11)} ${String(g).padStart(9)} ${String(g - e).padStart(6)}`; }; console.log(`\n${'kanal'.padEnd(13)} ${'halka'.padStart(6)} ${'en erken'.padStart(10)} ${'erken kalem'.padStart(11)} ` + `${'gec kalem'.padStart(9)} ${'kazanc'.padStart(6)} (hic kirilmazsa ${TAM})`); KANAL.forEach((ad, k) => console.log(satir(ad, kirilan(k)))); console.log(`\ngeri dogrulama yordami eklendikten sonra (kayitli kanaldan geri arama, ${GERI_SURE} sn):`); KANAL.forEach((ad, k) => console.log(satir(ad, kirilan(k, true)))); console.log(`\n${'kanal'.padEnd(13)} ${'mesru talep'.padStart(11)} ${'kapsam'.padStart(6)} ${'ek sure (sn)'.padStart(12)} ` + `${'kesilen is'.padStart(10)} ${'kirilan halka +'.padStart(15)}`); let kap = 0, kes = 0; for (const [ad, t, k, a] of TRAFIK) { kap += k; kes += a; const i = KANAL.indexOf(ad), fark = kirilan(i, true).length - kirilan(i).length; console.log(`${ad.padEnd(13)} ${String(t).padStart(11)} ${String(k).padStart(6)} ${String(k * GERI_SURE).padStart(12)} ` + `${String(a).padStart(10)} ${String(fark).padStart(15)}`); } console.log(`toplam: kapsam ${kap} talep, ${kap * GERI_SURE} sn (${(kap * GERI_SURE / 3600).toFixed(2)} saat), kesilen is ${kes}`); console.log(`sesli aramada yordam oncesi dusen kalem ${TAM}, sonrasi ${kumul[3]}; kazanc ${TAM - kumul[3]} kalem, bedeli 7 kesilen is`); const yalniz = TRAFIK.find((t) => t[0] === 'sesli arama'); console.log(`yordam yalniz sesli aramaya uygulanirsa: kapsam ${yalniz[2]} talep, ${yalniz[2] * GERI_SURE} sn, ` + `kesilen is ${yalniz[3]}; kirilan halka kazanci ayni (1)`);
# adim onkosul adimi kiran kalem kumul 1 kanal secimi ve hazirlik ulasilabilir kanal adresi - 0 2 temas alicinin yanit vermesi kayitli rehberde bulma 1 3 guven kurma dogrulanamayan ic ayrinti gecmis yazismayla esleme 2 4 talep iletme alicinin ilgisi iletiyi acmadan inceleme 5 5 eylem karar vericinin tek basina olmasi ikinci kisiye danisma penceresi 11 kanal halka en erken erken kalem gec kalem kazanc (hic kirilmazsa 11) e-posta 4 2 0 5 5 kisa mesaj 2 4 2 5 3 sesli arama 0 - 11 11 0 anlik ileti 3 3 1 5 4 geri dogrulama yordami eklendikten sonra (kayitli kanaldan geri arama, 180 sn): e-posta 4 2 0 5 5 kisa mesaj 2 4 2 5 3 sesli arama 1 5 5 5 0 anlik ileti 3 3 1 5 4 kanal mesru talep kapsam ek sure (sn) kesilen is kirilan halka + e-posta 240 36 6480 1 0 kisa mesaj 60 15 2700 3 0 sesli arama 45 18 3240 7 1 anlik ileti 120 24 4320 2 0 toplam: kapsam 93 talep, 16740 sn (4.65 saat), kesilen is 13 sesli aramada yordam oncesi dusen kalem 11, sonrasi 5; kazanc 6 kalem, bedeli 7 kesilen is yordam yalniz sesli aramaya uygulanirsa: kapsam 18 talep, 3240 sn, kesilen is 7; kirilan halka kazanci ayni (1)
Kanal tablosu zincirin kanala göre nasıl değiştiğini gösteriyor. E-postada dört halka kırılabiliyor ve en erkeni ikinci adımdır: orada hiçbir kalem düşmemiştir. Kısa mesajda kırılabilen halka sayısı ikiye iniyor ve en erkeni dördüncü adımdır — o noktaya gelindiğinde iki kalem çoktan düşmüştür. Anlık iletide üç halka var ve en erkeni üçüncü adımdır. Sesli aramada kırılabilen halka sıfırdır ve tablodaki “geç kalem” sütunu on bir yazar: zincir hiç kırılmadığında düşen kalem sayısıdır.
Bu, kursun ikinci kez karşılaşılan durumudur: bir zincirin hiçbir halkasında denetim yoksa ölçü kırmadan tespite kayar. Sesli aramada tespit, aramanın kendisinden değil sonrasından gelir — talebin gerçekleştiği kalemin kaydından. Zincirin kırılmaması, olanın görülmemesi anlamına gelmez; yalnız görülmenin sonradan olacağı anlamına gelir.
Geri doğrulama yordamı bu tabloyu tek bir yerde değiştiriyor. Sesli aramada beşinci halka kırılabilir hale geliyor ve düşen kalem on birden beşe iniyor: kazanç altı kalemdir. Öteki üç kanalda hiçbir değişiklik yok, çünkü beşinci halka orada zaten kırılabilirdi. Yordamın kazandırdığı her şey tek bir kanaldadır.
Bedel tablosu bunun karşılığını yazıyor. Yordam dört kanala birden uygulanırsa doksan üç talebi kapsıyor, günde 16.740 saniye — dört buçuk saatten fazla — doğrulama süresi ekliyor ve on üç meşru işi kesiyor. Kırılan halka sayısına katkısı yalnız sesli aramada birdir; öteki üç kanalda sıfırdır. Yordam yalnız sesli aramaya uygulanırsa kapsam on sekiz talebe, ek süre 3.240 saniyeye ve kesilen iş yediye iniyor; kazanılan halka aynı kalıyor. Aynı kazancın bedeli beşte bire düşüyor ve farkı yaratan tek şey yordamın nereye uygulandığıdır.
Kesilen yedi iş bu kanalda en yüksek olandır ve bu bir rastlantı değil. Sesli arama, meşru kullanımda da acil işlerin kanalıdır; kapsama giren on sekiz talebin yedisi geri arama penceresine sığmaz. Zincirin en zayıf kanalı, yordamın da en pahalı olduğu kanaldır.
Kanal Değiştirmenin Ölçüsü
Tablolar tek bir kanalda koşan zinciri ölçüyor, oysa zincirin adımları farklı kanallara dağıtılabilir. Bunun etkisi çıktıdan doğrudan okunur. E-postada kırılabilen halkalar ikinci ve üçüncü adımlardır; sesli aramada dördüncü ve beşinci adımların ikisi de kırılamaz. Adımların ilk üçü e-postada, son ikisi sesli aramada geçtiğinde geriye yalnız iki kırılabilir halka kalır ve ikisi de kümülatif sütunun bir ile iki değerinde durur.
Sayı olarak sonuç şudur: aynı zincirde erken kırma kazancı beş kalemden bire iner ve son iki halkanın taşıdığı dokuz kalemlik fark hiçbir denetimin arkasında kalmaz. Kanal değiştirmek zincire yeni bir adım eklemez; yalnız var olan adımları doğrulama kalemi az olan kanala taşır. Savunma tarafındaki karşılığı da aynı ölçüdedir — bir talebin başladığı kanalda değil, tamamlandığı kanalda hangi kalemlerin bulunduğu sayılır. Bir önceki bölümde yordamın yalnız sesli aramaya uygulanması ucuz göründü; kanal değiştirme bu tercihi ayrıca zorunlu kılar, çünkü zincirin son halkası bilerek o kanala taşınabilir. Kanal başına ölçüm bu yüzden tek başına yetmez; talebin izlediği kanal dizisi de bir kalem olarak kaydedilmelidir.
Özet
- 10 doğrulama kaleminin dört kanaldaki toplam gücü sırasıyla 19, 13, 2 ve 14’tür. Sesli aramada güçlü kalem sayısı 0’dır; 8 kalem hiç yok, 2 kalem taklit edilebilir.
- Dört kanalda da bulunan yalnız 2 kalem var ve ikisi de birden fazla kanalda güçlü değil. Kanaldan bağımsız doğrulama ancak dışarıdan bir yordamla eklenebilir.
- Aynı 5 adımlık zincir e-postada 4, anlık iletide 3, kısa mesajda 2, sesli aramada 0 halkada kırılıyor. Sesli aramada zincir hiç kırılmıyor ve düşen kalem 11’de kalıyor.
- Kırılamayan zincirde ölçü tespite kayar: sesli aramada görme, aramanın sırasında değil talebin gerçekleştiği kalemin kaydında olur.
- Geri doğrulama yordamı yalnız sesli aramada bir halka kazandırıyor; düşen kalem 11’den 5’e iniyor, kazanç 6 kalemdir. Öteki üç kanalda kazanç 0’dır.
- Yordam dört kanala uygulanırsa günde 16.740 saniye ve 13 kesilen iş, yalnız sesli aramaya uygulanırsa 3.240 saniye ve 7 kesilen iş. Kazanılan halka her iki durumda aynıdır.
Sonraki Adım
Bu dersin dört kanalı da uzaktan işliyordu ve hepsinin ortak önkoşulu bir adresti: posta adresi, numara ya da hesap. Bir kişinin binaya girmesi bu önkoşulların hiçbirine ihtiyaç duymaz. Kapıdan geçmek, bir kartı taklit etmek, açık bırakılmış bir ekrana bakmak ya da atılmış bir belgeyi toplamak farklı bir kaynak kümesini kullanır: kapı, kart ve görsel doğrulama. Sonraki dersin sorusu budur: bir bina modelinde kaç erişim kalemi var, bunların kaçında denetim bulunuyor, hangi zincir hangi kalemde kırılıyor ve bir refakat yordamı kaç adımı kırıp karşılığında kaç meşru geçişi yavaşlatıyor.
İlerlemeni kaydetmek ve not almak için Giriş yap
Notlarım
Not almak için giriş yapmalısın.