• 29 HAZİRAN 2020
  • Okunma Sayısı: 1028

Recep Hikmet ÖZYAVUZ - Karaelmas Kriptoloji Takımı

Zonguldak Bülent Ecevit Üniversitesi - [email protected]

 

MD5 (Message Digest 5, Mesaj Özeti 5)
Message Digest 5 (MD5) algoritması, verilen dosyanın veya mesajın (şifre vb.) kendine has “parmak izi” nin oluşturulmasını "hash" fonksiyonlarına dayalı olarak sağlayan bir algoritmadır. Bir veritabanı yönetimi (database management) tekniğidir. 1991 yılında MIT (Massachusetts Institute of Technology)’de görev yapan Profesör Ron Rivest tarafından geliştirilmiştir. Profesör Rivest MD5’i MD4’ün bir üst sürümü olarak tasarlamıştır. Şifrelenecek metinden 1 karakterin değiştirilmesi, şifrelendikten sonraki hash değerinin tamamen değişmesine yol açabilmektedir.(Örnek 1) Bu yüzden şifrelenecek metnin iyi bir kontrolden geçmesi gerekmektedir.

 Algoritması
MD5 şifreleme algoritmasını kısaca nasıl işlendiğine bakacak olursak;

i. MD5 değişken uzunluktaki bir mesajı 128 bitlik bir sabit uzunlukta çıktı olarak işler.
ii. Öncelikle veri 512 bitlik bloklara ayrılır ve her bir bloğa aynı işlem uygulanır. (on altı tane 32-bitlik kelimeler halinde)
iii. İşleme alınacak verinin 512 bit ve katları olması gerekmektedir. Eğer 512 bit ya da katlarından biri değilse ekleme yapılır. Bu işleme padding de denmektedir. Ekleme işleminin kuralları;
iii-i. 512 bitin en yakın katından 64 eksik olacak şekilde verinin binary değerinin sonuna bir adet 1 ve geri kalan kısma ise 0 eklenir. Bu 64 bitlik fark, verinin uzunluğunu belirtmek için kullanılır. Geriye kalan 64 bite de orijinal mesajın uzunluğu mod 2^64 'de yazılır.
iv. Ekleme işleminden sonra MD5 veriyi işlemeye başlar.(Şekil 1)
v. A, B, C ve D olarak adlandırılan 4 adet 32 bitlik kelimeyle ayrılmış 128 bitlik parçalar üzerinde çalışır. Bunlar belirli sabit değerlerle başlatılır. Daha sonra ana algoritma, her 512-bit ileti bloğunu durumunu(128 bit) değiştirmek için kullanır.Bir mesaj bloğunun işlenmesi, tur denilen dört benzer aşamadan oluşur; Her tur, doğrusal olmayan bir fonksiyon , modüler toplama işlemi ve bit bazında sola kaydırma işlemlerinden oluşur. Toplamda 16 tur vardır. Figür 1'de her tur içinde yapılan işlemler gösterilmiştir.4 olası F fonksiyonu vardır; her turda farklı bir fonksiyon kullanılır.(Şekil 2)


 Kullanıldığı yerler

a) İnternet trafiğinde. "SSL (Secure Sockets Layer - Güvenli Yuva Katmanı)" gibi.
b) Özel bilgisayar ağlarında. "VPN (Virtual Private Network - Sanal Özel Ağ)" gibi.
c) Güvenli uzaktan ulaşım uygulamalarında. "SSH (Secure Shell - Güvenli Kabuk)" gibi.
d) Kimlik belirleme uygulamalarında.
e) MD5 algoritması, üzerinde işlem yapılan dosyada (aktarma gibi) herhangi bir değişiklik olup olmadığını tespit eder. Eğer bir değişiklik yapılmışsa, iletilen dosyanın MD5 hash algoritmasından çıkan sonuç ile ilk dosyanın MD5 hash’inin sonucu birbirinden farklı olacaktır.(Şekil 3)
f) MD5’ın bir diğer kullanımı da public-key şifrelemededir. Public-key şifreleme (asimetrik), simetrik şifrelemeye göre çok daha fazla hesap gücü ve zaman gerektirdiğinden Public-key sistemlerde bile aslında Simetrik standart şifreleme kullanılır (Asimetrik public key ile). Daha sonra veri MD5 gibi bir hash’ten geçirilir ve bu kısa hash değeri asıl olarak asimetrik şifreleme ile şifrelenir. Bu sayede performans ile güvenlik arasında bir denge sağlanmış olur.


3) Dezavantajları

a) Kullanıcı adı-şifre ile girilen sitelerde, şifrenin unutulduğu durumlarda sistem eski şifreyi geri veremez. Şifre MD5 algoritmasından geçirilip saklandığı için sistem kullanıcıya yeni şifre vererek sorunu çözer.
b) MD4 e göre yavaş çalışması zaman bakımından dezavantaj olarak sayılabilir.

MD5 algoritmasının Kırılması İçin Yapılan Proje Çalışmaları
 

1) RainbowCrack

RainbowCrack projesi; büyük harf, küçük harf, sayı ve özel karakterlerin kendi arasında oluşturabileceği tüm olasılıklar düşünülerek hazırlanmış, 1 karakterli olanlardan sonsuz karakterli oluşturulan şifrelemelere kadar hepsinin MD5 algoritmasıyla şifrelenmiş hallerinin bir tabloda biriktirilmesidir. Belirlenmiş hashler çözümlemelerde kullanılabilmektedir fakat çok fazla olasılık olduğundan ve çok büyük boyutta verilerin saklanması kolay olmadığından bitirilememektedir.

2) BruteForce Saldırıları

BruteForce saldırıları, veri tabanında bulunan MD5 algoritmasından geçirilmiş şifreleri, tahminler yürüterek önceden hazırlanmış karakter setli algoritmalar (dictionary) ile bulmaya çalışan bir saldırı türüdür. Saldırı şekli deneme yanılma şeklindedir. (Standart BruteForce Saldırısı)

3) Çakışmalar

MD5 işlemlerinden sonra hash değerlerinde çakışma olduğunda yani 2 veri aynı şifreye sahip olduğunda, verinin "hash" tablosundaki yeni yerinin hesaplanabilmesi için doğrusal sınama (linear probing), ikinci dereceden sınama (quadratic probing) ya da ikili sınama (double probing) yöntemlerinden biri uygulanır. Doğrusal sınamada; veri "hash" tablosunda hemen bir sonraki yere yerleştirilir. İkili sınamada; şifrenin bulunduğu yerin nümerik karesi alınarak yeni yer belirlenir. İkinci dereceden sınamada ise; 2 "hash" fonksiyonu iç içe kullanılır. Eğer belli bölgelerde birikme olmuşsa buna kümelenme (cluster) denir. Zaten sınama yöntemlerindeki amaç da kümelenmeyi önlemektir. Ayrıca homojen dağılım olması için "hash" tablolarının büyüklüğü asal sayı tercih edilmelidir.

Örnek 1)
128 bit (16 baytlık) MD5 hashleri (ileti özetleri olarak da adlandırılır) genellikle 32 hexadecimal sayı ile gösterilir.
MD5(“ingilizler ben izlemem.”) =
2837552910f7b935e719bbe53e1c5f7c
MD5(“ingilizler ben izlemek.”) =
8c21543d008d5c63d83ec24841bb35b8


                                                                              Şekil 1


                                                                             Şekil 2


                                                                             Şekil 3


KAYNAKÇA:

https://tr.wikipedia.org/wiki/MD5
http://www.belgeler.org/howto/md-algoritmalar.html
https://bidb.itu.edu.tr/seyir-defteri/blog/2013/09/08/md5-algoritması
https://tools.ietf.org/html/rfc1321

TÜM MAKALELER