İçeriğe geç
academia.sh

Ders 05 / 22

Elmas Modeli

Dört köşeli ilişki modelinin bağlantı sayımına çevrilmesi: 20 gözlemde aktör, altyapı, yetenek ve kurban köşelerinin 134 olası bağlantıdan 77'sini doldurması, bir köşeyi bilmenin daraltma oranının o köşe ikilisinin bağlantı seyrekliğine tam olarak eşit çıkması, en güçlü köşenin (%50) zincirin yedinci adımında ve 41 kalem sonra görünür olması, en erken görünen köşenin yalnız %30,7 daraltması, yetenek köşesinin 1 kalem bedelle %43,1 daraltma vermesi ve ikinci köşenin eklenmesinin daraltmaya yalnız 10 ile 13,1 puan eklemesi.

İçindekiler

Matris bir soruyu yanıtsız bıraktı. Hücreler “bu adım bu teknikle yürünebilir” der ve bir denetimin o tekniği görüp görmediğini yazar. Ama elde bir gözlem varken — bir kayıt, bir bağlantı, bir dosya izi — o gözlemin hangi olaya ait olduğu matristen okunamaz. Aynı teknik sınıfı birbirinden bağımsız birçok olayda geçer.

Bu boşluğu dolduran ikinci bir yapı, olayı dört köşeyle anar: kim (aktör profili), hangi altyapıyla, hangi yetenekle ve kime karşı. Dört köşe altı ikili bağlantı üretir ve modelin taşıdığı iddia şudur: bir köşe bilindiğinde diğerleri daralır. Bu ders o daralmayı bağlantı sayımı olarak ölçer.

Dört Köşe, Altı Bağlantı

Aşağıdaki gözlem kümesi kurgudur: gerçek bir aktör, altyapı kalemi, kampanya ya da kurum adı geçmez; aktör köşesi yalnız yetenek ve motivasyon düzeyiyle yazılır.

TM13: bir gözlem dört köşeyi birlikte kaydeder ve dört köşe altı ikili bağlantı üretir. TM14: bir köşeyi bilmek, o değeri taşıyan gözlemlerle sınırlı kalmaktır; kalan aday sayısı o alt kümede hedef köşenin farklı değer sayısıdır. TM15: her köşe zincirin belirli bir adımında görünür olur ve o adıma kadar erişilmiş kalem sayısı, o köşeyi kullanmanın bedelidir.

// tehdit/kose.mjs — dort koseli iliski modelinin veri yapisi: her gozlem bir olayin dort
// kosesini birlestirir. Gozlemler kurgudur; gercek bir aktor, altyapi kalemi, kampanya ya da
// kurum adi gecmez. Aktor kosesi yalnizca yetenek ve motivasyon duzeyiyle yazilir.

// TM13: bir gozlem dort koseyi birlikte kaydeder: aktor profili, altyapi kalemi, yetenek
// (teknik sinifi) ve kurban kalemi. Dort kose 6 ikili baglanti uretir.
export const KOSE = ["aktor", "altyapi", "yetenek", "kurban"];
export const GOZLEM = `
  yetenek-2-gelir      paylasimli-barindirma  ekli-dosya-yoluyla        sube-ucu
  yetenek-2-gelir      paylasimli-barindirma  ekli-dosya-yoluyla        abone-portali
  yetenek-2-gelir      acik-vekil             gecerli-kimlikle-giris    abone-portali
  yetenek-2-gelir      paylasimli-barindirma  gecerli-kimlikle-giris    sube-ucu
  yetenek-2-gelir      acik-vekil             ekli-dosya-yoluyla        saha-uygulamasi
  yetenek-3-gelir      paylasimli-barindirma  dis-servis-istismari      abone-portali
  yetenek-3-gelir      kiralik-uc             dis-servis-istismari      fatura-servisi
  yetenek-3-gelir      kiralik-uc             yorumlayici-cagrisi       fatura-servisi
  yetenek-3-gelir      acik-vekil             ekli-dosya-yoluyla        saha-uygulamasi
  yetenek-3-gelir      paylasimli-barindirma  gecerli-kimlikle-giris    abone-portali
  yetenek-3-ic-erisim  kendi-ucu              kimlik-yeniden-kullanimi  saha-uygulamasi
  yetenek-3-ic-erisim  kendi-ucu              gecerli-kimlikle-giris    fatura-servisi
  yetenek-3-ic-erisim  kendi-ucu              kimlik-yeniden-kullanimi  fatura-servisi
  yetenek-3-ic-erisim  kendi-ucu              sifreli-kanal             sube-ucu
  yetenek-5-hedefli    ele-gecirilmis-uc      dis-servis-istismari      saha-uygulamasi
  yetenek-5-hedefli    ele-gecirilmis-uc      yorumlayici-cagrisi       saha-uygulamasi
  yetenek-5-hedefli    ele-gecirilmis-uc      kimlik-yeniden-kullanimi  fatura-servisi
  yetenek-5-hedefli    ele-gecirilmis-uc      sifreli-kanal             sube-ucu
  yetenek-5-hedefli    kiralik-uc             sifreli-kanal             fatura-servisi
  yetenek-5-hedefli    kiralik-uc             yorumlayici-cagrisi       abone-portali`
  .trim().split("\n").map((r) => {
    const [aktor, altyapi, yetenek, kurban] = r.trim().split(/\s+/);
    return { aktor, altyapi, yetenek, kurban };
  });

export const deger = (k) => [...new Set(GOZLEM.map((g) => g[k]))];

// TM14: bir koseyi bilmek, o degeri tasiyan gozlemlerle sinirli kalmaktir; kalan aday sayisi
// o alt kumede hedef kosenin farkli deger sayisidir, kumeler uzerinden ortalanir.
export function daraltma(bilinen, hedef) {
  const toplam = deger(hedef).length;
  const kumeler = new Map();
  for (const g of GOZLEM) {
    const anahtar = bilinen.map((k) => g[k]).join("|");
    if (!kumeler.has(anahtar)) kumeler.set(anahtar, new Set());
    kumeler.get(anahtar).add(g[hedef]);
  }
  const ort = [...kumeler.values()].reduce((t, s) => t + s.size, 0) / kumeler.size;
  return { ort, toplam, oran: 1 - ort / toplam, kume: kumeler.size };
}

// TM15: her kose zincirin belirli bir adiminda gorunur olur; o adima kadar erisilmis kalem
// sayisi, o koseyi kullanmanin bedelidir. Aktor kosesi dogrudan gorunmez, cikarilir.
export const GORUNURLUK = { kurban: { adim: "ilk-erisim", kalem: 0 },
  yetenek: { adim: "yurutme", kalem: 1 }, altyapi: { adim: "sizdirma", kalem: 41 },
  aktor: { adim: "-", kalem: null } };
// tehdit/pivot.mjs — bir koseyi bilmek diger koselerden kacini daraltiyor.
import { KOSE, GOZLEM, deger, daraltma, GORUNURLUK } from "./kose.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 ikili = KOSE.flatMap((a, i) => KOSE.slice(i + 1).map((b) => [a, b]));
const olasi = ikili.reduce((t, [a, b]) => t + deger(a).length * deger(b).length, 0);
const gorulen = ikili.reduce((t, [a, b]) =>
  t + new Set(GOZLEM.map((g) => `${g[a]}|${g[b]}`)).size, 0);

console.log(`${GOZLEM.length} gozlem, ${KOSE.length} kose ` +
  `(${KOSE.map((k) => `${k} ${deger(k).length}`).join(", ")}); ` +
  `${ikili.length} kose ikilisi, ${olasi} olasi baglanti, ${gorulen} gozlemde var ` +
  `(%${((gorulen / olasi) * 100).toFixed(1)})`);

const A = [-10, -10, 9, 11, 12];
console.log("\n1. kose ikilileri: kac baglanti gozlemde var");
yaz(A, "kose", "kose", "olasi", "gorulen", "seyreklik %");
for (const [a, b] of ikili) {
  const n = new Set(GOZLEM.map((g) => `${g[a]}|${g[b]}`)).size;
  const o = deger(a).length * deger(b).length;
  yaz(A, a, b, o, n, (100 - (n / o) * 100).toFixed(1));
}

const B = [-10, -10, 8, 15, 12, 11];
console.log("\n2. bir kose bilinirse otekinden kac aday kaliyor");
yaz(B, "bilinen", "hedef", "toplam", "ortalama aday", "daraltma %", "kume");
for (const b of KOSE) for (const h of KOSE) {
  if (b === h) continue;
  const d = daraltma([b], h);
  yaz(B, b, h, d.toplam, d.ort.toFixed(2), (d.oran * 100).toFixed(1), d.kume);
}

const C = [-10, 14, 14, 16, 9];
console.log("\n3. hangi kose ne zaman gorunuyor, ne kadar daraltiyor");
yaz(C, "kose", "gorunur adim", "o ana kalem", "ort daraltma %", "sira");
const guc = KOSE.map((k) => ({ k, g: KOSE.filter((h) => h !== k)
  .reduce((t, h) => t + daraltma([k], h).oran, 0) / (KOSE.length - 1) }))
  .sort((x, y) => y.g - x.g);
for (const { k, g } of guc)
  yaz(C, k, GORUNURLUK[k].adim, GORUNURLUK[k].kalem ?? "cikarim",
    (g * 100).toFixed(1), guc.findIndex((x) => x.k === k) + 1);

const D = [-24, -10, 15, 12, 15];
console.log("\n4. ikinci kose eklenirse ne kazaniliyor");
yaz(D, "bilinen kose(ler)", "hedef", "ortalama aday", "daraltma %", "ek daraltma %");
for (const h of KOSE) {
  const tekli = KOSE.filter((k) => k !== h)
    .map((k) => ({ k, d: daraltma([k], h) })).sort((x, y) => x.d.ort - y.d.ort)[0];
  const oteki = KOSE.filter((k) => k !== h && k !== tekli.k);
  const cift = daraltma([tekli.k, oteki[0]], h);
  yaz(D, tekli.k, h, tekli.d.ort.toFixed(2), (tekli.d.oran * 100).toFixed(1), "-");
  yaz(D, `${tekli.k} + ${oteki[0]}`, h, cift.ort.toFixed(2), (cift.oran * 100).toFixed(1),
    ((cift.oran - tekli.d.oran) * 100).toFixed(1));
}
console.log("uc kose bilinirse kalan ortalama aday: " + KOSE.map((h) =>
  `${h} ${daraltma(KOSE.filter((k) => k !== h), h).ort.toFixed(2)}`).join(", "));

const enIyi = guc[0];
console.log(`en guclu kose ${enIyi.k} (%${(enIyi.g * 100).toFixed(1)}), ` +
  `gorunurlugu ${GORUNURLUK[enIyi.k].adim} adiminda ve o ana kadar ` +
  `${GORUNURLUK[enIyi.k].kalem} kaleme erisilmis; en erken gorunen kose ` +
  `kurban (${GORUNURLUK.kurban.kalem} kalem) ve daraltmasi ` +
  `%${(guc.find((x) => x.k === "kurban").g * 100).toFixed(1)}`);
20 gozlem, 4 kose (aktor 4, altyapi 5, yetenek 6, kurban 4); 6 kose ikilisi, 134 olasi baglanti, 77 gozlemde var (%57.5)

1. kose ikilileri: kac baglanti gozlemde var
kose      kose          olasi    gorulen seyreklik %
aktor     altyapi          20          8        60.0
aktor     yetenek          24         13        45.8
aktor     kurban           16         13        18.8
altyapi   yetenek          30         15        50.0
altyapi   kurban           20         12        40.0
yetenek   kurban           24         16        33.3

2. bir kose bilinirse otekinden kac aday kaliyor
bilinen   hedef       toplam  ortalama aday  daraltma %       kume
aktor     altyapi          5           2.00        60.0          4
aktor     yetenek          6           3.25        45.8          4
aktor     kurban           4           3.25        18.8          4
altyapi   aktor            4           1.60        60.0          5
altyapi   yetenek          6           3.00        50.0          5
altyapi   kurban           4           2.40        40.0          5
yetenek   aktor            4           2.17        45.8          6
yetenek   altyapi          5           2.50        50.0          6
yetenek   kurban           4           2.67        33.3          6
kurban    aktor            4           3.25        18.8          4
kurban    altyapi          5           3.00        40.0          4
kurban    yetenek          6           4.00        33.3          4

3. hangi kose ne zaman gorunuyor, ne kadar daraltiyor
kose        gorunur adim   o ana kalem  ort daraltma %     sira
altyapi         sizdirma            41            50.0        1
yetenek          yurutme             1            43.1        2
aktor                  -       cikarim            41.5        3
kurban        ilk-erisim             0            30.7        4

4. ikinci kose eklenirse ne kazaniliyor
bilinen kose(ler)       hedef       ortalama aday  daraltma %  ek daraltma %
altyapi                 aktor                1.60        60.0              -
altyapi + yetenek       aktor                1.20        70.0           10.0
aktor                   altyapi              2.00        60.0              -
aktor + yetenek         altyapi              1.38        72.3           12.3
altyapi                 yetenek              3.00        50.0              -
altyapi + aktor         yetenek              2.25        62.5           12.5
altyapi                 kurban               2.40        40.0              -
altyapi + aktor         kurban               1.88        53.1           13.1
uc kose bilinirse kalan ortalama aday: aktor 1.05, altyapi 1.00, yetenek 1.33, kurban 1.11
en guclu kose altyapi (%50.0), gorunurlugu sizdirma adiminda ve o ana kadar 41 kaleme erisilmis; en erken gorunen kose kurban (0 kalem) ve daraltmasi %30.7

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

Daraltma Bir Seyreklik Ölçüsüdür

Dört köşenin değer sayıları 4, 5, 6 ve 4’tür. Altı köşe ikilisi toplam 134 olası bağlantı tanımlar; 20 gözlem bunların 77’sini doldurur. Kalan 57 bağlantı hiç görülmemiştir ve modelin bütün gücü buradan gelir.

İkinci tablo ile birinci tablo yan yana okunduğunda bir eşitlik ortaya çıkar: her köşe ikilisinin seyreklik yüzdesi, o ikili için hesaplanan daraltma yüzdesine tam olarak eşittir. Aktör ile altyapı ikilisinin seyrekliği %60,0’dır; aktörü bilmek altyapıyı %60,0 daraltır, altyapıyı bilmek aktörü de %60,0 daraltır. Aktör ile kurban ikilisinin seyrekliği %18,8’dir ve daraltması da öyle.

Eşitlik tesadüf değildir. Bir köşenin her değeri için kalan aday sayılarının toplamı, tam olarak o ikilideki farklı bağlantı sayısıdır; küme sayısına bölündüğünde ortalama aday çıkar ve hedef köşenin toplam değer sayısına oranlandığında bağlantı yoğunluğu elde edilir. Daraltma gücü, bağlantı matrisinin ne kadar boş olduğudur. Model bu yüzden bir sezgi değil, sayılabilir bir şeydir: iki köşe arasında ne kadar az kombinasyon gerçekleşmişse, birini bilmek ötekini o kadar daraltır.

Buradan çıkan uyarı da aynı ölçüdedir. Gözlem sayısı arttıkça bağlantı matrisi dolar ve daraltma gücü azalır. Bir gözlem havuzunun büyümesi çıkarımı otomatik olarak güçlendirmez; matris dolmaya başladığında aynı köşe daha az ayırt eder.

En Güçlü Köşe En Pahalı Köşedir

Üçüncü tablo bu dersin asıl karşılaştırmasıdır: her köşenin ortalama daraltma gücü ile zincirde görünür olduğu adım yan yana yazılır.

Sıralamanın başında altyapı vardır: diğer üç köşeyi ortalama %50,0 daraltır. Ama altyapı köşesi ancak sızdırma adımında görünür hale gelir — dış uç, veri dışarı çıkarken belli olur — ve o ana kadar 41 kaleme erişilmiştir. En güçlü ipucu, zincirin en geç halkasında doğar.

Bu geç doğuş modelin kendi yapısından gelir. Altyapı köşesi güçlüdür çünkü aktörle arasındaki bağlantı matrisi en boş olanıdır — her aktör profili yalnız birkaç altyapı biçimi kullanır. Aynı seyreklik, o köşenin savunma tarafında geç görünmesinin de nedenidir: seyrek kullanılan bir kalem ancak zincirin sonunda, dışa dönük bir adımda kayda düşer.

Sıralamanın sonunda kurban vardır: %30,7 daraltma. Bu köşe savunma tarafında bedelsizdir, çünkü hangi kalemin hedeflendiği ilk erişim adımında bellidir ve o noktada 0 kalem kaybedilmiştir. Bedelsiz olan en zayıf, en güçlü olan en pahalıdır.

Aradaki satır kararı verir. Yetenek köşesi %43,1 daraltır ve yürütme adımında görünür — o ana kadar erişilmiş kalem 1. Altyapının 6,9 puanlık üstünlüğü 40 kalem daha pahalıya gelir. Zincirin ölçüsüyle bakıldığında en iyi köşe en çok daraltan köşe değil, birim kalem başına en çok daraltan köşedir; bu kümede yetenek köşesi diğerlerinin kırk katı verimlidir.

İkinci tablonun kendi içinde de bir asimetri vardır. Aynı ikili için daraltma yüzdesi iki yönde eşit olsa da kalan aday sayısı eşit değildir: altyapıyı bilmek aktörü 4 adaydan 1,60’a indirir, aktörü bilmek altyapıyı 5 adaydan 2,00’a. Yüzde aynı, mutlak sayı farklıdır ve karar mutlak sayıyla verilir. Değer kümesi küçük olan köşeyi hedef almak, aynı seyreklikle daha kesin bir sonuç üretir.

Aktör köşesi tabloda ayrı durur: hiçbir adımda doğrudan görünmez, diğer üç köşeden çıkarılır. Daraltma gücü %41,5’tir ama bu güç yalnız çıkarımın hedefi olarak anlamlıdır — aktörü bilmek diğer köşeleri daraltır, ancak aktörü bilmenin tek yolu diğer köşelerden geçer.

İkinci Köşenin Getirisi

Dördüncü tablo her hedef köşe için en iyi tek pivotu bulur, sonra ona ikinci bir köşe ekler.

Aktörü daraltmak için en iyi tek köşe altyapıdır: dört adaydan 1,60‘a iner (%60,0). Yetenek köşesi de eklendiğinde 1,20’ye iner (%70,0) — ikinci köşenin katkısı 10 puandır. Diğer üç satırda ek katkı 12,3, 12,5 ve 13,1 puandır. Dört durumda da ikinci köşe, birincinin sağladığının altıda biri kadar ek daralma getirir.

Azalan getirinin nedeni birinci tablodadır. İkinci köşe yalnız birincinin bıraktığı alt kümede iş görür ve o alt küme zaten seyrektir; ikinci pivotun kaldırabileceği bağlantı sayısı birincinin kaldırdığından çok daha azdır. Son satır sınırı gösterir: üç köşe birden bilindiğinde kalan ortalama aday 1,00 ile 1,33 arasındadır — yani üçüncü köşeden sonra eklenecek bir şey kalmamıştır.

Bu, dört köşeli modelin pratikte nasıl kullanıldığını yazar. İlk pivot kararın neredeyse tamamını verir; ikinci pivot bir doğrulama aracıdır. Aktör köşesinde 1,60’tan 1,20’ye inmek, ortalama olarak “iki aday” yerine “bir aday” demektir ve bu fark bazı gözlem kümelerinde belirleyici olur — ama 40 kalemlik bir bekleme pahasına elde ediliyorsa ödenen bedel kazanılan daralmadan büyüktür.

Zincir ölçüsüyle söylenirse: bir köşeyi daha beklemek, zincirde bir adım daha ilerlemek demektir. Önceki dersin sayılarıyla bu bekleme yürütmeden sızdırmaya gitmek ise 1 kalemden 41 kaleme geçmektir. İlişki modeli daralma sağlar, ama daralmanın bedeli zincirin kendi ölçüsüyle yazılmadıkça karar taşımaz.

Özet

  • Dört köşe (aktör, altyapı, yetenek, kurban) altı ikili bağlantı üretir; 20 gözlem 134 olası bağlantının 77’sini doldurur ve kalan 57 boşluk modelin bütün gücünü sağlar.
  • Bir köşeyi bilmenin daraltma yüzdesi, o köşe ikilisinin bağlantı seyrekliğine tam olarak eşittir; daraltma gücü bağlantı matrisinin ne kadar boş olduğudur.
  • Gözlem sayısı arttıkça matris dolar ve daraltma gücü azalır; havuzu büyütmek çıkarımı kendiliğinden güçlendirmez.
  • En güçlü köşe altyapıdır (%50,0) ama sızdırma adımında, 41 kalem sonra görünür; en erken görünen köşe kurbandır (0 kalem) ve yalnız %30,7 daraltır.
  • Yetenek köşesi 1 kalem bedelle %43,1 daraltır; altyapının 6,9 puanlık üstünlüğü 40 kalem daha pahalıdır.
  • İkinci köşenin katkısı 10,0 ile 13,1 puan arasındadır — ilk pivotun sağladığının yaklaşık altıda biri; ilk pivot kararı verir, ikincisi doğrular.

Sonraki Adım

Beş ders boyunca ölçülen her şey aynı varsayımın üstünde durdu: denetimlerin gördüğü şeyler önceden bilinen şeylerdi. Matristeki her hücre bir teknik sınıfına, her denetim kalemi tanınan bir kayıt örüntüsüne bağlıydı; ilişki modelindeki her köşe daha önce görülmüş bir bağlantıya dayandı.

Oysa bir tekniğin ilk kez kullanıldığı an bu varsayımın dışındadır. Tanınacak bir örüntü henüz yoktur, bağlantı matrisinde o satır boştur ve düzeltmesi de çıkmamıştır. Konunun son dersi bu durumu kapsam cinsinden ölçer: bilinen tehditte kaç halka kırılabiliyorsa bilinmeyen tehditte kaçı kırılabiliyor, imza tabanlı denetim kaç adımı kaçırıyor, davranış tabanlı denetim kaçını hâlâ yakalıyor ve düzeltme yayımlanana kadar geçen pencerede kaç kalem açık kalıyor.

İ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