NTFS 5.0 İle Birlikte Gelen Bir Başka Yenilik: EFS (Encrypting File System)

 

Disk kotası gibi şifreli dosya sistemi (Encrypting File System-EFS) de NTFS 5.0'a özel bir yenilik. Bu özellik sayesinde dosyalarımızı şifreleyerek koruyabiliyoruz. NTFS izinleri varken şifrelemeye ne gerek var diyebilirsiniz? NTFS izinleri dosyalarımızı koruyor ama yalnızca etki alanımızın bulunduğu ortamda. Eğer bilgisayarımızı çalınır ya da kaybolursa ve içindeki verileri kötü niyetli kişiler okumak isterse NTFS izinlerini çok işe yaramaz. Kötü niyetli kişi NTFS'deki dosyaların mülkiyetini üzerine alır (take ownership), kendisine izin verir ve dosyanın içeriğine ulaşır. Biz böyle bir durumda bile dosyaların içeriğine erişilmesin istiyorsak EFS'i kullanmalıyız. Bu tür durumlar çok da olmaz diye düşünebilirsiniz ama son 3-4 yılda basında birçok haber çıktı: "CIA uzmanının laptop'ı havalanında kayboldu.", "NASA uzmanının notebook'u çalındı" vb. Bu kadar önemli yerlerde çalışmıyor olabiliriz ama en azından şirketimizin ticari sırlarını içeren bilgisayar çalınsa bile bilgilere erişilmesin isteyebiliriz.

 

EFS'e geçmeden önce genel olarak şifrelemeyi anlatalım.

 

Şifreleme

Şifreleme (encrypting), bir bilginin belli bir kurala bozulması demektir. Bilerek bozulmuş bilgi yetkisiz kişiler tarafından ele geçirilebilir ama içeriği anlaşılamaz. Bu içeriğe yalnızca kuralı bilen taraflar erişebilir. Şifreleme kuralına anahtar (key) denir. Mantıklı bir adlandırma. Yalnızca elinizde anahtar varsa şifreliyi bilgiyi açabilirsiniz.

 

Peki, bilgi normalde nasıl saklanır ve nasıl bozulur, sonra nasıl asıl bilgiye ulaşılır? Bunu görmek için önce bir alıştırma yapalım.

 

Bir komut satırı açın (Start, Run'dan cmd yazarak hemen komut satırına geçebilirsiniz). Klavyenizin alt satırında iki adet "Alt" ibareli tuş bulunur. Bu tuşlardan soldakine basın ve basılı tutun. Bu tuş basılı iken klavyenin sağ tarafındaki sayısal klavyeden sırasıyla 6 ve 5 rakamlarına basın, ellerinizi kaldırın. Ne gördünüz? "A" harfi değil mi? Peki bu nasıl oldu?

 

Bizim bildiğimiz harfler, rakamlar (kısaca bunlara karakter diyoruz) bilgisayarda bizim bildiğimiz gibi saklanmaz. Onlar hep 0 ve rakamlarının belli kombinasyonları şeklinde saklanırlar. Hangi kombinasyonun hangi karaktere karşılık geldiği çeşitli standartlar ile düzenlenmiştir. Kişisel bilgisayarlarda kullanılan standart ASCII'dir (American Standard Code for Information Interchange). bazı harf karakterlerinin ASCII kodu aşağıdaki gibidir:

 

Harf      ASCII Kodu       İkili Sayı Düzenindeki Değeri

A          65                     0100 0001

B          66                     0100 0010

C          67                     0100 0011

 

Gördüğünüz gibi A harfi aslında 0100 0001 kombinasyonu ile gösteriliyor. Okuması kolay olsun diye biz bunu onluk sayı düzeninde ifade ediyoruz (onluk düzendeki 65 sayısı ikilik düzendeki 0100 0001'e karşılık geliyor).

 

Şimdi ağımızdaki bir makinenin bir başka makineye "BABA" kelimesini göndereceğini varsayalım. Şekil 6-1. Şekilde A makinesi B makinesine bu bilgiyi gönderiyor. Eğer kötü niyetli bir kişi o anda hattı dinliyorsa (ki her Windows 2000 Server makinede bulunan Network Monitor adındaki programla bunu çok kolay yapabilir) A makinesinden giden veriyi kapıp anlayabilecektir. Bu bilginin üçüncü bir kişi tarafından anlaşılmaması için şifrelenmesi gerekir. Bunu nasıl yapalım? Gönderilecek bilgiyi bozmak için bir kural, yani bir anahtar uyduralım. Kuralımız şöyle olsun: Gidecek olan bilgideki her bir karakterin ASCII kodunu 3 ile çarpıp 1500 ekleyelim. Bu durumda artık A makinesinden B makinesine 66 65 66 65 kodları değil 1698 1695 1698 1695 kodları gidecektir. Bu da BABA kelimesi yerine Şekil 6-2'de görülen anlamsız karakterlerin gönderilmesi demektir. Hattı dinleyen üçüncü bir kişi gönderilen verinin BABA olduğunu hemen anlayamaz.

 

Yukarıdaki şifreleme yöntemine önceden taraflar arasında bilenen anahtar (preshared key) yöntemi denir. Buradaki kural, yani anahtar A ve B makineleri tarafından önceden bilinmelidir.

 

Preshared key yönteminin çeşitli dezavantajları bulunmaktadır: Birincisi kolay kolay anlaşılmayacak bir anahtarın üretilmesidir. Yukarıdaki gibi basit bir anahtar ortalama zekaya sahip birisi tarafından en çok yarım saat içinde çözülebilir. Bize daha karmaşık, çözülmesi zor anahtarlar gerekiyor. İkincisi bu anahtarın sık sık değiştirilmesi gerekir. Bir anahtar ne kadar karmaşık olursa olsun muhakkak çözülür. Üçüncüsü, periyodik olarak değiştirilen ve karmaşık şekilde üretilen anahtarın taraflara güvenli bir şekilde ulaştırılması gerekir. Belki de en zoru bu üçüncüsüdür: Anahtar, taraflara nasıl ulaştırılacak? Telefonla mı? Telefonu dinlemek kolaydır. Mektupla mı? Mektup karşı tarafa ulaşmadan önce açılabilir. Sözel olarak mı? Bu da dinlenebilir.

 

Neyse ki bizden çok daha akıllı ve üretken bir takım adamlar preshared key yönteminin dezavantajlarını gideren bir yöntem geliştirmişlerdir. Bu yöntemin adı Public Key Infrastructure (PKI- Açık Anahtar Altyapısı) şeklindedir.

 

Public Key Infrastucture

PKI'da taraflara (örneğin, A ve B Makinelerinde bulunan kullanıcılara) sayısal sertifikalar verilir. Sayısal sertifika iki adet anahtardan oluşur: Bir adet public key (açık anahtar) ve bir adet de private key (özel, şahsi anahtar). Sayısal sertifikalar bir sertifika yetkili kurumu (Certificate Authority-CA) tarafından verilir. Şekil 6-3.

 

Açık ve özel anahtarlar ayrı ayrıdır ama matematiksel olarak birbirleriyle ilişkilidir.

 

Açık anahtarlar herkes tarafından bilinebilir. A makinesi ya da B makinesi kendisine sorulduğunda kendisinin açık anahtarını sorana bildirir, bunda bir sakınca yoktur. Ama özel anahtarlar, adı üzerinde, özeldir. Bu anahtarlar CA'den gelince hep o makinede kalır, başka bir kişiye verilmez.

 

Açık ve özel anahtarlar şifrelemede şu şekilde kullanılır: A makinesi B makinesine göndereceği bilgiyi B'nin açık anahtarı ile şifreleyerek ona gönderir. B makinesi kendisine gelen şifreli bilgiyi kendi özel anahtarıyla açarak okur. Kötü niyetli bir kişi hattı dinlerse göreceği tek şey B'nin açık anahtarı ile kriptolanmış veridir. Elinde B'nin özel anahtarı olmadığı için şifreyi çözüp içeriğe erişemez.

 

Tekrarlarsak; bilgiler açık anahtarlarla şifrelenir, özel anahtarlarla çözülür (decrypting).

 

Windows 2000 ve Active Directory (AD) yapısında dosyaların şifrelenmesi de bir tür PKI ile gerçekleştirilir. Burada AD kendi başına bir CA olarak davranır ve kullanıcılara EFS için sertifika dağıtabilir.

 

Microsoft Management Console

Şu anda üzerimizde bir sertifika var mı yok anlamak için Certificates konsolunu kullanabiliriz. Administrative Tools altında varsayılan olarak böyle bir konsol yoktur. Bu konsoldan yararlanmak için boş bir Microsoft Management Console (mmc) açmalıyız. Açılan boş konsola sistemde kayıtlı bulunan bir yönetim eklentisi (snap-in) ekleyip daha önce olmayan bir konsol yaratabiliyoruz. Şimdi bunu yapalım.

 

Start, Run'dan mmc yazıp OK'e tıklayalım. Boş bir konsol açılır. Şekil 6-4. Açılan pencerede Console menüsünden Add/Remove Snap-in şıkkını seçelim. Karşımıza gelen kutuda Add düğmesine tıklayalım. Eklenebilecek snap-in'lerin listesiyle karşılaşacağız. Şekil 6-5. Burada bizim şimdi kullanacağımız Certificates de görülüyor. Certificates'i seçip Add düğmesine tıklayalım. Bu konsol ile hangi sertifikaları yöneteceğimiz sorulur. Şekil 6-6. Burada üç seçenek var: My user account (Kullanıcı hesabım), Service account (Hizmet hesabı), Computer account (Bilgisayar hesabı). Bu seçeneklerden şunu anlıyoruz: Sertifikalar kullanıcılara, hizmetlere (örneğin web hizmeti ya da smtp hizmeti gibi) ya da makinelere verilebilir. Sertifikaların başka türlü kullanımlarını ilerde, başka konularda göreceğiz.

 

EFS, kullanıcı ile ilgili bir şey olduğundan My user account'u seçiyoruz. Yani, oluşturacağım konsol ile kullanıcı hesabıma ilişkin sertifikaları görmek ve yönetmek istiyorum.

 

Close ve OK düğmelerine basarak kapatıyorum. Şu anda Certificates konsolum hazır. Şekil 6-7. Bu konsol tanımını kaydedebilirm, böylece ilerde tekrar bu konsola ulaşabilirim. Konsol tanımını kaydetmek için Console menüsüne gidiyorum ve Save As şıkkını kullanarak konsolu Administrative Tools altına sertifikalar adıyla kaydediyorum.

 

Şimdi yeni konsolda, Certificates düğümü altındaki Personal'a gidersem şu anda kişisel hiçbir sertifikamın bulunmadığını görürüm. Bir dosya ya da klasörü şifrelediğimde AD tarafından EFS amaçlı olarak yaratılıp bana gönderilen bir sertifikayı burada göreceğim.

 

Şimdi bilgisayarımda NTFS dosya sistemine sahip bir partisyona geçiyorum ve bir klasör yaratıyorum. Bu klasörde yer alacak dosyaların şifrelenmesini istediğim için klasöre sağ tıklıyorum, menüden Properties şıkkını seçiyorum, açılan pencerede de İleri Öznitelikleri görüntülemek için Advanced düğmesine tıklıyorum. Burada Encrypt contents to secure data (verileri güvenli duruma getirmek için içeriği şifrele) kutusunu işaretliyorum. Şekil 6-8. Bu kutunun üzerinde sıkıştırma kutusu var. Şu an için sıkıştırma ve şifreleme birbirini dışlayan seçenekler: Bir dosya ya da klasör sıkışıksa şifrelenemez, şifreliyse sıkıştırılamaz. Eğer klasör yeni yaratılmış olmasaydı, içinde dosyalar bulunan bir klasörü sonradan şifrelemeye çalışsaydık OK'e bastığımızda karşımıza iki seçenek çıkacaktı: Şekil 6-9. Buradaki seçenekler Apply changes to this folder only (Değişiklikleri yalnızca bu klasöre uygula) ve Apply changes to this folder, subfolder and files (Değişiklikleri bu klasöre, alt klasörlere ve dosyalara uygula). Birinci şıkkı seçersek yalnızca bundan sonra bu klasöre yerleştirilen dosyalar şifrelenir; önceden yaratılmış olanlar şifrelenmez. İkinci şıkkı seçersek var olan dosyalar, yeni eklenen dosyalar ve alt klasörlerdeki dosyalar şifrelenir.

 

Bu şifrelemeyi yaptığımıza göre Sertifikalar konsoluna gidip baktığımızda Personal kabında bir sertifika görmeliyiz. Gerçekten de, oraya gittiğimizde Certificates adında bir alt kabın yaratıldığını, bu kabın altında da bir adet sertifikanın bulunduğunu görürüz. Şekil 6-10.

 

Şekil 6-10'da Kamuran için EFS amaçlı bir sertifikanın yaratılmış olduğunu görüyoruz. Kamuran'ın makinesine giriş yapan ya da bu makineyi ele geçiren bir kişi artık Kamuran'ın şifrelediği dosyalara erişemeyecek. Şu anda bir tek Kamuran ve Recovery Agent olarak tanımlı kişi bu dosyalara erişebilir.

 

Recovery Agent da ne diyebilirsiniz. Kamuran'ın yokluğunda bu tür dosyalara erişimi sağlayabilmek için Recovery Agent'lar (RA) kullanılır. Bir Win2K etki alanında RA o etki alanının Administrator adındaki kullanıcısıdır. Bir etki alanında bulunmayan bir makinedeyse RA o makinenin yerel kullanıcı veritabanındaki Administrator adındaki kullanıcıdır. Dikkat: Sonradan yarattığınız ve yönetici gruplarına (Domain Admins, Enterprise Admins ve Schema Admins)  üye yaptığınız kullanıcılar RA değildir.

 

Peki RA bir şifreyi nasıl çözer? RA olan kişi kendi sertifikasını bir dosyaya verir (export), ilgili makineye taşır ve sisteme alır (import). O andan itibaren etki alanındaki bir kullanıcının o makinede şifrelediği bir dosyayının şifresini çözebilir. Şifreyi çözmek için dosyanın üzerine gider, Advanced özniteliklere geçer, Encrypt contents kutusunun işaretini kaldırır.

 

Şimdi, sertifikanın nasıl bir dosyaya verileceğini görelim. Örneğin, Kamuran sertifikasını disketteki bir dosyaya versin. Böylece Kamuran'ın sertifikası bilgisayardan silinmiş de olacak. Bu durumda Kamuran halen önceden şifrelediği dosyaları açabilme olanağına kavuşacak.

 

Export işlemini oluşturduğumuz konsoldan yapacağız. Sertifikalar konsolunu açalım, Personal kabındaki sertifikamızı bulalım, üzerine sağ tıklayalım, All Tasks'den Export şıkkını seçelim.Bir Wizard ho geldin penceresi iel karşılaşacağız. Next'e basıp bunu geçelim. Sonraki ekranda özel anahtarı da verip vermeyeceğimiz soruluyor. Şekil 6-11. Özel anahtar bizim için en önemli şey. Yes şıkkını seçerek özel anahtarımızın da verilmesini isteyelim. Sonraki ekranda dosyanın biçimi, özel anahtarın makineden silinip silinmemesi üzerine seçenekler var. Şekil 6-12. Sonuncu şık olan "Delete the private key if export is successfull" (Eğer verme işlemi başarılı ise özel anahtarı sil) kutusunu işaretlersek özel anahtarın makinedeki kopyası silinir ve anahtar yalnızca diskette kalır. Bu seçenek güvenliği daha çok arttırır: Yalnızca disketteki özel anahtara sahip olan kişi şifreleme işlemlerini yönetebilir.

 

Özel anahtarın da verileceğini belirttiğimiz için sonraki ekranda bizden bir parola isteniyor. Şekil 6-13. Özel anahtara sahip olmayan isteyen kişi bu parolayı da girmek zorunda.

 

Sonraki ekranda sertifika dosyasının adını giriyoruz. Şekil 6-14. Next ve Finish düğmelerine basıyoruz. Sertifikamızın başarılı bir şekilde verildiğini gösteren bir mesaj alıyoruz. Artık sertifikamız disketteki bir dosyada.

 

Kamuran şifrelediği bir dosyayı diskete kopyalarsa ne olur? Dosya şifresiz olarak diskete kopyalanır. Çünkü disketteki ortam şifrelemeyi desteklemeyen FAT ortamı. Kamuran bu dosyayı kendi bilgisayarındaki FAT formatlı bir yere kopyalarsa ya da ağ üzerinden başka bir makineye  gönderirse de şifre çözülür.

 

Dikkat: Şifrelemeyi iyice anlayana ve deneyene kadar önemli dosyalar üzerinde şifreleme yapmayın. Muhakkak önceden yedek alın. Kişisel sertifikalar kişinin profilinde saklandığı için bu profilleri silmeyin. Çok sık ve yanlış bir uygulama olarak  Windows makineleri formatlanıyor. Bu işlem sırasında şifreli dosyaları açmaya yarayan sertifikalar da kayboluyor. Mümkün olduğunca sisteminizi formatlamayın, formatlayacaksanız da öncelikle şifreli dosyalarınızı şifresiz duruma getirin. Genelde Windows C: sürücüsüne kuruluyor, şifreli dosyalar ise D:, E: gibi başka sürücülerde bulunuyor. Bu da aldatıcı bir izlenim yaratıyor: “Ben dosyaların olduğu sürücüyü değil ki Windows’un olduğu sürücüyü formatlıyorum, şifreli dosyalara zarar gelmez.” şeklinde düşünülüyor. Halbuki şifreli dosyaları açmaya yarayan sertifikalar C:’de, yani Windows’un kurulu olduğu disk bölümünde duruyor.