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.
Özellikleri
- MD5 algoritması tek yönlü çalışır. Şifreleme yapılır, ancak şifre çözüm işlemi yapılamaz.
- MD5 algoritması, üzerinde işlem yapılan dosyada (aktarma vb.) herhangi bir değişiklik olup olmadığını tespit eder. Eğer bir değişiklik yapılmışsa, yeni dosyanın MD5 algoritmasından geçilmesinden çıkan sonuç ile ilk dosyanın MD5 sonucu birbirinden farklı olacaktır.
- MD5 algoritması bir alt sürümü olan MD4’e göre yavaş çalışır, ancak şifrelendirme sistemi çok daha karışık ve çözülmesi güçtür.
- Genel olarak 4 farklı aşamalı bir sisteme sahiptir. Her aşama birbirinden farklı işleyişe sahip olup 16’şar basamaktan oluşmuştur. Bir MD5 şifreleme işleminde aşağıdaki resimdeki sistemden 64 tane gerçekleşmektedir.
- Boyutu fark etmeksizin algoritmaya girişi yapılan dosyanın çıkışı olarak 128-bit uzunluğunda 32 karakterli 16'lık sayı sisteminde bir dizi elde edilir.
Kullanıldığı Yerler
- İnternet trafiğinde. "SSL (Secure Sockets Layer - Güvenli Yuva Katmanı)" gibi.
- Özel bilgisayar ağlarında. "VPN (Virtual Private Network - Sanal Özel Ağ)" gibi.
- Güvenli uzaktan ulaşım uygulamalarında. "SSH (Secure Shell - Güvenli Kabuk)" gibi.
- Kimlik belirleme uygulamalarında.
Dezavantajları
- Kullanıcı adı ve şifre ile giriş yapılan sitelerde, kullanıcı şifresini unuttuğu takdirde sistem eski şifreyi veremez. Şifre, MD5 algoritmasından geçirilmiş halde saklandığı için şifre çözülemez. Sistem kullanıcıya yeni şifre atar.
- MD4 'e göre daha uzun bir şifre ürettiğinden çalışması daha uzun zaman alır.
Çakışmalar (Collisions)
Ç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) yada 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.
Brute Force Saldırılar
Brute Force saldırısı, sistem veri tabanlarında MD5 algoritmasından geçirilmiş halde saklanan şifreleri, belirli tahminler yürüterek (6 tane rakamdan oluşur, 3 tane büyük harf ve 2 rakamdan oluşur, vb.) önceden hazırlanmış karakter setli algoritmalar çerçevesinde bulmaya çalışan bir saldırı türüdür. Muhtemel bir saldırıda, 10 karakterli bir şifrede büyük harf, küçük harf, rakam ve özel karakterlerin oluşturacakları birleşim sayısı çok fazla olacağından Brute Force saldırıların şifreyi bulma süresi çok uzun olacaktır.
Yeni geliştirilen sistemler, olası sistem açıklarından yararlanarak kullanıcılarının şifrelerini ele geçirenlerin başarılı olma şanslarını en aza indirmek için şifreleri şifreledikten sonra şifrelenmiş şekilleri tekrar şifrelemektedirler.
MD5(MD5(MD5......(MD5(kullanıcı şifresi))……))
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.
MD5 Tabloları ve RainbowCrack Projesi
RainbowCrack projesi büyük harf, küçük harf, rakam ve özel karakterlerin kendi içlerinde oluşturabilecekleri olasılıklar düşünülerek, 1 karakterli olanlardan başlanıp sonsuz karakterli olabilecek tüm şifrelerin MD5 algoritmasından geçirilmiş şekillerinin bir tabloda biriktirilmesidir. Bu proje sayesinde MD5 algoritmasından geçirilmiş şekli bilinen bir dosyanın boyutu ve neler içerdiği veya şifrelenmiş kullanıcı şifresinin kendisi saniyeler içinde tespit edilebilir. Ancak çok fazla olasılık olduğundan bu proje bitirilememektedir.
.NET Teknolojisi ile MD5 Şifreleme
.NET teknolojisi ile yazılım geliştirenler, herhangi bir veride şifreleme yapmak için .NET Framework içerisinde yer alan System.Security.Cryptography kütüphanesini kullanmaktadırlar. Bu kütüphane içerisinde yer alan fonksiyonlar sayesinde, yazılımcı istediği platformda güvenli bir şekilde veri şifreleme ve şifre çözümleme yapabilmektedir. MD5 algoritmasını kullanarak şifreleme yapabilmek için Windows Form uygulamasında MD5 sınıfının, Web uygulamasında ise FormsAuthenticationsınıfının metotları kullanılabilir. Bununla ilgili bağlantıda yer alan uygulama incelenebilir.