PKI Nedir? - 1
 
 Editör'den
 Linux Çekirdeği
 PKI Nedir?
 Windows Güvenliği - III
 Kullanıcı Hataları
 ODTÜ Antivirüs  Çözümleri
 Web Tarayıcıları
 Internet Tabanlı CBS ile  Planlama
 CISN Arşiv
 Anket
 Geribildirim
 
     
 

İletişimin hızla gelişmesi nedeniyle insanlar, ağ aracılığı ile bilgi paylaşma yolunu seçmektedirler. Bu yolla iletilen bilgiler zaman ilerledikçe, ağların dinlenmesi, gelen verinin değiştirilmesi, bir başkası gibi davranarak yanlış bilgi gönderilmeye çalışılması, başkasına ait bilgilerin öğrenilmeye çalışılması gibi tehditler karşısında, kişilerin rahatsız olmasına neden olmuştur. Bütün bu tehditleri önlemek amacıyla iletişimde anahtarlama yöntemleri kullanılmaya başlanmıştır.

Anahtarlama yöntemleri, gönderilen ve alınan verinin değişik şifreleme algoritmaları kullanılarak gönderici tarafından şifrelenmesi ve alıcı tarafından şifrelenmiş verinin, şifresinin açılması temeli üzerine kurulmuştur. Bu şekilde ağdan geçen mesajın ağ üzerindeki tehditlerden korunması sağlanmaktadır.

Bu yazıda, anahtarlama yöntemlerinden ve kullanıldığı zaman hangi tür tehditleri engelleyebildiklerinden bahsedeceğiz.

1. Simetrik Anahtarlama:

Simetrik anahtarlamada genel olarak basit şifreleme algoritmaları kullanılmaktadır. Verinin şifrelenmesinde ve bu şifrenin açılmasında aynı anahtar kullanılmaktadır. Bu tip anahtarlamada, aynı anahtar hem gönderen kişide, hem de alan kişide bulunmalıdır.

Bu şekilde şifrelenmiş veri ağdan geçerken bir başkası tarafından dinlenmek istendiğinde, kişi anahtara sahip değilse anlaşılamaz.

2. Anahtar İkilisi Kullanarak Anahtarlama (Public/Private Anahtar İkilisi):

Bu yöntemde istendiğinde şifreleme ve deşifreleme için ayrı ayrı anahtarlar kullanılmaktadır. Bu anahtarlar ikili biçimde anılmakta olup, birbirlerinin şifreledikleri veriyi deşifreleyebilmektedirler.

veri <---> private key <---> sifrelenmis veri <---> public key <---> veri

Şifreleme deyince akla iki temel tehditin ortadan kaldırılması akla gelmektedir. Bunlardan bir tanesi ağ üzerinden gönderilen mesajın şifreli olarak gitmesi, bu şekilde mesajı sadece alıcı ve gönderenin görebilmesidir (şifreleme/deşifreleme). Diğeri ise alıcının mesajı gönderen kişinin gönderdiğinden emin olması, yani alıcının mesajın yolda değiştirilmediğinden ve gönderen kişinin sahte olmadığından emin olmasıdır (e-imza).

Public/private anahtar ikilisi kullanılarak bu iki tehdite çözüm getirilebilmektedir. Herhangibirine ait olan public anahtar herkese açıktır, bunun yanında bu public anahtarın private anhtarı sadece ait olduğu kişi tarafından bilinmektedir. Böylece bu kişiden giden bir veri kişi tarafından şifrelenebilir ve istenilen kişi tarafından gönderen kişinin public anahtarı ile açılabilmektedir.

Bu anahtar ikililerinin şifreleme veya e-imza olarak kullanımındaki aşamaları örneklerle açıklamak istersek;

a) Şifreleme/Deşifreleme (Encryption/Decryption):

Şifreleme, mesaj(veri) gönderen kişinin mesajın sadece alıcı tarafından okunmasını istediği durumlarda kullanılan bir yöntemdir. Bu yöntem ile mesajın iletişimi sırasında ağı dinleyen biri tarafından anlaşılamaz.

Modelleyecek olursak, Feyza Mustafa'ya sadece Mustafa'nın görmesini istediği bir mesaj göndermek istiyor.

Feyza ---> Mesaj ---> Mustafa

Öncelikle Feyza, Mustafa'nın public anahtarını elde eder, daha sonra bu public anahtarı kullanarak göndereceği mesajı şifreler.

Feyza ---> Mesaj --- PubMustafa ---> [Mesaj]PubMustafa

Daha sonra şifrelenmiş olan mesajı Mustafa'ya gönderir. Mesajı alan Mustafa, mesajı kendi private anahtarını kullanarak şifreyi açar ve mesajı elde eder.

[ Mesaj ]PubMustafa --- PrMustafa ---> Mesaj

Mesaj, sadece Mustafa'nın private anahtarı ile deşifrelenebileceği için, Mustafa'dan başka birinin Mustafa'nın private anahtarını bilmeden mesajı alması olanaksızdır.

b) Elektronik İmza ve Doğrulama:

Elektronik imza, gelen bir mesajin(verinin) gerçekten gönderen kişiden geldiğinin doğrulunu ispatlama(authentication) mekanizmasıdır.

Feyza-Mustafa örneğine dönecek olursak, Feyza, Mustafa ile bir lisans anlasmaşı yüzünden sürekli e-posta trafiği yaşamaktadır. Maddi açıdan önemli bir getirisi olan bu anlaşma için, Feyza bir başkasının kendi adına Mustafa'ya mesaj atmasını istememektedir. Bunun için Mustafa'ya gönderdiği mesajları e-imzası ile şifrelemektedir.

Bu hikayede Feyza, Mustafa'ya mesaj göndermek için, mesajı hazırlar.

Feyza ---> Mesaj

Daha sonra Feyza, bu mesajı kendi private anahtarı ile şifreler.

Feyza ---> Mesaj --- PrFeyza ---> [ Mesaj ]PrFeyza

Feyza, şifrelediği mesajı ve kendi public anahtarını bir paket olarak hazırladıktan sonra Mustafa'ya gönderir.

Feyza ---> [[Mesaj ]PrFeyza + PubFeyza ] ---> Mustafa

Burada Feyza'nın kendi public anahtarını mesajla beraber göndermesinde bir sakınca yoktur. Çünkü buradaki amaç, bu mesajın Feyza tarafından gönderildiğinin ispatlanmasıdır ve public anahtarı normalde de herkesin ulaşabileceği bir bilgidir.

Mesaji alan Mustafa, Feyza'nın public anahtarını kullanarak mesajı açar, ve mesajın Feyza tarafından gönderildiğinden emin olur.

[ Mesaj ]PrFeyza --- PubFeyza ---> Mesaj

c) Şifreli ve İmzalı Mesaj Gönderme:

Hem gizlilik hem de gönderen kişinin doğruluğunu kanıtlama mekanizmaları birlikte kullanılmasıyla, mesajın hem doğru insandan geldiği, hem değiştirilmediği, hem de sadece alıcı tarafından okunduğundan emin olunabilir. Bunun için public/private anahtar ikilileri, simetrik anahtarlama ve hash algoritmaları birlikte kullanılır.

Hikayemizde Feyza'nın, Mustafa'ya hem şifreli hem de imzalı bir mesaj göndermek istediğini düşünelim. Mesajın imzalanması ve mesajın şifrelenmesi aynı işlem içerisinde iki ayrı bölüm olarak incelenir.

Feyza mesajı imzalamadan önce mesaj üstünde hash algoritması çalıştırarak mesajin bir kontrol toplamını(checksum) hesaplatır.

Feyza ---> Mesaj --- hash alg. ---> Toplam = [ Mesaj ]Hash

Burada, hash algoritması mesajın bütünlüğünün korunduğundan emin olmak için kullanılmaktadır. Bu iş için şifreleme algoritmaları yerine hash'in kullanılmasının nedeni hem daha küçük boyutta olması, hem de daha hızlı çalışmasından kaynaklanmaktadır.

Kontrol toplamı oluşturulan mesajın imzalanması kısmında, oluşturulan toplam Feyza'nın private anahtarı ile şifrelenir.

Toplam --- PrFeyza ---> [Toplam]PrFeyza

Oluşturulan şifreli toplam, mesajin kendisi, Feyza'nın public anahtarı, kullanılan hash algoritmasının ismi bir paket oluşturur.

[Mesaj + [Toplam]PrFeyza +PubFeyza + hash alg]

Bu şekilde gönderilecek mesajın imzalanma işlemi tamamlanmış olur. Bu oluşturulan paketin içerisinden Mustafa, Feyza'nın public/private ikilisinden mesajı Feyza'nın gönderdiğini anlar. Mesajdaki public anahtarı kullanarak toplamı elde eder. Gönderilen çıplak mesajdan da ikinci bir toplam elde etmek için, ismi gönderilen hash algoritmasını çıplak mesaj üzerinde tekrar çalıştırır. Elde bulunan iki toplamı karşılaştırarak mesajın değişip değişmediği bilgisini öğrenir. Bu iki toplam birbiri ile aynı ise mesaj değiştirilmemiştir ve Feyza tarafından gönderilmiştir. İki toplam birbirinden farklı ise mesaj Feyza tarafından gönderilmemiştir veya mesaj yolda değiştirilmiştir, diye düşünür ve mesajı dikkate almaz.

Mesajın tamamını şifreli bir biçimde ağdan geçirmek için, daha hızlı ve basit olan simetrik anahtar kullanılır. Çünkü uzun mesajlarda public/private anahtar algoritması simetriğe göre çok daha yavaş kalır.

Hikayede Feyza hazırlanan mesaj paketini ağdan göndermeden önce bir kereye mahsus olmak üzere simetrik anahtar üretir ve bu simetrik anahtar ile hazırlanan mesajı şifreler.

[Mesaj + [Toplam]PrFeyza +PubFeyza + hash alg ]symK

Mustafa Feyza'dan gelen bu mesajı okumak için Feyza'nın ürettiği simetrik anahtara ihtiyaç duyacaktır. Bundan dolayı, üretilen simetrik anahtarda mesaj paketinin içinde olmalıdır.

[Mesaj + [Toplam]PrFeyza +PubFeyza + hash alg ]symK+ symK

Bu mesajı bu şekilde ağdan gönderdiğimiz durumda ağı dinleyen herhangi biri mesajı okuyabilecek pozisyondadır. Bunu engellemek ve bu mesajın sadece Mustafa tarafından görülmesini sağlamak için, mesajın şifrelenmesi olayında olduğu gibi Mustafa'nın public anahtarını kullanmak gerekmektedir.

Burada Mustafa'nın public anahtarını kullanarak tüm hazırlanan paket şifrelenecek olursa, hem boyut büyüyecek hem de algoritma daha yavaş çalışacaktır. Bunun için son durumda elde edilen paketin açılması için gerekli olan simetrik anahtarın Mustafa'nın public anahtarı ile şifrelenmesi yeterli olacaktır.

Son durumda ağdan geçerek Mustafa'ya ulaşacak olan paket aşağıdaki hale gelmiştir;

Feyza--->[[Mesaj+[Toplam]PrFeyza+PubFeyza+hash alg]symK + [symK]PubMustafa ]--->Mustafa

Bu mesajı alan herhangi biri Mustafa'nın private anahtarına sahip olmadığı için simetrik anahtara ulaşamayacak, yani gönderilen mesajı okuyamayacaktır.

Bu mesajı alan Mustafa önce kendi private anahtarı ile simetrik anahtarı elde edecek, bu simetrik anahtarı kullanarak mesajı açacak, mesajla gelen Feyza'nın public anahtarını ve hash algoritmasını kullanarak, mesajın değiştirilip değiştirilmediğini ve bu mesajı Feyza'nın gönderip göndermediği bilgisini elde edecektir.

Bu yöntemi kullanarak, mesajın ağda değiştirilmesi, ağı dinleyen herhangi biri tarafından okunması, başkası adına mesaj gönderme gibi tehditler unsurlarına karşı önlem alınmış olur.

Sertifika Nedir?

Sertifika, public anahtar sahibinin kimliğini doğrulayan bilgidir. Ehliyet, nüfus cüzdanı gibi sertifika da sahibinin kimliğini ispatlar.

Sertifikalar,
- Sertifika otoritesinin kimliğini
- Sahibinin kimliğini
- Sahibinin public anahtarını
- Sertifikanın kullanımının bitiş zamanını
- Sertifika sunucusunun, bu sertifikayı onaylayan imzasını ve diğer bir takım bilgileri tutar.

Sertifika sayesinde, herhangi bir bilgi alan kişi, bu bilgiyi gönderen kişinin kimliğini, kullandığı sertifikanın geçerli olup olmadığını, sertifikanın güvenilir bir sertifika otoritesi tarafından onaylanıp onaylanmadığını anlayabilir.

Yukarıda bahsettiğimiz, ağdan şifreli ve imzalı mesaj gönderme işlemini public/private anahtar ikilileri ile yapılabileceği gibi, kişinin gerçek kimliğini ortaya koyabilecek olan sertifikaları kullanarak da yapmak mümkündür.

Sertifika Kullanılarak Şifreli ve İmzalı Mesaj Gönderme:

Yukarıdaki hikayede, Feyza'nın Mustafa'ya imzalı ve şifreli mesaj gönderme adımlarını, mesajı şifrelemede kullanılanın Mustafa'nın sertifikası ile yaptığı düünülenerek yeniden anlatalım:

Hikayede Feyza, Mustafa'ya hem şifreli hem de imzalı bir mesaj göndermek istediğinde, mesajın imzalanması ve mesajın şifrelenmesi aynı işlem içerisinde iki ayrı bölüm olarak incelenir.

Feyza mesajı imzalamadan önce mesaj üstünde hash algoritması çalıştırarak mesajin bir kontrol toplamını(checksum) hesaplatır.

Feyza ---> Mesaj --- hash alg. ---> Toplam = [ Mesaj ]Hash

Kontrol toplamı oluşturulan mesajın imzalanması kısmında, oluşturulan toplam Feyza'nın private anahtarı ile şifrelenir.

Toplam --- PrFeyza ---> [Toplam]PrFeyza

Oluşturulan şifreli toplam, mesajin kendisi, Feyza'nın public anahtarı yerine Feyza'nın sertifikası, kullanılan hash algoritmasının ismi bir paket oluşturur.

[Mesaj + [Toplam]PrFeyza +CertFeyza + hash alg]

Bu şekilde gönderilecek mesajın imzalanma işlemi tamamlanmış olur.

Hikayede Feyza hazırlanan mesaj paketini ağdan göndermeden önce bir kereye mahsus olmak üzere simetrik anahtar üretir ve bu simetrik anahtar ile hazırlanan mesajı şifreler.

[Mesaj + [Toplam]PrFeyza +CertFeyza + hash alg ]symK

Mustafa Feyza'dan gelen bu mesajı okumak için Feyza'nın ürettiği simetrik anahtara ihtiyaç duyacaktır. Bundan dolayı, üretilen simetrik anahtarda mesaj paketinin içinde olmalıdır.

[Mesaj + [Toplam]PrFeyza +CertFeyza + hash alg ]symK+ symK

Gönderilecek olan mesajın sadece Mustafa tarafından okunabilmesi için mesajın şifrelenmesi olayında olduğu gibi Mustafa'nın public anahtarını kullanmak gerekmektedir. Sertifika kullanımında Mustafa'nın public anahtarını Mustafa'nın sertifikası içerisinde bulunmaktadır. Aslında Mustafa'nın sertifikası kullanılır. Burada Mustafa'nın public anahtarının yanında, Mustafa'nın sertifikasının geçerlilik zamanı, bu sertifikanın Mustafa'ya ait olup olmadığı, Mustafa'nın sertifikasının değiştirilmediği ve Mustafa'nın sertifikasının güvenilir bir sertifika otoritesi tarafından onaylandığının bilgileri de bulunmaktadır.

Feyza mesajı hazırladıktan sonra şifrelemek için, Mustafa'nın sertifikasını kontrol eder, sertifikada yazan bilgiler içerisinden sertifikanın Mustafa ait olduğunu görür, daha sonra sertifikanın geçerlilik zamanı içerisinde olup olmadığını kontrol eder. Daha sonra ve önemli olan kısmı, sertifikayı onaylayan sertifika otoritesinin güvenilir sertifika otoriteleri listesinde olup olmadığını kontrol eder. Bu kısımda bir problem olmadığı durumda Feyza, Mustafa'nın sertifikasının Mustafa ait oldugundan emin olur.

Son durumda ağdan geçerek Mustafa'ya ulaşacak olan paket, Mustafa'nın sertifikası ile birlikte aşağıdaki hale gelmiştir;

Feyza--->[[Mesaj+[Toplam]PrFeyza+CertFeyza+hash alg]symK + [symK]CertMustafa ]--->Mustafa

Bu mesajı alan herhangi biri Mustafa'nın private anahtarına sahip olmadığı için simetrik anahtara ulaşamayacaktır, yani mesajı okuyamayacaktır.

Bu mesajı alan Mustafa önce kendi private anahtarı ile simetrik anahtarı elde edecek, bu simetrik anahtarı kullanarak mesajı açacak, mesajla gelen Feyza'nın sertifikasının doğruluğunu kontrol edecek, bu sertifikayı ve hash algoritmasını kullanarak, mesajın değiştirilip değiştirilmediğini ve bu mesajı Feyza'nın gönderip göndermediği bilgisini elde edecektir.

Public/private anahtar ikililerinin yerine sertifika kullanımını seçmek, bu anahtar ikilisini kullanan kişinin kimliğinin doğruluğunun belirli kurumlar tarafından da onaylanması ve sertifikaların elektronik ortamda, nüfus cüzdanı gibi kullanılabiliyor olmasından kaynaklanmaktadır.

PKI (Public Key Infrastructure) Nedir?

Sertifikaların ve anahtar ikililerinin yönetimini sağlayan yazılımsal ve yordamsal bütünlüğe PKI denmektedir.

Yönetilen bir PKI'de aşağıdaki işlevler bulunmalıdır:

1. Anahtar ve sertifika üretimi:

Anahtarlar nasıl üretilmelidir? Bu sertifikalar kullanıcıya nasıl yayınlanmalıdır? gibi sorulara cevap verebilecek nitelikte olmalıdır.

Kullanıcıların sertifika isteğinde bulanabileceği bir arayüz olmalıdır. Bu arayüzden gelen istekleri alan ve istekler doğrultusunda, sertifika için anahtar ikilileri üretilip, üretilen sertifikalar kullanıcılara yayınlanabilmelidir.

2. Private anahtarların korunması:

Private anahtarların kötü düşünceli kimselerin eline geçmemesi için, PKI'nin private anahtarları koruyacak bir mekanizmasının olması beklenmektedir.

3. Sertifikaların iptal edilebilmesi:

Verilen herhagibir sertifikanın, verilen kişinin private anahtarı çalındığı zaman, bir işyerindeki personel ayrıldığı zaman,... v.b. durumlarda iptal edilebilir olması gerekmektedir. PKI, iptal edilen bir sertifikanın tüm kullanıcılar tarafından da görülmesini sağlamalıdır.

4. Anahtarların yedeklenmesi ve yeniden elde edebilmesi:

Private anahtarların, sertifika kullanımında kişiler için büyük önemi bulunmaktadır. Eğer bir private anahtar kaybedilirse, kişi kendine gönderilen şifreli mesajları açamaz. Bundan dolayı PKI'de private anahtarları yedekleyecek ve gerektiği zaman, aynı sertifika için yeni bir private anahtar üretebilecek durumda olmalıdır.

5. Anahtar ve sertifika güncellemesi:

Sertifikaların belirli kullanım süreleri bulunmaktadır. Son günü yaklaşan sertifikaların yenilenmesi gerekmektedir. PKI, zamanı bitmeye yaklaşan sertifikaları yenileyebilmeli, yenilendiğine dair kullanıcılara mesaj atabilmelidir. Bunun yanısıra kullanıcıdan gelen bir istek üzerinede yenileme işlemi yapabilmelidir.

6. Anahtar işlemlerinin yönetimi:

Güncellenen sertifikaların geçmişlerinin tutulması, gerektiğinde bütün işlemlerin dökümünü alabilmek PKI açısından önemlidir. PKI bu yönetimi de yapabilecek özellikte olmalıdır.

7. Sertifika erişimi:

Kişiler birbirlerine şifreli mesaj göndermek istedikleri zaman, gönderecekleri kişinin sertifikasına sahip olmalıdır. Bundan dolayı PKI, üretilen sertifikaların tüm kullanıcılar tarafından elde edilebilmesine olanak sağlamalıdır.

Yukarıdaki özelliklere sahip olması düşünülen bir yapı, titiz bir çalışma ile üzerinde durulması gereken bir bütündür. Bu bütünün parçaları gerek idari gerekse teknik olarak iyi incelenerek kurulmalıdır.

Bu özelliklerin kişilerin kimlik kontrolü haricindeki yapıları, yazılımlar ile gerçekleştirebilmek mümkündür. Bu konuda geliştirilen açık ve kapalı kodlu bir çok yazılım bulunmaktadır. Bir sonraki yazımızda bu yazılımlarla ilgili detaylı bilgi bulunacaktır.

Ağ üzerinden gönderilen ve alınan verilerin/mesajların tehdit unsurlarından arındırılarak aktarılması için kullanılan anahtar ikilileri, hem verinin doğru iletilmesi hem de verinin gerçek göndericiden gerçek alıcıya iletilmesi açısından önem taşımaktadır.

Feyza TAŞKAZAN

 
     
  - BAŞA DÖN -