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.