Ders 06 / 16
Disk Şifreleme
Fiziksel erişimde okunabilen kalem şifrelenmiş ve şifrelenmemiş diskte karşılaştırılır: makine kapalıyken 18 kalemin 15'i korunuyor, öteki üç durumda şifrelemenin katkısı sıfır, filodaki 1038 nokta tanımının 936'sı çevrimdışı yazma yoluna karşı kapanıyor ve bedel 204 anahtar kopyası ile yılda 14.112 dakikalık elle müdahale.
İçindekiler
Önceki beş dersin ortak bir varsayımı vardı: makineye erişmenin tek yolu çalışan sistemden geçer. Envanter o sistemin içinden çıkarıldı, yama o sistemin bileşenlerine uygulandı, kılavuz maddeleri o sistemin yapılandırmasını değiştirdi, izin listesi o sistemin çalıştırma kararlarını denetledi ve sanal alan bir kalemi o sistemin bir kopyasında koşturdu.
Disk makineden çıkarılıp başka bir yere takıldığında bu varsayım düşer. Çalışan sistem devreden çıkar ve onunla birlikte bütün denetimler: izin listesi değerlendirme yapmaz, taban çizgi okunmaz, hiçbir kayıt tutulmaz. Geriye yalnız diskin üzerindeki baytlar kalır. Bu dersin ölçüsü, o baytların kaçının okunabildiği ve kaçının yazılabildiğidir.
Şifreleme Neyi Yerinden Kaldırır
Tam disk şifreleme diskin içeriğini bir anahtara bağlar. Anahtar sunulmadıkça birim çözülemez; birim çözülmedikçe üzerindeki hiçbir kalem okunamaz ve hiçbir kalem yazılamaz. İki fiil ayrı ayrı önemlidir. Okuma tarafı bilinen bir konudur: kimlik bilgileri, iş verisi ve kayıtlar korunur. Bu kursun ölçüsü açısından asıl değişen yazma tarafıdır.
Çevrimdışı yazma, bu kursta ilk kez görülen bir tutunma yoludur. Disk çıkarılıp başka bir makinede bağlandığında ya da makine harici bir ortamdan açıldığında, bir servis tanımı ya da zamanlanmış görev tanımı doğrudan dosya olarak değiştirilebilir. Bu yolda izin listesi çalışmaz, çünkü kimse bir şey çalıştırmıyor; dosya yazılıyor ve makine bir sonraki açılışında onu kendisi çalıştırıyor.
Anahtarın nasıl saklandığı ve nasıl döndürüldüğü burada ölçülmez; anahtar yönetimi ayrı bir konudur. Açılış zincirinin ölçülmesi ise Kimlik, Erişim ve Kriptografi kursunda yapıldı ve burada girdi olarak alınır: makineye bağlı bir anahtarın koruma değeri, o zincirin bozulmadan kalmasına bağlıdır.
- SS31. On sekiz kalemlik disk içeriği, dört makine durumu ve iki şifreleme ayarı modeldir; gerçek bir disk okunmuyor, gerçek bir şifreleme kurulmuyor.
- SS32. Kalemler sınıf düzeyinde yazılır; dosya yolu ve biçim modellenmiyor.
- SS33. Birim ya çözülmüştür ya değil; kısmi şifreleme ve dosya düzeyinde şifreleme yok.
- SS34. Çevrimdışı yazma yalnız makine kapalıyken mümkün sayılır. Çalışan bir makinede diski çıkarmak makineyi kapatmak demektir ve bu, kapalı duruma geçiştir.
- SS35. Uyku durumunda anahtar bellekte bulunur; model bu durumu birim çözülmüş sayar.
- SS36. Sınıf başına makine, kalan nokta ve yeniden başlatma sayıları önceki derslerden gelir.
// disk/model.mjs — fiziksel erisimde okunabilen kalem MODELIDIR. Gercek bir disk okunmaz, // gercek bir sifreleme kurulmaz; kalemler sinif duzeyinde yazilir. // satir: kalem | sinif | sifreli birimin icinde mi | acik oturumda okuyabilen | tasidigi nokta export const KALEM = ` acilis-bolumu-yapilandirmasi acilis disi yonetici 1 acilis-imza-kaydi acilis disi yonetici 0 kurtarma-anahtari-ipucu kimlik disi yonetici 0 servis-tanimlari tanim ici yonetici 4 zamanlanmis-gorev-tanimlari tanim ici yonetici 2 oturum-betikleri tanim ici kullanici 1 yapilandirma-kancalari tanim ici yonetici 1 sistem-yapilandirmasi yapilandirma ici yonetici 0 kimlik-bilgisi-deposu kimlik ici kullanici 0 kayitli-oturum-belirteci kimlik ici kullanici 0 istemci-onbellegi veri ici kullanici 0 yerel-gunlukler kayit ici yonetici 0 sayfa-dosyasi bellek ici yonetici 0 uyku-imgesi bellek ici yonetici 0 gecici-dosya-dizini veri ici kullanici 0 sayac-okuma-verisi veri ici kullanici 0 yerel-yedek-dizini veri ici yonetici 0 tasinabilir-ortam-eslesmesi veri ici kullanici 0` .trim().split('\n').map((r) => { const [ad, sinif, yer, okur, nokta] = r.trim().split(/\s+/); return { ad, sinif, ici: yer === 'ici', okur, nokta: Number(nokta) }; }); // Makine durumu: birimin kilidi acik mi, cevrimdisi yazma yolu var mi (disk cikarma / harici acilis) export const DURUM = { kapali: { kilitAcik: false, cevrimdisiYazma: true }, uyku: { kilitAcik: true, cevrimdisiYazma: false }, 'kilitli-ekran': { kilitAcik: true, cevrimdisiYazma: false }, 'acik-oturum': { kilitAcik: true, cevrimdisiYazma: false }, }; export const NOKTA = KALEM.reduce((a, k) => a + k.nokta, 0); export const DISI_NOKTA = KALEM.filter((k) => !k.ici).reduce((a, k) => a + k.nokta, 0); // Bir durumda ve sifreleme ayarinda fiziksel erisimle okunabilen kalem ve yazilabilen nokta. export function olc(durum, sifreli) { const d = DURUM[durum]; const acik = !sifreli || d.kilitAcik; // birim icerigi okunabilir mi const okunan = KALEM.filter((k) => acik || !k.ici); const yazilan = d.cevrimdisiYazma ? KALEM.filter((k) => acik || !k.ici).reduce((a, k) => a + k.nokta, 0) : 0; return { okunan: okunan.length, nokta: yazilan, katki: KALEM.length - okunan.length }; // sifrelemenin engelledigi kalem } // Filo: sinif basina kalan nokta (onceki derslerden) ve birim disinda kalan nokta. // oncedenDogrulama: acilis oncesi kimlik dogrulama isteniyor mu; istenmiyorsa anahtar makineye bagli. export const SINIF = [ { ad: 'saha-dizustu', makine: 60, kalan: 9, disi: 1, yeniden: 14, oncedenDogrulama: true, kayip: 5 }, { ad: 'sube-ucu', makine: 24, kalan: 12, disi: 1, yeniden: 14, oncedenDogrulama: true, kayip: 1 }, { ad: 'toplayici', makine: 12, kalan: 12, disi: 1, yeniden: 26, oncedenDogrulama: false, kayip: 0 }, { ad: 'islem-sunucusu', makine: 6, kalan: 11, disi: 1, yeniden: 12, oncedenDogrulama: false, kayip: 0 }, ]; export const ANAHTAR_KOPYA = 2; // makine basina kurtarma anahtari kopyasi export const ELLE_DK = 12; // gozetimsiz yeniden baslatmada elle mudahale (dk)
Dört Durumda Fiziksel Erişim
// disk/olc.mjs — sifrelenmemis ve sifrelenmis diskte okunabilen kalem, kapanan nokta ve bedel import { KALEM, DURUM, NOKTA, DISI_NOKTA, SINIF, ANAHTAR_KOPYA, ELLE_DK, olc } from './model.mjs'; const y = (g, ...s) => console.log(s.map((v, i) => (g[i] < 0 ? String(v).padEnd(-g[i]) : String(v).padStart(g[i]))).join('').trimEnd()); console.log(`${KALEM.length} disk kalemi, ${KALEM.filter((k) => !k.ici).length} tanesi sifreli ` + `birimin disinda; makine basina ${NOKTA} tutunma noktasi tanimi, ${DISI_NOKTA} tanesi disarida`); const A = [-16, 13, 16, 16, 15, 22]; console.log('\n1. fiziksel erisimle okunabilen kalem ve yazilabilen nokta tanimi'); y(A, 'durum', 'sifresiz ok.', 'sifresiz nokta', 'sifreli okunan', 'sifreli nokta', 'sifrelemenin katkisi'); for (const d of Object.keys(DURUM)) { const a = olc(d, false), b = olc(d, true); y(A, d, a.okunan, a.nokta, b.okunan, b.nokta, b.katki); } const B = [-30, -14, 7, 8, 12, 16]; console.log('\n2. birim disinda kalan ve nokta tasiyan kalemler'); y(B, 'kalem', 'sinif', 'yer', 'nokta', 'kapaliyken', 'acik oturumda'); for (const k of KALEM.filter((x) => !x.ici || x.nokta > 0)) y(B, k.ad, k.sinif, k.ici ? 'ici' : 'disi', k.nokta, k.ici ? 'korunur' : 'okunur', `${k.okur} okur`); const C = [-16, 9, 8, 15, 12, 13, 13]; console.log('\n3. filo: kapanan nokta ve sifrelemenin bedeli'); y(C, 'sinif', 'makine', 'nokta', 'kapanan nokta', 'acik nokta', 'elle dk/yil', 'kayip cihaz'); const t = { nokta: 0, kapanan: 0, acik: 0, dk: 0, kayip: 0 }; for (const s of SINIF) { const nokta = s.kalan * s.makine, acik = s.disi * s.makine; const dk = s.oncedenDogrulama ? s.makine * s.yeniden * ELLE_DK : 0; t.nokta += nokta; t.kapanan += nokta - acik; t.acik += acik; t.dk += dk; t.kayip += s.kayip; y(C, s.ad, s.makine, nokta, nokta - acik, acik, dk, s.kayip); } y(C, 'toplam', SINIF.reduce((a, s) => a + s.makine, 0), t.nokta, t.kapanan, t.acik, t.dk, t.kayip); const m = SINIF.reduce((a, s) => a + s.makine, 0); console.log(`\nkurtarma anahtari kopyasi ${m * ANAHTAR_KOPYA} (makine basina ${ANAHTAR_KOPYA})`); console.log(`kayip cihazda okunabilen kalem sifresiz ${t.kayip * KALEM.length}, ` + `sifreli ${t.kayip * KALEM.filter((k) => !k.ici).length}`); console.log(`acik oturumda kullanicinin okudugu kalem ` + `${KALEM.filter((k) => k.okur === 'kullanici').length} / ${KALEM.length}`); console.log(`sifrelemenin korumadigi durum ` + `${Object.keys(DURUM).filter((d) => olc(d, true).katki === 0).length} / ${Object.keys(DURUM).length}`);
18 disk kalemi, 3 tanesi sifreli birimin disinda; makine basina 9 tutunma noktasi tanimi, 1 tanesi disarida 1. fiziksel erisimle okunabilen kalem ve yazilabilen nokta tanimi durum sifresiz ok. sifresiz nokta sifreli okunan sifreli nokta sifrelemenin katkisi kapali 18 9 3 1 15 uyku 18 0 18 0 0 kilitli-ekran 18 0 18 0 0 acik-oturum 18 0 18 0 0 2. birim disinda kalan ve nokta tasiyan kalemler kalem sinif yer nokta kapaliyken acik oturumda acilis-bolumu-yapilandirmasi acilis disi 1 okunur yonetici okur acilis-imza-kaydi acilis disi 0 okunur yonetici okur kurtarma-anahtari-ipucu kimlik disi 0 okunur yonetici okur servis-tanimlari tanim ici 4 korunur yonetici okur zamanlanmis-gorev-tanimlari tanim ici 2 korunur yonetici okur oturum-betikleri tanim ici 1 korunur kullanici okur yapilandirma-kancalari tanim ici 1 korunur yonetici okur 3. filo: kapanan nokta ve sifrelemenin bedeli sinif makine nokta kapanan nokta acik nokta elle dk/yil kayip cihaz saha-dizustu 60 540 480 60 10080 5 sube-ucu 24 288 264 24 4032 1 toplayici 12 144 132 12 0 0 islem-sunucusu 6 66 60 6 0 0 toplam 102 1038 936 102 14112 6 kurtarma anahtari kopyasi 204 (makine basina 2) kayip cihazda okunabilen kalem sifresiz 108, sifreli 18 acik oturumda kullanicinin okudugu kalem 7 / 18 sifrelemenin korumadigi durum 3 / 4
Kapatılan Nokta ve Kapatıldığı Yol
Filo tablosu bu kursun kapatılan sütununa 936 yazıyor: 1038 nokta tanımının 936’sı şifreli birimin içindedir ve çevrimdışı olarak yazılamaz. Kalan 102, her makinede birer tane bulunan açılış bölümü girişleridir; birim çözülmeden okunması gereken bölüm şifrelenemez.
Sayının yanına yolun adı yazılmadığında yanlış okunur. Şifreleme bu 936 noktayı çevrimdışı yazma yoluna karşı kapatır. Aynı 936 nokta, makine çalışırken üzerinde kod çalıştırabilen biri için tümüyle açıktır; ne şifreleme ne de anahtar orada bir şey yapar. Kursun ilk dersinde kapatılan 40 nokta gerçekten kaldırılmıştı ve hiçbir yolda geri gelmiyordu; buradaki kapatma tek bir yola aittir.
Bu, altı dersin ortak sonucudur. Bir kapatma sayısı ancak hangi yola karşı olduğu yazıldığında karşılaştırılabilir: kaldırma bütün yollara karşı kapatır, yama bilinen bir kusuru kapatır, kılavuz maddesi yazabilen özneyi daraltır, izin listesi çalıştırmayı reddeder, şifreleme çevrimdışı yazmayı durdurur. Beşi de “nokta kapandı” cümlesiyle anlatılabilir ve beşi farklı şeydir.
Şifrelemenin Korumadığı Üç Durum
Birinci tablonun son sütunu dört durumdan üçünde sıfır. Makine uykudayken, ekran kilitliyken ve oturum açıkken şifrelemenin katkısı yoktur, çünkü birim çözülmüştür. On sekiz kalemin on sekizi okunabilir durumdadır ve onları koruyan şey ekran kilidi ile işletim sisteminin erişim denetimidir.
Bu, şifrelemenin bir eksikliği değil, tanımıdır: birim çözülmeden makine çalışamaz. Ama ölçüm açısından sonuç nettir — bir uç noktanın çalışır durumda geçirdiği süre boyunca tam disk şifrelemenin koruma değeri sıfırdır. Saha dizüstü bilgisayarları günün büyük bölümünü uyku durumunda geçirir ve o durumda anahtar bellektedir.
Bunun doğrudan bir karşılığı var. Şifrelemenin koruma değerini artıran şey daha güçlü bir algoritma değil, makinenin kapalı durumda geçirdiği süredir. Bir cihaz kaybedildiğinde okunabilen kalem sayısı, cihazın o an hangi durumda olduğuna bağlıdır: kapalıysa 3, uykudaysa 18. Bu yüzden ölçülecek kalem şifreleme ayarı değil, uykudan kapanmaya geçiş süresidir — kaç dakika sonra makinenin belleğindeki anahtar siliniyor. Süreyi kısaltmak kapalı durumda geçen süreyi uzatır ve bedeli kullanıcının her dönüşte yeniden açılış beklemesidir. İki sayı yan yana konduğunda karar sayılabilir hâle gelir: kaç dakika bekleme karşılığında kaç saat kapalı durum.
Alt satırlardan biri ikinci bir sınırı veriyor: açık oturumda 18 kalemin 7’si sıradan bir kullanıcı yetkisiyle okunabiliyor. Kimlik bilgisi deposu, kayıtlı oturum belirteci, istemci önbelleği, geçici dosya dizini ve sayaç okuma verisi bunların içindedir. Bir uçta kullanıcı yetkisiyle çalışan kod bu yedi kalemi okur ve disk şifrelemesi bu okumanın hiçbirini görmez.
İkinci tablo üçüncü sınırı gösteriyor. Şifreli birimin dışında üç kalem duruyor ve biri kurtarma anahtarı ipucudur — koruma düzeninin kendi kurtarma yolu, koruduğu alanın dışında bulunuyor. Ötekiler açılış bölümü yapılandırması ve açılış imza kaydıdır; ikisi de birim çözülmeden okunmak zorundadır ve bu yüzden şifrelenemezler.
Bedel
Şifrelemenin karşılığı üç kalemde toplanıyor. Birincisi kurtarma anahtarı: 102 makine için 204 kopya. Her kopya bir yerde durur ve o yeri okuyabilen biri, o makinenin diskini çözebilir. Sayı makine sayısıyla doğru orantılıdır ve azaltılamaz — anahtarı kaybedilen makine kurtarılamaz, diskin üzerindeki iş verisiyle birlikte gider. Kopya sayısını bire indirmek okuyabilen yeri yarıya düşürür ve aynı oranda kurtarılamama riskini yükseltir; iki sayı ters yönde çalışır.
İkincisi gözetimsiz yeniden başlatma. Açılış öncesi kimlik doğrulama isteyen iki sınıfta, uzaktan yapılan her yeniden başlatma makinenin başında birini gerektirir: yılda 14.112 dakika, yaklaşık 235 saat. Bu doğrudan ikinci dersle çelişir; orada pencereyi kısaltan şey gözetimsiz uygulanan yamaydı. Toplayıcı ve işleme sunucusunda bu bedel sıfırdır, çünkü anahtar makineye bağlıdır ve makine kendi diskini açar. Karşılığı da sıfır değildir: kendi diskini açan bir makinede şifreleme yalnız diskin çıkarılmasına karşı korur, makinenin kendisinin açılmasına karşı değil. Korumanın sürmesi açılış zincirinin bozulmamasına bağlıdır.
Üçüncüsü kaybedilen cihazlarda görünüyor: yılda 6 cihaz kayboluyor. Şifreleme yoksa 108 kalem sınıfı okunabilir hâle geliyor; şifreleme varsa 18. Bu, tablodaki en büyük tek kazançtır ve kaybın cihaz sınıfına göre dağıldığını gösteriyor — kayıpların altısı da taşınabilir iki sınıftan geliyor.
Özet
- Tam disk şifreleme okuma ile yazmayı birlikte kapatır; bu kursun ölçüsünü değiştiren şey yazma tarafıdır. Çevrimdışı yazma, izin listesinin hiç görmediği bir tutunma yoludur.
- Makine kapalıyken 18 disk kaleminin 15’i korunur; öteki üç durumda — uyku, kilitli ekran, açık oturum — şifrelemenin katkısı sıfırdır, çünkü birim çözülmüştür.
- Filodaki 1038 nokta tanımının 936’sı çevrimdışı yazmaya karşı kapanır, 102’si açılış bölümünde kalır. Kapatma sayısı ancak hangi yola karşı olduğu yazıldığında karşılaştırılabilir.
- Açık oturumda 18 kalemin 7’si sıradan kullanıcı yetkisiyle okunur; şifreli birimin dışında kalan üç kalemden biri korumanın kendi kurtarma ipucudur.
- Bedel 204 kurtarma anahtarı kopyası ve açılış öncesi doğrulama isteyen iki sınıfta yılda 14.112 dakikalık elle müdahaledir; ikinci dersteki gözetimsiz yama uygulamasıyla doğrudan çelişir.
- Anahtarı makineye bağlı iki sınıfta elle müdahale sıfırdır ve koruma yalnız diskin çıkarılmasına karşıdır; yılda 6 kayıp cihazda okunabilen kalem 108’den 18’e iner.
Sonraki Adım
Konu altı ölçümle kapanıyor. Varsayılan kurulumun bıraktığı 84 nokta kararının 40’ı kaldırıldı, 44’ü taban çizgisine yazıldı; yama noktaların açık kaldığı süreyi 10,8 günden 2,3 güne indirdi; kıyaslama kılavuzu 588 noktanın yazabilen özne kümesini daralttı; izin listesi 972 noktayı onaylanmamış kod çalıştıramaz kıldı; sanal alan hiçbir nokta kapatmadı, yalnız karar üretti; şifreleme 936 noktayı çevrimdışı yazmaya karşı kapattı. Uçtaki kalem sayısı daraltıldı ve tutunma noktaları kapatıldı.
Bütün bu ölçümün altında sınanmamış tek bir varsayım duruyor: hiçbir şeyin çalışmadığı. Her sayı, uçta kötü amaçlı bir kod bulunmadığı ya da henüz çalışmadığı varsayımıyla alındı. Kod bir kez çalıştığında kapatılmış noktaların ne kadarı gerçekten durdurur, kaçı yalnız yavaşlatır ve kapatılmamış olanlar üzerinden neler yapılabilir — hiçbiri sorulmadı. Sonraki konu Uç Nokta Koruma bu soruyla açılır: kötü amaçlı yazılım türleri yayılma ve kalıcılık davranışıyla sınıflandırılır, imza ile davranış tabanlı tespit aynı olay kümesinde koşturulur ve her katmanın kaçırdığı kalem ayrı ayrı sayılır.
İlerlemeni kaydetmek ve not almak için Giriş yap
Notlarım
Not almak için giriş yapmalısın.