---
title: 'Aktarımda Şifreleme'
source: 'https://academia.sh/tr/kurslar/bulut-yonetisimi/aktarimda-sifreleme'
course: 'Bulut Yönetişimi, Güvenlik ve Maliyet'
language: tr
updated: '2026-08-17T18:06:55+00:00'
license: 'CC BY-SA 4.0'
---

# Aktarımda Şifreleme

Aktarım şifrelemesi zorunlu kılındığında ne oluyor sayılır: 16 bağlantı bacağının 9'u açık, 4'ünün durumu bilinmiyor. Üç aşamalı zorlama 23 yapılandırma kalemi değiştiriyor ve 79 bağlantı kırıyor; 34'ü yükseltilemiyor. Altı yolun ancak biri uçtan uca kanıtlı hale geliyor, hepsi için kendi katmanında şifreleme gerekiyor.

Beklemede duran veri için soru yanıtlandı. Veri hareket ettiğinde ise ortada bir kutu değil, bir
**zincir** var: ölçüm ağının bir kaydı kenar cihazdan alım ucuna, oradan ağ geçidine, toplayıcıya ve
veritabanına gidiyor; her sıçrama ayrı bir bacak ve her bacağın kendi durumu var. Bu dersin sorusu el
sıkışmanın maliyeti değil — o ölçüm daha önce yapıldı — şifrelemenin hangi noktada sonlandığı da
değil; o da ölçüldü. Buranın sorusu **zorunlu kılmaktır**: hangi bacaklar şifreli, hangileri "iç ağ"
gerekçesiyle açık bırakılmış, politikayla zorunlu kılınınca **kaç bağlantı kırılıyor** ve kaç kalem
yapılandırma değişiyor.

Üçüncü bir durum daha var: sağlayıcının kendi ağı içindeki taşımanın şifreli olup olmadığı **kiracı
tarafından doğrulanamaz**. O bacaklar "bilinmiyor" olarak durur, sağlayıcının varsayılanı bir
**varsayım** olarak yazılır ve bilinmiyor olmanın kendisi bir kalem sayılır. Ölçüm **bölgesel ölçüm
ağı** üzerindedir, **kurgudur** ve `node` ile yazılmış bir **modeldir**.

**BG7.** Veri yolu 16 bağlantı bacağına ayrılır; bacak kataloğu, istemci sayıları, yapılandırma
kalemleri ve istek hacimleri kurgudur.
**BG8.** Her bacak üç ağ türünden birindedir: genel ağ, özel hat, sağlayıcı içi ağ.
**BG9.** Bacağın durumu üç değerlidir — şifreli, açık, **bilinmiyor**. Üçüncü değer yalnız sağlayıcı
içi taşıma için kullanılır ve doğrulanamaz.
**BG10.** Her açık bacakta şifrelemeyi desteklemeyen istemci sayısı ve bunların kaçının
yükseltilebildiği yazılıdır; yükseltilemeyen istemci zorlamada kalıcı olarak kırılır.
**BG11.** Zorlama üç aşamadadır: önce genel ağ, sonra özel hat, sonra sağlayıcı içi ağ. Geçiş
penceresi 90 gündür (kurgu) ve uyarı modunda 61 gün geçmiştir.
**BG12.** "Bilinmiyor" bacakların şifreli olduğu ancak kiracının kendi katmanında şifreleme
yapmasıyla kanıtlanabilir; bunun yapılandırma bedeli bacak başına yazılıdır.

## Bacaklar, Yollar ve Aşamalı Zorlama

```js
// bacak.mjs — aktarim bacaklari, yollar ve asamali zorlama. MODELDIR.
// Bolgesel olcum agi KURGUDUR: bacak katalogu, istemci sayilari ve istek hacimleri uydurmadir.
// durum "bilinmiyor" = saglayici ici tasima; kiraci dogrulayamaz, VARSAYIM olarak durur.
export const BACAK = [
  // id, ad, ag, durum, istemci, destekmeyen, yapKalemi, istekBin, kanitKalemi, yukseltilebilir
  ["b1", "kenar cihaz -> alim ucu", "genel", "acik", 340, 54, 3, 4820, 0, 38],
  ["b2", "alim ucu -> ag gecidi", "saglayici-ici", "sifreli", 6, 0, 1, 4820, 0, 0],
  ["b3", "ag gecidi -> toplayici", "saglayici-ici", "bilinmiyor", 12, 0, 2, 4820, 4, 0],
  ["b4", "toplayici -> veritabani", "saglayici-ici", "acik", 12, 0, 4, 1960, 0, 0],
  ["b5", "toplayici -> kuyruk", "saglayici-ici", "acik", 12, 2, 2, 3100, 0, 2],
  ["b6", "isleyici -> kuyruk", "saglayici-ici", "acik", 9, 0, 2, 3100, 0, 0],
  ["b7", "isleyici -> nesne deposu", "saglayici-ici", "bilinmiyor", 9, 0, 1, 640, 3, 0],
  ["b8", "isleyici -> onbellek", "saglayici-ici", "acik", 9, 9, 2, 5400, 0, 0],
  ["b9", "servis -> gunluk toplayici", "saglayici-ici", "acik", 21, 0, 3, 8900, 0, 0],
  ["b10", "gunluk toplayici -> arsiv", "saglayici-ici", "bilinmiyor", 2, 0, 1, 190, 2, 0],
  ["b11", "arsiv -> ikincil bolge", "saglayici-ici", "bilinmiyor", 2, 0, 1, 190, 2, 0],
  ["b12", "fatura ihraci -> mutabakat", "genel", "sifreli", 1, 0, 1, 12, 0, 0],
  ["b13", "is ortagi beslemesi -> alim", "genel", "acik", 7, 3, 2, 260, 0, 1],
  ["b14", "operator -> yonetim ucu", "genel", "sifreli", 20, 0, 1, 45, 0, 0],
  ["b15", "yonetim ucu -> servis", "saglayici-ici", "acik", 20, 0, 3, 45, 0, 0],
  ["b16", "olcum agi bakim kanali", "ozel-hat", "acik", 28, 11, 2, 70, 0, 4],
].map(([id, ad, ag, durum, istemci, kirilan, yap, istek, kanit, yuk]) =>
  ({ id, ad, ag, durum, istemci, kirilan, yap, istek, kanit, yuk }));

export const YOL = {                                      // bir istegin gectigi bacak dizisi
  "olcum alimi": ["b1", "b2", "b3", "b4"],
  "ozet uretimi": ["b5", "b6", "b7"],
  "gunluk akisi": ["b9", "b10", "b11"],
  "fatura ihraci": ["b4", "b7", "b12"],
  "yonetim erisimi": ["b14", "b15"],
  "is ortagi alimi": ["b13", "b3", "b4"],
};
export const bul = (id) => BACAK.find((b) => b.id === id);
export const AG = ["genel", "ozel-hat", "saglayici-ici"];  // zorlama asamalarinin sirasi
export const PENCERE = 90, GECEN = 61;                     // kurgu gecis penceresi, gun

const top = (l, f) => l.reduce((a, b) => a + f(b), 0);
const B = [26, 7, 9, 10, 12, 13, 15];
export const yz = (h) => h.map((v, j) => j ? String(v).padStart(B[j]) : String(v).padEnd(B[0]))
  .join("");

if (import.meta.url === `file://${process.argv[1]}`) {
  console.log(`model: ${BACAK.length} bacak, ${Object.keys(YOL).length} yol, ` +
    `${top(BACAK, (b) => b.istek)} bin istek/gun (kurgu)`);
  console.log("\n" + yz(["ag turu", "bacak", "sifreli", "acik", "bilinmiyor", "istemci",
    "istek(bin)"]));
  for (const a of AG) {
    const l = BACAK.filter((b) => b.ag === a);
    const s = (d) => l.filter((b) => b.durum === d).length;
    console.log(yz([a, l.length, s("sifreli"), s("acik"), s("bilinmiyor"),
      top(l, (b) => b.istemci), top(l, (b) => b.istek)]));
  }

  // asamali zorlama: her asamada o ag turundeki acik bacaklar sifreye cekilir.
  const durum = new Map(BACAK.map((b) => [b.id, b.durum]));
  console.log("\n" + yz(["asama", "bacak", "yap.kal.", "kirilan", "istek(bin)", "kalan acik",
    "bilinmiyor"]));
  const satir = (ad, l) => {
    for (const b of l) durum.set(b.id, "sifreli");
    console.log(yz([ad, l.length, top(l, (b) => b.yap), top(l, (b) => b.kirilan),
      top(l, (b) => b.istek), [...durum.values()].filter((d) => d === "acik").length,
      [...durum.values()].filter((d) => d === "bilinmiyor").length]));
  };
  satir("0. uyari modu", []);
  for (const a of AG) satir(`${AG.indexOf(a) + 1}. ${a}`,
    BACAK.filter((b) => b.ag === a && durum.get(b.id) === "acik"));

  // yol basina uctan uca: bir yolun her bacagi sifreliyse yol kanitli sayilir.
  const yolSatir = (ad, d) => {
    const l = YOL[ad].map(bul);
    const say = (x) => l.filter((b) => d(b) === x).length;
    console.log(yz([ad, l.length, say("sifreli"), say("acik"), say("bilinmiyor"),
      say("bilinmiyor") === 0 && say("acik") === 0 ? "kanitli" : "hayir",
      top(l.filter((b) => d(b) !== "sifreli"), (b) => b.istek)]));
  };
  console.log("\n" + yz(["yol (zorlamadan once)", "bacak", "sifreli", "acik", "bilinmiyor",
    "uctan uca", "kanitsiz(bin)"]));
  for (const ad of Object.keys(YOL)) yolSatir(ad, (b) => b.durum);
  console.log("\n" + yz(["yol (uc asama sonrasi)", "bacak", "sifreli", "acik", "bilinmiyor",
    "uctan uca", "kanitsiz(bin)"]));
  for (const ad of Object.keys(YOL)) yolSatir(ad, (b) => durum.get(b.id));
}
```

```
model: 16 bacak, 6 yol, 38372 bin istek/gun (kurgu)

ag turu                     bacak  sifreli      acik  bilinmiyor      istemci     istek(bin)
genel                           4        2         2           0          368           5137
ozel-hat                        1        0         1           0           28             70
saglayici-ici                  11        1         6           4          114          33165

asama                       bacak yap.kal.   kirilan  istek(bin)   kalan acik     bilinmiyor
0. uyari modu                   0        0         0           0            9              4
1. genel                        2        5        57        5080            7              4
2. ozel-hat                     1        2        11          70            6              4
3. saglayici-ici                6       16        11       22505            0              4

yol (zorlamadan once)       bacak  sifreli      acik  bilinmiyor    uctan uca  kanitsiz(bin)
olcum alimi                     4        1         2           1        hayir          11600
ozet uretimi                    3        0         2           1        hayir           6840
gunluk akisi                    3        0         1           2        hayir           9280
fatura ihraci                   3        1         1           1        hayir           2600
yonetim erisimi                 2        1         1           0        hayir             45
is ortagi alimi                 3        0         2           1        hayir           7040

yol (uc asama sonrasi)      bacak  sifreli      acik  bilinmiyor    uctan uca  kanitsiz(bin)
olcum alimi                     4        3         0           1        hayir           4820
ozet uretimi                    3        2         0           1        hayir            640
gunluk akisi                    3        1         0           2        hayir            380
fatura ihraci                   3        2         0           1        hayir            640
yonetim erisimi                 2        2         0           0      kanitli              0
is ortagi alimi                 3        2         0           1        hayir           4820
```

İlk tablo bir kalıbı hemen ele veriyor: genel ağdaki 4 bacağın 2'si şifreli, sağlayıcı içi 11 bacağın
yalnız 1'i. Şifreleme dışarıya bakan yüzde uygulanmış, içeride uygulanmamıştır — gerekçe yazılıdır:
"iç ağ". O gerekçenin taşıdığı hacim sayılıdır: sağlayıcı içi bacaklardan günde 33.165 bin istek
geçiyor, toplamın yüzde seksen altısı.

Aşama tablosu faturayı üçe bölüyor. Genel ağ aşaması ucuzdur — 2 bacak, 5 yapılandırma kalemi — ama
**57 bağlantı kırar**, çünkü kenar cihazların 54'ü ve iş ortağı beslemesinin 3 istemcisi şifreli
aktarımı desteklemiyor. Özel hat aşaması 1 bacak, 2 kalem, 11 kırık. Sağlayıcı içi aşama en
pahalısıdır: 6 bacak, 16 kalem ve günde 22.505 bin isteğin yolu; kırdığı bağlantı ise yalnız 11'dir.
Dağılım sezgiye ters çıkıyor — en çok yapılandırma değiştiren aşama, en az bağlantı kıran aşamadır.

Yol tabloları asıl cümleyi kuruyor. Zorlamadan önce **altı yolun hiçbiri uçtan uca şifreli değil.**
Üç aşamadan sonra da yalnız biri kanıtlı hale geliyor: yönetim erişimi, çünkü geçtiği iki bacak da
doğrulanabilir. Kalan beş yol en az bir "bilinmiyor" bacak taşıdığı için kanıtlanamıyor. Kanıtsız
hacim 11.600'den 4.820 bin isteğe düşüyor ama sıfırlanmıyor; sebebi tek bir bacaktır — ağ geçidiyle
toplayıcı arasındaki sıçrama, ölçüm alımının ve iş ortağı alımının ortak parçası.

## Zorunlu Kılmanın Defteri

```js
// kirilan.mjs — zorunlu kilmanin defteri: kirilan baglanti, kalici kirik, istisna ve kanit bedeli.
import { BACAK, YOL, PENCERE, GECEN } from "./bacak.mjs";

const gen = (B) => (h) => h.map((v, j) => j ? String(v).padStart(B[j]) : String(v).padEnd(B[0]))
  .join("");
const yz = gen([28, 9, 11, 10, 8, 10, 12]);               // kirilan baglanti tablosu
const yk = gen([27, 10, 14, 11, 13, 13, 15]);              // karar tablosu
const SINIR = 2;                                          // kurgu politika: kalici istisna tavani

const top = (l, f) => l.reduce((a, b) => a + f(b), 0);
const ACIK = BACAK.filter((b) => b.durum === "acik");
const BILINMIYOR = BACAK.filter((b) => b.durum === "bilinmiyor");
const kalici = (b) => b.kirilan - b.yuk;

console.log(yz(["kirilan bacak", "istemci", "destekmez", "yukselir", "kalici", "yap.kal.",
  "istek(bin)"]));
for (const b of ACIK.filter((x) => x.kirilan > 0))
  console.log(yz([b.ad, b.istemci, b.kirilan, b.yuk, kalici(b), b.yap, b.istek]));
console.log(yz(["toplam", top(ACIK, (b) => b.istemci), top(ACIK, (b) => b.kirilan),
  top(ACIK, (b) => b.yuk), top(ACIK, kalici), top(ACIK, (b) => b.yap), top(ACIK, (b) => b.istek)]));

// Bir karar: hangi bacaklar zorlanir, hangileri kendi katmaninda sifrelenir, vekil kurulur mu.
const degerlendir = (zorlanan, kendi, vekil) => {
  const d = new Map(BACAK.map((b) => [b.id, b.durum]));
  let kirik = 0, yap = 0;
  for (const b of BACAK) {
    if (zorlanan.has(b.id)) { d.set(b.id, "sifreli"); yap += b.yap; kirik += vekil ? 0 : kalici(b); }
    if (kendi.has(b.id)) { d.set(b.id, "sifreli"); yap += b.kanit; }
  }
  if (vekil) yap += 3 * BACAK.filter((b) => zorlanan.has(b.id) && kalici(b) > 0).length;
  const kanitli = Object.values(YOL)
    .filter((y) => y.every((id) => d.get(id) === "sifreli")).length;
  const kanitsiz = top(BACAK.filter((b) => d.get(b.id) !== "sifreli"), (b) => b.istek);
  return { kirik, yap, kanitli, kanitsiz,
    istisna: BACAK.filter((b) => b.durum === "acik" && !zorlanan.has(b.id)).length };
};

const id = (l) => new Set(l.map((b) => b.id));
const bos = new Set();
const muaf = ACIK.filter((b) => kalici(b) > 0);            // kalici kirik ureten bacaklar
const KARAR = {
  "0 uyari modu": [bos, bos, false],
  "1 zorlama, istisnasiz": [id(ACIK), bos, false],
  "2 zorlama + vekil katman": [id(ACIK), bos, true],
  "3 vekil + kendi sifrelemen": [id(ACIK), id(BILINMIYOR), true],
  "4 zorlama + istisna": [id(ACIK.filter((b) => kalici(b) === 0)), bos, false],
};
console.log("\n" + yk(["karar", "zorlanan", "kalici kirik", "muaf acik", "kanitli yol", "ek yap.kal.",
  "kanitsiz(bin)"]));
for (const [ad, [z, k, v]] of Object.entries(KARAR)) {
  const s = degerlendir(z, k, v);
  console.log(yk([ad, z.size, s.kirik, s.istisna, `${s.kanitli}/${Object.keys(YOL).length}`,
    s.yap, s.kanitsiz]));
}

const acikIstek = top(ACIK, (b) => b.istek);
console.log(`\ngecis penceresi: ${PENCERE} gun, ${GECEN} gun gecti, ${PENCERE - GECEN} gun kaldi; ` +
  `uyari modunda gecen surede ${acikIstek * GECEN} bin istek acik bacaktan gecti`);
console.log(`kalici istisna siniri ${SINIR} bacak (kurgu politika); istenen ${muaf.length}, ` +
  `${muaf.length - SINIR} bacak sinirin disinda`);
console.log(`istemci yukseltmesi: ${top(ACIK, (b) => b.yuk)} istemci, ` +
  `${ACIK.filter((b) => b.yuk > 0).length} bacakta; geri kalan ${top(ACIK, kalici)} istemci ` +
  `yukseltilemiyor`);
console.log(`\nbilinmiyor kalemi: ${BILINMIYOR.length} bacak, ` +
  `${top(BILINMIYOR, (b) => b.istek)} bin istek/gun, kanit bedeli ` +
  `${top(BILINMIYOR, (b) => b.kanit)} yapilandirma kalemi`);
for (const b of BILINMIYOR)
  console.log(`  ${b.ad.padEnd(26)} ${String(b.istek).padStart(6)} bin/gun, ` +
    `kanit ${b.kanit} kalem, varsayim: saglayici ici tasima sifreli`);
```

```
kirilan bacak                 istemci  destekmez  yukselir  kalici  yap.kal.  istek(bin)
kenar cihaz -> alim ucu           340         54        38      16         3        4820
toplayici -> kuyruk                12          2         2       0         2        3100
isleyici -> onbellek                9          9         0       9         2        5400
is ortagi beslemesi -> alim         7          3         1       2         2         260
olcum agi bakim kanali             28         11         4       7         2          70
toplam                            458         79        45      34        23       27655

karar                        zorlanan  kalici kirik  muaf acik  kanitli yol  ek yap.kal.  kanitsiz(bin)
0 uyari modu                        0             0          9          0/6            0          33495
1 zorlama, istisnasiz               9            34          0          1/6           23           5840
2 zorlama + vekil katman            9             0          0          1/6           35           5840
3 vekil + kendi sifrelemen          9             0          0          6/6           46              0
4 zorlama + istisna                 5             0          4          1/6           14          16390

gecis penceresi: 90 gun, 61 gun gecti, 29 gun kaldi; uyari modunda gecen surede 1686955 bin istek acik bacaktan gecti
kalici istisna siniri 2 bacak (kurgu politika); istenen 4, 2 bacak sinirin disinda
istemci yukseltmesi: 45 istemci, 4 bacakta; geri kalan 34 istemci yukseltilemiyor

bilinmiyor kalemi: 4 bacak, 5840 bin istek/gun, kanit bedeli 11 yapilandirma kalemi
  ag gecidi -> toplayici       4820 bin/gun, kanit 4 kalem, varsayim: saglayici ici tasima sifreli
  isleyici -> nesne deposu      640 bin/gun, kanit 3 kalem, varsayim: saglayici ici tasima sifreli
  gunluk toplayici -> arsiv     190 bin/gun, kanit 2 kalem, varsayim: saglayici ici tasima sifreli
  arsiv -> ikincil bolge        190 bin/gun, kanit 2 kalem, varsayim: saglayici ici tasima sifreli
```

Kırılan bağlantı tablosu tek bir sayıyı ayırıyor: 79 istemci şifreli aktarımı desteklemiyor, 45'i
yükseltilebiliyor ve **34'ü yükseltilemiyor**. En sert satır önbellek bacağıdır: 9 istemcinin 9'u da
desteklemiyor, hiçbiri yükseltilemiyor ve o bacak günde 5.400 bin istek taşıyor. İkincisi kenar
cihazlarıdır: 54 cihazın 16'sı sahada duran, yazılımı değişmeyen donanım.

Karar tablosu beş yolu yan yana koyuyor. Uyarı modu hiçbir şey kırmaz ve hiçbir şeyi kanıtlamaz; 61
günde açık bacaklardan 1.686.955 bin istek geçmiştir ve bu geriye dönük kapatılamaz. İstisnasız
zorlama 23 kalem değiştirir ve 34 bağlantıyı kalıcı koparır. Vekil katman kırığı sıfırlar, 12 kalem
ekler: 35. Bu üç kararın hiçbiri kanıtlı yolu 1/6'nın üstüne çıkarmaz; çıkaran tek satır
dördüncüsüdür — "bilinmiyor" bacakları kendi katmanında şifrelemek 11 kalem daha ekler, toplam 46
olur ve **6/6 yol kanıtlı** hale gelir.

Son karar tersini gösteriyor: kalıcı kırık üreten 4 bacağı muaf tutmak yükü 14 kaleme indirir ve
hiçbir bağlantı kırmaz, ama kanıtsız hacim 16.390 bin istek/güne çıkar. Kurgu politika 2 kalıcı
istisna tanıyor; istenen 4'tür ve **2 bacak sınırın dışındadır.** Geçiş penceresinin 90 gününün 61'i
geçti, **29 gün kaldı.**

Dört "bilinmiyor" bacağın her birinin yanında aynı cümle var: varsayım, sağlayıcı içi taşımanın
şifreli olduğudur. Günde 5.840 bin istek taşıyorlar ve durumları kiracının hiçbir yapılandırmasından
okunmuyor. Bilinmemek, açık olmakla aynı şey değildir ama **kanıtlanabilir olmakla da aynı şey
değildir.**

## Özet

- 16 bacağın 3'ü şifreli, 9'u açık, 4'ünün durumu bilinmiyor; sağlayıcı içi 11 bacağın yalnız 1'i
  şifreli ve o bacaklardan günde 33.165 bin istek geçiyor.
- Üç aşamalı zorlama 23 kalem değiştiriyor; en pahalı aşama (sağlayıcı içi, 16 kalem) en az bağlantı
  kırandır (11), en ucuz aşama 57 bağlantı kırar.
- 79 istemci şifreli aktarımı desteklemiyor; 45'i yükseltilebiliyor, 34'ü yükseltilemiyor ve vekil
  katman bu 34'ü kurtarırken 12 kalem ekliyor.
- Zorlamadan önce hiçbir yol uçtan uca şifreli değil; üç aşamadan sonra 1/6, kendi katmanında
  şifreleme eklenince 6/6 ve kanıtsız hacim 33.495'ten sıfıra iner.
- Muafiyet yolu yükü 14 kaleme indiriyor, kanıtsız hacmi 16.390 bin istek/güne çıkarıyor; kurgu
  politika 2 istisna tanıyor, 2 bacak sınırın dışında. Geçiş penceresinden 29 gün kaldı.

## Sonraki Adım

Veri beklemede ve aktarımda şifreli hale getirildi. İkisi de aynı şeye dayanıyor: bir anahtar ya da
kimlik bilgisi bir yerde saklanıyor ve servisler onu okuyor. Bir sonraki ders o saklama katmanına
döner ve tek bir soruyu ölçer: sır döndürüldüğünde eski ile yeni değerin birlikte geçerli olduğu
**pencere** ne kadar olmalı — kısa pencere kaç istemciyi kaçırıyor, uzun pencere sızıntı süresini ne
kadar uzatıyor.
