---
title: 'Adli İnceleme İlkeleri'
source: 'https://academia.sh/tr/kurslar/guvenlik-operasyonlari/adli-inceleme-ilkeleri'
course: 'Güvenlik Operasyonları ve Olay Müdahalesi'
language: tr
updated: '2026-08-17T18:08:42+00:00'
license: 'CC BY-SA 4.0'
---

# Adli İnceleme İlkeleri

Delil bütünlüğü ve gözetim zincirinin kalem cinsinden ölçülmesi: 28 kanıt kalemi, 78 aktarım ve aktarım başına beş kayıt alanı; 390 alanın 10'unun boş kalması 9 kalemi, karma uyuşmazlığı 3 kalemi daha tartışmaya açıyor ve 28 kalemin 12'si savunulamıyor. Saha zincirindeki tek bir noktanın kaydı tümüyle düşerse 13 kalem birden açılıyor; yüzde 2,6'lık kayıt boşluğunun yüzde 43'lük kalem kaybına dönüşmesi zincirin yapısından geliyor.

Bir önceki konu olayı kapattı: sınırlama uygulandı, etkilenen makineler ağdan alındı, hizmet geri
geldi. Kapanış oradan şu soruyla çıkıyordu — olayın **ne olduğunu** kanıtlayacak kalemlerin çoğu
sınırlama anında zaten silinmişti. Makine kapatıldığında bellek gitti, oturum düştüğünde bağlantı
listesi gitti, yeniden kurulumda geçici dosyalar gitti. Geriye kalanla bir anlatı kurulabilir; o
anlatının **sınanabilir** olup olmadığı ayrı bir sorudur.

Bu konu o soruyu ölçer ve ölçü birimi **kanıt kalemidir**. Üç sütun sayılır: kaç kalem uçucudur ve
toplanmazsa kaybolur, toplama sırası kaç kalemi kaybettirir, gözetim zinciri kaç kalemde kopar. Bu
ders üçüncü sütunu kurar. Kurgu bölgesel ölçüm ağında bir şube ucunda yetkisiz erişim görülmüş,
inceleme altı konağı kapsıyor. **Bütün sayılar bir modelden gelir.** Başkasına ait bir sistemden
kanıt toplamak — imaj almak, döküm çıkarmak, kayıt kopyalamak — yazılı yetki ve tanımlı kapsam
olmadan hem yasadışı hem meslek dışıdır.

- **AI1.** **Kanıt kalemi**, tek bir kaynaktan alınmış ve tek bir bütünlük değeriyle bağlanabilen
  veri parçasıdır: bir disk imajı, bir bellek dökümü, bir günlük dilimi, bir yapılandırma kopyası.
- **AI2.** Her kalemin bir **ömrü** vardır: toplanmazsa kaybolmadan önce geçen süre. Ömrü bir saati
  aşmayan kalem **uçucudur**.
- **AI3.** **Gözetim zinciri** (chain of custody), kalemin toplandığı andan çözümlendiği ana kadar
  geçtiği aktarımların kaydıdır. Zincir düğümlerden, aktarım iki düğüm arasındaki devirden oluşur.
- **AI4.** Her aktarım **beş kayıt alanı** ister: kimden, kime, ne zaman, hangi ortamda, hangi
  karma. Alanlar elle doldurulur ve boş kalabilir.
- **AI5.** Bir kalem **savunulabilirdir** ancak toplama anındaki karma çözümleme anındaki karmayla
  aynıysa **ve** zincirindeki hiçbir aktarımda eksik alan yoksa. Aksi durumda kalem **tartışmaya
  açıktır** — yanlış olduğu gösterilmiş değildir, doğru olduğu gösterilemez.
- **AI6.** Kalem sayıları, süreler ve hata oranı kurgudur; rastgelelik tohumu görünürdür.

## Kalem, Karma ve Aktarım

```js
// adli/kalem.mjs — kanit kalemi kumesi, karma tabanli butunluk ve gozetim zinciri MODELIDIR.
// Bolgesel olcum agi kurgudur; gercek kurum, olay ve makine adi yazilmaz.
import { createHash } from "node:crypto";

export const TOHUM = 20260731;
const uretec = (t) => { let s = t >>> 0;
  return () => (s = (s * 1664525 + 1013904223) >>> 0) / 4294967296; };

// sinif -> [omur(sn): toplanmazsa kaybolmadan once gecen sure, toplama suresi(sn)]
export const SINIF = {
  "ag-durumu": [120, 45], "surec-listesi": [240, 60], "acik-tanitici": [300, 55],
  "oturum-durumu": [600, 70], "bellek-icerigi": [900, 420], "gecici-dosya": [3600, 180],
  "akis-kaydi": [86400, 240], "disk-imaji": [604800, 5400], "yapilandirma": [604800, 90],
  "uzak-gunluk": [2592000, 300],
};

// konak -> [gozetim zinciri dugumleri, tasidigi kalem siniflari]
export const KONAK = {
  "sube-ucu-3": [["toplama", "paketleme", "aktarim", "laboratuvar", "cozumleme"],
    ["ag-durumu", "surec-listesi", "acik-tanitici", "oturum-durumu", "bellek-icerigi",
      "gecici-dosya", "disk-imaji", "yapilandirma"]],
  "saha-dizustu-14": [["toplama", "paketleme", "aktarim", "laboratuvar", "cozumleme"],
    ["ag-durumu", "surec-listesi", "oturum-durumu", "bellek-icerigi", "disk-imaji"]],
  "toplayici-2": [["toplama", "aktarim", "cozumleme"],
    ["ag-durumu", "surec-listesi", "acik-tanitici", "oturum-durumu", "bellek-icerigi",
      "disk-imaji", "yapilandirma"]],
  "portal-onyuz": [["toplama", "aktarim", "cozumleme"],
    ["ag-durumu", "surec-listesi", "bellek-icerigi", "yapilandirma"]],
  "merkez-gunluk": [["alma", "cozumleme"], ["uzak-gunluk", "yapilandirma"]],
  "akis-toplayici": [["alma", "cozumleme"], ["akis-kaydi", "yapilandirma"]],
};

// Her aktarimda doldurulmasi gereken bes kayit alani.
export const ALAN = ["kimden", "kime", "zaman", "ortam", "karma"];
// Yazma korumasi olmadan acilan kalemler: icerik degismese de erisim damgasi degisiyor.
export const KORUMASIZ = ["sube-ucu-3/gecici-dosya", "toplayici-2/disk-imaji",
  "portal-onyuz/yapilandirma"];

export const ozet = (s) => createHash("sha256").update(s).digest("hex").slice(0, 16);

export function kume() {
  const r = uretec(TOHUM), liste = [];
  for (const [konak, [dugum, siniflar]] of Object.entries(KONAK))
    for (const s of siniflar) {
      const ad = `${konak}/${s}`;
      const icerik = `${ad}|${Math.floor(r() * 1e9)}`;
      liste.push({ ad, konak, sinif: s, dugum, omur: SINIF[s][0], sure: SINIF[s][1],
        toplamaKarma: ozet(icerik),
        cozumlemeKarma: ozet(icerik + (KORUMASIZ.includes(ad) ? "|erisim-damgasi" : "")),
        aktarim: dugum.slice(1).map((d, i) => {
          const kayit = Object.fromEntries(ALAN.map((a) => [a, true]));
          if (r() < 0.11) kayit[ALAN[Math.floor(r() * 5)]] = false;   // alan bos kaldi
          return { nokta: `${dugum[i]}>${d}`, kayit };
        }) });
    }
  return liste;
}

export const eksikAlan = (k) =>
  k.aktarim.reduce((a, t) => a + ALAN.filter((x) => !t.kayit[x]).length, 0);
export const butun = (k) => k.toplamaKarma === k.cozumlemeKarma;
export const savunulabilir = (k) => butun(k) && eksikAlan(k) === 0;
```

Karma burada tek bir işi yapıyor: kalemi **kendisine bağlamak**. Toplama anında hesaplanan özet
kaydedilir; çözümleme anında yeniden hesaplanır. İki değer aynıysa kalemin bu iki an arasında
değişmediği gösterilmiş olur. Aynı değilse kalemin değiştiği gösterilmiş olur — nasıl ve kimin
tarafından değil, yalnız **değiştiği**. Karmanın kanıtladığı budur ve fazlası değildir.

Üç kalem yazma koruması olmadan açılmıştır. İçeriğe hiçbir şey yazılmamıştır; yalnız erişim damgası
tazelenmiştir. Karma bu ayrımı görmez, çünkü görmemesi gerekir: bütünlük değeri niyeti değil
**farkı** ölçer. Bir kalemin kazara mı yoksa bilerek mi değiştiği, karmanın değil zincirin sorusudur.

## Zincirin Sayıları

```js
// adli/olc.mjs — konak basina kalem, aktarim ve savunulabilirlik sayimi.
import { kume, ALAN, SINIF, eksikAlan, butun, savunulabilir, TOHUM } from "./kalem.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());

const K = kume();
const ucucu = K.filter((k) => k.omur <= 3600).length;
console.log(`model (tohum ${TOHUM}): ${K.length} kanit kalemi, ${Object.keys(SINIF).length} ` +
  `sinif, aktarim basina ${ALAN.length} kayit alani`);
console.log(`${ucucu} kalem ucucu (omru bir saati asmiyor), ${K.length - ucucu} kalem kalici`);

const A = [-17, 7, 8, 9, 7, 12, 15];
console.log("");
y(A, "konak", "kalem", "dugum", "aktarim", "alan", "eksik alan", "savunulabilir");
for (const konak of [...new Set(K.map((k) => k.konak))]) {
  const g = K.filter((k) => k.konak === konak);
  const akt = g.reduce((a, k) => a + k.aktarim.length, 0);
  y(A, konak, g.length, g[0].dugum.length, akt, akt * ALAN.length,
    g.reduce((a, k) => a + eksikAlan(k), 0), `${g.filter(savunulabilir).length}/${g.length}`);
}
const akt = K.reduce((a, k) => a + k.aktarim.length, 0);
y(A, "toplam", K.length, "-", akt, akt * ALAN.length,
  K.reduce((a, k) => a + eksikAlan(k), 0), `${K.filter(savunulabilir).length}/${K.length}`);

console.log(`\nkarma uyusmazligi ${K.filter((k) => !butun(k)).length} kalemde: ` +
  K.filter((k) => !butun(k)).map((k) => k.ad).join(", "));
```

```
model (tohum 20260731): 28 kanit kalemi, 10 sinif, aktarim basina 5 kayit alani
18 kalem ucucu (omru bir saati asmiyor), 10 kalem kalici

konak              kalem   dugum  aktarim   alan  eksik alan  savunulabilir
sube-ucu-3             8       5       32    160           4            3/8
saha-dizustu-14        5       5       20    100           4            2/5
toplayici-2            7       3       14     70           1            5/7
portal-onyuz           4       3        8     40           0            3/4
merkez-gunluk          2       2        2     10           1            1/2
akis-toplayici         2       2        2     10           0            2/2
toplam                28       -       78    390          10          16/28

karma uyusmazligi 3 kalemde: sube-ucu-3/gecici-dosya, toplayici-2/disk-imaji, portal-onyuz/yapilandirma
```

Tabloda iki sütun birlikte okunmalıdır. Saha konakları beş düğümlü bir zincir izliyor: kalem
toplanıyor, paketleniyor, laboratuvara taşınıyor, kabul ediliyor, çözümleniyor. Dört aktarım demek,
kalem başına yirmi doldurulacak alan demektir. Merkezdeki konaklarda zincir üç düğüm, uzaktan alınan
kalemlerde iki düğümdür — fiziksel taşıma yoktur, dolayısıyla doldurulacak alan da azdır.

Sonuç sütunu bu yapıyı doğrudan yansıtıyor. Sekiz kalemli şube ucunda savunulabilir kalem sayısı
üçtür; iki kalemli akış toplayıcısında ikinin ikisi savunulabilirdir. Zincir uzadıkça kalem başına
düşen kayıt yükü artıyor ve her ek alan bir boş kalma fırsatıdır. **Uzun zincir kalemi daha çok
korumaz; onu daha çok yerde kırılabilir kılar.**

## Tek Eksik Kayıt

```js
// adli/bosluk.mjs — tek eksik kaydin kac kalemi tartismaya actigi.
import { kume, ALAN, eksikAlan, butun } from "./kalem.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());
const K = kume();

// Her aktarim noktasi icin: kac kalem geciyor, kaydi tumuyle dusrse hepsi tartismaya acilir.
const nokta = new Map();
for (const k of K)
  k.aktarim.forEach((t, i) => {
    if (!nokta.has(t.nokta)) nokta.set(t.nokta, { gecen: 0, sonra: 0 });
    const n = nokta.get(t.nokta);
    n.gecen += 1; n.sonra = k.aktarim.length - i - 1;
  });

const A = [-22, 14, 14, 20];
y(A, "aktarim noktasi", "gecen kalem", "sonraki adim", "kaydi dusrse acilan");
for (const [ad, n] of [...nokta].sort((a, b) => b[1].gecen - a[1].gecen))
  y(A, ad, n.gecen, n.sonra, `${n.gecen} kalem (%${Math.round(n.gecen * 100 / K.length)})`);

// Gozlenen durum: hangi alan eksik, hangi soru yanitsiz kaliyor.
const SORU = { kimden: "kalem kimin elindeydi", kime: "kim teslim aldi",
  zaman: "sira kanitlanabilir mi", ortam: "hangi kosulda saklandi",
  karma: "degismedigi gosterilebilir mi" };
console.log("");
const B = [-12, -32, 9, 7];
y(B, "eksik alan", "yanitsiz kalan soru", "aktarim", "kalem");
for (const a of ALAN) {
  const t = K.reduce((s, k) => s + k.aktarim.filter((x) => !x.kayit[a]).length, 0);
  y(B, a, SORU[a], t, K.filter((k) => k.aktarim.some((x) => !x.kayit[a])).length);
}

const alan = K.reduce((a, k) => a + k.aktarim.length, 0) * ALAN.length;
const eksik = K.reduce((a, k) => a + eksikAlan(k), 0);
const acik = K.filter((k) => eksikAlan(k) > 0 || !butun(k)).length;
console.log(`\n${alan} kayit alaninin ${eksik}'i bos (%${(eksik * 100 / alan).toFixed(1)}); ` +
  `bu ${K.filter((k) => eksikAlan(k) > 0).length} kalemi, karma uyusmazligi ` +
  `${K.filter((k) => !butun(k)).length} kalemi daha etkiliyor`);
console.log(`toplam ${acik} / ${K.length} kalem tartismaya acik ` +
  `(%${Math.round(acik * 100 / K.length)}), ${K.length - acik} kalem savunulabilir`);
const enKotu = Math.max(...[...nokta.values()].map((n) => n.gecen));
console.log(`tek bir noktanin kaydi tumuyle dusrse en kotu durum ${enKotu} kalem ` +
  `(%${Math.round(enKotu * 100 / K.length)}) ve bu, gozlenen ${acik} kalemin ustune eklenir`);
```

```
aktarim noktasi          gecen kalem  sonraki adim kaydi dusrse acilan
toplama>paketleme                 13             3      13 kalem (%46)
paketleme>aktarim                 13             2      13 kalem (%46)
aktarim>laboratuvar               13             1      13 kalem (%46)
laboratuvar>cozumleme             13             0      13 kalem (%46)
toplama>aktarim                   11             1      11 kalem (%39)
aktarim>cozumleme                 11             0      11 kalem (%39)
alma>cozumleme                     4             0       4 kalem (%14)

eksik alan  yanitsiz kalan soru               aktarim  kalem
kimden      kalem kimin elindeydi                   3      3
kime        kim teslim aldi                         1      1
zaman       sira kanitlanabilir mi                  1      1
ortam       hangi kosulda saklandi                  2      2
karma       degismedigi gosterilebilir mi           3      3

390 kayit alaninin 10'i bos (%2.6); bu 9 kalemi, karma uyusmazligi 3 kalemi daha etkiliyor
toplam 12 / 28 kalem tartismaya acik (%43), 16 kalem savunulabilir
tek bir noktanin kaydi tumuyle dusrse en kotu durum 13 kalem (%46) ve bu, gozlenen 12 kalemin ustune eklenir
```

Son üç satır bu dersin sonucudur. Kayıt alanlarının **yüzde 2,6'sı** boştur ve bu, kalemlerin
**yüzde 43'ünü** tartışmaya açar. Oran arasındaki fark bir hesap hatası değil, zincirin yapısıdır:
alan tek tek doldurulur, kalem ise bütün olarak savunulur. Bir kalemin yirmi alanından biri boşsa o
kalemin tamamı için "değişmediği gösterilemez" denir. Bütünlük bölünebilir bir nitelik değildir.

Birinci tablo bu kırılganlığın nerede yoğunlaştığını gösteriyor. Saha zincirindeki dört noktanın her
biri **on üç kalem** taşıyor; herhangi birinin kaydı tümüyle düşerse on üç kalem birden açılır. Bu,
bir kalem-kayıt ilişkisi değil, bir **darboğaz** ilişkisidir: aynı kurye, aynı kabul masası, aynı
form. Uzaktan alınan dört kalemde aynı riskin ölçüsü dörttür.

İkinci tablo eksik alanın türüne göre neyin cevapsız kaldığını ayırıyor ve sütunlar eşit değildir.
**Karma** alanı boşsa kalemin değişmediği gösterilemez; bu, kalemi doğrudan kullanılamaz kılar.
**Ortam** alanı boşsa yalnız saklama koşulu bilinmez; kalem hâlâ karma ile bağlıdır ve bu boşluk
sonradan bir tanıklıkla kapatılabilir. Zincir denetimi bu iki durumu aynı sütuna yazarsa, kapatılabilir
boşlukla kapatılamaz boşluğu karıştırır ve inceleme bütçesini yanlış yere harcar.

## Zinciri Kısaltmanın Bedeli

```js
// adli/kisalt.mjs — zincir uzunlugu ile beklenen acik kalem sayisi arasindaki bag.
import { kume, ALAN, eksikAlan } from "./kalem.mjs";
const K = kume(), P = 0.11;                    // aktarim basina alan bos kalma olasiligi
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());
const bek = (a) => 1 - (1 - P) ** a;           // en az bir alani eksik kalma olasiligi

const A = [-20, 7, 9, 7, 10, 20];
y(A, "zincir", "kalem", "aktarim", "alan", "gozlenen", "beklenen acik kalem");
let tk = 0, ta = 0, tb = 0, tg = 0;
for (const [ad, n] of [["saha (5 dugum)", 4], ["merkez (3 dugum)", 2], ["uzak (2 dugum)", 1]]) {
  const g = K.filter((k) => k.aktarim.length === n);
  const gozlenen = g.filter((k) => eksikAlan(k) > 0).length;
  y(A, ad, g.length, g.length * n, g.length * n * ALAN.length, gozlenen,
    (g.length * bek(n)).toFixed(2));
  tk += g.length; ta += g.length * n; tg += gozlenen; tb += g.length * bek(n);
}
y(A, "toplam", tk, ta, ta * ALAN.length, tg, tb.toFixed(2));

// Yerinde cozumleme: saha kalemleri tasinmiyor, zincir tek aktarima iniyor.
const s = K.filter((k) => k.aktarim.length === 4).length;
const a2 = s + K.filter((k) => k.aktarim.length === 2).length * 2 +
  K.filter((k) => k.aktarim.length === 1).length;
const b2 = s * bek(1) + K.filter((k) => k.aktarim.length === 2).length * bek(2) +
  K.filter((k) => k.aktarim.length === 1).length * bek(1);
y(A, "yerinde cozumleme", tk, a2, a2 * ALAN.length, "-", b2.toFixed(2));
console.log(`aktarim ${ta} -> ${a2} (%${Math.round((1 - a2 / ta) * 100)} az), ` +
  `beklenen acik kalem ${tb.toFixed(2)} -> ${b2.toFixed(2)}`);
```

```
zincir                kalem  aktarim   alan  gozlenen beklenen acik kalem
saha (5 dugum)           13       52    260         7                4.84
merkez (3 dugum)         11       22    110         1                2.29
uzak (2 dugum)            4        4     20         1                0.44
toplam                   28       78    390         9                7.57
yerinde cozumleme        28       39    195         -                4.16
aktarim 78 -> 39 (%50 az), beklenen acik kalem 7.57 -> 4.16
```

Beklenen sütun modeli kendi içinde sınıyor: aktarım başına yüzde 11'lik alan boş kalma olasılığıyla
saha kalemlerinin 4,84'ünün açılması beklenir, gözlenen 7'dir. Sapma küçük bir kümede olağandır ve
tam olarak bu yüzden zincir denetimi tek tek kalem üzerinden yapılır, ortalama üzerinden değil.

Son satır bir seçenek ölçüyor. Saha kalemleri laboratuvara taşınmaz, çözümleme yerinde yapılırsa
zincir tek aktarıma iner: 78 aktarım 39'a düşer ve beklenen açık kalem 7,57'den 4,16'ya iner. Bu
kazancın karşılığı yazılmadan karar verilemez. Yerinde çözümleme, o yetkinlikteki kişinin sahaya
gitmesini gerektirir; onun yolda geçirdiği süre bütün kalemlerin saatine eklenir ve tabloda ömrü iki
yüz saniyenin altında olan kalemler o süreyi beklemez. **Zinciri kısaltmak kalemi korur, gecikme
kalemi yok eder** — ikisi aynı ölçünün iki ucudur ve hangisinin ağır bastığı ancak sürelerle
hesaplanır.

## Özet

- Kanıt kalemi tek bir bütünlük değeriyle bağlanabilen veri parçasıdır; kurgu olayda 28 kalemin
  18'i uçucudur, ömrü bir saati aşmaz.
- Karma kalemi kendisine bağlar ve yalnız **değiştiğini** gösterir: üç kalemde uyuşmazlık vardır,
  üçü de yazma koruması olmadan açılmış ve yalnız erişim damgası tazelenmiştir.
- Gözetim zinciri saha konaklarında dört, merkezde iki, uzaktan alımda tek aktarımdır; aktarım
  başına beş alan, toplam 78 aktarım ve 390 alan demektir.
- Alanların yüzde 2,6'sının boş kalması kalemlerin yüzde 43'ünü tartışmaya açıyor: alan tek tek
  doldurulur, kalem bütün olarak savunulur.
- Saha zincirindeki dört noktanın her biri 13 kalem taşıyor; tek bir noktanın kaydının düşmesi
  kalemlerin yüzde 46'sını birden açar.

## Sonraki Adım

Bu derste zincir kalemin **etrafında** kuruldu: kim taşıdı, ne zaman devretti, hangi karma
kaydedildi. Kalemin kendisinin nasıl alındığı hiç sorulmadı. Tabloda 28 kalemin altısı disk
imajıdır ve her biri modelde 5.400 saniyelik bir toplama süresi taşıyor — konudaki en pahalı
kalemler bunlar.

Sonraki ders o kopyalamayı **doğrulanabilirlik** cinsinden ölçer. Kopyanın kaynakla aynı olduğunu
ne kanıtlar, kaynağın hangi bölümü kopyaya girmez, kısmi bir kopya kaç kalemi kaçırır ve çalışan bir
sistemden kopya alınırken kaç kalem kopyalama sırasında değişir. Üç sayı ayrı ayrı çıkarılır; ilki
karma ile kurulur, ikincisi kapsamla, üçüncüsü ancak iki karmanın karşılaştırılmasıyla görülür.
