MD5 Nedir?
What is the MD5?
Mehmet Keçeci
13.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 kaydettiğim 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.
- MD5 Nedir.docx (14,6 KB = 14959 Byte ≈ 15KB) MD5=c989444a98691c20a6e9390430a4db09
- MD5 Nedir2.docx (14,7 KB = 15080 Byte ≈ 15KB) MD5=458d5a71beee04e714fbad60f434b4d5
- MD5 Nedir3.docx (14,7 KB = 15089 Byte ≈ 15KB) MD5=248a578bb699c8d2ffd06a63040d8819
- 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:
- Hash
- Checksum
- Hmac
Kullanılan Hash algoritma örnekleri:
- md2
- md4
- md5 (128 bit) (Message-Digest Algorithm, Ron Rivest, RFC-Request for Comments 1321, MIT Laboratory for Computer Science ve RSA Data Security, Inc., 1992 )
- md6
- sha-1
- sha-2 (256 bit)
- sha-2 (384 bit)
- sha-2 (512 bit)
- sha-3/keccak
- ripemd-128
- ripemd-160
- ripemd-256
- ripemd-320
- panama
- tiger
- blake 256, 512 bit
- ecoh
- fsb
- gost
- grostl
- has
- haval
- jh
- radiogatun
- skein
- siphash
- snefru
- spectral hash
- swifft
- whirlpool
Kullanılan Checksum algoritma örnekleri:
- crc-1
- crc-4
- crc-5
- crc-6
- crc-7
- crc-8
- crc-10
- crc-11
- crc-12
- crc-15
- crc-24
- crc-30
- crc16 (Cyclical Redundancy Codes)
- crc16c (crc-ccitt)
- crc32
- crc-40
- crc-64
- adler32
- bsd
- syvs
- checksum
- sum
- sum-8, 16, 24,32 bit
- fletcher4, 8, 16, 32 bit
- xor8
- luhn
- verhoeff
- damm
Kullanılan HMAC algoritma örnekleri: (Verinin dışında birde metin veya hex olarak anahtar değer girilir.)
- hmac-md4
- hmac-md5
- hmac-sha-1
- hmac-sha-2 (256 bit)
- hmac-sha-2 (384 bit)
- hmac-sha-2 (512 bit)
- hmac-ripemd-128
- hmac-ripemd-160
- hmac-ripemd-256
- hmac-ripemd-320
- hmac-panama
- hmac-tiger
Destekledikleri veri formatları:
-
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, .webp, .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.
-
Metin (Herhangi bir metin, karakter, çift veya tek girilebilir)
-
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:
-
MD5
-
md5($pass.$salt)
-
md5($salt.$pass)
-
md5(unicode($pass).$salt)
-
md5($salt.unicode($pass))
-
SHA1
-
sha1($pass.$salt)
-
sha1($salt.$pass)
-
sha1(unicode($pass).$salt)
-
sha1($salt.unicode($pass))
-
MySQL
-
phpass, MD5(WordPress), MD5(phpBB3)
-
md5crypt, MD5(Unix), FreeBSD MD5, Cisco-IOS MD5
-
MD4
-
NTLM
-
Domain Cached Credentials, mscash
-
SHA256
-
sha256($pass.$salt)
-
sha256($salt.$pass)
-
descrypt, DES(Unix), Traditional DES
-
md5apr1, MD5(APR), Apache MD5
-
SHA512
-
sha512($pass.$salt)
-
sha512($salt.$pass)
-
sha512crypt, SHA512(Unix)
-
Domain Cached Credentials2, mscash2
-
Cisco-PIX MD5
-
WPA/WPA2
-
Double MD5
-
LM
-
Oracle 7-10g, DES(Oracle)
-
bcrypt, Blowfish(OpenBSD)
-
SHA-3(Keccak)
-
Joomla
-
osCommerce, xt:Commerce
-
nsldap, SHA-1(Base64), Netscape LDAP SHA
-
nsldaps, SSHA-1(Base64), Netscape LDAP SSHA
-
Oracle 11g
-
SMF > v1.1
-
OSX v10.4, v10.5, v10.6
-
MSSQL(2000)
-
MSSQL(2005)
-
EPiServer 6.x
-
OSX v10.7
-
vBulletin < v3.8.5
-
vBulletin > v3.8.5
-
IPB2+, MyBB1.2+
-
eDonkey
-
eMule
-
32 char HEX: MD5, MD4, NTLM, LM, md5(md5($pass)), md5(md5(md5($pass))), md5(sha1($pass))
-
40 char HEX: SHA1, MySQL, sha1(md5($pass)), sha1(sha1($pass))
-
RSA (1024-4096 bit)
-
Triple DES:Triple Data Encryption Algorithm (TDEA, Triple DEA 56, 112, 168 bit)
-
wpa-psk
-
Blowfish Encryption Algorithm
-
LM password
-
NT password
-
LM Hash
-
NT Hash
-
NTLM (Windows)
Saldırı metodları ise genelde:
-
Straight/Doğru
-
Combination/Kombinasyon
-
Toggle-Case/Geçişli Durum
-
Brute-Force/Kaba Kuvvet
-
Permutation/Permitasyon
-
Table-Lookup/Tablo Arama
-
Rainbow Table/Gökkuşağı Tablosu
-
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], int crc32 ( 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].
hex | bit | hash alanı
büyüklüğü |
en az kaçınılmaz rastgele hash çakışması/collision = p | |||
---|---|---|---|---|---|---|
p = 10−18 | p = 10−6 | p = 0.1% | p = 75% | |||
8 | 32 | 4.3 × 109 | 2 | 93 | 2.9 × 103 | 1.1 × 105 |
16 | 64 | 1.8 × 1019 | 6.1 | 6.1 × 106 | 1.9 × 108 | 7.2 × 109 |
32 | 128 | 3.4 × 1038 | 2.6 × 1010 | 2.6 × 1016 | 8.3 × 1017 | 3.1 × 1019 |
64 | 256 | 1.2 × 1077 | 4.8 × 1029 | 4.8 × 1035 | 1.5 × 1037 | 5.7 × 1038 |
96 | 384 | 3.9 × 10115 | 8.9 × 1048 | 8.9 × 1054 | 2.8 × 1056 | 1.0 × 1058 |
128 | 512 | 1.3 × 10154 | 1.6 × 1068 | 1.6 × 1074 | 5.2 × 1075 | 1.9 × 1077 |
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 ve daha güvenli bir dünyada yaşamanız dilek, temenni ve dualarımla.
Kaynaklar/References:
- http://www.slavasoft.com
- http://www.winmd5.com
- http://www.php.net/manual/en/function.md5.php
- http://php.net/manual/en/function.sha1.php
- http://php.net/manual/en/function.crc32.php
- MD5 Hash: http://www.mehmetkececi.com/index.php?option=com_wrapper&view=wrapper&Itemid=1256
- SHA-1 Hash: http://www.mehmetkececi.com/index.php?option=com_wrapper&view=wrapper&Itemid=1257
- CRC32 Checksum: http://www.mehmetkececi.com/index.php?option=com_wrapper&view=wrapper&Itemid=1258
- http://people.scs.carleton.ca/~paulv/papers/acmccs94.pdf
- http://www.emc.com/microsites/fraudgame/flash.htm
Bolu Postasındaki Yazı: 13.01.2013 02:59