Yazan : Şadi Evren ŞEKER
İçerik
1. Sistemin kurulması
2. Şifreleme (Encryption)
3. Açma (Decryption)
4. Sonuç
Bilgisayar bilimlerinin önemli konularından birisi de veri güvenliğidir. Bu konuda yapılan çalışmaların bir kısmı şifreleme (cryptography) başlığı altında toplanabilir. Basitçe matematiksel yöntemler kullanılarak verinin anlaşılmaz hale gelmesi ve ancak doğru kişiler tarafından açılması olarak tanımlanabilecek şifreleme işlemi simetrik ve asimetrik şifreleme (public key cryptography) olarak iki grupta toplanabilir.
Bu yazının amacı simetrik şifrelemeyi açıklamaktır.
Simetrik şifrelemede genelde şifreleme işlemi bir anahtar (key) marifetiyle olur. Bu anahtar iki taraf tarafından daha önceden bilinen bir bilgidir ve bir tarafın anahtar ile şifrelediği bilgi diğer taraftaki anahtar ile açılabilir.
Simetrik şifrelemenin tarafları
Aşağıdaki şekilde basit bir simetrik şifrelemede bulunan iki taraf görülmektedir.
Yukarıdaki şekilde şifreleme sistemimizi kullanan iki kişi gösterilmektedir. Bir taraf şifreleyen (Ali) diğer taraf ise şifreyi açan (Bekir) taraf olarak kabul edilsin. Burada kullanılan isimler genelde şifreleme literatüründe Alice ve Bob olarak geçer ancak yazının Türkçe olmasından dolayı yine aynı baş harflerle başlayan (alfabenin ilk iki harfi olan A ve B) iki farklı isim uydurulmuştur.
Örneğin yukarıdaki senaryoda Ali ve Bekir, İnternet gibi güvensiz ve saldırılara açık bir ortam üzerinden konuşmak istiyor olsunlar ve mesajlarını şifreleyerek görüşmek istesinler.
Şifreleme sisteminin kurulması
Simetrik şifreleme sistemlerinin ilk aşaması sistemin kurulmasıdır. Bu aşama bazı şifreleme sistemlerinde sadece bir anahtarın iki taraf tarafından bilinmesi kadar basitken bazı sistemlerde karmaşık hesaplamalar sonucunda elde edilir. Örneğin en basit simetrik şifreleme yöntemlerinden birisi olan kaydırma şifrelemesini (shift cipher) ele alalım.
Mesajda bulunan harfler alfabetik olarak (lexiconically) anahtar kadar kaydırılır. Örneğin anahtar 2 ise her harf alfabede kendinden iki sonraki harf olacaktır (a->c , l->n veya z->b şeklinde).
Bu sistemdeki anahtarın iki taraf tarafından bilinmesi yeterlidir. Yani 2 bilgisinin bir şekilde hem şifreleyen hem de şifreyi açan kişi tarafından önceden bilinmesi sistemin kurulması aşamasıdır.
Bu anahtar değişimi aşaması için çeşitli algoritmalar mevcuttur. Örneğin diffie-hellman anahtar değişim algoritması (diffie-hellman key Exchange aglorithm) okunabilir.
Yukarıdaki şekilde iki taraf da sistemi kurup hazır olduktan sonra şifreleme aşamasına geçilir.
Bu aşamada veriyi gizleyecek olan taraf yani şifreleyecek olan taraf elindeki şifreleme algoritmasına (encryption algorithm) göre bir şifreli mesaj üretir. Örneğin senaryomuzda Ali elinde açık mesaj (plain text) bulunan ve bunu şifreli mesaja (cipher text) çevirmek isteyen kişi olsun. Bu durumda Ali şifreleme algoritmasını uygular.
Yine kolay anlaşılması açısından en basit şifreleme algoritması olan kaydırma şifrelemesini (shift cipher) ele alalım ve bu algoritmaya göre ali açık mesajdan şifreli mesajını üretsin.
Yukarıdaki şekilde bu durum gösterilmiştir ve şekilden de anlaşılacağı üzere mesajın şifrelenmiş haline şifreli mesaj denilir ve şifreleme işlemi sırasında her iki tarafın önceden bildiği bir anahtar sisteme dahil olur.
Yukarıdaki sistemi kaydırma şifrelemesi için kullanacak olursak ve mesajımız “Yarın onda buluşalım” şeklinde bir mesaj ise durum aşağıda gösterilmiştir:
Yukarıdaki mesajda dikkat edileceği üzere boşluk karakterleri kaldırılmıştır. Bunun sebep saldırgan tarafın mesajdaki kelime boyutlarını tahmin ederek bir avantaj elde etmesini engellemektir. Ayrıca şifreleme algoritması İngilizce alfabe üzerinden çalışmaktadır (ASCII tablosundaki Türkçe karakter hesaplamasından kaçınıldığı için böyle yapılmıştır ancak istenirse Türkçe karakterler için ilave kod da yazılabilir).
Şifrenin açılması (Decryption)
Mesaj bir kere şifrelendikten sonra okuyucular için anlamsız hale gelmektedir ve alıcı tarafın anlamlı hale geri çevirmek için mesajı açması gerekir.
Yukarıdaki şekilde şifreli mesajın açılışı gösterilmiştir. Bu açma işlemi dikkat edilirse şifreleme işleminin tamamen simetriğidir. Yani aynı anahtar girmekte ve aynı algoritma kullanılmaktadır.
Simetrik şifrelemenin ismi de buradaki simetriden gelmektedir.
Sonuç olarak şifreli mesajı alan taraf açma algoritması ile ve anahtar ile mesajı açar ve açık mesajı (plain text) elde eder.
Senaryomuzdaki örnek için bu durum aşağıda gösterilmiştir:
Yukarıdaki şekilde görüldüğü üzere mesaj olarak “ACTKPQPFCQMWNFCDWNWUCNKO” mesajını alan taraf daha önceden bildiği anahtarı kullanarak mesajı açmış ve “YARINONDAOKULDABULUSALIM” açık mesajını elde etmiştir.
Mesaj Türkçe bilen birisi tarafından kolayca anlaşılmaktadır.
Sonuç olarak simetrik şifrelemede kullanılan anahtar gizli tutulmalıdır ve sistemin saldırganlar tarafından bilinmesinde (şifreleme ve açma algoritmaları) bir sorun olmamalıdır. Bu kuralları içeren kerchoff prensipleri (kerckhoff pricinples) bulunur ve ilgilenenler bu yazıyı da okuyabilirler. Ancak sistemin şifreleme dünyasında (cryptography) kabul görebilmesi ve simetrik şifreleme olarak isimlendirilebilmesi için sistemin güvenliğinin anahtarın gizliliği üzerine kurulu olması ve aynı anahtarın hem şifrelerken hem de açarken kullanılması gerekir.
Yukarıdaki şekilde iki tarafın senaryomuzda bulunan mesajı nasıl ilettikleri gösterilmektedir. Ali mesajını önce algoritmaya göre şifrelemiş ardından internetten yollamış ve alan taraftaki Bekir de aynı algoritma ve aynı anahtar ile mesajı açarak okumuştur.
Çok güzel açıklaya açıklaya anlatmışsınız 😀
Gerçekten çok net bir anlatım olmuş.
En son tablo herşeyi açıklamaya yetmiş.
gerçekten çok harika anlatmışsınız. teşekkürler
simetrik kripto sistemi kullanırken karşılastığımız zorluklar nelerdir hocam.(dezavantajlarını sormuyorum, kriptoyu kullanırken ki zorluk, sıkıntı nedir.) teşşekkürler.