Ders 16 / 20
Kablosuz Şifreleme Kuşakları
Dört kablosuz şifreleme kuşağı aynı on iddialık küme üzerinde ölçülür: akış şifresine dayanan eski kuşak on iddianın hiçbirini kanıtlamıyor, blok şifresini sayaç kipinde kullanan kuşak beşini kanıtlıyor, eşzamanlı kimlik doğrulama kuşağı yediye çıkarıyor. Geçişin bedeli aygıt envanterinde sayılır: en üst kuşak zorunlu tutulduğunda dört bin beş yüz kırk aygıtın dört bin üç yüz yirmi biri dışarıda kalıyor.
İçindekiler
Bir önceki konu çevreyi çizdi: bölgeler ayrıldı, denetim noktaları kondu ve kurallar sıraya girdi. Bütün o sınırların ortak bir dayanağı vardı — bir mesajın belirli bir kablodan girmiş olması. Kablosuz katmanda bu dayanak yoktur. Sinyal binanın duvarında durmaz; bir çerçeveyi alan aygıtın bina içinde mi dışında mı olduğu, çerçevenin kendisinden okunamaz.
O yüzden bu konuda kablonun yaptığı işi şifreleme yapar. Kuşaklar arasındaki fark bir hız ya da uyumluluk farkı değildir; hangi iddianın kanıtlanabildiği farkıdır. Bu ders dört kuşağı kuşak adlarıyla değil taşıdıkları özellikle anar ve hepsini aynı on iddialık küme üzerinde koşturur: kaçı kanıtlanıyor, kaçı açık kalıyor, yükseltmenin bedeli kaç aygıt.
- KG1. Kurgu bölgesel ölçüm ağı kablosuz tarafıyla ele alınır: şube ağları, saha ekiplerinin
el terminalleri ve sayaç uçlarının bağlandığı toplayıcı ağ. Gerçek bir ağ kurulmuyor, gerçek ağ
adı ve konum yazılmıyor; ölçülen şey
nodeile kurulan modeldir. - KG2. İddia, bir bağlantı kurulurken taraflardan birinin öne sürdüğü ve karşı tarafın kabul ettiği önermedir. Üç değer alır: kanıtı var, kanıtı zayıf (sonlu bir işle bozulabiliyor), kanıtı yok.
- KG3. Kuşaklar dört sınıfa indirgenir: akış şifresini sabit anahtarla ve kısa bir sayaçla karıştıran eski kuşak; aynı akış şifresini koruyup her çerçeveye ayrı anahtar türeten geçiş kuşağı; blok şifresini sayaç kipinde kullanıp bütünlüğü aynı anahtarla doğrulayan kuşak; ortak sırdan her oturumda taze anahtar üreten eşzamanlı kimlik doğrulama kuşağı.
- KG4. Aygıt envanteri kurgudur; her sınıfın desteklediği en üst kuşak model kararıdır.
- KG5. Çevrimdışı deneme hızı kurgu bir model sabitidir ve donanıma bağlı olarak değişir; karşılaştırma mutlak süre için değil, iki kuşak arasındaki oran için yapılır.
- KG6. Kuşakların taşıdığı iddialar burada yalnız doğrulama ekseninde ele alınır; şifreleme algoritmalarının kendisi M24/K04’ün konusudur.
Bir Bağlantının Taşıdığı İddialar
Bir aygıt bir kablosuz ağa bağlanırken tek bir soru sormaz. On ayrı önerme kabul eder ve bunların çoğunu sormadan kabul eder.
// kusak.mjs — kablosuz kusaklarin iddia tablosu (model). Kusaklar ada gore degil, // tasidiklari ozellige gore anilir. Kurgu bolgesel olcum agi; gercek ag kurulmuyor. export const KUSAK = [ ['akis-sifresi-kisa-sayac', 'akis sifresini sabit anahtarla ve kisa bir sayacla karistiran kusak'], ['akis-sifresi-cerceve-anahtari', 'ayni akis sifresini koruyup her cerceveye ayri anahtar tureten kusak'], ['blok-sifresi-sayac-kipi', 'blok sifresini sayac kipinde kullanip butunlugu ayni anahtarla dogrulayan kusak'], ['eszamanli-kimlik-dogrulama', 'ortak sirdan her oturumda taze anahtar ureten eszamanli kimlik dogrulama kusagi'], ]; // Bir baglanti kurulurken tasinan iddialar. Deger: 2 = kanit var, 1 = kanit zayif // (sonlu is ile bozulabiliyor), 0 = hicbir kanit yok. export const IDDIA = [ ['ag adi dogru', [0, 0, 0, 0]], ['istemci sirri biliyor', [1, 2, 2, 2]], ['erisim noktasi sirri biliyor', [0, 1, 2, 2]], ['cerceve icerigi degismedi', [1, 1, 2, 2]], ['cerceve tekrar degil', [0, 2, 2, 2]], ['anahtar bu oturuma ozel', [0, 1, 2, 2]], ['gecmis trafik acilamaz', [0, 0, 0, 2]], ['yonetim cercevesi agdan geldi', [0, 0, 0, 1]], ['parola cevrimdisi denenemez', [0, 0, 0, 2]], ['kaynak adresi dogru', [0, 0, 0, 0]], ]; // Kurgu olcum aginda aygit siniflari: [sinif, adet, destekledigi en ust kusak (indis)] export const AYGIT = [ ['sayac ucu (eski seri)', 1840, 0], ['sayac ucu (yeni seri)', 2260, 2], ['saha el terminali', 145, 2], ['saha el terminali (eski)', 38, 1], ['sube dizustu', 210, 3], ['barkod yazicisi', 26, 1], ['pano ekrani', 12, 2], ['bakim dizustu', 9, 3], ];
// kosum1.mjs — her kusak kac iddiayi kanitliyor, kaci acik kaliyor import { KUSAK, IDDIA } from './kusak.mjs'; const G = ['yok', 'zayif', 'var']; const E = [32, 8, 8, 8, 8]; const yaz = (h) => h.map((d, i) => String(d)[i ? 'padStart' : 'padEnd'](E[i])).join(''); console.log(yaz(['iddia', 'kusak1', 'kusak2', 'kusak3', 'kusak4'])); for (const [ad, d] of IDDIA) console.log(yaz([ad, ...d.map((v) => G[v])])); const say = (k, v) => IDDIA.filter(([, d]) => d[k] === v).length; const S = [34, 12, 8, 10, 12]; const yaz2 = (h) => h.map((d, i) => String(d)[i ? 'padStart' : 'padEnd'](S[i])).join(''); console.log('\n' + yaz2(['kusak', 'kanitlanan', 'zayif', 'kanitsiz', 'acik iddia'])); KUSAK.forEach(([ad], k) => console.log(yaz2([ad, say(k, 2), say(k, 1), say(k, 0), say(k, 1) + say(k, 0)])));
iddia kusak1 kusak2 kusak3 kusak4 ag adi dogru yok yok yok yok istemci sirri biliyor zayif var var var erisim noktasi sirri biliyor yok zayif var var cerceve icerigi degismedi zayif zayif var var cerceve tekrar degil yok var var var anahtar bu oturuma ozel yok zayif var var gecmis trafik acilamaz yok yok yok var yonetim cercevesi agdan geldi yok yok yok zayif parola cevrimdisi denenemez yok yok yok var kaynak adresi dogru yok yok yok yok kusak kanitlanan zayif kanitsiz acik iddia akis-sifresi-kisa-sayac 0 2 8 10 akis-sifresi-cerceve-anahtari 2 3 5 8 blok-sifresi-sayac-kipi 5 0 5 5 eszamanli-kimlik-dogrulama 7 1 2 3
İlk satırdaki sayı bu konunun başlangıç noktasıdır: eski kuşak on iddianın hiçbirini kanıtlamıyor. İki iddiada zayıf bir kanıt var, sekizinde hiç yok. Zayıf olan ikisi de aynı nedenle zayıf: çerçeve başına değişen sayaç kısa olduğu için yeterli sayıda çerçeve biriktiğinde aynı değer tekrar eder ve tekrar eden değer hem içeriği hem de bütünlük toplamını çözülebilir kılar. Bu kuşağın sorunu şifrelemenin varlığı değil, kanıtın sonlu bir işle tükenmesidir.
Geçiş kuşağı iki iddiayı kanıta bağlıyor ve üçünü zayıf bırakıyor. Kazanılan asıl kalem tekrar korumasıdır: sıra sayacı eklendiği için daha önce görülmüş bir çerçevenin yeniden oynatılması reddedilir. Ama akış şifresi yerinde kaldığı için bütünlük ve oturum ayrımı hâlâ türetilmiş bir karıştırma işlemine dayanır; kanıt vardır, tam değildir.
Üçüncü kuşak beş iddiayı kanıta bağlıyor ve zayıf sütununu sıfırlıyor. Bu tablo okumasının en önemli yeri burasıdır: zayıf kanıt ortadan kalkıyor ama kanıtsız iddia sayısı beşten beşe, yani hiç değişmiyor. Şifrelemenin güçlenmesi, kanıtı olmayan iddiayı kanıtlı yapmaz.
Kapanmayan İki İddia
Dördüncü kuşak yedi iddiayı kanıta bağlıyor ve tablonun iki satırı dört sütunda da boş kalıyor: ağ adının doğruluğu ve kaynak adresinin doğruluğu.
Bunlar rastgele seçilmiş iddialar değildir. Ağ adı, erişim noktasının kendi hakkında yaptığı bir bildirimdir ve bağlantı kurulmadan, yani herhangi bir anahtar devreye girmeden önce yayılır. Şifreleme bağlantıdan sonra başlar; bağlantıdan önceki bildirimi hiçbir kuşak imzalamaz. Kaynak adresi de aynı yerdedir: çerçeve başlığındaki adres alanı şifrelenmez, çünkü çerçevenin doğru alıcıya ulaşması için okunabilir olması gerekir.
İki satır bu konunun geri kalanını belirliyor. Üçüncü ders ağ adı iddiasını, dördüncü ders yönetim çerçevesi iddiasını ölçecek — ikisi de şifreleme kuşağının dışında kalan iddialardır ve kuşak yükseltmek ikisini de kapatmaz.
Dördüncü kuşağın kazandırdığı iki kalem ise ayrı bir sınıftandır. Geçmiş trafiğin açılamaması, ortak sır sonradan öğrenilse bile daha önce kaydedilmiş oturumların çözülememesi demektir; üç kuşakta bu iddianın hiçbir kanıtı yoktur, yani bugün kaydedilen trafik yarın öğrenilen parolayla açılabilir. Parolanın çevrimdışı denenememesi ise ölçülebilir bir kalemdir ve aşağıdaki koşum onu sayıya çeviriyor.
Yükseltmenin Bedeli
Kuşak seçmek bir tercih değil, bir envanter kararıdır. Zorunlu tutulan en düşük kuşak, o kuşağı desteklemeyen her aygıtı ağın dışında bırakır.
// kosum2.mjs — kusak yukseltmesinin bedeli: disarida kalan aygit ve cevrimdisi deneme direnci import { KUSAK, IDDIA, AYGIT } from './kusak.mjs'; const TOPLAM = AYGIT.reduce((s, [, n]) => s + n, 0); const acik = (k) => IDDIA.filter(([, d]) => d[k] < 2).length; const E = [34, 10, 12, 10, 12]; const yaz = (h) => h.map((d, i) => String(d)[i ? 'padStart' : 'padEnd'](E[i])).join(''); console.log(`aygit ${TOPLAM}, sinif ${AYGIT.length}`); console.log(yaz(['en dusuk zorunlu kusak', 'baglanan', 'disarida', 'sinif', 'acik iddia'])); KUSAK.forEach(([ad], k) => { const dis = AYGIT.filter(([, , m]) => m < k); console.log(yaz([ad, TOPLAM - dis.reduce((s, [, n]) => s + n, 0), dis.reduce((s, [, n]) => s + n, 0), dis.length, acik(k)])); }); console.log('\ndisarida kalan siniflar (en ust kusak zorunlu tutulursa):'); for (const [ad, n, m] of AYGIT.filter(([, , m]) => m < KUSAK.length - 1)) console.log(` ${ad.padEnd(26)}${String(n).padStart(6)} en ust destek: kusak${m + 1}`); // Cevrimdisi deneme direnci. Hiz kurgu model sabitidir; gercek deger donanima baglidir. // Kusak 1-3: yakalanan el sikismadan aday parola ag ile konusmadan denenebilir. // Kusak 4: her deneme ag ile bir tur ister; erisim noktasi hizi sinirlar. const CEVRIMDISI = 400000, CEVRIMICI = 3, YIL = 365 * 24 * 3600; const sure = (u, h) => u / h / YIL; const bicim = (y) => y < 1 ? `${(y * 365).toFixed(1)} gun` : y < 1e6 ? `${y.toFixed(0)} yil` : `${y.toExponential(1)} yil`; const P = [30, 14, 18, 18]; const yaz2 = (h) => h.map((d, i) => String(d)[i ? 'padStart' : 'padEnd'](P[i])).join(''); console.log('\n' + yaz2(['ortak sir bilesimi', 'aday sayisi', 'cevrimdisi', 'ag ile tur'])); for (const [ad, u] of [['8 kucuk harf', 26 ** 8], ['10 harf ve rakam', 36 ** 10], ['12 harf, rakam, imle', 72 ** 12], ['dort sozcuk (7776 sozluk)', 7776 ** 4]]) console.log(yaz2([ad, u.toExponential(1), bicim(sure(u, CEVRIMDISI)), bicim(sure(u, CEVRIMICI))]));
aygit 4540, sinif 8 en dusuk zorunlu kusak baglanan disarida sinif acik iddia akis-sifresi-kisa-sayac 4540 0 0 10 akis-sifresi-cerceve-anahtari 2700 1840 1 8 blok-sifresi-sayac-kipi 2636 1904 3 5 eszamanli-kimlik-dogrulama 219 4321 6 3 disarida kalan siniflar (en ust kusak zorunlu tutulursa): sayac ucu (eski seri) 1840 en ust destek: kusak1 sayac ucu (yeni seri) 2260 en ust destek: kusak3 saha el terminali 145 en ust destek: kusak3 saha el terminali (eski) 38 en ust destek: kusak2 barkod yazicisi 26 en ust destek: kusak2 pano ekrani 12 en ust destek: kusak3 ortak sir bilesimi aday sayisi cevrimdisi ag ile tur 8 kucuk harf 2.1e+11 6.0 gun 2207 yil 10 harf ve rakam 3.7e+15 290 yil 3.9e+7 yil 12 harf, rakam, imle 1.9e+22 1.5e+9 yil 2.1e+14 yil dort sozcuk (7776 sozluk) 3.7e+15 290 yil 3.9e+7 yil
Birinci tablonun iki sütunu bu dersin kararını veriyor. Üçüncü kuşak zorunlu tutulduğunda dört bin beş yüz kırk aygıtın bin dokuz yüz dördü dışarıda kalıyor ve açık iddia ondan beşe iniyor. Dördüncü kuşak zorunlu tutulduğunda açık iddia üçe iniyor, ama bağlanabilen aygıt iki yüz on dokuza düşüyor: sayaç uçlarının tamamı, saha terminallerinin tamamı ve pano ekranları dışarıda kalıyor.
İkinci sütun tek başına okunduğunda karar veremez. En üst kuşağa geçmek iki açık iddia daha kapatıyor; karşılığında dört bin üç yüz yirmi bir aygıt yerine yenisi konmadan ağ çalışmıyor. Bu, ağ kararı değil bütçe kararıdır ve o yüzden gerçek kurumlarda genellikle üçüncü satır seçilir: kabul edilebilir aygıt kaybı karşılığında zayıf kanıtın sıfırlanması.
Tablonun sessiz bir varsayımı var: her satır tek bir kuşağın zorunlu tutulduğunu kabul ediyor. Aygıt kaybını görmemek için sık başvurulan çözüm, erişim noktasını iki kuşağı birden kabul edecek biçimde bırakmaktır. O durumda hiçbir aygıt dışarıda kalmaz, ama açık iddia sayısı üst kuşağın değil alt kuşağın sayısıdır: bir istemci hangi kuşakla bağlanacağını kendisi seçer ve kabul edilen en düşük kuşak, ağdaki her bağlantı için erişilebilir bir seçenektir. İki kuşağı birlikte kabul eden bir ağın ölçüsü beş değil ondur; tablodaki ilk satır o ağın satırıdır.
Ölçüm ikinci bir şeyi göstermiyor: dışarıda kalan aygıtların nereye gittiğini. Uygulamada bunlar silinmez, ayrı bir ağa taşınır. O ağ birinci ya da ikinci kuşakla çalışır, yani kendi sütunundaki açık iddia sayısını taşır. Bin sekiz yüz kırk sayaç ucu için açılan ikinci ağ, on açık iddialık bir bağlantıyı kurumda tutar; kazanılan beş iddia, o aygıtların olduğu yerde kazanılmaz. Doğru okuma budur: yükseltme açık iddiayı azaltmaz, açık iddiayı bir bölgeye taşır — ve o bölgenin nasıl ayrılacağı bir önceki konunun bölütleme sorusudur.
Çevrimdışı Denemenin Ölçüsü
İkinci tablo dördüncü kuşağın en somut kalemini sayıyor. İlk üç kuşakta, bağlantı kurulurken alışverilen mesajlar kaydedilebilirse aday ortak sırlar ağla hiç konuşmadan denenebilir: deneme sayısı ağın değil, denemeyi yapan tarafın işlem gücüyle sınırlıdır. Dördüncü kuşakta her deneme ağla bir tur gerektirir, yani sınır erişim noktasının kabul ettiği hızdır.
Fark sayıda görülüyor. Sekiz küçük harflik bir ortak sır çevrimdışı altı günde tükeniyor; aynı sır ağla tur gerektirdiğinde iki bin iki yüz yıl sürüyor. Aradaki oran, model sabitlerinin oranıdır: saniyede dört yüz bine karşı saniyede üç.
Alt iki satır ikinci bir kararı veriyor. On karakterlik harf ve rakam bileşimi ile dört sözcüklük bir dizi aynı aday sayısını veriyor — üç virgül yedi çarpı on üzeri on beş — ve ikisi de çevrimdışı iki yüz doksan yıl dayanıyor. Aynı direnç iki farklı biçimde elde edilebiliyor; hangisinin seçileceği güvenlik değil, aygıta yazılabilirlik sorusudur. On iki karakterlik geniş bileşim çevrimdışı denemeyi zaten anlamsız kılıyor, ama bir sayaç ucuna elle girilecek dizi olarak da en pahalısı.
Buradan çıkan kural şudur: ilk üç kuşakta ortak sırrın uzunluğu bir yapılandırma tercihi değil, tek savunma hattıdır. Dördüncü kuşakta aynı sır kısa olsa bile çevrimdışı denenemez; kuşağın kazandırdığı asıl şey, kullanıcı seçimindeki zayıflığı protokolün taşımasıdır.
Özet
- Bir kablosuz bağlantı on iddia taşıyor. Akış şifresini kısa bir sayaçla karıştıran eski kuşak bunların hiçbirini kanıtlamıyor: iki zayıf kanıt, sekiz kanıtsız iddia.
- Blok şifresini sayaç kipinde kullanan kuşak zayıf kanıt sütununu sıfırlıyor ve beş iddiayı kanıta bağlıyor; kanıtsız iddia sayısı beşte kalıyor. Şifrelemenin güçlenmesi, kanıtı olmayan iddiayı kanıtlı yapmıyor.
- Ağ adının ve kaynak adresinin doğruluğu dört kuşakta da kanıtsız kalıyor; ikisi de bağlantı kurulmadan önce ya da başlıkta açık olarak taşındığı için hiçbir kuşağın kapsamına girmiyor.
- Üçüncü kuşak zorunlu tutulduğunda 4.540 aygıtın 1.904’ü, dördüncü kuşak zorunlu tutulduğunda 4.321’i dışarıda kalıyor. Dışarıda kalan aygıtlar silinmiyor, ayrı bir ağa taşınıyor — açık iddia azalmıyor, yer değiştiriyor.
- Sekiz küçük harflik ortak sır çevrimdışı 6 günde tükeniyor, ağla tur gerektiğinde 2.207 yıl dayanıyor. Dört sözcüklük dizi ile on karakterlik harf-rakam bileşimi aynı aday sayısını veriyor.
Sonraki Adım
Bu ders ortak sırrın uzunluğunu ölçtü ama sırrın kime ait olduğunu hiç sormadı. Dört kuşağın hepsinde tek bir dizi vardı ve o dizi bin sekiz yüz kırk sayaç ucunda, iki yüz on şube dizüstünde ve kırk üç saha terminalinde aynıydı. Bir kişi ayrıldığında, bir terminal kaybolduğunda ya da bir sayaç ucu sökülüp alındığında o dizi hâlâ geçerlidir ve onu değiştirmek her aygıta ayrı ayrı dokunmak demektir. Sonraki dersin sorusu güven kökünün nerede durduğudur: paylaşılan tek sır kaç kaleme erişim veriyor, kişi başına ayrı kimlik kaç kalemi ayırıyor, bir kimliği iptal etmek kaç adım sürüyor ve kişi başına kimlik hangi ek altyapı kalemlerini zorunlu kılıyor.
İlerlemeni kaydetmek ve not almak için Giriş yap
Notlarım
Not almak için giriş yapmalısın.