Hash Fonksiyonları

Hash fonksiyonları değişken uzunluklu veri kümelerini, sabit uzunluklu verilere dönüştüren fonksiyonlardır.

İdeal bir hash fonksiyonunda aşağıdaki özellikler bulunur:

  • Herhangi bir mesaj için hash değerini hesaplamak kolaydır.
  • Herhangi bir hash değerinden mesajı elde etmek imkânsızdır.
  • Hash değeri değişmeden mesajı değiştirmek imkânsızdır.
  • İki farklı mesajdan aynı hash değerini elde etmek imkânsızdır.
  • Hash fonksiyonlarına gelen data sadece 1 bit bile değişse ortaya çıkan hash tamamen farklıdır.

MD5(message digest)

1991 yılında Ron Rivest tarafından geliştirilmiştir. Aligoritma 128-bit’lik(16-byte) bir sonuç üretir. Aligoritmanın bazı zayıflıkları tespit edilmiş olsa da kırıldığı tam olarak ispatlanamadığı için günümüzde  kullanılmaktadır.

Özellikleri:

  • Tek yönlü çalışır
  • MD5 algoritması ile bir dosyada değişiklik yapılıp yapılmadığını anlayabiliriz.
  • MD4’e göre daha yavaştır ama daha güvenlidir.

MD5 günümüzde SSL, VPN , SSH gibi yerlerde kullanılır. Login olduğumuz çoğu sistemde şifreler açık olarak tutulmaz, şifrenin MD5’li hali tutulur. MD5 tek yönlü olduğu için bu tip sistemler unutulan şifreleri kullanıcıya geri döndüremezler. Sistem random olarak kullanıcıya yeni şifre atar. Ayrıca bu tip sistemlerde iki farklı kullanıcı aynı şifreyi kullandığında aynı hash değerine sahip olacağı için çakışma yaşanır. Çakışmanın önüne geçmek için ise ikincil gerekirse üçüncül sınama yöntemleri uygulanır.

Brute Force Atakları

MD5 algoritması tek yönlü olduğu için geri dönüştürülemiyor demiştik. Bu algoritmaya brute force yapmak için ise bir sözlük oluşturuluyor. Bu sözlük büyük harf, küçük harf, sayılar, özel karakterlerden oluşuyor. Bu sözlükteki kelimeler teker teker MD5 fonksiyonundan geçirilerek bir veri tabanında saklanıyor. Somut bir örnek vermek gerekirse;

Daha önceden yazdığım MD5 fonksiyonuna “erkan” datasını gönderiyorum ve hashli halini alıyorum.

md5

Bu hashi http://md5cracker.org/ sitesinde tarattığımda ise

md5_2

tekrar kendi datama ulaşabiliyorum. Yeni geliştirilen sistemlerde ise şifrelenmiş veriyi birkaç kez daha şifreleyerek bu tip saldırılardaki başarıya ulaşma şansı daha aza indirilmiştir.

Şifrelenmiş veriyi tekrar şifrelediğimde sonuca ulaşılamıyor.

md5_3

 

md5_4

 

veya aşağıdaki metodu da kullanabilirsiniz.

 

Çıktı:

md5_5

 

Secure Hash Algorithm (SHA)

Güvenli özetleme aligoritması anlamına gelmektedir. NSA (National Security Agency) tarafından tasarlanmıştır. Günümüzde, SHA-0, SHA-1, SHA-2 olmak üzere 3 varyantı vardır. Ayrıca SHA-3 özeteleme algoritmasını daha .NET platformu desteklememektedir. Ancak üçüncü parti implementasyonları bulunmaktadır.

Çıktı:

sha_1Mesaj Doğrulama Kodu(Message Authentication Code)

Mesaj doğrulama kodları kriptolojide mesajın doğruluğunu kanıtlamak için kullanılır. Bu algoritma parametre olarak gizli anahtar ve karşıya iletilecek(doğruluğu ispatlanacak) mesajı alır. Çıktı olarak mesaj doğrulama kodu verir. Bu sayede alıcı mesajda değişiklik olup olmadığını anlayabilir. Bu işlem için daha önce yazdığım kriptografik rastgele sayı üreteçlerine göz atmanızı tavsiye ederim.

 

 

Çıktı:

mdk_1

Projeyi buradan indirebilirsiniz.

Kaynaklar:

https://en.wikipedia.org/wiki/Hash_function

https://tr.wikipedia.org/wiki/Mesaj_Do%C4%9Frulama_Kodu

 

 

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.