Anda di halaman 1dari 16

MD5 itu Berbahaya, Titik!

Heran! Sudah lama MD5 terbukti memiliki kelemahan serius, namun hingga kini masih banyak
orang yang memakainya.

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.

Input paragraf tersebut memiliki nilai hash:

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 Hash

Hash digunakan untuk banyak hal yang terkait dengan kriptografi dan security.

1. Verifying file integrity

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.
 Storing password

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.
3. Digital signature

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.

Collision Vulnerability

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)

Nilai hash keduanya: 79054025255fb1a26e4bc422aef54eb4

Dua file binary di atas adalah contoh populer dari MD5 collision. Keduanya adalah dua file yang
berbeda namun memiliki nilai hash yang sama. Dalam kedua file di atas hanya berbeda 6 byte
saja, tidak terlalu berarti memang karena hanya sebagai proof of concept saja. Berikutnya akan
saya tunjukkan contoh-contoh collision lain yang lebih seram dari ini.

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.

md5sum file postscript

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:

1. 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).
2. Mereka membeli tanda tangan CA untuk sertifikat yang untuk website.
3. 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.
4. 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.
5. 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.

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.

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.

Rogue CA Certificate Verified Successfully

Kesimpulan

Saya 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.

Anda mungkin juga menyukai