Konuyu kısaca anlatmak için MD5’in ne olduğuna göz atmak gerekir.
Message Digest Algorithm kelimelerinin kısaltmasından oluşan bu şifreleme tekniği, genellikle bir verinin bir yerden başka bir yere transferinin sorunsuz gerçekleşip gerçekleşmediğinin kontrolünde kullanılır.
Örneğin internetten indirdiğiniz 2 GB. boyutunda bir dosyayı indirdiniz.
Acaba indirme işlemi sırasında 1 bit bile olsa bu dosyada bir sorun oluştu mu ?
Genellikle bu tip büyük dosyaların yanında bir de MD5 HASH (MD5 Kelimesi diyelim biz buna) verilir.
Bu sayede bilgisayarınıza indirdiğiniz dosyanın MD5 Kelimesi ile, karşı tarafın size verdiği MD5 kelimelerinde bir farklılık varsa, dosyanızda bir sorun oluşmuş demektir.
MD5 bir şifreleme algoritmasıdır. MD5 algoritması ile sonsuz uzunlukta bir veriden 32 karakterli, 128 bit bir veri elde etmek mümkündür. En önemli özelliği geri dönüşümsüz oluşudur.
Örneğin deneme kelimesinin MD5 karşılığı 8f10d078b2799206cfe914b32cc6a5e9 şeklindedir.
Ancak görüldüğü üzere, daha doğrusu MD5 algoritmasının yapısı gereği, 8f10d078b2799206cfe914b32cc6a5e9 karşılığından yola çıkarak deneme kelimesine ulaşmak mümkün değildir. (matematiksel olarak mümkün değildir)
Diğer taraftan; elimizde 8f10d078b2799206cfe914b32cc6a5e9 şeklinde bir MD5 Kelimesi varsa bunu kırmanın bazı yolları da var elbette.
WordList yöntemi :
Bu yöntem, bilinen bazı kelimelerin MD5 karşılığını hesaplamak ve elimizdeki HASH ile tutup tutmadığına bakmaktır.
Örneğin bir kelime listesi olduğunu ve içerisinde elma, armut, üzüm, deneme, ayva kelimelerinin bulunduğunu varsayalım. Bu durumda, bir program elma’dan başlayarak ayva’ya kadar tüm kelimelerin MD5 karşılığını alacak ve elimizdeki HASH’in, deneme kelimesinin HASH’i ile aynı olduğunu anlayabilecektir. Bu durumda 8f10d078b2799206cfe914b32cc6a5e9 HASH’inin deneme’nin karşılığı olduğu anlaşılabilecektir.
Ancak tüm kelimeleri matematiksel olarak derlemek mümkün olsa da, zaman ve imkan açısından kayıt altına almak mümkün olamayacağı için bu yöntem çok da tercih edilen bir yöntem değildir ve şifrenin bulunabilmesi de sadece ihtimal dahilindedir.
Brute Force Atak (Kaba Kuvvet Atağı)
Eğer A harfinden başlayıp, Z harfine kadar 1 karakterli tüm harflerin HASH’ini biliyor olsaydık, şifrelenmiş tüm 1 karakterleri otomatik olarak çözmüş olurduk.
İşte bu yöntem de, belirli bir harften başlayıp, belirli bir harfe kadar sayan ve saydığı her harfin (ya da kelimenin) HASH’ini alan programları kapsamaktadır.
Ancak görüldüğü ve tahmin edildiği üzere, her ne kadar A’dan Z’ye 1 karakterli sayıları saymak kolay olsa da, A’dan Z’ye örneğin 20 karakterli sayıları saymak “zaman açısından” bilgisayarlar için bile kolay değildir.
Örneğin İngiliz alfabesinde 26 harf bulunur. Bu yöntemle 10 karakterli tüm harfleri A’dan Z’ye saymak demek (26^1)+(26^2)+(26^3)+(26^4)+(26^5)+(26^6)+(26^7)+(26^8)+(26^9)+(26^10) kadar kombinasyon eder ki bu da 146.813.779.479.510 (146 trilyon civarı) eder.
Bu 146 milyon civarı ihtimalin kaç byte tuttuğunu hesaplamak için her bir kombinasyon grubunu uzunluğu ile çarpabiliriz.
Dolayısı ile
(26^1)*1+(26^2)*2+(26^3)*3+(26^4)*4+(26^5)*5+(26^6)*6+(26^7)*7+(26^8)*8+(26^9)*9+(26^10)*10 formülü ile bu ihtimallerin 1.462.265.243.615.930 Byte ettiğini buluruz.
1.462.265.243.615.930 byte ise yaklaşık olarak 1.330 Terabyte bir disk gerektirir.
Yani bu kadar ihtimalin HASH’ini hesaplamak ya da sağ baştan saymak hem zaman açısından imkansız, hem de disk boyutu açısından imkansızdır. (En azından imkansıza yakındır)
Ama yok ben deneyeceğim derseniz, normal bir bilgisayarla işlemi başlatabilir ve torunlarınıza “Bilgisayarda işlem yapılıyor, kapatmayın” şeklinde bir not yazabilirsiniz.
Zira bu kadar kombinasyonu hesaplamak için oldukça fazla zamana ve oldukça fazla toruna ihtiyacınız olacaktır.
Sonuç :
Uğraşmayın.