SON DAKİKA

MD5 Nedir?

Bu haber 13 Ocak 2013 - 2:59 'de eklendi ve 2.031 kez görüntülendi.

MD5 Nedir?

What is the MD5?

Mehmet Keçeci

12.01.2013

Niçin verilerimizin yanında örneğin MD5 (Message-Digest
Algorithm /İleti Derleme Algoritması) hash’ını veririz ve bunu nasıl kontrol
ederiz?

Verilerimizin bizden izinsiz olarak başkaları değiştirebilir, içerisine virüs, truva atı gibi zararlı yazılımlar ekleyebilirler. Bu gibi istismarları engellemek amacı ile dosyalarımızın yanında MD5 hash’ını yayınlayarak hem bize ait olduğunu gösteririz hem de kullanıcılar dosyanın başkaları tarafından değişmediğini anlamış olurlar.

Basit bir örnek yapalım. Bu makaleyi yazarken MS Word 2013 versiyonunda kaydettiğim dosya MD5 Nedir.docx ile yine aynı dakikada kaydettimim MD5 Nedir2.docx dosyası arasında sadece bir boşluk/space fark var diğerlerinde ise harf sayıları aynı sadece a yerine e yazılmış 4.sünde ise boşluk silinerek eski haline geri döndürülmüştür.

  1. MD5 Nedir.docx   (14,6 KB = 14959 Byte≈ 15KB) MD5=c989444a98691c20a6e9390430a4db09
  2. MD5 Nedir2.docx (14,7 KB = 15080 Byte≈ 15KB) MD5=458d5a71beee04e714fbad60f434b4d5
  3. MD5 Nedir3.docx (14,7 KB = 15089 Byte≈ 15KB) MD5=248a578bb699c8d2ffd06a63040d8819
  4. MD5 Nedir4.docx (14,7 KB = 15073 Byte≈ 15KB) MD5=eb1fb04ada0fb5a4bbfd374cc59bfe28

fakat bunu herhangi bir MD5 programları [1,2] ile kontrol ettiğimizde dosyaların birbirinden faklı olduğunu görmekteyiz.

Sitede verilen değer ile bu MD5lerin uyuşması gerekir (hash olarak veya .md5 uzantılı dosya olarak verebilirler) eğer uyuşmuyor ise güvenilmez veya indirme sırasında program zarar görmüş olduklarından bu programları bilgisayarlarınıza kurmayınız. Fakat programı değiştirenler bu hash’ı da değiştireceklerinden bizim için sadece bu güven vermez. Fakat inen programın sağlamlığı hakkında bilgi verir. Program indireceğiniz zaman sadece güvenilir veya yayıncı sitesinden indiriniz.

Genelde algoritma hesaplama yöntemleri:

  1. Hash
  2. Checksum
  3. Hmac

Kullanılan Hash algoritma örnekleri:

  1. md2
  2. md4
  3. md5 (128 bit) (Message-Digest Algorithm, Ron Rivest, RFC-Request for Comments 1321, MIT Laboratory for Computer Science ve RSA Data Security, Inc., 1992 )
  4. md6
  5. sha-1
  6. sha-2 (256 bit)
  7. sha-2 (384 bit)
  8. sha-2 (512 bit)
  9. sha-3/keccak
  10. ripemd-128
  11. ripemd-160
  12. ripemd-256
  13. ripemd-320
  14. panama
  15. tiger
  16. blake 256, 512 bit
  17. ecoh
  18. fsb
  19. gost
  20. grostl
  21. has
  22. haval
  23. jh
  24. radiogatun
  25. skein
  26. siphash
  27. snefru
  28. spectral hash
  29. swifft
  30. whirlpool

Kullanılan Checksum algoritma örnekleri:

  1. crc-1
  2. crc-4
  3. crc-5
  4. crc-6
  5. crc-7
  6. crc-8
  7. crc-10
  8. crc-11
  9. crc-12
  10. crc-15
  11. crc-24
  12. crc-30
  13. crc16 (Cyclical Redundancy Codes)
  14. crc16c (crc-ccitt)
  15. crc32
  16. crc-40
  17. crc-64
  18. adler32
  19. bsd
  20. syvs
  21. checksum
  22. sum
  23. sum-8, 16, 24,32 bit
  24. fletcher4, 8, 16, 32 bit
  25. xor8
  26. luhn
  27. verhoeff
  28. damm

Kullanılan HMAC algoritma örnekleri: (Verinin dışında birde metin veya hex olarak anahtar değer girilir.)

  1. hmac-md4
  2. hmac-md5
  3. hmac-sha-1
  4. hmac-sha-2 (256 bit)
  5. hmac-sha-2 (384 bit)
  6. hmac-sha-2 (512 bit)
  7. hmac-ripemd-128
  8. hmac-ripemd-160
  9. hmac-ripemd-256
  10. hmac-ripemd-320
  11. hmac-panama
  12. hmac-tiger

Destekledikleri veri formatları:

  1. Dosya: Binary/ikili mod (müzik/music, audio, ses/sound, video, resim/image, ikon/icon, metin/text,
    sıkıştırma/compression, vs., ile uzantılar/extensions: .mp3, .wav, .avi, .mpg, .midi, .mov, .dvd, .ram, .zip, .rar, .ico, .gif, .pif, .pic, .tif, .tiff, .txt, .doc, .docx, .pdf, .wps, .dat, .dll, .hex, .bin, .iso, .cpp, .dss, .par, .pps, .cue, .ram, .md5, .sfv vs.) Genelde 15 GB’a kadar sorunsuz çalışabilirler.

  2. Metin (Herhangi bir metin, karakter, çift veya tek girilebilir)

  3. Hex (0-9 ve a-f arasında çift olarak girilmesi gerekir)

Bunların dışında kullanım tarzları ile birlikte hash algoritmaları ve kullanan yazılımlar:

  1. MD5

  2. md5($pass.$salt)

  3. md5($salt.$pass)

  4. md5(unicode($pass).$salt)

  5. md5($salt.unicode($pass))

  6. SHA1

  7. sha1($pass.$salt)

  8. sha1($salt.$pass)

  9. sha1(unicode($pass).$salt)

  10. sha1($salt.unicode($pass))

  11. MySQL

  12. phpass, MD5(WordPress), MD5(phpBB3)

  13. md5crypt, MD5(Unix), FreeBSD MD5, Cisco-IOS MD5

  14. MD4

  15. NTLM

  16. Domain Cached Credentials, mscash

  17. SHA256

  18. sha256($pass.$salt)

  19. sha256($salt.$pass)

  20. descrypt, DES(Unix), Traditional DES

  21. md5apr1, MD5(APR), Apache MD5

  22. SHA512

  23. sha512($pass.$salt)

  24. sha512($salt.$pass)

  25. sha512crypt, SHA512(Unix)

  26. Domain Cached Credentials2, mscash2

  27. Cisco-PIX MD5

  28. WPA/WPA2

  29. Double MD5

  30. LM

  31. Oracle 7-10g, DES(Oracle)

  32. bcrypt, Blowfish(OpenBSD)

  33. SHA-3(Keccak)

  34. Joomla

  35. osCommerce, xt:Commerce

  36. nsldap, SHA-1(Base64), Netscape LDAP SHA

  37. nsldaps, SSHA-1(Base64), Netscape LDAP SSHA

  38. Oracle 11g

  39. SMF > v1.1

  40. OSX v10.4, v10.5, v10.6

  41. MSSQL(2000)

  42. MSSQL(2005)

  43. EPiServer 6.x

  44. OSX v10.7

  45. vBulletin < v3.8.5

  46. vBulletin > v3.8.5

  47. IPB2+, MyBB1.2+

  48. eDonkey

  49. eMule

  50. 32 char HEX: MD5, MD4, NTLM, LM, md5(md5($pass)), md5(md5(md5($pass))), md5(sha1($pass))

  51. 40 char HEX: SHA1, MySQL, sha1(md5($pass)), sha1(sha1($pass))

  52. RSA (1024-4096 bit)

  53. Triple DES:Triple Data Encryption Algorithm (TDEA, Triple DEA 56, 112, 168 bit)

  54. wpa-psk

  55. Blowfish Encryption Algorithm

  56. LM password

  57. NT password

  58. LM Hash

  59. NT Hash

  60. NTLM (Windows)

Saldırı metodları ise genelde:

  1. Straight/Doğru

  2. Combination/Kombinasyon

  3. Toggle-Case/Geçişli Durum

  4. Brute-Force/Kaba Kuvvet

  5. Permutation/Permitasyon

  6. Table-Lookup/Tablo Arama

  7. Rainbow Table/Gökkuşağı Tablosu

  8. Dictionary/Sözlük

Şifre ve kriptoları kırmalarının en önemli yolu daha önce kriptoları alınmış ve bunları bir veri tabanı gibi veya bir sözlük gibi
kullanmalarıdır. Bu yüzden güvenli bir şifrenin en az 9 karakterden ve farklı kombinasyonları içermesi gerekmektedir. PHP ile bir md5 komutunu

string md5 ( string $str [,bool $raw_output = false ] ) [3], string sha1( string$str [, bool $raw_output= false ] ) [4], intcrc32 (string$str ) [5] ve bu komutla yapılan md5, sha-1 ve crc32 hash örnekleri [6, 7, 8]. Aynı şekilde bu hashlar C++, Perl, VBasic gibi programlarda da yazılmaktadırlar.

2004 yılında MD5 ve SHA-1 hash’ın benzer açıklarının olduğu gözlenmeye başlamıştır. MD5 için aynı hash’ı verme olasılığı 264 dür. Fakat sonuçlar 242 olduğunu göstermiştir. Bu yüzden birçok hash kullanımı bunların yanına salt veya hmac eklemişlerdir. Günümüzde en güvenilir hash SHA-2 512 Bit veya yeni gündemde olan SHA-3 olacaktır. Ayrıca RSA’nın 4096 bitlik kriptosu en güvenilir kriptolamalardan biridir. Örnek verecek olursak aynı gün doğanların doğum gününü şifre olarak kullandıklarını düşünürsek bunların hepsi aynı hash’ı vereceklerdir. Buna doğum günü saldırısı, akını (birtday attack) denmektedir. Fakat bu bir güvenlik açığıdır. Bu açığı gidermek için SALT denen ve rastgele bir sayı üreten bir kombinasyonuda hash fonksiyonuna eklediğimizde aynıgün doğanların aynı hash’ı verme ihtimali oldukça azalacaktır. Bunun yanında bir metin iki kere şifrelenerek çözümü daha da zorlaştırılabilir fakat bu doğrusal bir zorlaştırma olmayacaktır. Bu tür zorlaştırmalar için Ortada Buluşma Akını (Meet-in-the-Middle attack (MITM)) geliştirilmiştir. Aynı zamanda Gökkuşağı Tablosu Atağı (rainbow table attack) yöntemini de
kullanmaktadırlar. Yine bir süper bilgisayarda MD5 hash’ını 24 günde çözülebileceği hesaplanmıştır [9].

Kendinizin ne kadar bir risk aldığınızı düşünüyorsanız bu testi yapabilirsiniz [10]. Her geçen gün şifreleme teknikleri gelişirken aynı zamanda da birçok insanı, kullanıcıyı kandırma veya bu teknikleri kırma metotları ve cihazları da gelişmektedir. Kendinizi daha güvende hissetmeniz vedaha güvenli bir dünyada yaşamanız dilek, temenni ve dualarımla.

Kaynaklar/References:

  1. http://www.slavasoft.com
  2. http://www.winmd5.com
  3. http://www.php.net/manual/en/function.md5.php
  4. http://php.net/manual/en/function.sha1.php
  5. http://php.net/manual/en/function.crc32.php
  6. MD5 Hash:http://www.mehmetkececi.com/index.php?option=com_wrapper&view=wrapper&Itemid=1256
  7. SHA-1 Hash:http://www.mehmetkececi.com/index.php?option=com_wrapper&view=wrapper&Itemid=1257
  8. CRC32 Checksum:http://www.mehmetkececi.com/index.php?option=com_wrapper&view=wrapper&Itemid=1258
  9. http://people.scs.carleton.ca/~paulv/papers/acmccs94.pdf
  10. http://www.emc.com/microsites/fraudgame/flash.htm
Mehmet Keçecimkececi@mehmetkececi.com
Fizikçi, Physicist Bilim Uzmanı, Master of Science, MSc. Öğretim Görevlisi, Lecturer