---
title: 'Araya Girme Saldırıları'
source: 'https://academia.sh/tr/kurslar/ag-guvenligi/araya-girme-saldirilari'
course: 'Ağ Güvenliği'
language: tr
updated: '2026-08-17T18:08:40+00:00'
license: 'CC BY-SA 4.0'
---

# Araya Girme Saldırıları

Araya girmenin kanıt zinciri eksikliği olarak ölçülmesi: 8 akışın 36 adımında 3 akışın hiç zinciri olmaması ve 16 adımın içeriği okuyabilmesi, kimlik iddiasını üretebilecek taraf sayısının 272 olması, uç doğrulamanın bu sayıyı 509'a çıkarması, kök sabitlemenin 11'e indirmesi ve 89.400 istek taşıyan tek akışın doğrulama yapamadığı için zincirsiz kalması.

Önceki ders bir iddianın kanıtsız olmasının **niceliğini** ölçtü: kaç istek, kaç yuva, kaç
saniye. Yük düştüğünde ya da savunma yeterli olduğunda hizmet ayakta kalır ve ölçüm biter. Oysa
aynı kanıtsız iddia, hiçbir kapasite tüketmeden ve hiçbir sayacı sapıtmadan da kullanılabilir.

Bir bağlantının iki ucu birbirini kanıtla tanımıyorsa, aralarındaki her adım kendini karşı
taraf olarak sunabilir ve bağlantı olağan hızında, olağan hacminde sürer. Burada ölçülecek şey
bir yük ya da bir sayaç değildir; **eksik olan bir kanıttır**. Bu ders o eksikliği sayar.

## Araya Girme Bir Eksikliktir

**PG19:** **araya girme (man-in-the-middle)** bir yetenek değil, bir eksikliktir — iki ucun
birbirinin kimlik iddiasını bağladığı **kanıt zincirinin (evidence chain)** eksik olması.
**PG20:** bir kanıt zincirinin gücü halka sayısı değil, o iddiayı **üretebilecek taraf
sayısıdır**; bu sayı bir ise zincir tektir, büyüdükçe zincir zayıflar. **PG21:** zincirin
halkaları sayılabilir; dayanağı olmayan halka, o halkayı kim yazarsa yazsın kabul edilen
halkadır.

PG20 bu dersin ölçüyü halka saymaktan kurtaran maddesidir. Üç halkalı bir zincir, tek halkalı
bir zincirden daha güçlü değildir; belirleyici olan, o üç halkanın sonuncusunu **kaç ayrı
tarafın** yazabildiğidir. Aktarımda şifreleme ve sertifika doğrulamanın algoritma tarafı bu
kursun konusu değildir ve M24/K04'te ölçülecektir; burada sayılan tek şey iddianın kaç taraftan
gelebileceğidir.

Aşağıdaki akış kümesi bir **modeldir**: kurgu ölçüm ağının akışları, adım sayıları ve zincir
türleri veri olarak yazılır; gerçek bir ağ, gerçek bir ad ya da gerçek bir kök listesi yoktur.
Kod hiçbir trafiği yakalamaz ya da değiştirmez; koşan tek şey zincir sayımıdır. Bir yolun
adımlarını kendi ağının dışında sınamak **yazılı yetki ve tanımlı kapsam olmadan hem yasadışı
hem meslek dışıdır**.

```js
// aglar/zincir.mjs — kurgu bolgesel olcum agindaki akislarin kanit zinciri (model):
// gercek bir ag, gercek bir ad ya da gercek bir kok listesi yok. Rastgelelik yok.

// PG19: araya girme bir yetenek degil, bir eksikliktir: iki ucun birbirinin kimlik
// iddiasini bagladigi kanit zincirinin eksik olmasi.
// PG20: bir kanit zincirinin gucu halka sayisi degil, o iddiayi uretebilecek taraf
// sayisidir; bu sayi bir ise zincir tektir, buyudukce zincir zayiflar.
export const KOK = 84;   // uclarin kosulsuz kabul ettigi kok listesindeki kalem sayisi

// Sutunlar: akis, yoldaki adim sayisi, zincir turu, gunluk istek, ucu dogrulama
// yapabiliyor mu (e/h).
export const AKIS = `
  saha-terminali>toplayici    6  yok           12400 e
  sayac-ucu>alim-ucu          4  yok           89400 h
  sube-gecidi>merkez-gecidi   5  ortak-kok     43200 e
  yonetim-ucu>sube-gecidi     3  ilk-kullanim    268 e
  faturalama>dogrulayici      2  ortak-kok     22800 e
  dogrulayici>olcum-deposu    2  sabit-kok     61300 e
  saha-terminali>ad-sunucusu  6  yok           34600 e
  dis-istemci>ortak-arayuz    8  ortak-kok      1150 e`
  .trim().split(/\s+/).reduce((l, _, i, a) => (i % 5 ? l : [...l, {
    ad: a[i], adim: +a[i + 1], zincir: a[i + 2], istek: +a[i + 3], yapabilir: a[i + 4] === "e",
  }]), []);

// PG21: zincirin halkalari sayilabilir; dayanagi olmayan halka, o halkayi kim yazarsa
// yazsin kabul edilen halkadir.
// halka = zincirdeki dogrulama adimi, dayanaksiz = ucun sinayamadigi halka.
export const ZINCIR = {
  "yok":          { halka: 0, dayanaksiz: 0, okur: true },
  "ilk-kullanim": { halka: 1, dayanaksiz: 1, okur: false },
  "ortak-kok":    { halka: 3, dayanaksiz: 1, okur: false },
  "sabit-kok":    { halka: 3, dayanaksiz: 0, okur: false },
};

// Bir akisin kimlik iddiasini kac ayri taraf uretebilir.
export function uretebilen(a) {
  if (a.zincir === "yok") return a.adim;
  if (a.zincir === "ilk-kullanim") return a.adim;   // yalnizca ilk baglantida
  if (a.zincir === "ortak-kok") return KOK;
  return 1;
}

// Savunma: uc dogrulama zincirsiz akislari ortak koke, sabitleme ortak kok akislarini
// sabit koke tasir. Ucu dogrulama yapamayan akis oldugu gibi kalir.
export function uygula(savunma = []) {
  return AKIS.map((a) => {
    let z = a.zincir;
    if (savunma.includes("uc-dogrulama") && a.yapabilir && z === "yok") z = "ortak-kok";
    if (savunma.includes("uc-dogrulama") && a.yapabilir && z === "ilk-kullanim") z = "ortak-kok";
    if (savunma.includes("sabitleme") && a.yapabilir && z === "ortak-kok") z = "sabit-kok";
    return { ...a, zincir: z };
  });
}
```

```js
// aglar/zincir-denetimi.mjs — kac akista kanit zinciri kopuk, kimlik iddiasini kac taraf
// uretebiliyor, uc dogrulama ve kok sabitleme neyi degistiriyor ve bedeli ne.
import { AKIS, KOK, ZINCIR, uretebilen, uygula } from "./zincir.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 okuyan = (l) => l.reduce((t, a) => t + (ZINCIR[a.zincir].okur ? a.adim : 0), 0);
const uretim = (l) => l.reduce((t, a) => t + uretebilen(a), 0);
const KUR = [[], ["uc-dogrulama"], ["sabitleme"], ["uc-dogrulama", "sabitleme"]];

console.log(`${AKIS.length} akis, ${AKIS.reduce((t, a) => t + a.adim, 0)} adim, ` +
  `kok listesi ${KOK} kalem; zinciri olmayan akis ` +
  `${AKIS.filter((a) => a.zincir === "yok").length}, okuyabilen adim ${okuyan(AKIS)}, ` +
  `30 gunluk toplam istek ${AKIS.reduce((t, a) => t + a.istek, 0)}`);

const A = [-27, 7, 14, 8, 12, 12, 11];
console.log("\n1. akis basina kanit zinciri");
yaz(A, "akis", "adim", "zincir", "halka", "dayanaksiz", "uretebilen", "30g istek");
for (const a of AKIS)
  yaz(A, a.ad, a.adim, a.zincir, ZINCIR[a.zincir].halka, ZINCIR[a.zincir].dayanaksiz,
    uretebilen(a), a.istek);

const B = [-26, 10, 12, 12, 12, 13, 19];
console.log("\n2. savunmalar: zincirin durumu");
yaz(B, "savunma", "zincirsiz", "dayanaksiz", "uretebilen", "tek zincir", "okuyan adim",
    "zincirsiz istek %");
for (const s of KUR) {
  const l = uygula(s);
  yaz(B, s.join(" + ") || "hicbiri", l.filter((a) => a.zincir === "yok").length,
    l.reduce((t, a) => t + ZINCIR[a.zincir].dayanaksiz, 0), uretim(l),
    l.filter((a) => uretebilen(a) === 1).length, okuyan(l),
    ((l.filter((a) => a.zincir === "yok").reduce((t, a) => t + a.istek, 0) /
      AKIS.reduce((t, a) => t + a.istek, 0)) * 100).toFixed(1));
}

const C = [-26, 9, 8, 8, 14, 13];
console.log("\n3. ayni savunmalarin bedeli");
yaz(C, "savunma", "kok kalem", "ek tur", "elle", "kesilen akis", "kapsam disi");
for (const s of KUR) {
  const l = uygula(s), kapsam = AKIS.filter((a) => a.yapabilir);
  const sabit = l.filter((a) => a.zincir === "sabit-kok" && a.yapabilir).length;
  yaz(C, s.join(" + ") || "hicbiri", s.includes("uc-dogrulama") ? KOK : 0,
    s.includes("uc-dogrulama") ? kapsam.length * 2 : 0, s.includes("sabitleme") ? sabit : 0,
    s.includes("sabitleme") ? sabit : 0, AKIS.length - kapsam.length);
}

const D = [-27, 14, 12, 12];
console.log("\n4. uc dogrulama ve sabitleme birlikte acikken kalan");
yaz(D, "akis", "zincir", "uretebilen", "30g istek");
for (const a of uygula(["uc-dogrulama", "sabitleme"]).filter((x) => uretebilen(x) > 1))
  yaz(D, a.ad, a.zincir, uretebilen(a), a.istek);
```

```
8 akis, 36 adim, kok listesi 84 kalem; zinciri olmayan akis 3, okuyabilen adim 16, 30 gunluk toplam istek 265118

1. akis basina kanit zinciri
akis                          adim        zincir   halka  dayanaksiz  uretebilen  30g istek
saha-terminali>toplayici         6           yok       0           0           6      12400
sayac-ucu>alim-ucu               4           yok       0           0           4      89400
sube-gecidi>merkez-gecidi        5     ortak-kok       3           1          84      43200
yonetim-ucu>sube-gecidi          3  ilk-kullanim       1           1           3        268
faturalama>dogrulayici           2     ortak-kok       3           1          84      22800
dogrulayici>olcum-deposu         2     sabit-kok       3           0           1      61300
saha-terminali>ad-sunucusu       6           yok       0           0           6      34600
dis-istemci>ortak-arayuz         8     ortak-kok       3           1          84       1150

2. savunmalar: zincirin durumu
savunma                    zincirsiz  dayanaksiz  uretebilen  tek zincir  okuyan adim  zincirsiz istek %
hicbiri                            3           4         272           1           16               51.4
uc-dogrulama                       1           6         509           1            4               33.7
sabitleme                          3           1          23           4           16               51.4
uc-dogrulama + sabitleme           1           0          11           7            4               33.7

3. ayni savunmalarin bedeli
savunma                   kok kalem  ek tur    elle  kesilen akis  kapsam disi
hicbiri                           0       0       0             0            1
uc-dogrulama                     84      14       0             0            1
sabitleme                         0       0       4             4            1
uc-dogrulama + sabitleme         84      14       7             7            1

4. uc dogrulama ve sabitleme birlikte acikken kalan
akis                               zincir  uretebilen   30g istek
sayac-ucu>alim-ucu                    yok           4       89400
```
Sayılar **ölçüm** sınıfındadır; girdileri PG19–PG21'dir.

## Otuz Altı Adım, Üç Zincirsiz Akış

Sekiz akış toplam otuz altı adımdan geçer. Üç akışın hiç kanıt zinciri yoktur ve bu üç akışın
on altı adımı içeriği okuyabilir. Kalan beş akışta bir zincir vardır, ama zincirin varlığı tek
başına bir sonuç değildir.

Birinci tablo bunu altıncı sütunda gösterir. `dogrulayici>olcum-deposu` akışının zinciri üç
halkalıdır ve dayanaksız halkası yoktur: kimlik iddiasını üretebilecek taraf sayısı **birdir**.
`faturalama>dogrulayici` akışının zinciri de üç halkalıdır, ama bir halkası dayanaksızdır ve
üretebilen taraf sayısı **84'tür**. İki akış aynı halka sayısına sahiptir ve aralarında seksen
üç kat fark vardır.

Farkın kaynağı dayanaksız halkadır. Ortak kök düzeninde uç, kök listesindeki her kalemin
yazdığı bir ifadeyi kabul eder; o listede kaç kalem varsa iddiayı o kadar taraf üretebilir.
Sabit kök düzeninde uç yalnız tek bir kalemin ifadesini kabul eder. **Zincirin uzunluğu güveni
ölçmez; listenin uzunluğu ölçer.**

Zincirsiz akışlarda sayı daha küçüktür ve bu, ilk bakışta ters görünür. `saha-
terminali>toplayici` akışının üretebilen taraf sayısı altıdır — yoldaki altı adım. Ortak kök
düzenindeki bir akışın seksen dördüne göre az. Aradaki fark niteliktedir: zincirsiz akışta o
altı adım yolun **üstündedir** ve trafiği ayrıca okuyabilir; ortak kök düzenindeki seksen dört
kalem yolun üstünde değildir ve içeriği okuyamaz. Sayılar aynı eksende karşılaştırılamaz; ikisi
de yazılır.

Akış sayısı yerine istek hacmi okunduğunda tablo daha da keskinleşir. Sekiz akış otuz günde
265.118 istek taşır; zinciri hiç olmayan üç akış bunun **136.400'ünü**, yani **%51,4'ünü**
taşır. Zincirin tek halkaya indiği tek akış — `dogrulayici>olcum-deposu` — 61.300 istekle
toplamın %23,1'ini taşır. Akış sayısına göre üç sekizde bir olan zincirsizlik, hacme göre
yarıdan fazladır. **Kanıt zinciri kapsamı akış sayarak değil, o akışların taşıdığı istek
hacmiyle raporlanır.**

Dördüncü satırdaki ilk kullanımda güven düzeni ayrı bir kalemdir. Bu akışta iddiayı
üretebilecek taraf sayısı yalnız **ilk bağlantıda** üçtür; ilk bağlantı tamamlandıktan sonra uç
gördüğü değeri saklar ve sayı bire iner. Zincirin tamamı tek bir ana bağlıdır ve o an bir daha
gelmez. Bu düzenin ölçüsü bir taraf sayısı değil, bir **pencere sayısıdır**: kaç kez ilk
bağlantı kuruluyor. Aygıt değişiminde, yeniden kurulumda ve anahtar yenilemesinde pencere
yeniden açılır.

## Uç Doğrulamanın Yön Değiştirdiği Yer

İkinci tablo bu dersin en dikkat çekici satırını üretir. Uç doğrulama açıldığında zincirsiz
akış sayısı üçten **bire** iner ve okuyan adım sayısı on altıdan **dörde** düşer — beklenen
iyileşme. Aynı satırda üretebilen taraf toplamı ise 272'den **509'a çıkar**. Dayanaksız halka
sayısı da dörtten **altıya** yükselir.

Neden yükseldiği birinci tablodan okunur. Zincirsiz iki akış, yolundaki altı adım tarafından
üretilebilen bir iddia taşıyordu; uç doğrulama açıldığında bu akışlar ortak kök düzenine geçer
ve iddiayı üretebilecek taraf sayısı altıdan seksen dörde çıkar. Okuma tümüyle kapanır, ama
kimlik iddiasını üretebilecek taraf kümesi büyür.

**Uç doğrulama, iddiayı yoldaki adımlardan alıp bir kök listesine devreder; kazanç okuma
tarafındadır, kayıp ise güven kümesinin büyümesindedir.** Bu iki sonucu tek bir "güvenli oldu"
cümlesinde toplayan bir değerlendirme, ikinci sütunun yönünü hiç görmez.

Üçüncü satır sabitlemeyi tek başına ölçer: üretebilen toplam 272'den **23'e** iner ve tek
zincirli akış sayısı birden dörde çıkar. Okuyan adım on altıda kalır, çünkü sabitleme zincirsiz
akışlara dokunmaz. Dördüncü satır ikisini birleştirir ve iki eksende de en iyi sonucu verir:
dayanaksız halka **sıfır**, üretebilen toplam **11**, tek zincirli akış **yedi**, okuyan adım
**dört**.

## Kalan Akış ve Bedel

Dördüncü tablo geriye kalanı adıyla verir. Sekiz akıştan biri — sayaç uçlarından alım ucuna
giden akış — uç doğrulama yapamaz ve zincirsiz kalır. Bu akış otuz günde **89.400 istek**
taşır; sekiz akışın toplam hacminin en büyük payı. İkinci derste doğrulanamayan yedi kabul
noktasını bırakan neden burada da geçerlidir: uçlar kanıt üretemez. Savunma yetmemektedir ve
yetmemesinin nedeni yapılandırma değildir.

Üçüncü tablo bedeli yazar. Uç doğrulama seksen dört kalemlik bir kök listesinin sürekli
yönetilmesini ve akış başına iki ek tur — kapsamdaki yedi akış için toplam on dört tur — ister.
Sabitleme yedi elle kalem getirir ve her kalem, sabitlenen kök değiştiğinde o akışın kesilmesi
anlamına gelir: **yedi kesilen akış**. Kapsam dışı kalan akış sayısı her satırda birdir ve
hiçbir savunma onu değiştirmez. Hacim cinsinden bu tek akış, üç savunma da açıkken zincirsiz
kalan 265.118 isteğin **89.400'ü** — toplamın %33,7'si — demektir; başlangıçtaki %51,4'ten
inmiştir ama üçte biri hâlâ kanıtsızdır.

Kök listesi kalemi ile elle sabitleme kalemi ters yönde çalışır. Seksen dört kalemlik liste
merkezî olarak yönetilir ve akış sayısından bağımsızdır; yedi sabitleme kalemi akış başınadır
ve her yeni akış bir kalem ekler. Küçük bir ağda sabitleme ucuzdur ve güven kümesini bire
indirir; akış sayısı büyüdükçe kalem sayısı doğrusal artar ve her kök değişimi bir kesinti
üretir. İkinci tablonun son sütunu bu iki bedelin karşılığını tek sayıda toplar: hangi savunma
açılırsa açılsın zincirsiz istek payı ya %51,4'te kalır ya %33,7'ye iner, çünkü aradaki fark
tümüyle uç doğrulamanın kapsadığı akışlardan gelir ve sabitleme o payı hiç değiştirmez.

## Özet

- Araya girme bir kanıt zinciri eksikliğidir: 8 akışın 36 adımında 3 akışın hiç zinciri yoktur
  ve bu üç akışın **16 adımı** içeriği okuyabilir.
- Zincirin gücü halka sayısı değil, iddiayı üretebilecek taraf sayısıdır: aynı 3 halkalı iki
  akıştan biri **1**, öteki **84** tarafça üretilebilir; farkı dayanaksız tek halka yaratır.
- Uç doğrulama okuyan adımı 16'dan 4'e indirir, ama üretebilen taraf toplamını 272'den **509'a
  çıkarır**; iddiayı yoldaki adımlardan alıp 84 kalemlik bir kök listesine devreder.
- Kök sabitleme üretebilen toplamı 23'e, ikisi birlikte **11'e** indirir ve dayanaksız halkayı
  sıfırlar; bedeli 84 kalemlik liste, 14 ek tur ve kök değişiminde kesilen **7 akıştır**.
- Uç doğrulama yapamayan tek akış 30 günde 89.400 istek taşır ve hiçbir savunma onu kapsamaz.

## Sonraki Adım

Bu ders bir iddianın **kimden** geldiğini sordu ve yanıtı bir zincirle bağladı. Sabit kök
düzeninde iddiayı üretebilecek taraf sayısı bire indi; kimliğin kanıtı tamdır. Yine de tam bir
kanıt zinciriyle üretilmiş, doğru kaynaktan gelmiş, hiçbir halkası dayanaksız olmayan bir
mesajın bir özelliği hâlâ hiç sorulmadı: **ne zaman** üretildiği. Aynı mesaj bir kez daha
sunulduğunda kimlik kanıtı yine geçerlidir, zincir yine tamdır ve alıcı onu ilk seferkiyle aynı
biçimde kabul eder. Sonraki ders bunu tazelik kanıtı cinsinden ölçer: mesaj kümesinin kaçı
tekrar edildiğinde kabul ediliyor, sayaç, zaman damgası ve tek kullanımlık değer kaçını
yakalıyor, kaçı hâlâ yakalanamıyor ve bunun durum, saat ve depolama bedeli ne oluyor.
