1. -Kriptografi Nedir?
En kısa tabiri ile şifreleme bilimidir. İnsanlar yüzyıllardır önemli bilgilerin korunması
için uğraş vermişlerdir. Bu uğraşın sonucunda da Kriptografi doğmuştur. Kriptografi terimi
ilk olarak Yunancada gizli anlamına gelen “Kriptos” ve yazı anlamına gelen “Graphi” den
türetilmiştir.
Kriptografiyi anlamak matematiği anlamaktan geçer bir kriptoyu oluşturan algoritmalar
genellikle matematiksel fonksiyonlar içerir. Aklınıza algoritma terimi takıldıysa onu da
kısaca açıklamak isterim.
-Algoritma
Algoritma ilk başlarda matematik alanında kullanılmış. Fakat ilerleyen vakitlerde
teknolojinin gelişmesi ile bilgisayar ve özellikle yazılım alanında kullanıma geçirilmiş
problem çözme yöntemidir. Problemi çözmek için kullanılan en yaygın algoritma yöntemleri
ise şunlardır; Satır algoritması ve Akış diyagramları
Akış diyagramına örnektir.
Az çok algoritmanın da ne olduğunu kavradıysanız yazıma devam etmek istiyorum. Kriptografi
biliminde sadece şifre oluşturmak isteyenler değil aynı zamanda bu alanda şifre kırmak için
de çalışan on binlerce Kripto analistler bulunmaktadır. Örnek vermek gerekirse Enigma
makinesi Nazi Almanyasının kullandığı bir şifre üretme ve çözme makinesidir. Lakin müttefik
devlet olan Polonya ve İngiltere’nin Kripto analistleri sayesinde bu şifrelerin çözülmesi
sağlanmış ve hatta bazı tarihçilere göre Avrupa da savaş 1 yıl bir yıl erken bitmiştir.
Gördüğünüz üzere Kriptografi bilimi tarihte çok önemli bir yere sahiptir. Şimdi genel
bilgileri öğrendiğimize göre geçmiş tarihteki şifrelemelere ve Kriptografiye biraz daha
derinlemesine girmek istiyorum.
-Sezar Şifrelemesi
Tarihin ilk şifreleme fikirlerinden bir tanesidir. Harflerin yer değiştirmesine dayalı bir
şifreleme yöntemidir.3 harf değiştirmeli bir Sezar şifresini resimle daha iyi
anlayacağınızı zannediyorum.
3 Harf değiştirmeli bir Sezar şifresine örnektir.
1. Gördüğünüz üzere çok basit bir şifreleme yöntemedir. Günümüz şartları altında Brute
Force(Kaba Kuvvet Saldırısı) uygulayarak bu tip şifreleri kırabiliriz. Kaba Kuvvet
saldırılarını daha detaylı bir şekilde ayrıca anlatacağım.
2. Şimdi dilerseniz bir Kriptoyu oluşturmak için kullanılan 3 çeşit yöntemi ele alalım
böylece günümüzdeki şifreleme yöntemlerini de anlatmış olurum.
-Anahtarsız Şifreleme
Anahtar kullanmayan kriptografik algoritmalar veya diğer adıyla “Veri bütünlüğü ve
özet fonksiyonları” veriyi tek yönlü olarak şifreleme işlemi gerçekleştirirler
şifrenin geri dönüşü yoktur. Genellikle algoritmaya bağlı olarak belirli bir
genişlikte ve karakterde çıktı verirler. Örnek vermek gerekirse günümüzde en çok
kullanılan MD5 şifrelemesi buna en iyi örneklerden bir tanesidir. MD5 şifrelemesi
128 bitlik bir özet üretir ve şifrelenmek istenen mesajın karakteri ne olursa olsun
şifrelenmiş mesaj 32 karakterdir. Bu tip şifrelemelerin ortak noktası ise “Kelebek
Etkisi” dir.
-Kelebek Etkisi
Kelebek etkisi şifrelenecek verinin bir harfinde veya sayısında yapılacak
değişikliğin oluşturulacak olan şifreyi çok büyük ölçüde etkilemesidir. Kelebek
etkisi denmesindeki amaç ise Edward N. Lorenz’in; Amazonlarda bir kelebeğin kanat
çırpışı Avrupa da bir fırtına kopmasına sebep olabilir düşüncesinden gelmektedir.
Bunu md5 şifreleme yöntemi ile örneklersek daha iyi anlaya bilirsiniz.
onur’un md5 çıktısı şudur: d4e7a887c652f58057b0607b251ad746
Onur’un md5 çıktısı ise şudur: fc2e268854a18f47fbb9ca850f8d2b38
O harfinin büyük olması bile gördüğünüz üzere şifrelemeyi çok büyük bir şekilde
etkiledi.
Anahtarsız şifreleme yöntemlerine örnek Kriptolar ise şunlardır; MD5, SHA-1, RIPEMD-
160
-Gizli Anahtarlı Şifreleme(Simetrik Şifreleme)
Bu şifreleme yönteminde hem şifreleme hem de deşifreleme için aynı anahtar
kullanılır. Bu şifrelemenin güvenli olarak kullanılması için Anahtarın her iki
tarafa da güvenilir bir şekilde iletilmesi gerekmektedir. Bu şifreleme yöntemine
örnek vermek gerekirse Sezar Şifrelemesi, DES, RC5, BLOWFİSH bu şifrelemenin en
güzel örneklerindendir.
Bu tip şifrelemelerin en büyük avantajı Anahtar boyutunun küçük olmasıdır. Anahtar
boyutunun küçük olması bize hızlı bir şifreleme imkanı sunar.
-Açık Anahtarlı Şifreleme(Asimetrik Şifreleme)
Şifreleme ve deşifreleme için farklı anahtarların kullanıldığı bir şifreleme
yöntemidir. Bu şifrelemede Açık anahtarla şifreleme Gizli anahtarla deşifreleme
işlemi yapılır. Her ne kadar farklı anahtarlar kullanılsa da anahtar çiftleri
matematiksel olarak birbirine bağlıdır. Bu yöntemde şifreleme yapan anahtarın pek
bir önemi yoktur birçok kişi bu anahtara sahip olabilir lakin şifreyi deşifre etmek
için kullanılan anahtar dikkatli bir şekilde korunmalıdır. Günümüzde birçok sistem
bu şifreleme yöntemini kullanmaktadır. Buna en iyi örnekler ise şunlardır; RSA, TLS,
GPG
Bu şifrelemenin en büyük avantajı anahtar değiş tokuşunun güvensiz kanallar
üzerinden bile gerçekleştirilebilmesidir. Gizli anahtarlı bir şifrelemede güvensiz
kanallar üzerinden anahtar değiş tokuşu yapması oldukça zordur ve güvensizdir. Gizli
anahtarlara göre dezavantajı ise Açık anahtarla şifreleme yapmak zor ve yavaştır.
Temel kavramları anladığınıza göre artık biraz daha yorucu ve matematik içeren
konulara geçiyoruz. Aklımda daha çok güncel şifrelemeleri inceleme, yorumlama ve
günümüz teknolojilerinde bu alandan nasıl yararlanıldığını anlatmak var.
-Günümüzde Kriptografi
-SSL(SECURE SOCKET LAYER)
1994 yılında Netscape tarafından geliştirilen Web tarayıcısı ile Web Server arasında
güvenli iletişimi sağlayan bir protokoldür. Günümüzde daha çok Alışveriş sitelerinde
veya FTP transferlerinde kullanılır. Tarayıcının üst sol bölümünde altın renkli bir
asma kilit varsa bu sitenin SSL ile korunduğunun bir göstergesidir. Bu asma kilide
tıklayarak SSL sertifikasının kimden alındığını, geçerlilik süresini
öğrenebilirsiniz. Açık Anahtarlı bir şifrelemedir. Günümüzde SSL protokolü
geliştirilerek yeni ismi ile TLS adını almıştır.
Bir istemci sunucu ile TLS bağlantısı kurmak istediğinde bir el sıkışma gerçekleşir.
Bu el sıkışma olayı sırasıyla aynen şu şekildedir;
3. 1. İstemci kendi SSL sürüm numarasını, şifre ayarlarını, oturuma özgü veriyi, ve
sunucunun istemciyle iletişime geçmek için ihtiyaç duyduğu diğer bilgileri sunucuya
gönderir.
2. Sunucu kendi SSL sürüm numarasını, şifre ayarlarını, oturuma özgü veriyi, ve
istemcinin sunucuyla iletişime geçmek için ihtiyaç duyduğu diğer bilgileri istemciye
gönderir. Sunucu aynı zamanda kendi sertifikasını da istemciye gönderir. Eğer
istemci sunucunun kimlik doğrulama gerektiren bir kaynağına ulaşmak isterse, sunucu
istemcinin sertifikasını talep eder.
3. İstemci sunucunun gönderdiği bilgileri kullanarak sunucuyu doğrular. Eğer sunucu
doğrulanmazsa, kullanıcı hata uyarısı alır, şifrelemenin ve doğrulamanın
sağlanamadığı hakkında bilgilendirilir. Eğer sunucu doğrulama başarılı olursa,
istemci bir sonraki adıma geçer.
4. İstemci oturum için bir ikincil paylaşılan gizli veri (sunucu işbirliğiyle ve
şifreleme algoritmasına göre değişen) oluşturur, bunu sunucunun açık anahtarını
kullanarak şifreler (2. adımda sunucunun sertifikasını elde etmişti) ve bu
şifrelenmiş ikincil paylaşılan gizli veriyi sunucuya gönderir.
5. Eğer sunucu istemciden kimlik kanıtlaması isterse (el sıkışmada isteğe bağlı bir
adımdır) istemci aynı zamanda yeni bir veri imzalar. Bu veri el sıkışma için eşsiz
olmalı ve hem istemci hem de sunucu tarafından bilinmeli. Bu durumda, istemci
imzalanmış veriyi, kendi sertifikasını, şifrelenmiş ikincil paylaşılan gizli verinin
yanında istemciye yollar.
6. Eğer sunucu istemciden kimlik kanıtlamasını istediyse, sunucu istemciyi doğrulamayı
dener. Eğer istemci doğrulanmazsa, oturum sonra erer. Eğer istemci başarıyla
doğrulanırsa, sunucu kendi gizli anahtarını kullanarak ikincil paylaşılan gizli
veriyi deşifreler, ve daha sonra bir dizi adımlar takip ederek esas paylaşılan gizli
veriyi oluşturur (istemci de ikincil paylaşılan gizli veriden başlayarak aynı
adımları izler).
7. İstemci ve sunucu elde ettikleri esas paylaşılan gizli veriyi kullanarak oturum
anahtarları oluşturur, ki bu anahtarlar simetrik olup SSL oturumu boyunca şifreleme
ve deşifreleme bilgilerinin değişiminde ve verilerin bütünlüğünün kontrol
edilmesinde kullanılır (bu da, SSL bağlantı süresi boyunca verinin gönderilme saati
ile alınma saati arasında herhangi bir değişikliğin olup olmadığı saptanarak
yapılır).
8. İstemci sunucuya bundan sonra kendisinden gelecek mesajların oturum anahtarıyla
şifreleneceği bilgisini içeren bir mesaj gönderir. Ardından istemci farklı bir
(şifrelenmiş) mesaj göndererek el sıkışmanın kendisine ait kısmının bittiğini
belirtir.
9. Sunucu istemciye bundan sonra kendisinden gelecek mesajların oturum anahtarıyla
şifreleneceği bilgisini içeren bir mesaj gönderir. Ardından sunucu farklı bir
(şifrelenmiş) mesaj göndererek el sıkışmanın kendisine ait kısmının bittiğini
belirtir.
(Wikipedia’dan alıntıdır.)
-MD5
Ron Rivest tarafından 1991 yılında geliştirilmiş 128 bitlik 32 karakterlik bir tek yönlü
şifreleme yöntemidir. MD5 şifrelemesi girilen değerlerin 32 karakterlik bir mesaj
çıktısı oluşturur. Birçok alanda kullanılmaktadır. Şifreleme tek yönlü olduğu için
kırılmasının tek yolu Brute Force(Kaba Kuvvet) saldırılarıdır. Peki, bu Brute Force
saldırıları nedir ne değildir birazda ona bakalım;
-Brute Force(Kaba Kuvvet Saldırıları)
Şifre kırmak için çok popüler olan bir yöntemdir. Mantığı ise oldukça basittir. Brute
Force saldırılarında yazılımlar bir wordlist aracılığı ile şifre denerler eğer ki
wordlistte bulunan bir şifre hedefin şifresi ile uyumluysa şifre kırılır. Bu yöntem
haftalar, aylar hatta yıllarınızı alabilir. Bu tip saldırılarda önemli olan şey hedefi
iyi tanımaktır. Günümüzde Brute Force saldırılarını süper bilgisayarlar ile
gerçekleştiren bir çok hacker vardır. Brute Force gibi alanlarda genel olarak GPU(grafik
işlem ünitesi) kullanılır. Bu tip yazılımlara örnek vermek gerekirse; Hydra, Medusa,
John the ripper, Ncrack adlı yazılımlar en iyi örneklerdendir.
Sizlere php ile kendim yazdığım Brute Force yöntemine dayanan web tabanlı yazılımımı
paylaşmak istiyorum;