MD5 adalah salah satu fungsi hash yang sangat  populer. Di usianya yang mencapai sweet seventeen, semakin banyak  serangan yang makin efektif terhadap MD5. Kalau dulu di tahun 1995  ilmuwan hanya sebatas mempublikasikan kelemahan di tataran teoretis,  kini semakin banyak orang yang mampu meng-exploit kelemahan itu dengan  sangat efektif. Sudah saat MD5 dijauhi sebagai sesuatu yang berbahaya,  jangan ditunda lagi!
Cryptographic Hash Basics
Untuk mudahnya anggap saja cryptographic hash sebagai  semacam signature atau segel yang unik dari sebuah file. Setiap file  yang berbeda akan memiliki signature yang berbeda. Perbedaan satu bit  saja pada file akan menghasilkan signature yang berbeda. Sehingga dua  file yang identik (seluruh bitnya sama), akan memiliki signature yang  sama.
Sebelumnya mari kita lihat bagaimana fungsi hash MD5  in action. Input:
Bayangkan dalam satu pesawat umum terdapat dua kelas penumpang, yaitu kelas VIP dan kelas ekonomi. Prosedur dan proses security harus menjamin agar penumpang menempati tempat duduk sesuai haknya. Untuk itu penumpang harus menunjukkan bukti berupa tiket yang di situ tertera namanya. Kemudian dari daftar penumpang pramugari akan tahu bahwa anda berhak duduk di kelas VIP atau ekonomi. Bila anda memegang tiket ekonomi mencoba duduk di kelas VIP maka pramugari akan menolak anda. Apalagi bila anda tidak memegang tiket, mencoba naik pesawat itu, sudah pasti anda akan ditendang.
Hexa:11ee98b599338ae66458f9b86ab4a6fb Binary:00010001 11101110 10011000 10110101 10011001 00110011 10001010 11100110 01100100 01011000 11111001 10111000 01101010 10110100 10100110 11111011
Input di atas adalah teks sepanjang 578 karakter,  sedangkan outputnya hanya 32 karakter, sangat timpang bukan? Mari kita  lihat kalau inputnya hanya satu karakter saja, ‘X’, maka nilai hashnya  adalah 02129bb861061d1a052c592e2dc6b383 atau dalam binary 00000010  00010010 10011011 10111000 01100001 00000110 00011101 00011010 00000101  00101100 01011001 00101110 00101101 11000110 10110011 10000011. Terlihat  kan inputnya berapapun panjangnya, nilai hashnya tetap 128 bit atau 32  karakter hexa. Bahkan string kosong “” memiliki nilai hashnya sendiri  sepanjang 32 karakter, yaitu 02129bb861061d1a052c592e2dc6b383. 
MD5 bukan Enkripsi! Seringkali orang menganggap MD5 sebagai enkripsi. Memang MD5 dipakai  dalam kriptografi, namun MD5 bukanlah algoritma enkripsi. Enkripsi  mengubah plain-text menjadi ciphertext yang ukurannya berbanding lurus  dengan ukuran file aslinya. Semakin panjang plain-text maka hasil  enkripsinya juga semakin panjang. Hasil enkripsi bisa dikembalikan ke  plain-text semula dengan proses dekripsi. Jadi enkripsi adalah fungsi  dua arah dan reversible. Selain itu dalam enkripsi dibutuhkan kunci,  tanpa kunci itu namanya bukan enkripsi, melainkan hanya  encoding/decoding. 
Berbeda dengan enkripsi, fungsi hash tidak butuh  kunci dan sifatnya hanya satu arah, yaitu dari teks masukan menjadi  nilai hash yang panjangnya selalu sama. Setelah menjadi nilai hash,  tidak ada fungsi yang bisa mengembalikan nilai hash itu menjadi teks  semula.
Penggunaan HashHash digunakan untuk banyak hal yang terkait dengan  kriptografi dan security.
- Verifying file integrity
- Storing password
- Digital signature
 Karena setiap file yang berbeda memiliki nilai hash yang berbeda, maka  fungsi hash dimanfaatkan untuk verifikasi integritas file. Yang dimaksud  dengan intergritas file adalah keaslian file, apakah file sudah diubah  atau belum. Bila sebuah file berubah walaupun satu bit saja, maka nilai  hashnya akan berbeda sehingga orang bisa menyadari bahwa file tersebut  sudah tidak asli lagi. Kalau anda sering download file dari internet  anda akan diberikan nilai MD5 yang bisa anda pakai untuk memverifikasi  apakah file yang anda download masih asli atau tidak. 
 MD5 juga dipakai untuk mendeteksi perubahan file, salah satu contonya  adalah Tripwire di Linux. Ini adalah bagian dari Intrusion Detection  System, bila ada file yang berubah nilai hashnya, maka IDS akan  menyalakan alarm bahwa telah terjadi perubahan file. 
MD5 sering juga dipakai untuk menyimpan password di  database. Daripada menyimpan password dalam bentuk plain-text, lebih  baik yang disimpan bukan password tapi hash dari password itu. Ketika  pengguna memasukkan password maka password tersebut akan dihitung nilai  hashnya. Nilai hash dari password yang dimasukkan pengguna ketika login  dibandingkan dengan nilai hash yang di database. Bila cocok, maka  authentication sukses.
Ketika user mendaftar, password dia akan dihitung  nilai hashnya dan disimpan dalam database. Contohnya bila dia mendaftar  dengan password “rahasia” maka nilai hashnya adalah  ac43724f16e9241d990427ab7c8f4228 dan disimpan dalam database. Bila  kemudian dia login dengan password yang lain, maka nilai hashnya akan  tidak cocok dengan yang di database sehingga authentication gagal. 
 Digital signature tidak lain adalah nilai hash yang ter-enkrip dengan  kunci private pembuat dokumen. Penerima dokumen bisa memverifikasi  signature ini dengan cara menghitung nilai hash dokumen yang dia terima.  Kemudian men-dekrip digital signature dengan kunci publik pembuat  dokumen sehingga kembali menjadi hash. Kedua nilai hash ini lalu  dibandingkan, hasil dekrip dan hasil perhitungan, jika sama maka  signature valid. 
Digital signature ini dipakai juga untuk membuat certifikate SSL.  Certificate SSL sangat vital peranannnya menjaga confidentiality dan  authentication ketika seseorang mengakses web. Browser sudah memiliki  daftar trusted Certificate Authority, jadi setiap browser mengakses  situs dengan https akan diperiksa apakah certificate server tersebut  ditanda-tangani oleh salah satu dari CA yang dipercaya browser.Salah satu masalah yang mungkin terjadi dari fungsi  hash adalah collision. Maksudnya adalah ada 2 atau lebih teks yang  menghasilkan nilai hash yang sama. Anda sendiri telah melihat dengan MD5  bahwa masukan sepanjang berapapun, akan menghasilkan nilai hash  sepanjang 128 bit. Itu artinya kemungkinan inputnya sangat banyak  jumlahnya, tak terhingga, namun kemungkinan nilai hashnya hanya sejumlah  2^128. Sebagai ilustrasi, bayangkan apa yang terjadi bila dalam suatu  negara jumlah wanitanya sangat banyak,  hingga 5 kali lipat jumlah pria.  Maka kemungkinan akan ada 2 atau lebih wanita yang memiliki suami yang  sama. Inilah yang disebut collision. Ada 2 atau lebih input teks yang  memiliki nilai hash yang sama.
Sebenarnya 2^128 itu jumlah yang sangat besar, yaitu  sebesar: 340.282.366.920.938.463.463.374.607.431.768.211.456 . Saya  tidak tahu bagaimana cara menyebutkannya setelah juta, milyar dan  triliun. Jika fungsi hashnya secara merata menyebarkan nilai hash di  semua ruang yang ada, maka sangat sulit untuk menemukan collision. Namun  bila fungsi hashnya mengandung kelemahan sehingga hanya menghasilkan  sebagian kecil saja dari semua kemungkinan yang tersedia, maka peluang  terjadinya collision akan besar.
MD5 memiilki kelemahan yang memungkinkan dicari 2  file yang memiliki nilai hash yang sama dengan waktu yang singkat.  Ilmuwan yang mempublikasikan cara mencari MD5 collision adalah ilmuwan  Cina Xiaoyun Wang and Hongbo Yu dari Shandong University.
Kelemahan MD5 adalah IF MD5(X) = MD5(Y) THEN MD5(X+q) = MD5(Y+q)
Executables File Collision
Sebelumnya sudah saya jelaskan bahwa MD5 digunakan  untuk menjaga integritas file contohnya ketika memverifikasi hasil  download atau dalam Tripwire IDS. Fungsi hash digunakan untuk menjaga  integrity karena perubahan pada file 1 bit saja akan mengubah nilai  hashnya. Namun bila terjadi collision seperti pada MD5, maka file  integrity tidak lagi bisa terjamin.
Peter  Selinger telah membuat demonstrasi 2 buah file executable yang  berbeda tapi memiliki nilai hash MD5 yang sama. Skenarionya adalah dari  dua file itu salah satunya adalah file yang asli, satu lagi adalah file  yang jahat. Keduanya memiliki ukuran dan nilai hash MD5 yang sama. 
Kesamaan hash ini akan mengelabui Tripwire dan orang  yang mendownload file itu dari internet. Tripwire akan diam seribu  bahasa walaupun file executables telah diubah attacker. Begitu juga  orang yang medownload sebuah file executable dari internet ternyata file  yang dia terima sudah diubah di tengah perjalanan. Namun karena setelah  dihitung nilai hashnya cocok dengan nilai hash file yang asli, korban  akan menganggap file itu benar dan asli padahal berbeda.
Law #1: If a bad guy can persuade you to run his program on your computer, it’s not your computer anymore
Law #2: If a bad guy can alter the operating system on your computer, it’s not your computer anymore
Hukum di atas adalah 2 di antara 10  immutable laws of security. Memang benar, jika orang lain bisa  menjalankan program atau mengubah program di komputer anda, maka  komputer itu bukan milik anda lagi. Collision executables ini sungguh  berbahaya!
Postscript File Collision
Postscript sebenarnya adalah bahasa  pemrograman/script yang ditujukan khusus untuk membuat dokumen yang akan  dicetak mirip sekali dengan PDF. Biasanya scriptnya tidak ditulis  manual, namun orang menulis dokumen menggunakan editor WYSIWYG seperti  microsoft word, kemudian program yang akan menulis scriptnya.
Mungkin anda lebih familiar dengan PDF. Bayangkan apa  yang terjadi bila ada dua file PDF yang isinya bertolak belakang namun  memiliki nilai hash yang sama. Karena nilai hashnya sama,maka bila file  PDF yang satu di-tandatangani oleh seseorang, maka tandatangan itu akan  valid juga untuk file PDF yang lainnya. Ketika diperlihatkan dokumen  yang satunya lagi, orang yang menandatangani akan kaget karena dia tidak  merasa menandatangani dokumen itu.
Dua orang ilmuwan dari jerman membuat demonstrasi  collision dua buah file postscript. File ini isinya sangat jauh  berbeda, namun keduanya memiliki nilai hash yang sama.
Skenarionya adalah Alice yang akan resign dari  pekerjaannya meminta surat rekomendasi dari bosnya Caesar. Dalam surat  itu dijelaskan bahwa Alice telah bekerja dengan baik selama bekerja di  kantornya dan menganjurkan orang lain untuk menghire dia. Surat itu  dibuat dalam bentuk digital dan ditandatangani secara digital oleh  bosnya Caesar.
Alice membuat satu file lagi yang isinya adalah surat  perintah Caesar yang memberi kuasa pada Alice untuk mengakses dokumen  rahasia. Agar surat perintah ini dipercaya orang, maka surat perintah  ini juga harus ditandatangani (digitally) oleh Caesar. Ingat bahwa  tandatangan adalah hash yang di-enkrip dengan private key, jadi untuk  menandatangani sebuah dokumen dibutuhkan private key, padahal yang punya  private key hanya Caesar. 
Kalau Caesar disodori file surat perintah tentu tidak  akan mau menandatangani file itu. Maka triknya adalah memakai tanda  tangan Caesar untuk file surat rekomendasi. Bagaimana caranya agar tanda  tangan Caesar bisa valid untuk dua dokumen yang berbeda?
Caranya adalah dengan membuat file surat perintah  memiliki nilai hash yang sama dengan file surat rekomendasi. Karena  digital signature adalah hash yang ter-enkrip, maka bila ada dua file  dengan nilai hash yang sama, maka digital signature keduanya juga pasti  sama.
Dengan berbekal surat perintah aspal ini Alice bisa  mengakses dokumen rahasia Caesar. Anak buah Caesar yang melihat tanda  tangan digital Caesar pada surat itu tentu tidak berani membantah  perintah Caesar.
Pada gambar di atas terlihat bahwa file size dan hash  kedua file itu sama, a25f7f0b29ee0b3968c860738533a4b9, padahal diff  melaporkan bahwa dua file itu berbeda. Bayangkan bila anda menjadi  Caesar, anda tentu marah karena dianggap pernah menandatangani dokumen  yang tidak pernah anda tahu.
Dengan digital signature, ketika anda menandatangani suatu file, sebenarnya anda juga mendatangani semua file lain yang memiliki hash yang sama.
SSL Certificate Collision
SSL certificate sangat vital untuk keamanan mengakses  situs yang sensitif seperti situs belanja dan internet banking. Dengan  menunjukkan certificate SSL yang valid, suatu server membuktikan dirinya  pada browser bahwa dia adalah situs yang sah, browser yakin sedang  berbicara dengan situs yang benar dan dengan certificate browser yakin  akan public key server itu.
Bila attacker berhasil membuat certificate palsu,  maka attacker bisa melakukan man in the middle attack (mitm) dan  menyadap semua komunikasi antara browser dan server.
Browser hanya percaya dengan certificate yang ditandatangani oleh root CA atau intermediary CA yang terpercaya.
Bila attacker mencoba melakukan mitm attack, namun  tidak punya sertifikat yang diterbitkan CA yang dipercaya browser, maka  browser akan memunculkan warning bahwa sertifikat ini tidak bisa  dipercaya. Bagaimana bila attacker mampu membuat certificate palsu  dengan tanda tangan asli dari CA yang dipercaya browser?
Sekelompok hacker di US dan eropa dengan menggunakan  200 mesin PlayStation 3, berhasil membuat  sertifikat palsu yang ditandatangani oleh CA yang dipercaya browser.  Tidak hanya membuat sertifikat untuk satu website, namun mereka membuat  sertifikat sebagai intermediary CA, artinya mereka berhak menerbitkan  sertifikat untuk website apapun sebanyak yang mereka mau.
 Semua itu bisa terjadi karena collision MD5 sehingga membuat digital  signature untuk satu certificate akan valid juga untuk certificate lain  yang palsu. Cara mereka melakukannya adalah:
- Mereka menyiapkan dua sertifikat yang punya hash yang sama. Sertifikat ini masih belum ditandatangani. Sertifikat yang satu adalah sertifikat untuk website, dan yang satu lagi sertifikat untuk menjadi CA (penerbit sertifikat).
- Mereka membeli tanda tangan CA untuk sertifikat yang untuk website.
- Setelah sertifikat yang telah ditandatangani CA dikirimkan, mereka mengkopi digital signature sertifikat itu dan dipasangkan pada sertifikat satu lagi yang telah disiapkan untuk menjadi CA.
- Karena sertifikat yang untuk website dan sertifikat untuk menjadi CA memiliki hash yang sama, maka tanda tangan di sertifikat satu akan valid juga di sertifikat yang lain.
- Dengan cara ini mereka kini berhak menerbitkan sertifikat untuk website lain.
 Berikut adalah dua buah sertifikat yang dihasilkan dari serangan ini.  Sertifikat yang pertama dalah sertifikat untuk website, yang dikeluarkan  oleh CA yang asli. Sertifikat kedua adalah sertifikat yang dibuat  sendiri dan tandatangannya dicomot dari sertifikat yang satunya. 
Di bawah ini adalah sertifikat yang asli dan resmi  dibeli dari CA dan ditujukan untuk website.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 | Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 643015 (0x9cfc7)
        Signature Algorithm: md5WithRSAEncryption
        Issuer: C=US, O=Equifax Secure Inc., CN=Equifax Secure Global eBusiness CA-1
        Validity
            Not Before: Nov  3 07:52:02 2008 GMT
            Not After : Nov  4 07:52:02 2009 GMT
        Subject: C=US, O=i.broke.the.internet.and.all.i.got.was.this.t-shirt.phreedom.org, OU=GT11029001, OU=See www.rapidssl.com/resources/cps (c)08, OU=Domain Control Validated - RapidSSL(R), CN=i.broke.the.internet.and.all.i.got.was.this.t-shirt.phreedom.org
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
            RSA Public Key: (2048 bit)
                Modulus (2048 bit):
                    00:b2:d3:25:81:aa:28:e8:78:b1:e5:0a:d5:3c:0f:
                    36:57:6e:a9:5f:06:41:0e:6b:b4:cb:07:17:00:00:
                    00:5b:fd:6b:1c:7b:9c:e8:a9:a3:c5:45:0b:36:bb:
                    01:d1:53:aa:c3:08:8f:6f:f8:4f:3e:87:87:44:11:
                    dc:60:e0:df:92:55:f9:b8:73:1b:54:93:c5:9f:d0:
                    46:c4:60:b6:35:62:cd:b9:af:1c:a8:6b:1a:c9:5b:
                    3c:96:37:c0:ed:67:ef:bb:fe:c0:8b:9c:50:2f:29:
                    bd:83:22:9e:8e:08:fa:ac:13:70:a2:58:7f:62:62:
                    8a:11:f7:89:f6:df:b6:67:59:73:16:fb:63:16:8a:
                    b4:91:38:ce:2e:f5:b6:be:4c:a4:94:49:e4:65:51:
                    0a:42:15:c9:c1:30:e2:69:d5:45:7d:a5:26:bb:b9:
                    61:ec:62:64:f0:39:e1:e7:bc:68:d8:50:51:9e:1d:
                    60:d3:d1:a3:a7:0a:f8:03:20:a1:70:01:17:91:36:
                    4f:02:70:31:86:83:dd:f7:0f:d8:07:1d:11:b3:13:
                    04:a5:da:f0:ae:50:b1:28:0e:63:69:2a:0c:82:6f:
                    8f:47:33:df:6c:a2:06:92:f1:4f:45:be:d9:30:36:
                    a3:2b:8c:d6:77:ae:35:63:7f:4e:4c:9a:93:48:36:
                    d9:9f
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Key Usage: critical
                Digital Signature, Non Repudiation, Key Encipherment, Data Encipherment
            X509v3 Subject Key Identifier: 
                CD:A6:83:FA:A5:60:37:F7:96:37:17:29:DE:41:78:F1:87:89:55:E7
            X509v3 CRL Distribution Points: 
                URI:http://crl.geotrust.com/crls/globalca1.crl
 
            X509v3 Authority Key Identifier: 
                keyid:BE:A8:A0:74:72:50:6B:44:B7:C9:23:D8:FB:A8:FF:B3:57:6B:68:6C
 
            X509v3 Extended Key Usage: 
                TLS Web Server Authentication, TLS Web Client Authentication
            X509v3 Basic Constraints: critical
                CA:FALSE
    Signature Algorithm: md5WithRSAEncryption
        a7:21:02:8d:d1:0e:a2:80:77:25:fd:43:60:15:8f:ec:ef:90:
        47:d4:84:42:15:26:11:1c:cd:c2:3c:10:29:a9:b6:df:ab:57:
        75:91:da:e5:2b:b3:90:45:1c:30:63:56:3f:8a:d9:50:fa:ed:
        58:6c:c0:65:ac:66:57:de:1c:c6:76:3b:f5:00:0e:8e:45:ce:
        7f:4c:90:ec:2b:c6:cd:b3:b4:8f:62:d0:fe:b7:c5:26:72:44:
        ed:f6:98:5b:ae:cb:d1:95:f5:da:08:be:68:46:b1:75:c8:ec:
        1d:8f:1e:7a:94:f1:aa:53:78:a2:45:ae:54:ea:d1:9e:74:c8:
        76:67
-----BEGIN CERTIFICATE-----
MIIEMjCCA5ugAwIBAgIDCc/HMA0GCSqGSIb3DQEBBAUAMFoxCzAJBgNVBAYTAlVT
MRwwGgYDVQQKExNFcXVpZmF4IFNlY3VyZSBJbmMuMS0wKwYDVQQDEyRFcXVpZmF4
IFNlY3VyZSBHbG9iYWwgZUJ1c2luZXNzIENBLTEwHhcNMDgxMTAzMDc1MjAyWhcN
MDkxMTA0MDc1MjAyWjCCARwxCzAJBgNVBAYTAlVTMUkwRwYDVQQKE0BpLmJyb2tl
LnRoZS5pbnRlcm5ldC5hbmQuYWxsLmkuZ290Lndhcy50aGlzLnQtc2hpcnQucGhy
ZWVkb20ub3JnMRMwEQYDVQQLEwpHVDExMDI5MDAxMTEwLwYDVQQLEyhTZWUgd3d3
LnJhcGlkc3NsLmNvbS9yZXNvdXJjZXMvY3BzIChjKTA4MS8wLQYDVQQLEyZEb21h
aW4gQ29udHJvbCBWYWxpZGF0ZWQgLSBSYXBpZFNTTChSKTFJMEcGA1UEAxNAaS5i
cm9rZS50aGUuaW50ZXJuZXQuYW5kLmFsbC5pLmdvdC53YXMudGhpcy50LXNoaXJ0
LnBocmVlZG9tLm9yZzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALLT
JYGqKOh4seUK1TwPNlduqV8GQQ5rtMsHFwAAAFv9axx7nOipo8VFCza7AdFTqsMI
j2/4Tz6Hh0QR3GDg35JV+bhzG1STxZ/QRsRgtjVizbmvHKhrGslbPJY3wO1n77v+
wIucUC8pvYMino4I+qwTcKJYf2JiihH3ifbftmdZcxb7YxaKtJE4zi71tr5MpJRJ
5GVRCkIVycEw4mnVRX2lJru5YexiZPA54ee8aNhQUZ4dYNPRo6cK+AMgoXABF5E2
TwJwMYaD3fcP2AcdEbMTBKXa8K5QsSgOY2kqDIJvj0cz32yiBpLxT0W+2TA2oyuM
1neuNWN/Tkyak0g22Z8CAwEAAaOBvTCBujAOBgNVHQ8BAf8EBAMCBPAwHQYDVR0O
BBYEFM2mg/qlYDf3ljcXKd5BePGHiVXnMDsGA1UdHwQ0MDIwMKAuoCyGKmh0dHA6
Ly9jcmwuZ2VvdHJ1c3QuY29tL2NybHMvZ2xvYmFsY2ExLmNybDAfBgNVHSMEGDAW
gBS+qKB0clBrRLfJI9j7qP+zV2tobDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYB
BQUHAwIwDAYDVR0TAQH/BAIwADANBgkqhkiG9w0BAQQFAAOBgQCnIQKN0Q6igHcl
/UNgFY/s75BH1IRCFSYRHM3CPBApqbbfq1d1kdrlK7OQRRwwY1Y/itlQ+u1YbMBl
rGZX3hzGdjv1AA6ORc5/TJDsK8bNs7SPYtD+t8UmckTt9phbrsvRlfXaCL5oRrF1
yOwdjx56lPGqU3iiRa5U6tGedMh2Zw==
-----END CERTIFICATE----- | 
Sertifikat di atas adalah sertifikat yang resmi di  beli dan ditanda tangani oleh CA. Digital signature dari sertifikat  tersebut ada pada baris ke-50 sampai baris ke-57. Sekarang perhatikan  sertifikat di bawah ini yang dibuat sendiri oleh attacker, sertifikat  ini tidak ditandatangani oleh CA, jadi digital signature sertifikat ini  dicomot dari sertifikat yang resmi beli dari CA pada baris ke-50 sampai  ke-57 di atas. 
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 | Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 65 (0x41)
        Signature Algorithm: md5WithRSAEncryption
        Issuer: C=US, O=Equifax Secure Inc., CN=Equifax Secure Global eBusiness CA-1
        Validity
            Not Before: Jul 31 00:00:00 2004 GMT
            Not After : Sep  2 00:00:00 2004 GMT
        Subject: CN=MD5 Collisions Inc. (http://www.phreedom.org/md5)
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
            RSA Public Key: (1024 bit)
                Modulus (1024 bit):
                    00:ba:a6:59:c9:2c:28:d6:2a:b0:f8:ed:9f:46:a4:
                    a4:37:ee:0e:19:68:59:d1:b3:03:99:51:d6:16:9a:
                    5e:37:6b:15:e0:0e:4b:f5:84:64:f8:a3:db:41:6f:
                    35:d5:9b:15:1f:db:c4:38:52:70:81:97:5e:8f:a0:
                    b5:f7:7e:39:f0:32:ac:1e:ad:44:d2:b3:fa:48:c3:
                    ce:91:9b:ec:f4:9c:7c:e1:5a:f5:c8:37:6b:9a:83:
                    de:e7:ca:20:97:31:42:73:15:91:68:f4:88:af:f9:
                    28:28:c5:e9:0f:73:b0:17:4b:13:4c:99:75:d0:44:
                    e6:7e:08:6c:1a:f2:4f:1b:41
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Key Usage: 
                Digital Signature, Non Repudiation, Certificate Sign, CRL Sign
            X509v3 Basic Constraints: critical
                CA:TRUE
            X509v3 Subject Key Identifier: 
                A7:04:60:1F:AB:72:43:08:C5:7F:08:90:55:56:1C:D6:CE:E6:38:EB
            X509v3 Authority Key Identifier: 
                keyid:BE:A8:A0:74:72:50:6B:44:B7:C9:23:D8:FB:A8:FF:B3:57:6B:68:6C
 
            Netscape Comment: 
                3
    Signature Algorithm: md5WithRSAEncryption
        a7:21:02:8d:d1:0e:a2:80:77:25:fd:43:60:15:8f:ec:ef:90:
        47:d4:84:42:15:26:11:1c:cd:c2:3c:10:29:a9:b6:df:ab:57:
        75:91:da:e5:2b:b3:90:45:1c:30:63:56:3f:8a:d9:50:fa:ed:
        58:6c:c0:65:ac:66:57:de:1c:c6:76:3b:f5:00:0e:8e:45:ce:
        7f:4c:90:ec:2b:c6:cd:b3:b4:8f:62:d0:fe:b7:c5:26:72:44:
        ed:f6:98:5b:ae:cb:d1:95:f5:da:08:be:68:46:b1:75:c8:ec:
        1d:8f:1e:7a:94:f1:aa:53:78:a2:45:ae:54:ea:d1:9e:74:c8:
        76:67
-----BEGIN CERTIFICATE-----
MIIEMjCCA5ugAwIBAgIBQTANBgkqhkiG9w0BAQQFADBaMQswCQYDVQQGEwJVUzEc
MBoGA1UEChMTRXF1aWZheCBTZWN1cmUgSW5jLjEtMCsGA1UEAxMkRXF1aWZheCBT
ZWN1cmUgR2xvYmFsIGVCdXNpbmVzcyBDQS0xMB4XDTA0MDczMTAwMDAwMFoXDTA0
MDkwMjAwMDAwMFowPDE6MDgGA1UEAxMxTUQ1IENvbGxpc2lvbnMgSW5jLiAoaHR0
cDovL3d3dy5waHJlZWRvbS5vcmcvbWQ1KTCBnzANBgkqhkiG9w0BAQEFAAOBjQAw
gYkCgYEAuqZZySwo1iqw+O2fRqSkN+4OGWhZ0bMDmVHWFppeN2sV4A5L9YRk+KPb
QW811ZsVH9vEOFJwgZdej6C193458DKsHq1E0rP6SMPOkZvs9Jx84Vr1yDdrmoPe
58oglzFCcxWRaPSIr/koKMXpD3OwF0sTTJl10ETmfghsGvJPG0ECAwEAAaOCAiQw
ggIgMAsGA1UdDwQEAwIBxjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBSnBGAf
q3JDCMV/CJBVVhzWzuY46zAfBgNVHSMEGDAWgBS+qKB0clBrRLfJI9j7qP+zV2to
bDCCAb4GCWCGSAGG+EIBDQSCAa8WggGrMwAAACdeOeCJYQ9Oo8VFCza7AdFTqsMI
j2/4Tz6Hh0QR3GDg35JV+bhzG1STxZ/QRsRgtjVizbmvHKhpGslbPJY3wO1n77v+
wIucUC8pvYMino4I+qwTcKJYf2JiihH3ifbftmdZcxb7YxaKtJE4zi71tr5MpJRJ
5GURCkIVycEw4mnVRX2lJru5YexiZPA54ee8aNhQUZ4dYNPRo6cK+AMgoXABF5E2
TwJwMYaD3fcP2AcdEbMTBKXc8K5QsSgOY2kqDIJvj0cz32yiBpLxT0W+2TA2oyuM
1neuNWN/Tkyak0g22Z8CAwEAAaOBvTCBujAOBgNVHQ8BAf8EBAMCBPAwHQYDVR0O
BBYEFM2mg/qlYDf3ljcXKd5BePGHiVXnMDsGA1UdHwQ0MDIwMKAuoCyGKmh0dHA6
Ly9jcmwuZ2VvdHJ1c3QuY29tL2NybHMvZ2xvYmFsY2ExLmNybDAfBgNVHSMEGDAW
gBS+qKB0clBrRLfJI9j7qP+zV2tobDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYB
BQUHAwIwDAYDVR0TAQH/BAIwADANBgkqhkiG9w0BAQQFAAOBgQCnIQKN0Q6igHcl
/UNgFY/s75BH1IRCFSYRHM3CPBApqbbfq1d1kdrlK7OQRRwwY1Y/itlQ+u1YbMBl
rGZX3hzGdjv1AA6ORc5/TJDsK8bNs7SPYtD+t8UmckTt9phbrsvRlfXaCL5oRrF1
yOwdjx56lPGqU3iiRa5U6tGedMh2Zw==
-----END CERTIFICATE----- | 
Perhatikan pada sertifikat yang palsu pada baris  ke-29, “CA:TRUE”, itu artinya sertifikat itu adalah sertifikat sebagai  CA intermediary. Padahal sebenarnya CA yang asli tidak pernah  menandatangani sertifikat itu, tapi tanda tangan untuk sertifikat lain  dicomot ke sertifikat itu. Untuk lebih jelasnya kedua sertifikat  tersebut saya capture dan saya beri penjelasan pada gambar di bawah ini.
Setelah saya coba lakukan verifikasi dengan openssl  di Linux, ternyata hasilnya valid. Hanya karena tanggal di sertifikat  itu sudah expired maka ada warning expired date. Sedangkan untuk  sertifikat yang asli (dibeli dari CA) tidak ada warning expired date  karena baru akan expired pada November 2009.
KesimpulanSaya sudah berikan 3 contoh yang memperlihatkan  bahaya collision pada MD5. Jauhilah MD5, gunakan fungsi hash yang lebih  strong, contohnya SHA-256. Awalnya vulnerability di kriptografi biasanya  hanya teoretis saja sehingga orang tidak merasa perlu mengganti  algoritma kriptografi yang dipakainya, namun makin lama serangan makin  efektif dan cepat. Sebaiknya begitu ditemukan kelemahan signifikan pada  sebuah algoritma, jauhilah algoritma itu.









Tidak ada komentar:
Posting Komentar