İçeriğe geç
academia.sh

Ders 01 / 15

Gizlilik, Bütünlük ve Erişilebilirlik

Üç eksenin aynı varlık üzerinde çakışması: sekiz varlık ve altı kararlık modelde 27 (kalem, eksen) çiftinin yükselirken 22'sinin düşmesi, gizlilik toplamının 34'ten 41'e, bütünlüğün 44'ten 63'e ve erişilebilirliğin 47'den 51'e çıkması, net etkisi sıfır olan bir kararın erişilebilirliği dokuz puan yükseltip gizliliği altı puan düşürmesi, anahtar kaybında erişilebilirlik toplamının 51'den 24'e inip sekiz varlıktan dördünün sıfırlanması ve bu sırada ortalama puanın yalnız 6,5'ten 5,3'e düşmesi.

İçindekiler

Önceki müfredat beş kurs boyunca aynı şeyi ölçtü: bir katman kiralandığında hangi kararın devredildiğini ve karşılığında hangi sayının düzeldiğini. Kiralanan da satın alınan da aynı sessiz varsayımı taşıyordu — o katmana yalnız yetkili olanın eriştiği. Bu ders o varsayımı kaldırır ve yerine üç ayrı soru koyar: veriyi kim görebiliyor, kim değiştirebiliyor, gerektiğinde kim ulaşabiliyor.

Bu üç soru güvenliğin üç eksenidir: gizlilik (confidentiality), bütünlük (integrity) ve erişilebilirlik (availability). Ayrı ayrı ele alındıklarında üçü de itiraz edilemez görünür. Aynı varlığın üstüne birlikte konduklarında ise birbirlerine bastırırlar: bir ekseni yükselten karar çoğu zaman ötekini düşürür. Bu dersin ölçtüğü şey o bastırmadır — kaç kalem hangi eksende kazanıyor, kaçı kaybediyor.

Üç Eksen Aynı Varlığın Üstündedir

Örnek, müfredat boyunca sürecek kurgu bölgesel ölçüm ağıdır: su sayacı okumalarını toplayan bir servis, okumaları doğrulayan bir servis, faturalama ve iş emri servisleri, saha ekipleri ve şube uçları. Ağ da varlıklar da kurgudur; aşağıdaki puanlar bir modeldir, gerçek bir sistemde yapılmış ölçüm değildir.

GK1: varlık envanteri sekiz kalemdir. GK2: her varlık üç eksende 0 ile 10 arasında bir taban puan taşır; puan, o eksenin o kalemde ne kadar sağlandığını gösterir. GK3: her güvenlik kararı belirli kalemlere dokunur ve üç eksende ayrı ayrı bir fark (delta) yazar; puan 0’ın altına inmez, 10’un üstüne çıkmaz. GK4: iki kararın bir kırılma koşulu vardır — koşul gerçekleşirse o kararın dokunduğu kalemlerin erişilebilirliği sıfırlanır. GK5: kararlar listedeki sırayla uygulanır; sınırlama her adımda işler.

// guvenlik/eksen.mjs — kurgu bolgesel olcum aginin varlik envanteri ve uc eksen modeli (model):
// gercek bir ag, gercek bir varlik kaydi ya da gercek bir guvenlik olcumu yok. Rastgelelik yok.

export const EKSEN = ["giz", "but", "eri"];
export const SINIR = (x) => Math.max(0, Math.min(10, x));

// GK2: her varlik uc eksende 0..10 taban puan tasir; puanlar kurgudur.
export const VARLIK = `
  okuma-verisi         4 5 6
  fatura-kaydi         5 6 5
  is-emri-kuyrugu      3 5 7
  kimlik-deposu        6 6 5
  yapilandirma         4 6 6
  denetim-gunlugu      5 4 5
  sayac-urun-yazilimi  3 7 6
  saha-uygulamasi      4 5 7`
  .trim().split("\n").map((r) => {
    const [ad, ...p] = r.trim().split(/\s+/);
    return { ad, taban: Object.fromEntries(EKSEN.map((e, i) => [e, +p[i]])) };
  });

// GK3: her karar bir kalem altkumesine dokunur ve uc eksende delta yazar.
// GK4: kirilma kosulu gerceklesirse o kalemlerin erisilebilirligi sifirlanir.
export const KARAR = [
  { ad: "duragan-sifreleme", d: { giz: 4, but: 0, eri: -1 }, kirilma: "anahtar-kaybi",
    kalem: ["okuma-verisi", "fatura-kaydi", "kimlik-deposu", "denetim-gunlugu"] },
  { ad: "gecelik-yedek", d: { giz: -2, but: 1, eri: 3 }, kirilma: null,
    kalem: ["okuma-verisi", "fatura-kaydi", "is-emri-kuyrugu", "yapilandirma", "denetim-gunlugu"] },
  { ad: "eklemeli-gunluk", d: { giz: 0, but: 4, eri: -1 }, kirilma: null,
    kalem: ["denetim-gunlugu", "fatura-kaydi"] },
  { ad: "cok-etmenli-giris", d: { giz: 3, but: 1, eri: -2 }, kirilma: "etmen-kaybi",
    kalem: ["kimlik-deposu", "yapilandirma", "saha-uygulamasi"] },
  { ad: "imzali-urun-yazilimi", d: { giz: 0, but: 4, eri: -2 }, kirilma: null,
    kalem: ["sayac-urun-yazilimi", "saha-uygulamasi"] },
  { ad: "ikinci-kopya", d: { giz: -2, but: -1, eri: 3 }, kirilma: null,
    kalem: ["okuma-verisi", "fatura-kaydi", "is-emri-kuyrugu"] },
];

export function uygula(kirilan = []) {
  const s = Object.fromEntries(VARLIK.map((v) => [v.ad, { ...v.taban }]));
  for (const k of KARAR)
    for (const ad of k.kalem)
      for (const e of EKSEN) s[ad][e] = SINIR(s[ad][e] + k.d[e]);
  for (const k of KARAR)
    if (k.kirilma && kirilan.includes(k.kirilma))
      for (const ad of k.kalem) s[ad].eri = 0;
  return s;
}

// Bir kararin tek basina kac (kalem, eksen) ciftini yukselttigi ve dusurdugu.
export function etki(k) {
  const yuk = k.kalem.length * EKSEN.filter((e) => k.d[e] > 0).length;
  const dus = k.kalem.length * EKSEN.filter((e) => k.d[e] < 0).length;
  return { yuk, dus, net: k.kalem.length * EKSEN.reduce((a, e) => a + k.d[e], 0),
    enKotu: Math.min(...EKSEN.map((e) => k.d[e])) };
}

export const toplam = (s, e) => VARLIK.reduce((a, v) => a + s[v.ad][e], 0);
// guvenlik/olc.mjs — uc eksen ayni varlik uzerinde: kim yukseliyor, kim dusuyor, ne kiriliyor.
import { EKSEN, VARLIK, KARAR, uygula, etki, toplam } from "./eksen.mjs";

const yaz = (g, ...s) => console.log(s.map((v, i) =>
  (g[i] < 0 ? String(v).padEnd(-g[i]) : String(v).padStart(g[i]))).join(""));
const taban = Object.fromEntries(VARLIK.map((v) => [v.ad, { ...v.taban }]));
const son = uygula();

console.log(`${VARLIK.length} varlik x ${EKSEN.length} eksen, ${KARAR.length} karar; ` +
  `puan araligi 0..10 (giz gizlilik, but butunluk, eri erisilebilirlik)`);

const A = [-21, 6, 6, 6, 4, 7, 6, 6];
console.log("\n1. taban puan ve alti karar uygulandiktan sonraki puan");
yaz(A, "varlik", "giz", "but", "eri", "", "giz'", "but'", "eri'");
for (const v of VARLIK)
  yaz(A, v.ad, ...EKSEN.map((e) => taban[v.ad][e]), "", ...EKSEN.map((e) => son[v.ad][e]));
yaz(A, "toplam", ...EKSEN.map((e) => toplam(taban, e)), "", ...EKSEN.map((e) => toplam(son, e)));

const B = [-22, 7, 10, 8, 7, 15];
console.log("\n2. karar basina kac (kalem, eksen) cifti yukseliyor, kaci dusuyor");
yaz(B, "karar", "kalem", "yukselen", "dusen", "net", "en kotu eksen");
for (const k of KARAR) {
  const e = etki(k);
  yaz(B, k.ad, k.kalem.length, e.yuk, e.dus, (e.net > 0 ? "+" : "") + e.net,
    EKSEN.find((x) => k.d[x] === e.enKotu) + " " + e.enKotu);
}
const T = KARAR.map(etki);
yaz(B, "TOPLAM", KARAR.reduce((a, k) => a + k.kalem.length, 0),
  T.reduce((a, e) => a + e.yuk, 0), T.reduce((a, e) => a + e.dus, 0),
  "+" + T.reduce((a, e) => a + e.net, 0), "-");

const C = [-16, 12, 12, 12, 16];
console.log("\n3. kirilma kosulu gerceklesince (erisilebilirlik sifirlanir)");
yaz(C, "kosul", "giz toplam", "but toplam", "eri toplam", "eri = 0 kalem");
for (const [ad, ks] of [["kirilma yok", []], ["anahtar-kaybi", ["anahtar-kaybi"]],
  ["etmen-kaybi", ["etmen-kaybi"]], ["ikisi birden", ["anahtar-kaybi", "etmen-kaybi"]]]) {
  const s = uygula(ks);
  yaz(C, ad, ...EKSEN.map((e) => toplam(s, e)),
    VARLIK.filter((v) => s[v.ad].eri === 0).length + "/" + VARLIK.length);
}

const D = [-21, 10, 11, 8];
console.log("\n4. varlik basina en dusuk eksen (kirilma yok, sonra anahtar kaybi)");
yaz(D, "varlik", "en dusuk", "kirilinca", "eksen");
const kir = uygula(["anahtar-kaybi"]);
for (const v of VARLIK) {
  const a = Math.min(...EKSEN.map((e) => son[v.ad][e]));
  const b = Math.min(...EKSEN.map((e) => kir[v.ad][e]));
  yaz(D, v.ad, a, b, EKSEN.find((e) => kir[v.ad][e] === b));
}
const ort = (s) => (EKSEN.reduce((a, e) => a + toplam(s, e), 0) / (VARLIK.length * 3)).toFixed(1);
yaz(D, "ortalama puan", ort(son), ort(kir), "-");
8 varlik x 3 eksen, 6 karar; puan araligi 0..10 (giz gizlilik, but butunluk, eri erisilebilirlik)

1. taban puan ve alti karar uygulandiktan sonraki puan
varlik                  giz   but   eri       giz'  but'  eri'
okuma-verisi              4     5     6          4     5    10
fatura-kaydi              5     6     5          5     9     9
is-emri-kuyrugu           3     5     7          0     5    10
kimlik-deposu             6     6     5         10     7     2
yapilandirma              4     6     6          5     8     7
denetim-gunlugu           5     4     5          7     9     6
sayac-urun-yazilimi       3     7     6          3    10     4
saha-uygulamasi           4     5     7          7    10     3
toplam                   34    44    47         41    63    51

2. karar basina kac (kalem, eksen) cifti yukseliyor, kaci dusuyor
karar                   kalem  yukselen   dusen    net  en kotu eksen
duragan-sifreleme           4         4       4    +12         eri -1
gecelik-yedek               5        10       5    +10         giz -2
eklemeli-gunluk             2         2       2     +6         eri -1
cok-etmenli-giris           3         6       3     +6         eri -2
imzali-urun-yazilimi        2         2       2     +4         eri -2
ikinci-kopya                3         3       6      0         giz -2
TOPLAM                     19        27      22    +38              -

3. kirilma kosulu gerceklesince (erisilebilirlik sifirlanir)
kosul             giz toplam  but toplam  eri toplam   eri = 0 kalem
kirilma yok               41          63          51             0/8
anahtar-kaybi             41          63          24             4/8
etmen-kaybi               41          63          39             3/8
ikisi birden              41          63          14             6/8

4. varlik basina en dusuk eksen (kirilma yok, sonra anahtar kaybi)
varlik                 en dusuk  kirilinca   eksen
okuma-verisi                  4          0     eri
fatura-kaydi                  5          0     eri
is-emri-kuyrugu               0          0     giz
kimlik-deposu                 2          0     eri
yapilandirma                  5          5     giz
denetim-gunlugu               6          0     eri
sayac-urun-yazilimi           3          3     giz
saha-uygulamasi               3          3     eri
ortalama puan               6.5        5.3       -

Sayılar ölçüm sınıfındadır; girdileri GK1–GK5’tir.

Bir Karar İki Yöne Birden Çalışır

İkinci tablo altı kararı tek ölçüye indirir: her karar kaç (kalem, eksen) çiftini yükseltiyor, kaçını düşürüyor. Toplamda 27 çift yükselir, 22 çift düşer. Altı kararın hiçbiri yalnız yükseltmez; en yüksek net değeri olan durağan şifreleme bile dokunduğu dört kalemin erişilebilirliğini birer puan indirir.

Birinci tablonun okuma-verisi satırı bu bastırmanın en açık biçimidir. Gizlilik puanı 4’ten başlar, şifreleme onu 8’e çıkarır, gecelik yedek 6’ya, ikinci kopya 4’e indirir. Kalem şifrelenmiştir ve gizlilik puanı tam olarak başladığı yerdedir. Neden açıktır: şifreleme veriyi bir yerde korurken, yedek ve kopya aynı veriyi iki yerde daha çoğaltır. Aynı satırın erişilebilirliği 6’dan 10’a çıkar — kazanç gerçektir, ama gizlilik ekseninde ödenmiştir.

is-emri-kuyrugu satırı sınırın işlediği yerdir: gizlilik 3’ten başlar, iki karar ikişer puan alır ve puan 0’da durur. Bir eksen tabana oturduğunda o eksende ödenecek bir şey kalmaz; sonraki karar aynı bedeli başka bir kalemden almaya başlar. Ters uç kimlik-deposudur: gizlilik 6’dan 10’a, yani tavana çıkar, karşılığında erişilebilirlik 5’ten 2’ye iner. Tavana dayanmış bir eksen, o kalem üzerinde daha fazla gizlilik kararı almanın yalnız erişilebilirlik maliyeti ürettiği anlamına gelir.

Net Sıfır Olan Bir Karar

ikinci-kopya satırı ikinci tablonun en öğretici kalemidir: net değeri tam olarak sıfırdır. Üç kaleme dokunur, üç çifti yükseltir, altı çifti düşürür. Erişilebilirlikte kalem başına üç puan kazandırır (toplam +9), gizlilikte ikişer (−6), bütünlükte birer (−3) puan kaybettirir. Toplamı tek sayıya indiren bir okuma bu kararı “etkisiz” sayar ve gündemden düşürür.

Oysa kararın anlamı toplamında değil, dağılımındadır. Aynı satırda üç ayrı soru vardır: kopya bir arıza durumunda okumaların ulaşılabilir kalmasını sağlar; aynı kopya veriyi bir yerde daha görünür kılar; kopyalar arasında geçici tutarsızlık bütünlüğü zayıflatır. Bu üçü birbirini sadeleştirmez, çünkü farklı olaylarda ödenirler. Net sıfır, üç ayrı riskin birbirini götürdüğü anlamına gelmez; üç ayrı defterin tek satırda toplandığı anlamına gelir.

Aynı ölçü karşılaştırma için de işler. gecelik-yedek on çift yükseltip beş çift düşürür ve net +10 yazar; duragan-sifreleme dört yükseltip dört düşürür ve net +12 yazar. Çift sayısına bakıldığında yedek daha geniş, net değere bakıldığında şifreleme daha derindir. İkisi karşılaştırılabilir değildir; hangi eksende ölçüldüğü söylenmeden bir savunmanın “daha iyi” olduğu söylenemez.

Her Varlığın Baskın Ekseni Ayrıdır

Birinci tablonun son sütunları üçüncü bir okuma daha verir: aynı kararlar uygulandığında sekiz varlık üç eksende aynı yere gelmez. sayac-urun-yazilimi bütünlükte 10, erişilebilirlikte 4’tür; is-emri-kuyrugu erişilebilirlikte 10, gizlilikte 0. Bu iki kalem aynı ağın parçasıdır ve aynı karar kümesinden geçmiştir, ama biri bütünlük, öteki erişilebilirlik yönünde toplanmıştır.

Fark rastlantı değildir, kalemin işlevinden gelir. Sayaç ürün yazılımı sahadaki aygıtta koşar: üstünde yanlış bir sürümün çalışması bütün okumaları bozar, birkaç saat güncellenememesi ise hiçbir okumayı bozmaz. İş emri kuyruğu ters yöndedir: içindeki kaydın kim tarafından görüldüğü düşük bir bedeldir, kuyruğun durması ise saha ekiplerini bekletir. Aynı üç eksen, iki kalemde iki ayrı sıralamaya girer.

Bunun pratik sonucu, tek bir güvenlik hedefinin bütün envanterde geçerli olamayacağıdır. “Gizlilik önce gelir” kuralı is-emri-kuyrugu için zaten tabana oturmuştur ve orada uygulanacak bir şey kalmamıştır; aynı kural kimlik-deposunda tavana dayanmış ve yalnız erişilebilirlik maliyeti üretmeye başlamıştır. Eksen sıralaması varlık başına belirlenir, kurum başına değil — ve bu ders boyunca sayılan puanlar, o sıralamanın hangi kalemde nereye oturduğunu gösteren tek kayıttır.

Kırılma Bir Ekseni Sıfırlar

Üçüncü tablo kararların kırılma koşullarını çalıştırır. Şifreleme anahtarı kaybolduğunda gizlilik toplamı 41’de kalır — hatta korunmuş sayılır, çünkü veriyi kimse okuyamaz. Aynı anda erişilebilirlik toplamı 51’den 24’e iner ve sekiz varlığın dördü sıfırlanır. Çok etmenli girişin etmen aygıtı kaybolduğunda erişilebilirlik 39’a iner, üç kalem sıfırlanır. İki koşul birlikte gerçekleştiğinde toplam 14’tür ve sekiz kalemin altısına ulaşılamaz.

Bu satırların ortak yanı, gizlilik ve bütünlük sütunlarının hiç değişmemesidir. Kırılan savunma kendi ekseninde bozulmaz; verdiği sözü fazlasıyla tutar. Bedel bütünüyle üçüncü eksene yazılır. Erişilebilirliği bir güvenlik ekseni saymayan bir okuma, bu tabloda hiçbir sorun görmez — çünkü baktığı iki sütun sabittir.

Ortalama Neyi Saklar

Dördüncü tablo aynı durumu varlık başına okur ve tek bir sayının nasıl yanılttığını gösterir. Anahtar kaybında sekiz varlığın dördü en düşük eksende sıfıra iner. Aynı anda ortalama puan yalnız 6,5’ten 5,3’e düşer. Yirmi dört hücreden dördü sıfırlanmıştır ve tek sayıya bakan bir gösterge bunu bir puanlık gerileme olarak yazar.

Nedeni tablodaki dağılımdır: sıfırlanan kalemlerin öteki iki ekseni yüksek kaldığı için ortalamayı yukarıda tutarlar. okuma-verisi gizlilikte 4, bütünlükte 5, erişilebilirlikte 0’dır; ortalaması 3’tür ve “orta” görünür. Oysa o kaleme ulaşılamıyorsa gizlilik puanının pratik bir karşılığı yoktur. Üç eksen toplanabilir değildir; en düşük eksen kalemin gerçek durumunu belirler.

Tablodaki iki satır bunun sınırını da gösterir: yapilandirma ve sayac-urun-yazilimi anahtar kaybından hiç etkilenmez, çünkü şifreleme kararının dokunduğu kalemler arasında değildirler. Bir kırılmanın kapsamı, kırılan savunmanın dokunduğu kalem kümesidir — daha geniş değil. Bu ders boyunca sayılan her şey bu kümelerin üzerinde durur ve sonraki dersler aynı kümeye başka adlar verecektir.

Özet

  • Üç eksen aynı varlığın üstünde çakışır: sekiz varlık ve altı kararlık modelde 27 (kalem, eksen) çifti yükselirken 22 çift düşer; altı kararın hiçbiri tek yönlü değildir.
  • Şifrelenen okuma-verisi kaleminin gizlilik puanı 4’ten çıkıp 4’e döner, çünkü yedek ve ikinci kopya aynı veriyi çoğaltır; erişilebilirliği ise 6’dan 10’a çıkar.
  • Net etkisi sıfır olan ikinci-kopya kararı erişilebilirlikte +9, gizlilikte −6, bütünlükte −3 puan yazar; toplam tek satıra indirildiğinde üç ayrı defter görünmez olur.
  • Anahtar kaybında gizlilik ve bütünlük toplamları hiç değişmez, erişilebilirlik 51’den 24’e iner ve sekiz varlığın dördü sıfırlanır; iki kırılma birlikte 14 ve altı kalem yazar.
  • Aynı sıfırlanma ortalamada yalnız 6,5’ten 5,3’e düşüş olarak görünür; kalemin durumunu ortalama değil en düşük eksen belirler.
  • Bir kırılmanın kapsamı, kırılan kararın dokunduğu kalem kümesidir; iki varlık anahtar kaybından hiç etkilenmez.

Sonraki Adım

Bu ders sekiz kalemi puanladı ve altı kararın bu puanları hangi yönde değiştirdiğini saydı. Ancak bütün hesap tek bir listenin üstünde koştu ve o listenin adı belirsiz kaldı: “varlık” denen şey neydi, kararların karşı koyduğu şeyin adı neydi, puanı düşüren şeyin kendisine ne deniyordu. Sonraki ders aynı envanteri üç ayrı listeye böler — varlık, tehdit ve açık — ve bu üçünün çarpımının neden ulaşılabilecek yol sayısını vermediğini gösterir.

İ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