İçeriğe geç
academia.sh

Ders 18 / 20

Sahte Erişim Noktaları

İstemcinin bir ağı seçerken baktığı sekiz işaretin altısı bağlantıdan önce görülür ve hiçbirinin kanıtı yoktur. Sekiz kayıtlı profilde ikiz erişim noktasına giden dört yol açık, üçü kısmi açıktır; güven kökü sabitleme, kullanılmayan profilin silinmesi ve otomatik bağlanmanın kapatılması açık yolu sıfıra indirir, kısmi iki yol ancak dört bin iki yüz doksan iki aygıtı dışarıda bırakan bir kuşak zorunluluğuyla kapanır.

İçindekiler

Bir önceki ders kurumsal modun eklediği iddiayı buldu ve tabloda tek bir satırı açık bıraktı: istemcinin karşı tarafın kim olduğunu doğrulayıp doğrulamadığı. Aynı satırın kişisel mod karşılığı da vardı ve ilk dersin tablosunda ağ adı iddiası dört kuşakta da kanıtsızdı.

Bu boşluk ikiz erişim noktasının yaşadığı yerdir. Sahte bir erişim noktası kurmak, kurumun kullandığı adı bildiren ve daha güçlü bir sinyalle görünen bir cihaz çalıştırmaktır. Ders bu tekniğin nasıl kurulduğunu değil, istemcinin neye bakarak karar verdiğini ve karşılıklı doğrulamanın kaç yolu kapattığını ölçer.

  • KG13. İşaret, istemcinin bir ağı seçerken kullandığı veridir. Üç kaynağı olabilir: karşı tarafın bildirimi, istemcinin kendi ölçümü, ya da bir güven köküne bağlanabilen imzalı kanıt.
  • KG14. Yol, kayıtlı bir istemci profilinin ikiz bir erişim noktasıyla eşleşmesidir. Üç sonucu vardır: açık (istemci bağlanır ya da kimlik bilgisini sunar), kısmi (bağlantı tamamlanmaz ama el sıkışma mesajları dışarı çıkar), kapalı (istemci karşı tarafı reddeder).
  • KG15. İkiz erişim noktası ağın adını, kanalını ve güvenlik göstergesini olduğu gibi bildirir ve daha güçlü sinyalle görünür. Ortak sırrı ya da kurumun kimlik sunucusunun kimliğini bilmez.
  • KG16. Profil listesi kurgudur; her profilin kaç aygıtta kayıtlı olduğu model değeridir. Aynı aygıt birden çok profil taşıyabilir, o yüzden profil taşıyan aygıt toplamı aygıt sayısından büyüktür.
  • KG17. Aygıt başına elle yapılandırma dört dakika, açık ağda günlük elle onay iki kezdir; ikisi de model sabitidir.

İstemci Neye Bakıyor

Bir aygıt bir ağı seçtiğinde elinde ne olduğu tek tek sayılabilir.

// ikiz.mjs — istemcinin bir agi secerken baktigi isaretler ve kayitli profiller (model).
// Kurgu bolgesel olcum agi; gercek ag adi, gercek konum ve gercek donanim adresi yazilmiyor.
// [isaret, kaynak, istemcinin dogrulayabildigi mi]
export const ISARET = [
  ['ag adi', 'karsi tarafin bildirimi', false],
  ['sinyal gucu', 'istemcinin kendi olcumu', false],
  ['kanal', 'karsi tarafin bildirimi', false],
  ['donanim adresi', 'sifrelenmemis baslik alani', false],
  ['guvenlik gostergesi', 'karsi tarafin bildirimi', false],
  ['yetenek bildirimleri', 'karsi tarafin bildirimi', false],
  ['kimlik sunucusunun sundugu kimlik', 'imzali, guven kokune baglanabilir', true],
  ['ortak sirdan turetilen dogrulama', 'iki tarafin da bildigi gizli deger', true],
];
// Kayitli istemci profilleri: [profil, mod, sunucu kimligi dogrulaniyor mu, otomatik baglanma,
//  bu profili tasiyan aygit]
export const PROFIL = [
  ['sube-agi', 'kurumsal', true, true, 210],
  ['saha-agi', 'kurumsal', false, true, 183],
  ['toplayici-agi', 'kisisel', false, true, 4100],
  ['bakim-agi', 'kisisel', false, true, 9],
  ['konuk-agi', 'acik', false, true, 222],
  ['eski-saha-agi', 'kisisel', false, true, 183],
  ['ortak-calisma-alani', 'acik', false, true, 219],
  ['konferans-salonu', 'acik', false, true, 47],
];
// Ikiz erisim noktasi ayni adi, ayni kanali ve daha guclu sinyali bildirir. Sonuc:
// 'acik' = istemci baglanir ya da kimlik bilgisini sunar, 'kismi' = baglanti tamamlanmaz
// ama el sikisma mesajlari disari cikar, 'kapali' = istemci karsi tarafi reddeder.
export function sonuc([ad, mod, dogrulanir], d) {
  if (d.otomatikKapali.has(ad)) return 'kapali';   // kullanici onayi olmadan baglanmaz
  if (mod === 'acik') return 'acik';
  if (mod === 'kurumsal') return (dogrulanir || d.sabitlenmis) ? 'kapali' : 'acik';
  return d.kusak4 ? 'kapali' : 'kismi';            // kisisel mod: ortak sir karsilikli dogrular
}
// kosum1.mjs — istemci bir agin kimligini neye bakarak kabul ediyor
import { ISARET, PROFIL } from './ikiz.mjs';

const E = [36, 40, 12];
const yaz = (h) => h.map((d, i) => String(d)[i ? 'padStart' : 'padEnd'](E[i])).join('');
console.log(yaz(['isaret', 'kaynagi', 'kanit mi']));
for (const [ad, kaynak, k] of ISARET) console.log(yaz([ad, kaynak, k ? 'evet' : 'hayir']));
const kanit = ISARET.filter(([, , k]) => k).length;
console.log(`\nbaglantidan once gorulen isaret ${ISARET.length - kanit}, kaniti olan 0`);
console.log(`kanit tasiyan isaret ${kanit}; ikisi de baglanti kurulurken ortaya cikar`);
const A = [22, 12, 22, 14, 10];
const yaz2 = (h) => h.map((d, i) => String(d)[i ? 'padStart' : 'padEnd'](A[i])).join('');
console.log('\n' + yaz2(['profil', 'mod', 'sunucu dogrulanir', 'otomatik', 'aygit']));
for (const [ad, mod, d, o, n] of PROFIL)
  console.log(yaz2([ad, mod, d ? 'evet' : 'hayir', o ? 'evet' : 'hayir', n]));
console.log(`\nprofil ${PROFIL.length}, profil tasiyan aygit ` +
  `${PROFIL.reduce((s, p) => s + p[4], 0)}`);
isaret                                                               kaynagi    kanit mi
ag adi                                               karsi tarafin bildirimi       hayir
sinyal gucu                                          istemcinin kendi olcumu       hayir
kanal                                                karsi tarafin bildirimi       hayir
donanim adresi                                    sifrelenmemis baslik alani       hayir
guvenlik gostergesi                                  karsi tarafin bildirimi       hayir
yetenek bildirimleri                                 karsi tarafin bildirimi       hayir
kimlik sunucusunun sundugu kimlik          imzali, guven kokune baglanabilir        evet
ortak sirdan turetilen dogrulama          iki tarafin da bildigi gizli deger        evet

baglantidan once gorulen isaret 6, kaniti olan 0
kanit tasiyan isaret 2; ikisi de baglanti kurulurken ortaya cikar

profil                         mod     sunucu dogrulanir      otomatik     aygit
sube-agi                  kurumsal                  evet          evet       210
saha-agi                  kurumsal                 hayir          evet       183
toplayici-agi              kisisel                 hayir          evet      4100
bakim-agi                  kisisel                 hayir          evet         9
konuk-agi                     acik                 hayir          evet       222
eski-saha-agi              kisisel                 hayir          evet       183
ortak-calisma-alani           acik                 hayir          evet       219
konferans-salonu              acik                 hayir          evet        47

profil 8, profil tasiyan aygit 5173

İlk tablonun ikinci sütunu bu dersin bütün noktasıdır. İstemcinin bağlanmadan önce gördüğü altı işaretin dördü karşı tarafın kendi hakkındaki bildirimidir, biri istemcinin kendi ölçümüdür, biri de şifrelenmemiş bir başlık alanıdır. Hiçbirinin kanıtı yoktur.

Sinyal gücü özel bir yerde durur, çünkü tek “kendi ölçümü” satırıdır ve bu onu güvenilir göstermez. İstemci genellikle aynı adı bildiren adaylardan en güçlü sinyalliyi seçer. Bu bir açık değil, tasarım kararıdır — hareket eden bir aygıtın erişim noktaları arasında geçiş yapabilmesi için gerekir. Ama seçim ölçütü olarak sinyal gücü, karşı tarafın tek bir donanım ayarıyla artırdığı bir değerdir; kendi ölçümü olması onu kanıt yapmaz.

Kanıt taşıyan iki işaret vardır ve ikisi de bağlantıdan sonra ortaya çıkar. Ortak sırdan türetilen doğrulama kişisel modda, imzalı kimlik ise kurumsal modda devreye girer. Seçim anında kullanılabilecek bir kanıt yoktur; seçim her zaman kanıtsız işaretlerle yapılır ve kanıt ancak istemci karşı tarafla konuşmaya başladıktan sonra istenir.

İkinci tablo bu boşluğun kurumdaki karşılığını gösteriyor. Sekiz kayıtlı profil var ve hepsinde otomatik bağlanma açık. İki tanesi kurumun ağı değil: ortak çalışma alanı ve konferans salonu profilleri, çalışanların dışarıda bağlandığı açık ağlardır ve aygıtın profil listesinde kalmıştır. Bir tanesi de artık kullanılmayan bir kurum ağıdır.

Son satırdaki beş bin yüz yetmiş üç sayısı bir aygıt sayısı değil, profil taşıyan aygıt sayısıdır: bir şube dizüstü aynı anda şube ağını, konuk ağını ve iki dış ağı kayıtlı tutar. Ölçünün yolu bu yüzden aygıt değil profildir. Bir aygıtın kaç yola açık olduğu, kaç ağa bağlandığıyla değil, geçmişte kaç ağa bağlanmış olduğuyla belirlenir; profil listesi silinene kadar büyümeye devam eden tek kalemdir.

Karşılıklı Doğrulamanın Kapattığı Yol

Sekiz profilin her biri bir yoldur. Aşağıdaki koşum savunmaları üst üste ekleyip her adımda açık, kısmi ve kapalı yol sayısını çıkarıyor.

// kosum2.mjs — karsilikli dogrulama kac yolu kapatiyor, kaci acik kaliyor, bedeli ne
import { PROFIL, sonuc } from './ikiz.mjs';

const BOS = new Set();
const KULLANILMAYAN = new Set(['eski-saha-agi', 'konferans-salonu']);
const ACIK_AGLAR = new Set(PROFIL.filter((p) => p[1] === 'acik').map((p) => p[0]));
const HEPSI = new Set([...KULLANILMAYAN, ...ACIK_AGLAR]);
const SAVUNMA = [
  ['taban (hicbiri)', { sabitlenmis: false, kusak4: false, otomatikKapali: BOS }],
  ['guven koku sabitlenir', { sabitlenmis: true, kusak4: false, otomatikKapali: BOS }],
  ['kullanilmayan profil silinir', { sabitlenmis: true, kusak4: false,
    otomatikKapali: KULLANILMAYAN }],
  ['acik agda otomatik baglanma kapali', { sabitlenmis: true, kusak4: false,
    otomatikKapali: HEPSI }],
  ['eszamanli kimlik dogrulama kusagi', { sabitlenmis: true, kusak4: true,
    otomatikKapali: HEPSI }],
];
const E = [37, 7, 8, 9, 12, 13];
const yaz = (h) => h.map((d, i) => String(d)[i ? 'padStart' : 'padEnd'](E[i])).join('');
console.log(yaz(['savunma (ust uste eklenir)', 'acik', 'kismi', 'kapali', 'acik aygit',
  'kismi aygit']));
const sonuclar = SAVUNMA.map(([ad, d]) => {
  const r = PROFIL.map((p) => [p, sonuc(p, d)]);
  const n = (t) => r.filter(([, s]) => s === t).length;
  const a = (t) => r.filter(([, s]) => s === t).reduce((s, [p]) => s + p[4], 0);
  console.log(yaz([ad, n('acik'), n('kismi'), n('kapali'), a('acik'), a('kismi')]));
  return r;
});
const P = [22, 10, 10, 10];
const yaz2 = (h) => h.map((d, i) => String(d)[i ? 'padStart' : 'padEnd'](P[i])).join('');
console.log('\n' + yaz2(['profil', 'taban', 'sabitleme', 'hepsi']));
PROFIL.forEach((p, i) => console.log(yaz2([p[0], sonuclar[0][i][1], sonuclar[1][i][1],
  sonuclar.at(-1)[i][1]])));

// Bedel: her savunmanin dokundugu aygit ve kesilen mesru is (model sabitleri).
const ELLE = 4, ONAY = 2;             // aygit basina dakika, gunluk elle onay sayisi
const kurumsal = PROFIL.filter((p) => p[1] === 'kurumsal').reduce((s, p) => s + p[4], 0);
const silinen = PROFIL.filter((p) => KULLANILMAYAN.has(p[0])).reduce((s, p) => s + p[4], 0);
const acikAygit = PROFIL.filter((p) => ACIK_AGLAR.has(p[0])).reduce((s, p) => s + p[4], 0);
const kisisel = PROFIL.filter((p) => p[1] === 'kisisel').reduce((s, p) => s + p[4], 0);
console.log(`\nbedel:`);
console.log(`  guven koku sabitleme   ${kurumsal} aygitta profil, ${kurumsal * ELLE} dk`);
console.log(`  profil silme           ${silinen} aygitta dokunus, ${silinen * ELLE} dk`);
console.log(`  otomatik baglanma      ${acikAygit} aygit, gunde ${acikAygit * ONAY} elle onay`);
console.log(`  ust kusak zorunlulugu  ${kisisel} aygit disarida kalir`);
savunma (ust uste eklenir)              acik   kismi   kapali  acik aygit  kismi aygit
taban (hicbiri)                            4       3        1         671         4292
guven koku sabitlenir                      3       3        2         488         4292
kullanilmayan profil silinir               2       2        4         441         4109
acik agda otomatik baglanma kapali         0       2        6           0         4109
eszamanli kimlik dogrulama kusagi          0       0        8           0            0

profil                     taban sabitleme     hepsi
sube-agi                  kapali    kapali    kapali
saha-agi                    acik    kapali    kapali
toplayici-agi              kismi     kismi    kapali
bakim-agi                  kismi     kismi    kapali
konuk-agi                   acik      acik    kapali
eski-saha-agi              kismi     kismi    kapali
ortak-calisma-alani         acik      acik    kapali
konferans-salonu            acik      acik    kapali

bedel:
  guven koku sabitleme   393 aygitta profil, 1572 dk
  profil silme           230 aygitta dokunus, 920 dk
  otomatik baglanma      488 aygit, gunde 976 elle onay
  ust kusak zorunlulugu  4292 aygit disarida kalir

Taban satırında sekiz yoldan yalnız biri kapalı: güven kökü sabitlenmiş kurumsal profil. Dört yol açık, üçü kısmi açık. Bu, tabloyu okumadan verilecek yanıtın tersidir — kurumun ağlarının çoğu şifrelidir, ama şifreleme ikiz erişim noktasına giden yolu kapatmaz.

Kısmi sonuç kişisel modun tam olarak ne yaptığını gösteriyor. Ortak sır iki tarafça bilindiği için sırrı bilmeyen bir erişim noktası bağlantıyı tamamlayamaz; istemci reddeder. Ama istemci bunu ancak el sıkışmayı başlattıktan sonra anlar ve o mesajlar dışarı çıkmış olur. İlk dersin tablosunda çevrimdışı denemeye kanıt bulunmayan üç kuşak için bu, bağlantı kurulmasa bile kaydedilmiş bir el sıkışma anlamına gelir. Kişisel mod yolu kapatır, izi kapatmaz.

Sabitleme satırı bir yol kapatıyor: doğrulama yapmayan kurumsal profil. Etkilenen aygıt yüz seksen üçtür ve bu, ikinci dersin açık bıraktığı tek satırın karşılığıdır. Kurumsal moda geçmiş ama sunucu kimliğini doğrulamayan bir profil, kişisel moddan daha kötü durumdadır: kişisel modda sonuç kısmi iken burada açıktır, çünkü istemci kimliğini karşı tarafa sunar.

Kullanılmayan profilin silinmesi iki yol daha kapatıyor ve bunun bir savunma teknolojisiyle ilgisi yoktur. Eski saha ağı ve konferans salonu profilleri, artık var olmayan ağların adlarını istemcide tutuyordu; var olmayan bir ağın adı, o adı bildiren herkesin ağı demektir. Bu iki satır bütün tabloda bedeli en düşük olan savunmadır: dokuz yüz yirmi dakikalık bir temizlik, yeni bir altyapı kalemi getirmiyor ve hiçbir meşru bağlantıyı kesmiyor, çünkü kesilecek meşru bağlantı zaten yok. Kapatılan yolun ucuz olması, onu en sık atlanan savunma yapıyor — envanterde görünmeyen bir kalem bakım listesine de girmez.

Sıfıra İnen Yol ve Ödenen Bedel

Dördüncü satır açık yolu sıfıra indiriyor. Açık ağlarda otomatik bağlanmanın kapatılması dört yüz seksen sekiz aygıtı ilgilendiriyor ve günde dokuz yüz yetmiş altı elle onay ekliyor. Yolu kapatan şey bir doğrulama değil, kararın kullanıcıya devredilmesidir; bu, savunmanın bedelinin en görünür olduğu satırdır çünkü bedel her gün ödenir.

Kısmi iki yol ancak son satırda kapanıyor ve bedeli dört bin iki yüz doksan iki aygıttır. İlk dersin envanter tablosu bu sayının nereden geldiğini söylüyor: kişisel modda kalan aygıtların neredeyse tamamı en üst kuşağı desteklemiyor. Son satır bu yüzden ölçülebilir ama seçilebilir değildir; kısmi iki yol pratikte açık kalır.

Toplam bedel dört kalemde toplanıyor: iki bin dört yüz doksan iki dakikalık bir kerelik yapılandırma, günde dokuz yüz yetmiş altı elle onay ve dört bin iki yüz doksan iki aygıtlık bir yenileme. İlk üç savunma bir kerelik ve ucuzdur; dördüncüsü süreklidir; beşincisi bütçe kararıdır.

Modelin görmediği bir şey var. Tablo istemcinin kayıtlı bir profille eşleşmesini sayıyor; kayıtlı olmayan bir ada bağlanmayı hiç saymıyor. Bir kullanıcı elle bir ağ seçtiğinde sabitlenmiş güven kökü hâlâ çalışır, ama açık bir ağ seçtiğinde hiçbir savunma devrede değildir. Sekiz yolun sıfıra inmesi, bu ağdaki kayıtlı profillerin sıfıra indiği anlamına gelir; istemcinin tercih edebileceği yolların sıfıra indiği anlamına gelmez.

Özet

  • İstemcinin bağlantıdan önce gördüğü altı işaretin hiçbirinin kanıtı yok: dördü karşı tarafın bildirimi, biri kendi ölçümü, biri şifrelenmemiş başlık alanı. Kanıt taşıyan iki işaret de ancak bağlantı kurulurken ortaya çıkıyor.
  • Sekiz kayıtlı profilden tabanda yalnız biri kapalı; dördü açık, üçü kısmi açık. Şifreleme kuşağı ikiz erişim noktasına giden yolu tek başına kapatmıyor.
  • Kişisel mod bağlantıyı tamamlatmıyor ama el sıkışma mesajları dışarı çıkıyor; kurumsal moda geçip sunucu kimliğini doğrulamayan profil ise kişisel moddan daha kötü durumda, çünkü kimlik bilgisini karşı tarafa sunuyor.
  • Güven kökü sabitleme, kullanılmayan profilin silinmesi ve açık ağda otomatik bağlanmanın kapatılması açık yolu 4’ten 0’a indiriyor; bedeli 2.492 dakikalık yapılandırma ve günde 976 elle onay.
  • Kısmi iki yol ancak en üst kuşak zorunlu tutulduğunda kapanıyor ve bedeli 4.292 aygıttır; bu yüzden ölçülebilir ama uygulanabilir bir seçenek değildir.

Sonraki Adım

Bu dersin bütün ölçümü bir varsayıma dayanıyordu: istemcinin bağlantısını kendi isteğiyle kuruyor olması. Sekiz profilin altısı kapandığında istemci zaten bağlı olduğu ağda kalır ve sahte adayı hiç görmez. Ama bir istemcinin bağlı kalması, o bağlantıyı ayakta tutan mesajların da doğrulanmasını gerektirir. Veri çerçeveleri şifrelidir ve bütünlük kanıtı taşır; bağlantıyı kuran, sürdüren ve sonlandıran çerçeveler ise ayrı bir sınıftandır. Sonraki dersin sorusu budur: bir kablosuz bağlantıda hangi çerçeve türü bütünlük kanıtı taşıyor, hangisi taşımıyor, koruma açıldığında kaç çerçeve türü kanıta bağlanıyor ve savunmanın hangi sayacında sapma görünü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