---
title: 'Çok Etmenli Doğrulama'
source: 'https://academia.sh/tr/kurslar/kimlik-ve-kriptografi/cok-etmenli-dogrulama'
course: 'Kimlik, Erişim ve Kriptografi'
language: tr
updated: '2026-08-17T18:08:37+00:00'
license: 'CC BY-SA 4.0'
---

# Çok Etmenli Doğrulama

Etmen türlerinin kapattığı yol cinsinden ölçülmesi: 10 yollu bir kümede hiçbir etmen türünün 6'dan fazlasını kapatmaması, 4 yolun altı türün hiçbiriyle kapanmaması, iki etmeni birlikte kullanmanın kapanan yolu artırmaması ve kapatmanın 214 kişi için 428 ile 856 arasında kayıt kalemi, 9 ile 31 arası kurtarma başvurusu ve 41'e kadar dışarıda kalan uç tutması.

Önceki ders tek bir doğrulamanın 15 uygulamaya taşındığını ve o tek doğrulamanın 1562 bağlantıyı
açtığını saydı. Doğrulamanın kendisi hâlâ bir parolaya dayanıyordu: parola bilinirse bağlantıların
tamamı tek adımda açılır. **Çok etmenli doğrulama (multi-factor authentication)** bu tek adımı
ikiye böler ve girişi ikinci bir kanıta bağlar.

Etmen sınıflarının bağımsızlığı, zaman tabanlı kodun türetilmesi ve kurtarma kodlarının
saklanması **Kimlik Doğrulama ve Yetkilendirme** kursunda ölçüldü; burada tekrarlanmaz. Bu ders
tek bir soruyu sorar: hangi etmen türü **hangi yolu** kapatıyor ve kaç yol açık kalıyor. Ölçülen
şey bir yolun nasıl yürüneceği değil, hangi türün onu kapatıp kapatmadığıdır; bu dersin hiçbir
yerinde işleyen bir adım dizisi yoktur. Böyle bir denemenin yazılı yetki ve tanımlı kapsam
olmadan yapılması hem yasadışı hem meslek dışıdır.

## Etmen Bir Yol Kümesini Daraltır

**KK14:** bir etmen türü, hesap ele geçirme yollarının bir **alt kümesini** kapatır; kapattığı
küme türünün özelliğidir, gücünün değil. **KK15:** hiçbir etmen türü bütün yolları kapatmaz;
kapanmayan yollar etmenin değil, kayıt ve kurtarma süreçlerinin üzerindedir. **KK16:** aynı yolu
kapatan iki etmeni birlikte kullanmak kapanan yol sayısını artırmaz, yalnız bedeli artırır.

Ölçüm üç sütunla yapılır. Birincisi kapanan yol sayısı, ikincisi açık kalan yol sayısı,
üçüncüsü bedeldir. Bedel üç kalemde okunur: kişi başına kayıt adımı, yılda açılan kayıp etmen
başvurusu ve etmeni taşıyamadığı için dışarıda kalan uç sayısı. **Bedeli yazılmayan savunma
ölçülmemiş sayılır**; bu kural M24 boyunca sürer ve burada da geçerlidir.

## On Yol, Altı Etmen Türü

Aşağıdaki yol kümesi bir **modeldir**: kurgu bölgesel ölçüm ağı kurumunda 214 kişilik bir hesap
kümesi varsayılır. Gerçek bir kurum, gerçek bir hesap ve işleyen hiçbir adım dizisi yoktur.

```js
// etmen/yol.mjs — hesap ele gecirme yollari ile etmen turlerinin kapattigi yol (model):
// gercek bir kurum, gercek bir hesap ya da isleyen bir adim dizisi yok; yalnizca hangi etmen
// turunun hangi yolu kapatip kapatmadigi sayilir. Rastgelelik yok.

// KK14: bir etmen turu bir yol kumesinin bir alt kumesini kapatir; kapattigi yol turunun
// ozelligidir, gucunun degil. KK15: hicbir etmen turu butun yollari kapatmaz; kapanmayan
// yollar etmenin degil, kayit ve kurtarma sureclerinin ustundedir.
// Sinif sutunu, yolun hangi asamada isledigini soyler.
export const YOL = `
  parola-yeniden-kullanim      kimlik-bilgisi
  parola-tahmini               kimlik-bilgisi
  parola-toplayan-sayfa        kimlik-bilgisi
  gercek-zamanli-araci-sayfa   dogrulama-ani
  onay-yorgunlugu              dogrulama-ani
  kanal-ele-gecirme            etmen-kanali
  yedek-kurtarma-kanali        kurtarma
  dogrulama-sonrasi-oturum     dogrulama-sonrasi
  kayit-aninin-ele-gecmesi     kayit
  surec-uzerinden-sifirlama    surec`
  .trim().split("\n").map((r) => {
    const p = r.trim().split(/\s{2,}/);
    return { ad: p[0], sinif: p[1] };
  });

// kapatir = o etmen turunun kapattigi yol adlari; kayit = kisi basina kayit adimi;
// kurtarma = yilda 214 kisi icin acilan kayip etmen basvurusu; disarida = etmeni
// tasiyamayan uc sayisi.
export const ETMEN = {
  "parola":          { kapatir: [], kayit: 1, kurtarma: 0, disarida: 0 },
  "sms-kodu":        { kapatir: [0, 1, 2, 4], kayit: 2, kurtarma: 18, disarida: 6 },
  "zaman-kodu":      { kapatir: [0, 1, 2, 4, 5], kayit: 3, kurtarma: 31, disarida: 12 },
  "onay-bildirimi":  { kapatir: [0, 1, 2, 5], kayit: 3, kurtarma: 27, disarida: 24 },
  "eslesmeli-onay":  { kapatir: [0, 1, 2, 4, 5], kayit: 3, kurtarma: 27, disarida: 24 },
  "donanim-etmeni":  { kapatir: [0, 1, 2, 3, 4, 5], kayit: 4, kurtarma: 9, disarida: 41 },
};

export const KISI = 214;
export const kapanan = (...t) => new Set(t.flatMap((x) => ETMEN[x].kapatir));
```

```js
// etmen/sayim.mjs — her etmen turu kac yol kapatiyor, kaci acik kaliyor, hangi yollar
// hicbir etmenle kapanmiyor ve kapatmanin bedeli kayit, kurtarma ve disarida kalan uc
// cinsinden ne tutuyor.
import { YOL, ETMEN, KISI, kapanan } from "./yol.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 tur = Object.keys(ETMEN);

console.log(`${YOL.length} yol, ${tur.length} etmen turu, ${KISI} kisi`);

const A = [-18, 9, 8, 10, 11, 10];
console.log("\n1. etmen turu basina kapanan ve acik kalan yol");
yaz(A, "etmen", "kapanan", "acik", "kayit kal", "kurtarma", "disarida");
for (const t of tur) {
  const e = ETMEN[t];
  yaz(A, t, e.kapatir.length, YOL.length - e.kapatir.length,
    KISI * e.kayit, e.kurtarma, e.disarida);
}

const B = [-28, -18, 10, 12];
console.log("\n2. yol basina: kac etmen turu kapatiyor");
yaz(B, "yol", "sinif", "kapatan", "acik kalan");
for (let i = 0; i < YOL.length; i++) {
  const k = tur.filter((t) => ETMEN[t].kapatir.includes(i));
  yaz(B, YOL[i].ad, YOL[i].sinif, k.length, tur.length - k.length);
}
const hic = YOL.filter((_, i) => tur.every((t) => !ETMEN[t].kapatir.includes(i)));
console.log(`hicbir etmenin kapatmadigi yol ${hic.length}/${YOL.length}: ` +
  hic.map((y) => y.sinif).join(", "));

const C = [-34, 9, 8, 11];
console.log("\n3. iki etmen birlikte kullanilirsa");
yaz(C, "birlesim", "kapanan", "acik", "kayit kal");
for (const [a, b] of [["sms-kodu", "zaman-kodu"], ["zaman-kodu", "eslesmeli-onay"],
  ["onay-bildirimi", "zaman-kodu"], ["eslesmeli-onay", "donanim-etmeni"]]) {
  const k = kapanan(a, b);
  yaz(C, `${a} + ${b}`, k.size, YOL.length - k.size,
    KISI * (ETMEN[a].kayit + ETMEN[b].kayit));
}

const D = [-18, 9, 11, 14, 14];
console.log("\n4. kapatilan yol basina bedel");
yaz(D, "etmen", "kapanan", "kayit/yol", "kurtarma/yol", "disarida/yol");
for (const t of tur.filter((x) => ETMEN[x].kapatir.length > 0)) {
  const e = ETMEN[t], n = e.kapatir.length;
  yaz(D, t, n, (KISI * e.kayit / n).toFixed(1), (e.kurtarma / n).toFixed(1),
    (e.disarida / n).toFixed(1));
}
```

```
10 yol, 6 etmen turu, 214 kisi

1. etmen turu basina kapanan ve acik kalan yol
etmen               kapanan    acik kayit kal   kurtarma  disarida
parola                    0      10       214          0         0
sms-kodu                  4       6       428         18         6
zaman-kodu                5       5       642         31        12
onay-bildirimi            4       6       642         27        24
eslesmeli-onay            5       5       642         27        24
donanim-etmeni            6       4       856          9        41

2. yol basina: kac etmen turu kapatiyor
yol                         sinif                kapatan  acik kalan
parola-yeniden-kullanim     kimlik-bilgisi             5           1
parola-tahmini              kimlik-bilgisi             5           1
parola-toplayan-sayfa       kimlik-bilgisi             5           1
gercek-zamanli-araci-sayfa  dogrulama-ani              1           5
onay-yorgunlugu             dogrulama-ani              4           2
kanal-ele-gecirme           etmen-kanali               4           2
yedek-kurtarma-kanali       kurtarma                   0           6
dogrulama-sonrasi-oturum    dogrulama-sonrasi          0           6
kayit-aninin-ele-gecmesi    kayit                      0           6
surec-uzerinden-sifirlama   surec                      0           6
hicbir etmenin kapatmadigi yol 4/10: kurtarma, dogrulama-sonrasi, kayit, surec

3. iki etmen birlikte kullanilirsa
birlesim                            kapanan    acik  kayit kal
sms-kodu + zaman-kodu                     5       5       1070
zaman-kodu + eslesmeli-onay               5       5       1284
onay-bildirimi + zaman-kodu               5       5       1284
eslesmeli-onay + donanim-etmeni           6       4       1498

4. kapatilan yol basina bedel
etmen               kapanan  kayit/yol  kurtarma/yol  disarida/yol
sms-kodu                  4      107.0           4.5           1.5
zaman-kodu                5      128.4           6.2           2.4
onay-bildirimi            4      160.5           6.8           6.0
eslesmeli-onay            5      128.4           5.4           4.8
donanim-etmeni            6      142.7           1.5           6.8
```

Sayılar **ölçüm** sınıfındadır; girdileri KK14–KK16 ile yol kümesidir.

## Kapanan Yol, Açık Kalan Yol

Birinci tablo altı türü aynı yol kümesi üzerinde koşturur. Parola tek başına sıfır yol kapatır;
on yolun onu da açıktır. İkinci etmen eklendiğinde kapanan yol sayısı dörde ya da beşe çıkar ve
**hiçbir türde altıyı geçmez**. En kapsamlı tür olan kaynağa bağlı donanım etmeni altı yol
kapatır ve dördünü açık bırakır.

Kapanan yolların ilk üçü her türde aynıdır: parolanın başka bir yerden bilinmesi, tahmin
edilmesi ya da yalnız parola toplayan bir sayfaya yazılması. İkinci etmen bu üçünü kapatır,
çünkü üçünde de eksik olan şey ikinci kanıttır. Kurumsal girişte çok etmenli doğrulamanın
sağladığı asıl kazanç bu üç satırdır ve tür seçimi bu üçü için fark etmez.

Fark, dördüncü satırdan sonra başlar. Gerçek zamanlı aracı sayfayı — kullanıcının girdiği kodu
aynı anda gerçek girişe ileten bir aracı — yalnız **bir** tür kapatır: kaynağa bağlı donanım
etmeni. Bunun nedeni türün daha güçlü olması değil, ürettiği kanıtın **bağlandığı adrese** bağlı
olmasıdır; başka bir adrese sunulduğunda kanıt geçerli değildir. Bir kodu okuyup yazan her tür,
kodu kimin istediğini sınayamaz.

Beşinci ve altıncı satırlar iki türü tek tek düşürür. Onay yorgunluğu — istenmeden gelen art
arda onay istemleri — yalnız anında onay bildiriminde açıktır; kod isteyen türlerde böyle bir
istem hiç oluşmaz. Kanal ele geçirme ise yalnız kısa ileti kodunda açıktır, çünkü kanalın
kendisi etmenin taşıyıcısıdır. **Her tür kendi mekaniğinden doğan bir yol açar** ve bu yol, o
türün kapattığı yollar kadar tür özelliğidir.

Dördüncü satırın ağırlığı önceki dersten gelir. Kurumda 15 uygulama tek kimlik sağlayıcısına
bağlıdır; ikinci etmen o sağlayıcının giriş sayfasında bir kez uygulanır ve orada kapanan yol 15
uygulamanın hepsi için kapanır. Aynı biçimde, orada **açık kalan** yol da 15 uygulamanın hepsi
için açık kalır. Merkezîleşmenin bu dersteki karşılığı budur: tür seçimi tek bir noktada
yapılır ve sonucu 1562 bağlantıya çarpılır. Dört ile altı arasındaki iki yolluk fark, tek bir
hesapta iki yol değil, kurumun tamamında iki yoldur.

## Hiçbir Etmenin Kapatmadığı Dört Yol

İkinci tablo bu dersin en önemli sonucudur. On yolun dördünü altı türün **hiçbiri** kapatmaz:
yedek kurtarma kanalı, doğrulama sonrası oturumun kullanılması, kayıt anının ele geçmesi ve
süreç üzerinden sıfırlama. Dördü de etmenin dışındadır.

Sınıf sütunu nedeni verir. Kurtarma yolu, etmen kaybedildiğinde devreye giren yedek kanaldır ve
o kanal ikinci etmenden zayıfsa hesabın gücü yedek kanalın gücüne iner. Doğrulama sonrası
oturum, giriş tamamlandıktan sonra üretilen nesnedir; etmen o noktada işini bitirmiştir ve
önceki dersteki 72 saatlik oturum penceresi tam olarak bu satırın büyüklüğüdür. Kayıt anı, ikinci
etmenin hesaba **ilk kez bağlandığı** andır: o an yanlış kişiye bağlanmışsa, etmen sonraki her
girişte yanlış kişiyi doğru sayar. Süreç üzerinden sıfırlama ise teknik bir kalem değildir;
etmeni sıfırlayabilen bir insanın var olmasıdır.

**Çok etmenli doğrulamanın gücü, en zayıf kurtarma yolunun gücüdür.** Etmen türü seçimi ilk altı
satırı belirler; son dört satırı belirleyen şey kayıt ve kurtarma süreçlerinin nasıl yazıldığıdır
ve bu, satın alınabilecek bir kalem değildir.

Dört satırın ortak bir özelliği daha vardır: hiçbiri giriş ekranında görünmez. Kapanan altı yol
bir denetim listesinde işaretlenebilir ve raporlanabilir; kapanmayan dördü ancak süreç
belgelerinde aranarak bulunur. Bir kurumun çok etmenli doğrulama kapsamını yüzde yüz olarak
raporlaması, bu dört satırın hiç sorulmadığı anlamına gelir. Kapsam raporu en iyi durumda altı yolu ölçer, on yolu değil; aradaki dört satırlık fark rapora hiç yazılmaz ve ölçülmediği için de kimseye ait değildir.

## Bu Mekanizmanın Güven Kökü

Kursun birinci sütunu burada beklenmedik bir yerdedir. Çok etmenli doğrulamanın güven kökü
etmenin kendisi değil, **etmenin kişiye bağlandığı kayıt anıdır**. Kayıt sırasında kurumun
elinde, kaydı yapanın gerçekten o kişi olduğuna dair bir kanıt bulunmalıdır; bu kanıt yoksa
sonraki her giriş kusursuz çalışır ve yanlış kişiyi doğru sayar.

Kökten kullanıma uzanan zincir dört kalemdir: kayıt anındaki kimlik kanıtı, etmenin hesaba
bağlanma kaydı, o bağın değiştirilmesini yöneten yetki ve kurtarma kaydı. Dördü de dizinde
durur; yani bu dersin kökü, ilk derste ölçülen deponun bütünlüğüne dayanır. Depo bütünlüğü
kırıldığında yenilenmesi gereken 646 kalemin arasında bu dört kalem de vardır ve yenilemeleri
en pahalısıdır — bir etmen bağını yenilemek, kişinin fiziksel olarak yeniden tanınmasını
gerektirir.

İkinci tablodaki kayıt satırının hiçbir etmenle kapanmamasının nedeni budur. **Bir mekanizma
kendi kökünü doğrulayamaz**; etmen, kendisinin doğru kişiye bağlandığını sınayacak bir kalem
taşımaz. Kaydın doğruluğu, mekanizmanın dışındaki bir sürecin çıktısıdır ve o süreç bu kursun
ölçtüğü hiçbir anahtara dayanmaz.

## İki Etmen Bir Etmenden İyi Değildir

Üçüncü tablo KK16'yı sayar. Kısa ileti kodu ile zaman tabanlı kodun birlikte kullanılması beş
yol kapatır; zaman tabanlı kod tek başına da beş yol kapatır. Kapanan yol aynıdır, kayıt kalemi
642'den 1070'e çıkar. Eşleşmeli onay ile zaman tabanlı kodun birleşimi de beşte kalır.

Neden basittir: iki tür aynı alt kümeyi kapatıyorsa birleşimleri o alt kümedir. Kapanan yol
sayısını artıran tek birleşim, kümesi diğerlerini kapsayan donanım etmenini içerendir ve o da
altıda kalır — donanım etmeni tek başına da altı kapatır. **Etmen çoğaltmak yol kapatmaz;
kapattığı küme farklı olan bir tür eklemek kapatır.**

Bu, iki etmenin hiçbir işe yaramadığı anlamına gelmez. İkinci bir tür, birincinin kullanılamadığı
durumda erişimi sürdürür ve kurtarma başvurusu sayısını düşürür — yani birinci tablodaki
kurtarma sütununa yazılır, kapanan yol sütununa değil. İki sütunu ayırmayan bir karar, bedeli
iki katına çıkarıp kapanan yolu sabit bırakır.

## Kapatmanın Bedeli

Dördüncü tablo bedeli kapatılan yol başına böler. Kısa ileti kodu kapattığı yol başına 107 kayıt
kalemi ve 1,5 dışarıda kalan uç tutar; donanım etmeni 142,7 kayıt kalemi ve 6,8 uç tutar.
Dışarıda kalan uç sayısı donanım etmeninde 41'e çıkar ve bu, ilk derste sayılan eski konsollarla
saha aygıtlarının bir bölümüdür.

Tablonun kapsamadığı bir kalem daha vardır ve bedelden çok kapsama yazılır. Sayılan 214 hesap
kişilerin hesaplarıdır; ikinci derste sayılan 21 servis hesabı bu ölçümün dışındadır. Bir hizmet
hesabının önüne ikinci etmen konamaz, çünkü karşısında onay verecek kimse yoktur. Kurumun
kimlik yüzeyinde çok etmenli doğrulama **etkileşimli girişleri** kapsar ve etkileşimli olmayan
her hesap, on yolun ilk üçüne açık kalır. Kapsama oranı 214/235'tir ve dışarıda kalan 21 hesabın
her biri, ikinci derste ölçüldüğü gibi bir servisin tamamını temsil eder.

Kurtarma sütunu ters yönde okunur. Donanım etmeninde yılda dokuz başvuru açılır; zaman tabanlı
kodda otuz bir. Aradaki fark, aygıt değiştirmenin sıklığından gelir ve her başvuru ikinci
tablodaki kurtarma yolunu bir kez daha açar. **Kurtarma başvurusu sayısı, kapatılamayan dördüncü
yolun yılda kaç kez kullanıldığının ölçüsüdür**; bu yüzden düşük kurtarma sayısı, kapanan yol
sayısı kadar önemlidir.

## Özet

- Bir etmen türü on yollu kümenin bir alt kümesini kapatır; hiçbir tür 6'dan fazlasını
  kapatmaz ve parola tek başına 0 kapatır.
- İlk üç yol her türde kapanır; dördüncü yolu yalnız kaynağa bağlı donanım etmeni kapatır,
  çünkü ürettiği kanıt sunulduğu adrese bağlıdır.
- Her tür kendi mekaniğinden bir yol açar: onay yorgunluğu bildirim türünde, kanal ele geçirme
  kısa ileti türünde açık kalır.
- On yolun 4'ü altı türün hiçbiriyle kapanmaz; dördü de kayıt, kurtarma, doğrulama sonrası
  oturum ve süreç sınıfındadır.
- Aynı kümeyi kapatan iki etmeni birlikte kullanmak kapanan yolu artırmaz, kayıt kalemini
  642'den 1284'e çıkarır; kazanç yalnız kurtarma sütununa yazılır.

## Sonraki Adım

Bu ders girişin kendisini ölçtü. Girişten sonra kullanıcının **ne yapabildiği** ise başka bir
mekanizmayla belirlenir: kurum, binlerce makinede hangi ayarın geçerli olacağını tek bir yerden
yazar ve makineler bu yazılanı düzenli aralıklarla çeker. Yazılan ile uygulanan arasındaki fark,
bu dersin yol kümesindeki kalemlerin bir bölümünü doğrudan etkiler. Sonraki ders merkezî
dayatmayı yayılma cinsinden ölçer: politika kaç makineye kaç turda ulaşıyor, ulaşmayan kalem kaç
ve yerel geçersiz kılma kaç yol açıyor.
