İçeriğe geç
academia.sh

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.

Aramak için yazmaya başlayın.

↑↓ Esc gezin · aç · kapat