Ders 13 / 21
Uçtan Uca Şifreleme Uygulamaları
İçeriği kimin okuyabildiği sayılır: taşıma şifrelemesinde 10 katmanın 10'u da açık içeriği görüyor, uçtan uca şifrelemede 2'si; güvenilmesi gereken kalem 36'dan 4'e, açık görülen kayıt günde 30.930 binden 5.460 bine iniyor. Karşılığında 6 yetenek düşüyor, 4'ünün uç tarafında 16 kalemlik karşılığı var, 2'sinin yok; anahtarı yalnız uçta tutmak yılda 172.200 kaydı kurtarılamaz kılıyor ve emanet anahtarı okuyan katmanı 2'den 3'e çıkarıyor.
İçindekiler
Önceki beş ders aynı şeyi korudu: bağlantıyı. Sertifika bir taşıma kanalının iki ucunu birbirine bağlar ve kanal sonlandığında görevi biter. Kanalın sonlandığı yer ise çoğunlukla içeriğin gideceği yer değildir. Kurgu ölçüm ağında bir sayaç kaydı saha terminalinden çıkar, şube ağ geçidinden, ters vekilden, uygulama sunucusundan, kuyruktan, işleyiciden, veritabanından ve yedekten geçip iş emri terminaline ulaşır. Her sıçramada kanal yeniden kurulur ve her sıçrama arasında içerik açıktır.
Bu ders konuyu kapatırken soruyu içeriğin kendisine taşır. Ölçü birimi artık kalem değil, kimin okuyabildiğidir: kaç aracı katman içeriği görüyor, anahtarın uçta durması kaç kalemi sunucudan çekiyor ve karşılığında hangi yetenekler kayboluyor.
- PK26. Bir katmanın içeriği “okuması”, içeriğin o katmanda açık biçimde bulunmasıdır. Taşıma şifrelemesinde kanal korunur, katmanın içi korunmaz.
- PK27. Güvenilmesi gereken kalem, bir katmanda içeriğe erişebilen ayrı bir yoldur: yönetici hesabı, disk, yedek kopya, günlük kaydı, hata ayıklama çıktısı. Sayılar kurgudur.
- PK28. Uçtan uca şifrelemede anahtar yalnız uçlarda bulunur; aradaki hiçbir katman içeriği çözemez, taşıdığını yine taşır.
- PK29. Aygıt kaybı oranı, aygıt başına kayıt sayısı ve kayıt hacimleri kurgu model değerleridir.
- PK30. Emanet anahtarı, uçların anahtarını çözebilen ayrı bir anahtardır ve kurumda bir yerde saklanır.
İçeriği Kim Okuyor
Ölçüm iki ayarı aynı katman listesi üzerinde koşturuyor. Değişen tek şey anahtarın nerede durduğu; katmanlar, hacimler ve yollar aynı kalıyor.
// katman.mjs — icerigi goren katmanlarin ve kaybedilen yeteneklerin modeli. MODELDIR. // Kurgu bolgesel olcum agi: katman listesi, hacimler, oranlar ve kalem sayilari uydurmadir. export const KATMAN = [ // ad, tur, gunde gordugu kayit (bin), guvenilmesi gereken kalem ["saha terminali", "uc", 4820, 2], ["sube ag gecidi", "araci", 4820, 3], ["ters vekil", "araci", 4820, 4], ["uygulama sunucusu", "araci", 4820, 5], ["kuyruk", "araci", 3100, 3], ["isleyici", "araci", 3100, 4], ["veritabani", "araci", 1960, 6], ["yedek ve arsiv", "araci", 1960, 4], ["gunluk toplayici", "araci", 890, 3], ["is emri terminali", "uc", 640, 2], ].map(([ad, tur, kayit, kalem]) => ({ ad, tur, kayit, kalem })); export const YETENEK = [ // ad, tasima sifrelemesinde var mi, uctan ucada karsiligi, karsiligin ek kalemi ["icerik uzerinde arama", true, "uc tarafinda dizin", 4], ["sunucu tarafi ozet uretimi", true, "uc tarafinda hesap", 3], ["aykirilik tespiti", true, "-", 0], ["icerik denetimi", true, "-", 0], ["anahtar kaybinda kurtarma", true, "kurtarma anahtari emaneti", 5], ["yeni cihazdan gecmise erisim", true, "anahtar aktarimi", 4], ]; // Uctan uca sifreleme icerigi kapatir; ustveri alanlari acik kalir. export const USTVERI = ["gonderen uc", "alici uc", "zaman damgasi", "kayit boyutu", "gonderim sikligi"]; export const AYGIT = 4100; // sayac ucu ve saha terminali toplami (kurgu) export const KAYIP_ORAN = 0.03; // yillik aygit kaybi orani (kurgu) export const AYGIT_KAYIT = 1400; // aygitta duran, baska yerde cozulemeyen kayit (kurgu) export const yaz = (g) => (h) => h.map((v, i) => (i ? String(v).padStart(g[i]) : String(v).padEnd(g[0]))).join("");
// okuyan.mjs — icerigi kimin okudugu, cekilen kalem ve kaybedilen yetenek import { KATMAN, YETENEK, USTVERI, AYGIT, KAYIP_ORAN, AYGIT_KAYIT, yaz } from "./katman.mjs"; const top = (l, f) => l.reduce((t, x) => t + f(x), 0); const ARACI = KATMAN.filter((k) => k.tur === "araci"); const UC = KATMAN.filter((k) => k.tur === "uc"); const y1 = yaz([22, 10, 16, 14, 14]); console.log(`${KATMAN.length} katman: ${UC.length} uc, ${ARACI.length} araci`); console.log("\n" + y1(["katman", "tur", "kayit(bin/gun)", "tasimada", "uctan ucada"])); for (const k of KATMAN) console.log(y1([k.ad, k.tur, k.kayit, "okur", k.tur === "uc" ? "okur" : "okuyamaz"])); const y2 = yaz([26, 12, 16, 18, 14]); console.log("\n" + y2(["olcu", "tasimada", "uctan ucada", "sunucudan cekilen", "oran"])); const olcu = [ ["icerigi goren katman", KATMAN.length, UC.length], ["guvenilmesi gereken kalem", top(KATMAN, (k) => k.kalem), top(UC, (k) => k.kalem)], ["acik goren kayit (bin/gun)", top(KATMAN, (k) => k.kayit), top(UC, (k) => k.kayit)], ]; for (const [ad, a, b] of olcu) console.log(y2([ad, a, b, a - b, `${((1 - b / a) * 100).toFixed(0)}%`])); // Kaybedilen yetenek ve uc tarafindaki karsiliginin bedeli. const y3 = yaz([32, 30, 12]); console.log("\n" + y3(["yetenek", "uctan ucada karsiligi", "ek kalem"])); for (const [ad, , karsilik, kalem] of YETENEK) console.log(y3([ad, karsilik, kalem])); const karsiligiYok = YETENEK.filter(([, , k]) => k === "-").length; console.log(y3(["toplam", `${YETENEK.length - karsiligiYok} karsilik, ${karsiligiYok} yok`, top(YETENEK, ([, , , n]) => n)])); // Anahtar ucta durdugunda: kaybolan aygit, kurtarilamayan kayit. const kayipAygit = Math.round(AYGIT * KAYIP_ORAN); console.log(`\naygit ${AYGIT}, yillik kayip orani ${KAYIP_ORAN * 100}% -> ` + `${kayipAygit} aygit (kurgu)`); console.log(`sunucu tarafinda anahtar: kurtarilamayan kayit 0`); console.log(`anahtar yalniz ucta: kurtarilamayan kayit ` + `${kayipAygit * AYGIT_KAYIT} (${kayipAygit} aygit x ${AYGIT_KAYIT})`); const emanet = YETENEK.find(([a]) => a === "anahtar kaybinda kurtarma")[3]; console.log(`kurtarma anahtari emaneti: kurtarilamayan kayit 0, ek kalem ${emanet}, ` + `icerigi okuyabilen katman ${UC.length} -> ${UC.length + 1}`); console.log(`\nuctan uca sifrelemeden sonra acik kalan ustveri alani: ${USTVERI.length}`); for (const u of USTVERI) console.log(` ${u}`);
10 katman: 2 uc, 8 araci katman tur kayit(bin/gun) tasimada uctan ucada saha terminali uc 4820 okur okur sube ag gecidi araci 4820 okur okuyamaz ters vekil araci 4820 okur okuyamaz uygulama sunucusu araci 4820 okur okuyamaz kuyruk araci 3100 okur okuyamaz isleyici araci 3100 okur okuyamaz veritabani araci 1960 okur okuyamaz yedek ve arsiv araci 1960 okur okuyamaz gunluk toplayici araci 890 okur okuyamaz is emri terminali uc 640 okur okur olcu tasimada uctan ucada sunucudan cekilen oran icerigi goren katman 10 2 8 80% guvenilmesi gereken kalem 36 4 32 89% acik goren kayit (bin/gun) 30930 5460 25470 82% yetenek uctan ucada karsiligi ek kalem icerik uzerinde arama uc tarafinda dizin 4 sunucu tarafi ozet uretimi uc tarafinda hesap 3 aykirilik tespiti - 0 icerik denetimi - 0 anahtar kaybinda kurtarma kurtarma anahtari emaneti 5 yeni cihazdan gecmise erisim anahtar aktarimi 4 toplam 4 karsilik, 2 yok 16 aygit 4100, yillik kayip orani 3% -> 123 aygit (kurgu) sunucu tarafinda anahtar: kurtarilamayan kayit 0 anahtar yalniz ucta: kurtarilamayan kayit 172200 (123 aygit x 1400) kurtarma anahtari emaneti: kurtarilamayan kayit 0, ek kalem 5, icerigi okuyabilen katman 2 -> 3 uctan uca sifrelemeden sonra acik kalan ustveri alani: 5 gonderen uc alici uc zaman damgasi kayit boyutu gonderim sikligi
İlk tablonun dördüncü sütunu bütünüyle aynı değeri taşıyor: taşıma şifrelemesinde on katmanın onu da içeriği okur. Bu, taşıma şifrelemesinin bir eksikliği değil, tanımıdır — kanal korunur, kanalın bittiği yerde içerik açılır. Kayıt bir sıçramada şifrelenir, ertesi sıçramada yeniden şifrelenir ve ikisinin arasında bir sürecin belleğinde açık biçimde durur.
Özet tablosu üç ölçüyü yan yana koyuyor. İçeriği gören katman ondan ikiye, güvenilmesi gereken kalem otuz altıdan dörde, açık görülen kayıt hacmi günde 30.930 bin’den 5.460 bine iniyor. En büyük düşüş kalem sütunundadır ve nedeni belirgin: bir katmanın içeriği görmesi tek bir yol değil, o katmandaki her erişim yoludur. Veritabanı satırı altı kalem taşıyor — yönetici hesabı, disk, yedek, günlük ve iki tanesi daha; uçtan uca şifreleme bunların altısını birden kapatır, çünkü katmanda çözecek anahtar yoktur.
Tablonun sekiz aracı satırı eşit ağırlıkta değil. Yedek ve arşiv katmanı günde yalnız 1.960 bin kayıt görüyor, ötekilerin çoğundan az; buna karşılık gördüğü kaydı saklar. Bir kayıt kuyrukta saniyeler, işleyicide milisaniyeler durur; yedekte yıllarca durur. Katman sayımı bu farkı göstermez, çünkü sayım bir anı ölçer. Aynı sayının zaman boyutuyla birlikte okunması gerekir: on katmanın sekizi içeriği görür, ama içeriği biriktiren katman birdir ve orada biriken şey, şifrelemesi bugün değiştirilse bile geçmişe dönük olarak açık kalır.
Ölçünün mantığı bu satırda görünüyor. Sunucu tarafındaki bir denetimi sıkılaştırmak o katmandaki kalem sayısını azaltır; anahtarı uca taşımak katmanı denklem dışına çıkarır. Birincisi kalemi küçültür, ikincisi sıfırlar. İkinci dersteki kök sayımıyla aynı biçimin tersidir bu: orada tek kök kalemleri kendinde topluyordu, burada anahtar kalemleri uçlara dağıtıyor.
Anahtarı Uca Taşımanın Bedeli
İkinci tablo kaybedilenleri yazıyor. Altı yeteneğin dördünün uç tarafında bir karşılığı var ve bu karşılıklar toplam on altı kalem ekliyor. Karşılıkların hepsi aynı işi yapmıyor: içerik üzerinde arama uç tarafında bir dizin kurmayı gerektirir, ama o dizin yalnız o uçtaki kayıtları kapsar — sunucu tarafındaki arama bütün kayıtlar üzerindeydi. Karşılık bir yerine geçme değil, bir daralmadır.
İki yeteneğin karşılığı yok. Aykırılık tespiti ve içerik denetimi, tanımı gereği içeriği okumayı gerektirir; okuyamayan bir katman bunları yapamaz. Bu iki satır uçtan uca şifrelemenin karar niteliğini gösteriyor: kapatılan sekiz katman, yalnız istenmeyen erişimi değil, istenen erişimi de kapatır. Kurgu ölçüm ağında bunun karşılığı, bozuk bir sayacın ürettiği aykırı kaydın toplayıcıda değil ancak uçta ya da varış noktasında fark edilmesidir.
Modelin ölçmediği bir ara durum da var. Buradaki iki ayar uçları birbirine karşıt koyuyor: içeriğin tamamı ya açıktır ya kapalıdır. Uygulamada karar çoğunlukla alan bazında verilir — bir kaydın abone kimliği kapatılırken sayaç okuma değeri açık bırakılabilir. O durumda kapatılan katman sayısı aynı kalır ama her katmanın gördüğü alan sayısı düşer ve karşılığında sunucu tarafı işleme, açık bırakılan alanlar üzerinde çalışmaya devam eder. Ölçünün birimi o zaman katman değil, katman ile alanın çarpımı olur; bu dersin tablosu o çarpımın iki uç değerini verir.
Üçüncü bölüm en sert bedeli veriyor. Anahtar yalnız uçta durduğunda kaybolan bir aygıt, üzerindeki kayıtları da götürür: yılda 123 aygıt ve 172.200 kurtarılamayan kayıt. Sunucu tarafında anahtar tutulduğunda bu sayı sıfırdır, çünkü çözebilen bir taraf her zaman vardır. Uçtan uca şifrelemenin gücü ile bu kaybın nedeni aynı şeydir; biri olmadan öteki de olmaz.
Emanetin Geri Açtığı Katman
Kaybı sıfırlamanın bilinen yolu emanet anahtarıdır: uçların anahtarını çözebilen ayrı bir anahtar, kurumda bir yerde saklanır. Kurtarılamayan kayıt sıfıra iner ve beş kalem eklenir. Ölçüm ise başka bir sütunda değişiyor: içeriği okuyabilen katman ikiden üçe çıkıyor.
Bu üçüncü katman ötekilere benzemiyor. Aracı katmanların her biri yalnız kendi gördüğü hacmi okurdu — kuyruk günde 3.100 bin kaydı, günlük toplayıcı 890 bini. Emanet anahtarı ise ayrım yapmaz; uçların şifrelediği her kaydı çözebilir. Sekiz katmanı kapatan bir karar, bir kalem karşılığında hepsinden geniş bir katman açar. Bu, kursun ölçü ekseninin tam da tanımıdır: emanet anahtarı yeni bir güven köküdür ve kırıldığında düşen kalem sayısı, kapattığı sekiz katmanın toplamından büyüktür.
Bu kökü tek bir yerde tutmamanın yolu vardır: anahtar paylara bölünür ve çözmek için payların belirli bir sayısı bir araya getirilir. Bu, kırılma için gereken kalem sayısını birden pay eşiğine çıkarır ve kalem sütununa aynı sayıda bakım işi ekler — pay saklama, pay yenileme, pay sahiplerinin devri. Ölçü değişmez, yalnız kökün altına bir zincir daha girer ve o zincirin de kalemleri sayılır.
Emanet anahtarı yanlış bir karar değildir; ölçülmemiş bir karar olduğunda yanlıştır. Ölçüldüğünde soru “emanet olsun mu” değil, “bu kök nerede duruyor, kaç kişi ona ulaşabiliyor ve kırıldığında ne düşüyor” olur — ikinci dersin sorduğu sorunun aynısı, farklı bir kalem üzerinde.
Kalan iki uç da sayımın dışında değil. Uçtan uca şifrelemeden sonra güvenilmesi gereken dört kalem duruyor ve dördü de uç aygıtların üzerinde: aygıtın diski ve o aygıta erişebilen hesap. Sekiz aracı katman kapatıldığında koruma ortadan kalkmaz, yer değiştirir — içeriğin okunabildiği tek yer artık uç aygıtın kendisidir. Bu, ilk bakışta bir kazançtır, çünkü dört kalem otuz altıdan küçüktür; ikinci bakışta bir yoğunlaşmadır, çünkü o dört kalemin tuttuğu şey artık başka hiçbir katmanda yedeklenmiyor. Kurgu ölçüm ağında bir saha terminaline erişebilen taraf, o terminalin gördüğü günde 4.820 bin kaydın tamamını okur ve zincirdeki hiçbir denetim bunu görmez; sertifika geçerlidir, imza doğrudur, el sıkışma tamdır.
Son çıktı bloğu bir sınırı yazıyor. Uçtan uca şifreleme içeriği kapatır, ilişkiyi kapatmaz: gönderen uç, alıcı uç, zaman damgası, kayıt boyutu ve gönderim sıklığı aracı katmanlarda açık kalır, çünkü kaydı yönlendirmek için gereklidirler. Beş alanlık bu üstveri kümesi, bir sayacın ne zaman ve hangi sıklıkta veri gönderdiğini, hangi terminale iş emri açıldığını ve hangi uçların birbiriyle konuştuğunu görünür bırakır. Bir sayacın gönderim sıklığındaki değişim, kaydın içeriği hiç okunmadan bir arıza ya da bir müdahale işareti olarak okunabilir; aynı görünürlük, aracı katmanların hâlâ ne kadar şey bildiğini de gösterir. İçeriğin okunamaması, hakkında hiçbir şey bilinememesi anlamına gelmez.
Özet
- Taşıma şifrelemesinde 10 katmanın 10’u da içeriği okur; bu bir eksiklik değil tanımdır — kanal korunur, kanalın bittiği yerde içerik açılır.
- Uçtan uca şifreleme içeriği gören katmanı 10’dan 2’ye, güvenilmesi gereken kalemi 36’dan 4’e (%89), açık görülen kaydı günde 30.930 binden 5.460 bine indirir. Denetim sıkılaştırmak kalemi küçültür, anahtarı uca taşımak katmanı denklem dışına çıkarır.
- Karşılığında 6 yetenek düşer: 4’ünün uç tarafında 16 kalemlik bir karşılığı vardır ve bu karşılıklar daha dar kapsamlıdır; aykırılık tespiti ile içerik denetiminin karşılığı yoktur, çünkü ikisi de içeriği okumayı gerektirir.
- Anahtar yalnız uçta durduğunda yılda 123 kayıp aygıt 172.200 kaydı kurtarılamaz kılar; sunucu tarafında anahtar tutulduğunda bu sayı 0’dır. Güç ile kayıp aynı özelliğin iki yüzüdür.
- Emanet anahtarı kaybı sıfırlar, 5 kalem ekler ve okuyabilen katmanı 2’den 3’e çıkarır; bu katman, kapatılan 8 katmanın hiçbirinin görmediği kadar geniş görür. Üstveri ise açık kalır: içerik kapansa da 5 alan görünmeye devam eder.
Sonraki Adım
Bu konu bir soruyla açılmıştı: imza bütünlüğü kanıtlıyor, ama doğrulamada kullanılan açık anahtarın kime ait olduğunu ne kanıtlıyor. Altı ders o soruyu bir zincire bağladı — alanların taşıdığı iddialar, kökün taşıdığı kalemler, iptalin öğrenme penceresi, el sıkışmanın kimlik adımları, yenilemenin takvimi ve anahtarın uçta durmasının bedeli sayıldı. Anahtarın kime ait olduğu artık adlandırılmış bir köke dayanıyor.
Açıkta kalan şey adın kendisidir. Bir kalemin öznesinde saha-terminali-17 yazması o terminali
kimin kullandığını, o kişinin hangi rolde olduğunu, hangi kayıtlara erişebileceğini ve bu kararın
binlerce makinede nasıl uygulanacağını söylemez. Kurum içinde kimin kim olduğu, kimin neye
erişebildiği ve bunun tek tek makinelerde nasıl dayatıldığı hiç ölçülmedi. Sonraki konu
Kurumsal Kimlik bu üç soruyu alır: kimliğin merkezî olarak nerede tutulduğu, o merkez
kırıldığında kaç uygulamanın düştüğü ve politikanın kaç makineye kaç turda ulaştığı.
İlerlemeni kaydetmek ve not almak için Giriş yap
Notlarım
Not almak için giriş yapmalısın.