“Şifrelemenin tarihi” adlı birinci yazımda, şifrelemenin tarihi, önemi ve geçmişteki bazı algoritmalardan örnekler vermiştim. Bu yazıda ise şifreleme biliminin içeriği, simetrik ve asimetrik şifreleme türlerini, block cipher ile stream cipher farklarını ve kriptoanalizin tanımlaları ile günümüz şifreleme algoritmaları hakkında bilgi bulabilirsiniz.
Şifreleme Bilimi (cryptology) Nedir ?
Şifreleme bilimi temel olarak verilerin güvenliliği, şifrelenmesi ile ilgilenen bilim dalıdır. Veriye (bilgiye) -matematiksel yöntemler kullanarak- istenmeyen kişiler tarafından ulaşılmasını engellemeye çalışır. Şifreleme bilimi kendi içinde dallara ayrılır. Kriptografi, bilginin şiftelenmesi ile ilgilenir. Temel amacı bilginin güvenli taşınmasıdır. Kriptoanaliz, şifrelenmiş bilgiyi çözmek, adından da anlaşılabileceği gibi analiz etmekte kullanılır.
Şifreleme Algoritmaları
Temel olarak iki tür algoritma vardır. Simetrik ve asimetrik şifreleme.
Simetrik Anahtar Şifreleme (symmetric-key cryptography)
Bu tür şifreleme algoritmaları, veriyi şifrelemek için gizli bir anahtar kullanılır. Şöyle düşünebilirsiniz, arkadaşınıza bir mesaj iletmek istiyorsunuz, ve yalnızca arkadaşınızın bildiği bir şekilde veriyi değiştiriyorsunuz, arkadaşınız değiştirme yönetimini bildiği için mesajınızı okuyabiliyor. Bu örnekte kullandığınız anahtar ile mesaj şifreleniyor ve yine aynı anahtar ile açılıyor. Bir önceki yazıyı okuyanlar için kısa bir örnek daha yazayım, harfleri kaydırarak yapılan şifrelemede yani Sezar Şifrelemesinde, karşı tarafa, harfleri belli bir sayıda kaydırılmış metin gönderiliyordu. Karşı taraf bu metni doğru okuması için harflerin kaç harf kaydırıldığını bilmesi gerekli. İşte bu bilgi anahtar oluyor ve anahtar kullanan ( gizli bir anahtar ) algoritmalara , simetrik anahtar şifreleme denir. Anlaşılır olması açısından bir örnek yapalım birlikte;
Simetrik anahtar yöntemi kullanarak bir mesaj oluşturalım.
Anahtarımız şu: İlk harfi okuduktan sonra, birer atlayarak oku. (Bu anahtarı kimseye söylemiyorsunuz, sizin ve benim dışımda kimse bilmiyor. )
Şifrelenmiş metin: bjetnsirmuaıdoıkmhasnrizn (Anahtara göre bir metin gönderiyorum size.)
Bu metni okumak için anahtarı kullanıyorsunuz ve sonuç:
**b**j**e**t**n**s**i**r**m**u**a**ı**d**o**ı**k**m**h**a**s**k**r**i**z**n**
Düz metin = “benimadimakin”
En çok bilinen simetrik anahtar kullanan algoritmalar:
- AES
- DES
- Triple DES
- Blowfish
- Rc5
- Twofish
Not: DES algoritması hakkında harika bir çeviri var. Okumak için buraya tıkla.
Asimetrik şifreleme Açık anahtarlı şifreleme ( Public-key cryptography )
Simetrik şifrelemenin tersine, asimetrik şifrelemede iki anahtar kullanılır. Gizli anahtardan birisi yalnızca veriyi okumak isteyen kişi tarafından kullanılır. Diğeri ise açık anahtar olarak işlev görür. Adından da anlaşılabileceği gibi bu anahtar herkes tarafından bilinebilir ve kullanılabilir. Bunun neresi güvenli diyebilirsiniz. Ama bu anahtar veri okumaya değil yalnızca veriyi şifrelemek için kullanılmaktadır. Yani tek yönlü, yalnızca veri şifreliyor. Veriyi okumak içinse gizli anahtara ihtiyacınız var. Bu durumda açık anahtarı herkesle paylaşabilirsiniz, size güvenli mesaj göndermek isteyen biri, sizin açık anahtarınız ile mesajı şifreler ve size gönderir. Eğer mesaj başkasının eline geçerse, gizli anahtar olmadığından dolayı, mesajı okuyamaz. Mesaj sizin elinize ulaştığında ise bunu gizli anahtarınız ile çözer ve okursunuz.
Simetrik şifrelemeye göre daha yavaştır. Temelinde bazı çözümü zor matematiksel fonksiyonları kullanılır ki bunlardan biri çok büyük sayıların asal çarpanlarının bulunmasıdır. Algoritmaları anlatırken, asimetrik şifreleme ile ilgili daha detaylı bilgi bulabileceksiniz.
- Rsa
- Robin
- Merkle-Hellman
Daha fazlası için wikipedia.org’u ziyaret edebilirsiniz.
Bir anahtar kullanıp kullanmadıklarına göre şifreleme algoritmalarını simetrik ve asimetrik olmak üzere ikiye ayırdık. Bunun dışında şifreleme yaparken kullandığı yönteme görede algoritmalar block ve stream chiper olmak üzere ikiye ayrılıyorlar. Şimdi nedir bunlar, hangi algoritmalar hangisini kullanıyor bir bakalım.
Stream Chiper
Artık elimizdeki düz metni öğrendiğimiz algoritmalara göre şifreleyebiliyoruz. Daha önce öğrendiğimiz one time pad algoritmasını hatırlayalım (şifrelemenin tarihi makalesinde var). Düz metnimizdeki karakterlerin (harflerin) sayısal değerlerini, anahtarımızdaki harflerin sayısal değerleri ile topluyorduk, elde ettiğimiz sonucları – eğer toplam sayı alfabedeki harf sayısını aşıyorsa mod işlemi kullanarak – tekrar harflere çeviriyorduk. Bu algoritmaya göre şifrelemenin harf harf yapıldığına dikkat çekmek istiyorum. Stream chiper şifrelemenin bit veya byte (8 bit) kullanarak yapıldığı şifreleme türüdür. Düz metninizdeki her bit veya byte teker teker şifrelenir. Genel olarak – ileride göreceğimiz algoritmaların tamamında – şifreleme için xor (mod2 de toplama işlemi) kullanılır. Bunun nedeni sanırım aynı değer ile tekrar xor işlemi yaptığınızda ilk değeri elde etmemiz, yani deşifreleme işleminin kolaylığından.
Örnekleri;
- Enigma
- Rc-4
- A5
Block Chiper
Block chiper adından da anlaşılabileceği gibi, şifreleme için bit veya byte yerine belli uzunluktaki bitlerin oluşturduğu blokları kullanır. Düz metin genellikle 32′nin katı olucak şekilde bit gruplarına ayrılır. En çok block chiper için 64 bitlik blocklar kullanılır, bu yüzden düz metnimizi 64 bitlik 10 gruba böldüğümüzü düşünelim. Daha sonra her grup tek tek şifrelenerek şifrelenmiş gruplar oluşur. En sonunda şifrelenmiş grupları birleştirerek şifrelenmiş metin elde edilir. Tabiki gerçek uygulamalarda her şey bu kadar basit ve mükemmel olmuyor. Kafanıza şöyle bir soru gelmiş olabilir, “Ya 90 bitlik bir düz metnim varsa ? O zaman geriye kalan 26 bitlik veri nasıl şifrelenecek ?” veya “Kaç block olacağını yada her bloktaki bit sayısı nasıl belirleniyor ?” diye bir soruda soruyor olabilirsiniz. Bunlar gayet normal ve bir o kadar da güzel sorular ama bu yazının konusunun dışında, fazlaca detay olduğunu düşündüğüm konular. Bu yüzden bunların cevabını bulamadıysanız kişisel olarak bana ulaşırsanız size yardım edebilirim.
Block Chiper kullanan bazı algoritmalar;
- AES
- Blowfish
- CAST5
- DES
- IDEA
- RC6
- Serpent
- Twofish
Kriptoanaliz (Cryptanalysis)
Kriptoanaliz, şifreleme bilimindeki şifreleri çözmek için kullanılan yöntemlerin bütünüdür. Amacı şifrelenmiş metinlerden, çeşitli saldırı yöntemleri kullanarak düz metni elde etmektir. Kriptoanaliz kendi içinde bir çok saldırı tekniği içerir ki bunlardan bazıları:
- Deneme yanılma yöntemi ile yapılan saldırılar (Brute-force attack)
- Yalnızca şifrelenmiş metin üzerine yapılan saldırılar Şifreli Metin Saldırısı (Cipher-text only Attack)
- Şifrelenmiş ve düz metni elde edilerek yapılan saldırılar açık mesaj saldırısı (Known plain text Attack)
Bu yazınında sonuna geldik, bu bilgileri ileride kullanacağız bu yüzden basit olarak ne nedir bilmenizde fayda var. Diğer yazımda günümüzde kullanılan bir kaç algoritma ile örnekler çözüp, şifreleri kırmaya çalışacağız.
Kaynaklar:
http://en.wikipedia.org/wiki/Public-key_cryptography#Examples](http://en.wikipedia.org/wiki/Public-key_cryptography#Examples
http://tr.wikipedia.org/wiki/A%C3%A7%C4%B1k_anahtarl%C4%B1_%C5%9Fifreleme
http://cekirdek.uludag.org.tr/~meren/belgeler/aak/acik_anahtarli_kriptografi.pdf