Hash Sebagai Integritas Data
HASH
Fungsi hash adalah fungsi
yang dapat digunakan untuk memetakan
data ukuran sewenang-wenang
untuk data ukuran tetap, dengan sedikit perbedaan dalam input data menghasilkan perbedaan yang sangat besar dalam output data. Nilai-nilai yang dikembalikan oleh fungsi hash disebut nilai
hash , kode
hash, hash jumlah,
atau hanya hash. Nilai
hash biasanya digunakan untuk membedakan
antara data. Sebagai contoh,
dalam menerapkan satu set perangkat lunak, kita harus menghindari termasuk elemen
lebih dari sekali. Perkembangan terkini
dalam jaringan pembayaran internet
juga menggunakan bentuk 'hashing' untuk memproduksi checksum.
Fungsi Hash banyak sekali digunakan untuk
mempercepat pencarian dalam tabel data atau pembandingan data seperti di dalam basis data,mencari
duplikasi atau kesamaan(rekaman) disebuah arsip komputer yang besar,menemukan
goresan-goresan yang sama di sebuah DNA,dan sebagainya.
Fungsi hash haruslah stabil(referential
transparent),artinya,jika ia dipanggil dua kali oleh masukan yang benar-benar
sama(sebagai misal,string yang mengandung sekuen karakter yang sama),maka ia
haruslah memberi hasil yang sama pula.Ini adalah sebuah kontrak dalam banyak
bahasa pemrograman yang membolehkan pengguna melakukan override pada kesamaan
morfologi dan fungsi hash bagi sebuah objek;jika dua objek adalah sama,maka
kode hash-nya pun sama.menjadi hal yang sangat penting untuk menemukan sebuah
elemen di dalam tabel hash dengan cepat,juga karena dua elemen yang sama akan
sama-sama meng-hash ke slot yang sama.
Beberapa fungsi hash dapat memetakan dua atau
lebih kunci ke nilai hash yang sama,menyebabkan kolisi.Fungsi-fungsi hash
ini mencoba memetakan kunci-kunci ke nilai hash seketat mungkin karena
tabrakan-tabrakan(kolisi) akan semakin sering terjadi saat tabel hash semakin
terisi penuh.Sehingga,nilai hash digit-tunggal(jumlah dari probing setiap nilai
hash dibagi dengan jumlah tabel hash) terbatas hanya di 80% ukuran tabel yang
ada.Bergantung kepada algoritma yang digunakan,aturan-aturan yang lain mungkin
diperlukan,seperti Double Hashing dan Linear Probing.
MD5
Dalam kriptografi,
MD5 (Message-Digest algortihm 5) ialah 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 berkas.
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 lain, seperti SHA-1 (klaim terbaru
menyatakan bahwa SHA-1 juga cacat). Pada tahun 2004, kecacatan-kecacatan
yang lebih serius ditemukan menyebabkan penggunaan algoritma tersebut dalam
tujuan untuk keamanan jadi makin dipertanyakan.
Sejarah dan kriptoanalisis MD5
MD5
adalah salah satu dari serangkaian algortima message digest yang
didesain oleh Profesor Ronald Rivest dari 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 I dan J dengan beda 4-bit di antara keduanya.
Pada
tahun 1996
Dobbertin mengumumkan sebuah kerusakan pada fungsi kompresi MD5. Dikarenakan
hal ini bukanlah serangan terhadap fungsi hash MD5 sepenuhnya, hal ini
menyebabkan para pengguna kriptografi menganjurkan pengganti seperti WHIRLPOOL, SHA-1 atau RIPEMD-160.
Ukuran
dari hash — 128-bit — cukup kecil untuk terjadinya serangan brute force
birthday attack. MD5CRK adalah proyek
distribusi mulai Maret 2004
dengan tujuan untuk menunjukka kelemahan dari MD5 dengan menemukan kerusakan
kompresi menggunakan brute force attack.
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 [1][2]. 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[3]
kunstruksi dari dua buah sertifikat X.509 dengan 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[4] 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 mengijinkan pendahuluan kondisi hash menjadi arbitari
tertentu, sebuah kerusakan dapat ditemukan dengan awalan apapun. Proses tersebut
memerlukan pembangkitan dua buah berkas perusak sebagai berkas templat, dengan
menggunakan blok 128-byte dari tatanan data pada 64-byte batasan, berkas-berkas
tersebut dapat mengubah dengan bebas dengan menggunakan algoritma 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 (2128),
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 secara 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 pengguna 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 MD5
Algoritma
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. Mi
menujukkan blok 32-bit dari masukan pesan, dan Ki menunjukkan
konstanta 32-bit, berbeda untuk tiap-tiap operasi.
S
menunjukkan perputaran bit kiri oleh s; s bervariasi untuk
tiap-tiap operasi. menunjukan
tambahan modulo 232. 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.
Algoritma
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. Algoritma 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:
SHA 1
Dalam
kriptografi, SHA-1 adalah fungsi hash kriptografi yang dirancang oleh National
Security Agency Amerika Serikat dan US Federal Information Processing Standard diterbitkan
oleh Amerika Serikat NIST.
SHA-1
menghasilkan 160-bit (20-byte) nilai hash. A SHA-1 hash nilai biasanya diberikan
sebagai angka heksadesimal, 40 angka.
SHA
singkatan dari "algoritma hash aman". Keempat algoritma SHA yang
terstruktur berbeda dan diberi nama SHA-0, SHA-1, SHA-2, dan SHA-3. SHA-0 adalah
versi asli dari fungsi hash 160-bit yang diterbitkan pada tahun 1993 dengan
nama "SHA": itu tidak diadopsi oleh banyak aplikasi. Diterbitkan pada
tahun 1995, SHA-1 adalah sangat mirip dengan SHA-0, tetapi mengubah asli SHA hash
spesifikasi untuk memperbaiki dugaan kelemahan. SHA-2, diterbitkan pada tahun
2001, secara signifikan berbeda dari SHA-1 hash function.
SHA-1
adalah yang paling banyak digunakan dari fungsi hash SHA yang ada, dan digunakan
dalam beberapa aplikasi secara luas digunakan dan protokol.
Pada
tahun 2005, kriptanalis menemukan serangan terhadap SHA-1 menunjukkan bahwa algoritma
mungkin tidak cukup aman untuk digunakan terus-menerus. [3] NIST diperlukan banyak
aplikasi dalam badan-badan federal untuk pindah ke SHA-2 setelah 2010 karena kelemahan.
[4] Meskipun tidak ada serangan yang berhasil belum dilaporkan pada SHA-2, itu
adalah algorithmically mirip dengan SHA-1. Pada tahun 2012, setelah kompetisi berjalan
lama, NIST memilih algoritma tambahan, Keccak, untuk standarisasi di bawah SHA-3.
[5] [6] Pada tahun 2013 Microsoft mengumumkan kebijakan bantahan mereka pada SHA-1
yang menurut Windows akan berhenti menerima SHA -1 sertifikat SSL di tahun 2017.

Komentar
Posting Komentar