MD5 nedir?
En basit anlatımıyla herhangi bir uzunluktaki karakteri Message-Digest (Mesaj Özeti) algorithm 5 adlı işlem grubundan geçirerek 32 karakterli sabit uzunlukta bir kod üretir. Oluşturulan bu 32 karakteri "verinizin parmak izi" olarak düşünebiirsiniz. Aynı veriyi MD5 ile kodlamak her zaman aynı sonucu verir ve bu kod teknik olarak geri döndürülemez. Yine de güçlü bir algoritma olarak kabul edilmez kullanım yönelimi daha çok hızlı ve çok fazla hesaplama gücü olmadan her farklı girdi için benzersiz bir değer üretmek şeklindedir.
Günümüzde birincil kullanım amacı şifreleme değil, kimlik doğrulama şekindedir. Detaylar için okumaya devam edin.
Tarihçesine bakacak olursak 1991 yılında MIT’de (Massachusetts Institute of Technology) görev yapan prof. Ron Rivest tarafından geliştirilmiştir. Prof. Rivest MD5’i MD4’ün bir üst sürümü olarak tasarlamıştır.
MD5 Oluşturucu
MD5 oluşturucu istediğiniz metni MD5 algoritmasından geçirerek sonucu size anında yansıtacaktır. Ayrıca sonuçlar bölümünde aynı verinin SHA1, SHA256 ve SHA512 algoritmalarının hash sonuçlarını da görebilirsiniz. Kullanması tamamen ücretsiz pratik bir araçtır.
MD5 Hakkında işe yarar bazı bilgiler:
- MD5 algoritması tek yönlü çalışır yani MD5 kodu esas metne dönüştürülemez.
- MD5 algoritmasının çıkışı içeriği fark etmeksizin 128-bit uzunluğunda 32 karakterli 16'lık sayı sisteminde bir sonuç elde edilir.
- Esas kullanıma uygun işlevi, çok hızlı ve çok fazla hesaplama gücü olmadan benzersiz bir değer üretmek şeklindedir. Bunun sebebi tamamen güvenli değildir; brute force saldırılarına karşı zayıftır ve RainbowCrack projesi MD5 Hash için bir tür panzehir gibidir.
MD5 kodları nerelerde kullanılır?
- Şifrelerin saklanması, parola ile giriş yaptığımız sitelerin pek çoğunda parolalar veritabanına MD5 algoritmasıyla şifrelenerek saklanır. Bu yüzden kullanıcı şifreyi unuttuğu durumlarda sistem eski şifreyi veremez ve mecburen yeni şifre oluşturulur.
- Dosyaların doğrulanması, bir dosyanın bilgilerini MD5 ile hash'leyip depolayarak, dosya üzerinde bir işlem yapılmışsa MD5 hash bilgisi farklı olacağından değişiklik kontrolü yapalabilir.
- SSL (Secure Sockets Layer), SSH (Secure Shell) gibi güvenlik katmanı olan internet trafiğinde.
- Çeşitli kimlik belirleme uygulamalarında, mesajların doğru iletilip iletilmediğinin doğrulanması gibi kullanım alanları vardır.
MD5 önerilen kullanım alanı, kritik bilgileri şifrelemek değil, girdilerin kimliğini doğrulamak (en yaygın olarak sitelerdeki parolalar) veya Brute Force (kaba kuvvet saldırısı) beklenmediği basit ve kritik olmayan uygulamalarda veri bütünlüğünü doğrulamak için yaygın olarak kullanılmaya devam etmektedir.
MD5 Ne kadar güvenli?
Brute Force Saldırılar
Brute Force saldırısı, bilgisayar ile yapılan ard arda şifre denemelerine verilen addır. Hali hazırda bir veri tabanında saklanan MD5 ile hash işleminden geçirimiş ve çeşitli kriterlere göre tasniflenmiş (örn: 6 rakamdan oluşan, sadece küçük harfler içeren gibi) md5 kodlarını ard arda deneyerek parolayı bulmaya çalışan bir saldırı türüdür.
Brute force ataklarında şifre ne kadar karmaşıksa bulunma olasılığı aynı orandan azalacaktır. Altı karakterli doğum yılı + ayı şeklinde bir paralo ile 18 karakterli rakam, büyük/küçük harf, noktalama ve sembollerden oluşan bir şifrenin farkını düşünün. Kompleks olan için bu tarz saldırıların başarı şansı hayli azalacaktır.
Bazı geliştiriciler, olası yöntemlerle sistemdeki kullanıcılarının şifrelerinin güvenliğini arttırmak amacıyla kullanıcıdan aldıkları düz parolayı şifreledikten sonra şifrelenmiş karakterleri tekrar şifreleme yoluna gitmektedir. Aşağıdaki gibi bir kullanımı hiç düşündünüz mü?
MD5(MD5......(MD5(açık şifre))……) gibi...
Ek olarak MD5 ile oluşturulan 32 haneli hash verisini çözmeyi denemelerini iyice zorlaştırma amacıyla sadece uygulama geliştiricisinin bildiği gizli bir anahtar (kullanılan ifadeye salt adı verilir) metnin başına veya sonuna eklenir.
Kullanıcının girdiği şifrenin "123456" olduğunu düşünsenize. Siz bu şifrenin başına "=_-?(/&%+)" bu sembolleri eklediğinizde MD5 Hash verisinin çözülmesi zorlaşacaktır.
2- MD5 Tabloları ve RainbowCrack Projesi
RainbowCrack projesi, MD5 Hashleri algoritmik olarak geri çözülemeyeceğinden olasılık dahilinde olan bütün MD5 Hashlerini oluşturup bir yerde dopolama projesidir.
Tahmin edebileceğiniz gibi büyük-küçük harfler, rakamlar ve geriye kalan bütün sembollerin barındırıldığı ve tek haneliden sonsuz uzunlukta çok fazla olasılık olduğu için proje bitirilememektedir.
Bu proje vasıtasıyla MD5 algoritmasıyla işlenmiş kullanıcı şifresi saniyeler içinde tespit edilebilir.
Meraklısına:
MD5CRK Projesi, 2004 Mart ayında başlatılan proje MD5'in güvenli olmadığını ispatlamayı hedeflemişti. 17 Ağustos 2004'te bir IBM p690 bilgisayarda MD5'e düzenlenen analitik saldırının sadece 1 saatlik bir zaman diliminde başarıya ulaştığı duyuruldu.
Önemli Öneri: Kendi uygulamanızı oluşturuyorsanız ve bir şeyi hash etmeniz gerekiyorsa, herhangi bir güvenlik kusuru bulunmadığı tespit edilen diğer şifreleme işlevlerini kullanmayı düşünün.