Konten dihapus Konten ditambahkan
Chandra Binawa (bicara | kontrib)
Fitur saranan suntingan: 2 pranala ditambahkan.
 
(46 revisi perantara oleh 33 pengguna tidak ditampilkan)
Baris 1:
Dalam [[kriptografi]], '''MD5''' (''Message-Digest algortihmalgorithm 5'')''' ialahadalah [[fungsi hash kriptografik]] yang digunakan secara luas dengan ''hash value'' 128-bit. Pada standart Internet (RFC 1321), MD5 telah dimanfaatkan secara bermacam-macam pada aplikasi keamanan, dan MD5 juga umum digunakan untuk melakukan pengujian integritas sebuah [[fileberkas]].
 
MD5 di desain oleh [[Ronald Rivest]] pada tahun [[1991]] untuk menggantikan ''hash function'' sebelumnya, [[MD4]]. Pada tahun [[1996]], sebuah kecacatan ditemukan dalam desainnya, walau bukan kelemahan fatal, pengguna kriptografi mulai menganjurkan menggunakan algoritma[[algoritme]] lain, seperti [[SHA-1]] (klaim terbaru menyatakan bahwa SHA-1 juga cacat). Pada tahun [[2004]], kecacatan-kecacatan yang lebih serius ditemukan menyebabkan penggunaan algoritmaalgoritme tersebut dalam tujuan untuk keamanan jadi makin dipertanyakan.
 
== Sejarah dan kriptoanalisis ==
MD5 adalah salah satu dari serangkaian [[algortima]] ''[[message digest]]'' yang didesain oleh Profesor [[Ronald Rivest]] dari [[Massachusetts Institute of Technology|MIT]] (Rivest, 1994). Saat kerja analitik menunjukkan bahwa pendahulu MD5 — [[MD4]] — mulai tidak aman, MD5 kemudian didesain pada tahun [[1991]] sebagai pengganti dari MD4 (kelemahan MD4 ditemukan oleh [[Hans Dobbertin]]).
 
Pada tahun [[1993]], [[den Boer]] dan [[Bosselaers]] memberikan awal, bahkan terbatas, hasil dari penemuan ''pseudo-collision'' dari fungsi [[kompresi]] MD5. Dua [[vektor inisialisasi]] berbeda <math>I</math> dan <math>J</math> dengan beda 4-bit diantaradi antara keduanya.
:<math>MD5compress(I,X) = MD5compress(J,X)</math>
 
Baris 15:
Bagaimanapun juga, MD5CRK berhenti pada tanggal [[17 Agustus]] [[2004]], saat [[kerusakan ''hash'']] pada MD5 diumumkan oleh [[Xiaoyun Wang]], [[Dengguo Feng]], [[Xuejia Lai]] dan [[Hongbo Yu]] [http://eprint.iacr.org/2004/199.pdf][http://eprint.iacr.org/2004/264.pdf]. Serangan analitik mereka dikabarkan hanya memerlukan satu jam dengan menggunakan [[IBM P690]] cluster.
 
Pada tanggal [[1 Maret]] [[2005]], [[Arjen Lenstra]], Xiaoyun Wang, and [[Benne de Weger]] mendemontrasikan [http://eprint.iacr.org/2005/067] kunstruksi dari dua buah sertifikat [[X.509]] dengan ''[[Public Key Infrastructure|public key]]'' yang berbeda dan ''hash'' MD5 yang sama, hasil dari demontrasi menunjukkan adanya kerusakan. Konstruksi tersebut melibatkan ''private key'' untuk kedua ''public key'' tersebut. Dan beberapa hari setelahnya, [[Vlastimil Klima]] menjabarkan [http://eprint.iacr.org/2005/075] dan mengembangkan algortima, mampu membuat kerusakan Md5 dalam beberapa jam dengan menggunakan sebuah komputer [[notebook]]. Hal ini menyebabkan MD5 tidak bebas dari kerusakan.
 
Dikarenakan MD5 hanya menggunakan satu langkah pada data, jika dua buah awalan dengan ''hash'' yang sama dapat dibangun, sebuah akhiran yang umum dapat ditambahkan pada keduanya untuk membuat kerusakan lebih masuk akal. Dan dikarenakan teknik penemuan kerusakan mengijinkanmengizinkan pendahuluan kondisi ''hash'' menjadi arbitari tertentu, sebuah kerusakan dapat ditemukan dengan awalan apapun. Proses tersebut memerlukan pembangkitan dua buah fileberkas perusak sebagai fileberkas templat, dengan menggunakan blok 128-byte dari tatanan data pada 64-byte batasan, fileberkas-fileberkas tersebut dapat mengubah dengan bebas dengan menggunakan algoritmaalgoritme penemuan kerusakan.
 
== Efek nyata dari kriptoanalisis ==
Saat ini dapat diketahui, dengan beberapa jam kerja, bagaimana proses pembangkitan kerusakan MD5. Yaitu dengan membangkitkan dua byte ''string'' dengan ''hash'' yang sama. Dikarenakan terdapat bilangan yang terbatas pada keluaran MD5 (2<sup>128</sup>), tetapi terdapat bilangan yang tak terbatas sebagai masukannya, hal ini harus dipahami sebelum kerusakan dapat ditimbulkan, tapi hal ini telah diyakini benar bahwa menemukannya adalah hal yang sulit.
 
Sebagai hasilnya bahwa ''hash'' MD5 dari informasi tertentu tidak dapat lagi mengenalinya secara berbeda. Jika ditunjukkan informasi dari sebuah ''public key'', ''hash'' MD5 tidak mengenalinya secatasecara berbeda jika terdapat ''public key'' selanjutnya yang mempunyai ''hash'' MD5 yang sama.
 
Bagaimanapun juga, penyerangan tersebut memerlukan kemampuan untuk memilih kedua pesan kerusakan. Kedua pesan tersebut tidak dengan mudah untuk memberikan serangan ''[[preimage]]'', menemukan pesan dengan ''hash'' MD5 yang sudah ditentukan, ataupun ''serangan preimage kedua'', menemukan pesan dengan ''hash'' MD5 yang sama sebagai pesan yang diinginkan.
 
''Hash'' MD5 lama, yang dibuat sebelum serangan-serangan tersebut diungkap, masih dinilai aman untuk saat ini. Khususnya pada ''[[digital signature]]'' lama masih dianggap layak pakai.
Seorang userpengguna boleh saja tidak ingin membangkitkan atau mempercayai ''signature'' baru menggunakan MD5 jika masih ada kemungkinan kecil pada teks (kerusakan dilakukan dengan melibatkan pelompatan beberapa bit pada bagian 128-byte pada masukan ''hash'') akan memberikan perubahan yang berarti.
 
Penjaminan ini berdasar pada posisi saat ini dari kriptoanalisis. Situasi bisa saja berubah secara tiba-tiba, tetapi menemukan kerusakan dengan beberapa data yang belum-ada adalah permasalahan yang lebih susah lagi, dan akan selalu butuh waktu untuk terjadinya sebuah transisi.
 
== Pengujian Integritas ==
Ringkasan MD5 digunakan secara luas dalam dunia [[perangkat lunak]] untuk menyediakan semacam jaminan bahwa fileberkas yang diambil (''[[download]]'') belum terdapat perubahan. Seorang userpengguna dapat membandingkan MD5 sum yang dipublikasikan dengan ''[[checksum]]'' dari fileberkas yang diambil. Dengan asumsi bahwa ''checksum'' yang dipublikasikan dapat dipercaya akan keasliannya, seorang userpengguna dapat secara yakin bahwa dileberkas tersebut adalah fileberkas yang sama dengan fileberkas yang dirilis oleh para developer, jaminan perlindungan dari ''[[Trojan Horse]]'' dan [[virus komputer]] yang ditambahkan pada perangkat lunak. Bagaimanapun juga, seringkalisering kali kasus yangterjadi bahwa ''checksum'' yang dipublikasikan tidak dapat dipercaya (sebagai contoh, ''checksum'' didapat dari channel atau lokasi yang sama dengan tempat mengambil fileberkas), dalam hal ini MD5 hanya mampu melakukan ''error-checking''. MD5 akan mengenali fileberkas yang didownload tidak sempurna, cacat atau tidak lengkap.
 
== AlgortimaAlgoritme ==
[[Berkas:MD5.png|rightka|thumbnailjmpl|300px|Gambar 1. Satu operasi MD5 — MD5 terdiri atas 64 operasi, dikelompokkan dalam empat putaran dari 16 operasi. ''F'' adalah fungsi nonlinear; satu fungsi digunakan pada tiap-tiap putaran. ''M<sub>i</sub>'' menujukkan blok 32-bit dari masukan pesan, dan ''K<sub>i</sub>'' menunjukkan konstanta 32-bit, berbeda untuk tiap-tiap operasi.]]
[[Berkas:lll.png|geser kiri]]
<sub>''s''</sub> menunjukkan perputaran bit kiri oleh ''s''; ''s'' bervariasi untuk tiap-tiap operasi.
Baris 42:
MD5 memproses variasi panjang pesan kedalam keluaran 128-bit dengan panjang yang tetap. Pesan masukan dipecah menjadi dua gumpalan blok 512-bit; Pesan ditata sehingga panjang pesan dapat dibagi 512. Penataan bekerja sebagai berikut: bit tunggal pertama, 1, diletakkan pada akhir pedan. Proses ini diikuti dengan serangkaian nol (0) yang diperlukan agar panjang pesan lebih dari 64-bit dan kurang dari kelipatan 512. Bit-bit sisa diisi dengan 64-bit integer untuk menunjukkan panjang pesan yang asli. Sebuah pesan selalu ditata setidaknya dengan 1-bit tunggal, seperti jika panjang pesan adalah kelipatan 512 dikurangi 64-bit untuk informasi panjang (panjang mod(512) = 448), sebuah blok baru dari 512-bit ditambahkan dengan 1-bit diikuti dengan 447 bit-bit nol (0) diikuti dengan panjang 64-bit.
 
AlgortimaAlgoritme MD5 yang utama beroperasi pada kondisi 128-bit, dibagi menjadi empat ''[[word]]'' 32-bit, menunjukkan ''A'', ''B'', ''C'' dan ''D''. Operasi tersebut di inisialisasi dijaga untuk tetap konstan. AlgoritmaAlgoritme utama kemudian beroperasi pada masing-masing blok pesan 512-bit, masing-masing blok melakukan pengubahan terhadap kondisi.Pemrosesan blok pesan terdiri atas empat tahap, batasan ''putaran''; tiap putasan membuat 16 operasi serupa berdasar pada fungsi non-linear ''F'', tambahan modular, dan rotasi ke kiri. Gambar satu mengilustrasikan satu operasi dalam putaran.
Ada empat macam kemungkinan fungsi ''F'', berbeda dari yang digunakan pada tiap-tiap putaran:
 
Baris 53:
 
== ''Pseudocode'' ==
''[[Pseudocode]]'' pada algoritmaalgoritme MD5 adalah sebagai berikut.
 
 
//''Catatan: Seluruh variable pada unsigned integer 32-bit dan dan wrap modulo 2^32 saat melakukan perhitungan''
 
//''Mendefinisikan r sebagai berikut''
'''var''' ''int''[64] r, k
r[ 0..15] := {7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22}
r[16..31] := {5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20}
r[32..47] := {4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23}
r[48..63] := {6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21}
 
//''Menggunakan bagian fraksional biner dari integral sinus sebagai konstanta:''
'''for''' i '''from''' 0 '''to''' 63
k[i] := floor(abs(sin(i + 1)) × 2^32)
 
//''Inisialisasi variabel:''
'''var''' ''int'' h0 := 0x67452301
'''var''' ''int'' h1 := 0xEFCDAB89
'''var''' ''int'' h2 := 0x98BADCFE
'''var''' ''int'' h3 := 0x10325476
 
//''Pemrosesan awal:''
'''append''' "1" bit '''to''' message
'''append''' "0" bits '''until''' message length in bits ≡ 448 (mod 512)
'''append''' bit length of message '''as''' ''64-bit little-endian integer'' '''to''' message
 
//''Pengolahan pesan paada kondisi gumpalan 512-bit:''
'''for each''' ''512-bit'' chunk '''of''' message
break chunk into sixteen 32-bit little-endian words w(i), 0 ≤ i ≤ 15
 
//''Inisialisasi nilai hash pada gumpalan ini:''
'''var''' ''int'' a := h0
'''var''' ''int'' b := h1
'''var''' ''int'' c := h2
'''var''' ''int'' d := h3
 
//''Kalang utama:''
'''for''' i '''from''' 0 '''to''' 63
'''if''' 0 ≤ i ≤ 15 '''then'''
f := (b '''and''' c) '''or''' (('''not''' b) '''and''' d)
g := i
'''else if''' 16 ≤ i ≤ 31
f := (d '''and''' b) '''or''' (('''not''' d) '''and''' c)
g := (5×i + 1) '''mod''' 16
'''else if''' 32 ≤ i ≤ 47
f := b '''xor''' c '''xor''' d
g := (3×i + 5) '''mod''' 16
'''else if''' 48 ≤ i ≤ 63
f := c '''xor''' (b '''or''' ('''not''' d))
g := (7×i) '''mod''' 16
 
temp := d
d := c
c := b
b := ((a + f + k(i) + w(g)) '''leftrotate''' r(i)) + b
a := temp
 
//''Tambahkan hash dari gumpalan sebagai hasil:''
h0 := h0 + a
h1 := h1 + b
h2 := h2 + c
h3 := h3 + d
 
'''var''' ''int'' digest := h0 '''append''' h1 '''append''' h2 '''append''' h3 //''(diwujudkan dalam little-endian)''
 
''Catatan: Meskipun rumusan dari yang tertera pada RFC 1321, berikut ini sering digunakan untuk meningkatkan efisiensi:''
(0 ≤ i ≤ 15): f := d '''xor''' (b '''and''' (c '''xor''' d))
(16 ≤ i ≤ 31): f := c '''xor''' (d '''and''' (b '''xor''' c))
 
== ''Hash-hash'' MD5 ==
''Hash-hash'' MD5 sepanjang 128-bit (16-byte), yang dikenal juga sebagai ''ringkasan pesan'', secara tipikal ditampilkan dalam bilangan [[heksadesimal]] 32-digit.
Berikut ini merupakan contoh pesan [[ASCII]] sepanjang 43-byte sebagai masukan dan ''hash'' MD5 terkait:
:<ttcode>MD5("The quick brown fox jumps over the lazy dog")</ttcode> = <ttcode>9e107d9d372bb6826bd81d3542a419d6</ttcode>
Bahkan perubahan yang kecil pada pesan akan (dengan probabilitas lebih) menghasilkan ''hash'' yang benar-benar berbeda, misalnya pada kata "dog", huruf <ttcode>d</ttcode> diganti menjadi <ttcode>c</ttcode>:
:<ttcode>MD5("The quick brown fox jumps over the lazy cog")</ttcode> = <ttcode>1055d3e698d289f2af8663725127bd4b</ttcode>
''Hash'' dari panjang-nol ialah:
:<ttcode>MD5("")</ttcode> = <ttcode>d41d8cd98f00b204e9800998ecf8427e</ttcode>
 
== Lihat pula ==
* [[MD2]]
* [[SFV]]
* [[Cyclic redundancy check]]
 
== Pranala luar ==
=== Informasi MD5 ===
* {{en}}RFC 1321 — ''AlgoritmaAlgoritme Ringkasan-Pesan MD5''
* {{en}}[http://www.cert.org/security-improvement/implementations/i002.01.html ''Menggunakan MD5 untuk memastikan integritas isi dari file'']
* {{en}}[http://groups.google.com/groups?selm=fgrieu-AE7D15.18300202042004%40news.fu-berlin.de Catatan Kriptoanalisis MD5]
* {{en}}[http://www.cryptography.com/cnews/hash.html Tanya-Jawab tentang Kerusakan ''Hash'']
* {{en}}[http://md5pass.com/ MD5 Password Decrypter]
* {{en}}[http://passcracking.ru Online MD5 crack] – Rainbow Tables + big hash database (md5, md5(md5), sha1, mysql)
* {{fr}}[http://ice.breaker.free.fr Online MD5 Reverser | Hash cracker]
* {{en}}[http://passcracking.com/ Pembobolan ''hash'' password MD5 Online]
* {{en}}[http://passcrack.spb.ru/ Pembobolan MD5 Online]
* {{en}}[http://www.md5-lookup.com MD5 lookup] Compute or search reverse
 
=== Implementasi ===
* {{en}}[http://userpages.umbc.edu/~mabzug1/cs/md5/md5.html situs tentang MD5] {{Webarchive|url=https://web.archive.org/web/20050526005618/http://userpages.umbc.edu/~mabzug1/cs/md5/md5.html |date=2005-05-26 }} — berisi tentang berbagai macam implementasi pada berbagai bahasa pemrogaman
* {{en}}[http://pajhome.org.uk/crypt/md5/ Paj's Home: Cryptography] ([[JavaScript|Javascript]] MD4 dan MD5, plus SHA-1)
* {{en}}[http://www.cs.eku.edu/faculty/styer/460/Encrypt/JS-MD5.html MD5 kalkulator dengan Javascript memberikan nilai secara langsung dari kalkulasi] {{Webarchive|url=https://web.archive.org/web/20050410221252/http://www.cs.eku.edu/faculty/styer/460/Encrypt/JS-MD5.html |date=2005-04-10 }}
* {{en}}[http://www.jonelo.de/java/jacksum/index.html Jacksum] (Sebuah program dengan berbagai macam fungsi verifikasi pesan)
* [http://nebotov.ru/p/md5.html Pascal/Delphi realization]
* {{en}}[https://codebeautify.org/md5-hash-generator MD5 HASH Generator]
 
=== Kerusakan ===
* {{en}}[http://cryptography.hyperlink.cz/MD5_collisions.html Kerusakan cepat yang ditemukan oleh V. Klima]
{{Hash kriptografi}}
 
[[Kategori:Kriptografi]]
 
[[ar:إم دي5]]
[[bg:MD5]]
[[ca:MD5]]
[[cs:Message-Digest algorithm]]
[[da:MD5]]
[[de:Message-Digest Algorithm 5]]
[[en:MD5]]
[[es:MD5]]
[[eu:MD5]]
[[fa:ام‌دی۵]]
[[fi:MD5]]
[[fr:MD5]]
[[he:MD5]]
[[hr:MD5]]
[[hu:MD5]]
[[hy:MD5]]
[[it:MD5]]
[[ja:MD5]]
[[ko:MD5]]
[[lt:MD5]]
[[ml:MD5]]
[[ms:MD5]]
[[nl:MD5]]
[[no:MD5]]
[[pl:MD5]]
[[pt:MD5]]
[[ro:MD5]]
[[ru:MD5]]
[[sk:Message-Digest algorithm]]
[[sl:Algoritem MD5]]
[[sr:MD5]]
[[sv:MD5]]
[[tg:MD5]]
[[tr:MD5]]
[[uk:MD5]]
[[vi:MD5]]
[[zh:MD5]]