İçeriğe geç

2.2 · Seviye 0 · Dijital Dünyanın Temelleri

Bitler ve baytlar

ikili sistem, metin ve dosyaların sayıyla temsili, onaltılık gösterim

Siber Güvenlik Akademisi — M02, Bilgisayar Nasıl Çalışır · 1.987 kelime · 4 saha durumu · ≈ 9 dk okuma · 13 dk dinleme

Saha durumlarındaki kişiler ve kurumlar kurgusaldır; kaynaklar gerçektir. Bu akademi savunma odaklıdır: saldırılar mekanizma düzeyinde anlatılır, adım adım saldırı tarifi verilmez. Uygulamalar yalnız kendi cihazında, kendi hesabında ya da yalıtılmış bir laboratuvarda yapılır; başkasının sistemine izinsiz erişim suçtur. Dersler hukuki danışmanlığın yerini tutmaz.

Açılış

Kaan'ın ekranına bir e-posta uyarısı düştü. Bir çalışana "Fatura_Eylul.pdf" adlı bir ek gelmişti ve şirketin e-posta güvenlik sistemi eki karantinaya almıştı. Kaan uyarının ayrıntısını açtığında dosyanın adının altında anlamını bilmediği bir satır gördü: ilk baytlar 4D 5A 90 00.

Gülay Hanım yanına gelip satırı gösterdi. Bunlar dosyanın içindeki ilk dört sayıydı ve onaltılık gösterimle yazılmışlardı. İlk iki sayı, 4D ve 5A, harf olarak okununca "MZ" ediyordu ve Windows'ta çalıştırılabilir programların neredeyse hepsi bu iki harfle başlıyordu. Bir PDF dosyası ise "%PDF" ile başlardı. Dosyanın adı fatura diyordu; baytları program diyordu.

Kaan o gün bir şeyi öğrendi: bilgisayar dosyanın adına inanmaz, içindeki sayıları okur. Güvenlik işi de çoğu zaman o sayıları okuyabilmekle başlar. Bu ders o sayıların dilini öğretiyor.

Tek fikir

Bilgisayardaki her şey, metin, fotoğraf, program ve parola, sıfır ve birlerden oluşan sayılardır. Bu sayıları okumayı öğrenmek, bir dosyanın adının, bir karakterin görünüşünün ya da bir ekranın söylediğinin ötesine bakmanı sağlar.

Nasıl çalışır

Modülün ilk dersi veriyi nerede durduğuna göre ayırdı: işlemcide, bellekte, depolamada. Şimdi verinin ne olduğuna bakıyoruz. Bilgisayarın donanımı elektrik sinyalleriyle çalışır ve en basit sinyal iki durum ayırır: var ya da yok, açık ya da kapalı. Bu iki durum bir ve sıfır olarak yazılır.

Tek bir bit iki durumu ayırabilir. İki bit dört durumu: sıfır sıfır, sıfır bir, bir sıfır, bir bir. Her yeni bit olasılıkları ikiye katlar; sekiz bitlik bir bayt iki yüz elli altı farklı değer taşıyabilir, sıfırdan iki yüz elli beşe kadar. Bu, ikili sistemdir: onluk sistemde her basamak on kat değer taşırken ikili sistemde her basamak iki kat taşır.

Sayıların sınırı güvenlik açısından önemlidir. Bir değeri tek bir baytta tutan bir program, iki yüz elli beşin üstüne çıkamaz; o sayıya bir eklendiğinde değer çoğu zaman sıfıra döner, tıpkı eski bir kilometre sayacının en sona geldiğinde başa dönmesi gibi. Programcı bu sınırı hesaba katmamışsa ortaya beklenmedik davranışlar ve bazen zafiyetler çıkar. Bunu modülün altıncı dersinde, bir hatanın nasıl zafiyete dönüştüğünü anlatırken yeniden göreceğiz.

İkili sayılar uzundur ve okunması zordur. Bu yüzden güvenlik araçları baytları başka bir gösterimle yazar.

Onaltılık gösterim her yerde karşına çıkacak. Bir ağ kartının donanım adresi, bir renk kodu, bir dosyanın ilk baytları ve bir indirme sayfasında yayımlanan özet değeri hep bu gösterimle yazılır. Özet değerini kriptografi seviyesinde ayrıntılı göreceğiz; şimdilik bilmen gereken, bir dosyanın parmak izi gibi çalışan ve onaltılık rakamlarla yazılan uzun bir sayı olduğudur. Dosyada tek bir bit değişirse bu sayı bambaşka olur.

Peki sayılar nasıl metne dönüşür? Bir tabloyla.

Metnin sayılarla yazılması iki güvenlik sorununu doğurur. Birincisi kodlama uyuşmazlığıdır: bir program metni yazıldığı kodlamadan farklı bir kodlamayla okursa harfler bozulur. İkincisi daha sinsidir: farklı alfabelerdeki bazı harfler ekranda birbirinin aynısı görünür ama sayıları farklıdır.

Alan adlarında bu sorunun bir de gösterim tarafı var. İnternetin alan adı sistemi tarihsel olarak yalnız Latin harfleri, rakamları ve tireyi kabul eder. Türkçe karakterli ya da başka alfabedeki alan adları bu yüzden özel bir kodlamayla, "xn" ve iki tireyle başlayan bir Latin harf dizisine çevrilir.

Sahada

Savunma

Bu dersin savunması, görünene değil sayılara güvenmektir.

Dosyalar için bu, dosyanın türüne adından değil içeriğinden karar vermek demektir. Kurumlarda e-posta ve web güvenlik sistemleri ekleri ve indirmeleri ilk baytlarına göre sınıflandırır; adı belge, içi program olan bir dosya en güçlü şüphe işaretlerinden biridir. Kişisel kullanımda bunun karşılığı, beklemediğin bir eki açmamak ve dosya uzantılarını gizleyen ayarı kapatmaktır; bu ayarı modülün sonraki dersinde ele alacağız.

İndirilen yazılımlar için savunma, yayımlanan özet değerini doğrulamaktır. Pek çok yazılım üreticisi indirme sayfasında dosyanın özet değerini yayımlar. Dosyanın özetini kendi bilgisayarında hesaplayıp karşılaştırmak, dosyanın yolda bozulmadığını ya da değiştirilmediğini gösterir. Bu kontrolün bir sınırı da vardır: saldırgan hem dosyayı hem sitedeki değeri değiştirebiliyorsa karşılaştırma bunu yakalamaz. Daha güçlü korumayı dijital imzalar sağlar; onu kriptografi seviyesinde göreceğiz.

Adlar için savunma, benzer görünen karakterlere karşı sistem düzeyinde önlem almaktır. Kullanıcı adı, mağaza adı ya da alan adı kaydeden her sistem, karışık alfabeli adları sınırlayabilir ve resmî adlara benzeyenleri reddedebilir. Selin'in ekibinin yaptığı budur. Tarayıcılar da benzer bir mantıkla şüpheli alan adlarını kodlanmış hâlde gösterir; bu yüzden adres çubuğunda "xn" ile başlayan beklenmedik bir ad görürsen dikkatle bak.

Son olarak kodlama sorunları için savunma tutarlılıktır. Bir sistemin her parçası aynı kodlamayı kullandığında veri bozulmaz; bozulduğunda ise bu, bir saldırı değil ama bir uyarıdır. Kodlama uyuşmazlıkları bazen güvenlik kontrollerinin bir metni bir türlü, uygulamanın başka türlü okumasına yol açar ve zafiyetler bu boşluktan doğabilir.

Uygulama

Bu uygulamada kendi bilgisayarında bir dosyanın özet değerini hesaplayıp yayımlanan değerle karşılaştıracaksın. Bütün adımlar yalnız senin bilgisayarında, senin indirdiğin bir dosya üzerinde yapılır.

Merak edersen bir şey daha dene: kendi doğum yılını ikili ve onaltılık gösterime çevir. Bilgisayarındaki hesap makinesinin programcı modu bunu yapar. Bir sayının üç farklı yazılışını yan yana görmek, güvenlik araçlarının çıktılarını okumayı kolaylaştırır.

Defter: Değişiklik ve olay günlüğüne bir satır: hangi dosyanın özetini doğruladığın, sonucun tutup tutmadığı ve kullandığın komut. Envanterdeki yazılımların yanına, üreticisi özet değeri yayımlıyorsa "özet doğrulanabilir" notu.

Hata köşesi

Yaygın yanlış"Dosyanın adı ne diyorsa odur."
Doğrusu

Bilgisayar dosyanın türünü programların çoğu için adından değil içeriğinden anlar; ama sen adına bakarak karar verirsen, adı fatura, içi program olan bir ek seni kandırabilir. Dosyanın ne olduğunu ilk baytları söyler ve güvenlik sistemleri bu yüzden onlara bakar.

Yaygın yanlış"Aynı görünen iki ad aynıdır."
Doğrusu

Ekranda aynı görünen iki ad farklı baytlardan oluşabilir. Unicode güvenlik standardı farklı alfabelerdeki birbirine benzeyen harfleri bu yüzden ayrıca listeler. Bir adın gerçek olduğunu görünüşü değil, onu yazan sistemin doğrulaması gösterir.

Yaygın yanlış"Özet değeri tuttu, dosya kesinlikle güvenli."
Doğrusu

Özetin tutması dosyanın yayımlanan dosyayla aynı olduğunu gösterir, güvenli olduğunu değil. Yayımlanan dosyanın kendisi kötü niyetli olabilir ya da saldırgan hem dosyayı hem sitedeki değeri değiştirmiş olabilir. Özet doğrulaması bütünlüğü kontrol eder; kaynağın güvenilirliğini dijital imzalar ve güvenilir dağıtım kanalları sağlar.

Etik ve sınırlar

Baytları okumayı öğrenmek, bir dosyanın içine bakabilmek demektir ve bu yetenek kimin dosyası olduğuna bakılmaksızın çalışır. Kendi dosyalarını, kendi indirdiklerini ve sana gelen şüpheli bir eki incelemek senin hakkındır. Bir iş yerinde karantinadaki bir eki incelemek ise ancak bu işle yetkilendirilmişsen yapılır; Kaan uyarıyı açabiliyordu çünkü görevi buydu. Bir iş arkadaşının dosyasını, bir müşterinin yüklediği belgeyi ya da bir başkasının cihazındaki veriyi "ne var içinde" merakıyla açmak, dosyanın sahibinin izni olmadan yapıldığında hem mahremiyet ihlali hem de kişisel veriler söz konusuysa hukuki bir sorundur. Benzer görünen karakterlerle başka birinin adını taklit eden bir hesap ya da alan adı açmak ise şaka amaçlı olsa bile aldatmadır.

Kapanış

  1. Bilgisayardaki her şey bitlerden ve sekiz bitlik baytlardan oluşur; bir baytın taşıyabileceği değerin sınırı vardır ve bu sınır hesaba katılmazsa hatalar doğar.
  2. Onaltılık gösterim baytları okunur kılar; dosyaların ilk baytları, ağ adresleri ve özet değerleri bu gösterimle yazılır ve bir dosyanın ne olduğunu adından daha doğru söyler.
  3. Karakter kodlaması harfleri sayılara çevirir; farklı alfabelerdeki aynı görünen harfler taklide imkân verir, bu yüzden adlara görünüşleriyle değil, sistemin doğrulamasıyla güvenilir.

Üç soru

  1. Bir e-posta ekinin adı "teklif.pdf" ama ilk baytları 4D 5A. Bu ne anlama gelir ve neden önemlidir?
  2. İndirdiğin bir dosyanın özet değeri sitede yayımlanan değerle tutuyor. Bu neyi kanıtlar, neyi kanıtlamaz?
  3. Ekranda birebir aynı görünen iki kullanıcı adı nasıl farklı olabilir ve bir site bunu nasıl önleyebilir?

Yanıtlar

  1. 4D 5A harf olarak "MZ" demektir ve Windows'taki çalıştırılabilir programların başlangıcıdır; bir PDF ise "%PDF" baytlarıyla başlar. Adı belge, içi program olan bir ek, kullanıcıyı belge açtığını sanarak bir program çalıştırmaya yönelten klasik bir aldatmaca işaretidir. Bu yüzden güvenlik sistemleri eklere adlarından değil içeriklerinden karar verir.
  2. Dosyanın, değeri yayımlayan tarafın yayımladığı dosyayla bayt bayt aynı olduğunu ve indirme sırasında bozulmadığını gösterir. Dosyanın güvenli olduğunu kanıtlamaz; yayımlanan dosya kötü niyetli olabilir ya da saldırgan hem dosyayı hem sitedeki değeri değiştirmiş olabilir. Kaynağın gerçekliğini dijital imzalar daha güçlü biçimde doğrular.
  3. Farklı alfabelerdeki bazı harfler, örneğin Latin "a" ile Kiril "а", ekranda aynı görünür ama farklı sayılarla kodlanır; bu yüzden iki ad farklı baytlardan oluşur. Bir site kullanıcı adlarında karışık alfabeyi sınırlayarak ve Unicode güvenlik standardındaki benzer karakter listeleriyle resmî adlara benzeyen kayıtları reddederek bunu önleyebilir.

Sonraki derse köprü

Kaan'ın karantinadaki eki, adıyla içeriği arasındaki farkı gösterdi. Bu farkın günlük hayattaki en yaygın kaynağı, işletim sistemlerinin dosya adlarını gösterme biçimidir: uzantılar gizlenir, bazı dosyalar hiç görünmez ve silinen dosyalar aslında silinmez. Sıradaki ders dosya ve dosya sistemi dersi: dosya uzantısının neden güvenilmez olduğunu, gizli dosyaları ve silmenin gerçek anlamını ele alıyor.

Anlamadığın bir yer mi var?

Mentor yalnız bu dersin metnine dayanarak cevap verir. Metinde geçmeyen bir şey sorarsan uydurmaz, geçmediğini söyler.