1. MAKALAH SKRIPSI
PERBANDINGAN BEBERAPA ALGORITMA HASH KRIPTOGRAFIK
DALAM BAHASA JAVA
Disusun oleh:
ARIE PURWANTO
96/108831/TK/20782
JURUSAN TEKNIK ELEKTRO FAKULTAS TEKNIK
UNIVERSITAS GADJAH MADA
2002
2. LEMBAR PENGESAHAN
MAKALAH SKRIPSI
PERBANDINGAN BEBERAPA ALGORITMA HASH KRIPTOGRAFIK
DALAM BAHASA JAVA
Telah diperiksa dan disetujui
Tanggal: ............................
Pembimbing I Pembimbing II
Ir. Sujoko Sumaryono, M.T. DR. Ir. Lukito Edi Nugroho, M.Sc.
NIP. 131 792 961 NIP. 131 963 570
3. ABSTRACT
Cryptographic hash algorithms are cryptosystem primitives used for data integrity
and producing message digest. This thesis compares three MD4-family
cryptographic hash algorithms, as follows: MD5, SHA-1 and RIPEMD-160, with
following parameters: length of hash-value produced and time needed by each
algorithm to process an input. The application used for comparation is build in
Java programming language. The results shown that the length of hash-value
produced by MD5 is 128-bit and the length of hash-value produced by SHA-1 and
RIPEMD-160 is 160-bit. RIPEMD-160 requires most time / slowest in speed,
while MD5 requires least time / fastest in speed. But the faster hash algorithm, the
less secure.
ABSTRAKSI
Algoritma hash kriptografik merupakan salah satu primitif dari kriptosistem yang
berguna untuk integritas data dan membuat intisari pesan. Skripsi ini
membandingkan tiga algoritma hash kriptografik keluarga MD4 yang populer,
yaitu: MD5, SHA-1 dan RIPEMD-160, dengan parameter: panjang nilai-hash
yang dihasilkan dan waktu yang diperlukan masing-masing algoritma untuk
memroses suatu input. Aplikasi untuk membandingkan dibuat dalam bahasa Java.
Hasil yang diperoleh memperlihatkan bahwa panjang nilai-hash MD5 adalah 128
bit dan panjang nilai-hash SHA-1 dan RIPEMD-160 adalah 160 bit. RIPEMD-160
membutuhkan waktu paling banyak / kecepatan paling rendah, sedangkan MD5
membutuhkan waktu paling sedikit / kecepatan paling tinggi. Tetapi semakin
cepat suatu algoritma hash, semakin tidak aman pula algoritma tersebut.
4. PENDAHULUAN
Selama beberapa tahun sejak kelahirannya, jaringan komputer utamanya
digunakan oleh para peneliti di universitas untuk mengirim email. Dalam kondisi
semacam ini, faktor keamanan tidak banyak memerlukan perhatian. Tetapi setelah
ditemukannya internet, jutaan orang mempunyai kesempatan yang sama untuk
menggunakan jaringan komputer, sehingga keamanan jaringan muncul ke
permukaan sebagai masalah yang sangat penting.
Secara umum, masalah keamanan jaringan berkaitan dengan empat bidang
sebagai berikut: kerahasiaan, keaslian, pengesahan, dan integritas. Keempat isu ini
adalah target dari ancaman atau serangan terhadap keamanan jaringan. Serangan
terhadap keamanan jaringan dapat digolongkan sebagai berikut:
- Serangan pasif
Adalah penyadapan atau pengawasan terhadap transmisi. Tujuan yang ingin
dicapai adalah mendapatkan informasi yang sedang ditransmisikan.
- Serangan aktif
Melibatkan modifikasi aliran data, atau penciptaan aliran palsu.
Masalah ancaman atau serangan terhadap keamanan jaringan ini senantiasa
dipelajari dan dicari formulasi tepat untuk mengatasinya dalam ilmu kriptografi.
Kriptografi adalah ilmu teknik-teknik matematis yang berhubungan dengan
aspek-aspek keamanan informasi seperti kerahasiaan, integritas data, otentikasi
entitas, dan otentikasi keaslian data. Teknik-teknik kriptografi dapat digolongkan
sebagai berikut:
- Kriptosistem Kunci Publik
- Kriptosistem Kunci Rahasia
- Fungsi Hash Kriptografik
Dua teknik yang pertama diterapkan untuk melindungi informasi dari serangan
pasif terutama dalam hal penyadapan data. Sedangkan teknik ketiga, fungsi hash
kriptografik, diterapkan untuk melindungi informasi dari serangan aktif terutama
dalam hal pengubahan data asli atau modifikasi data asli.
5. Beberapa algoritma hash kriptografik yang paling banyak dan luas
penggunaannya di dunia adalah algoritma-algoritma keluarga MD4 (Message
Digest 4), yaitu: MD5 (Message Digest Algorithm 5), SHA-1 (Secure Hash
Algorithm), dan RIPEMD-160.
Pada sisi lain, dalam bidang pemrograman internet, pada bulan Mei 1995,
Sun Microsystems memperkenalkan bahasa pemrograman Java. Java didasarkan
pada kode bahasa C dan diklaim oleh Sun Microsystems sebagai bahasa
pemrograman yang sederhana, berorientasi-obyek, diterjemahkan (interpreted),
kuat, aman, netral secara arsitektur, mudah dipindahkan ke sistem lain (portable),
performa-tinggi, multithread, dan dinamis. Versi terbaru Java yang telah
dipublikasikan secara luas adalah Java 2.
TINJAUAN PUSTAKA
Fungsi hash kriptografik memainkan peran fundamental dalam kriptografi
modern. Walaupun dihubungkan dengan fungsi hash konvensional yang biasa
digunakan secara umum dalam aplikasi komputer non-kriptografik – dalam hal
ini, domain yang lebih besar dipetakan ke daerah yang lebih kecil – keduanya
berbeda dalam beberapa aspek penting. Oleh karena itu perlu dipahami terlebih
dahulu, bahwa istilah fungsi hash yang digunakan dalam penelitian ini merujuk
pada fungsi hash kriptografik.
Fungsi hash mengambil suatu pesan sebagai input dan menghasilkan output
yang disebut kode-hash, hasil-hash, atau nilai-hash. Lebih tepat lagi, suatu fungsi
hash h memetakan bitstring dengan panjang terhingga dan tidak tetap ke string
dengan panjang tetap, katakanlah n bit. Untuk sebuah domain D dan jangkauan R
dengan h : D → R dan D <R , fungsi pemetaan tersebut adalah banyak-ke-satu,
mengungkapkan secara tidak langsung bahwa kemunculan tumbukan (pasangan
input yang memiliki output identik) tidak dapat dihindari. Untuk membatasi h ke
domain input t-bit ( t > n ), bila h adalah “acak” dalam hal bahwa semua output
pada dasarnya sama kemungkinannya, maka sekitar 2t −n input akan dipetakan ke
tiap output, dan dua input yang dipilih secara acak akan menghasilkan output
6. yang sama dengan probabilitas 2 −n (tidak bergantung pada t). Ide dasar fungsi
hash kriptografik adalah bahwa suatu nilai-hash merupakan image padat
representatif dari suatu string input, dan dapat digunakan sebagai identifikasi unik
dari string tersebut.
Pada tingkat paling tinggi, fungsi hash dapat dipisahkan menjadi dua kelas:
fungsi hash tanpa kunci, yang berspesifikasi satu parameter input yaitu pesan; dan
fungsi hash berkunci, yang berspesifikasi dua input berbeda yaitu pesan dan kunci
rahasia.
DASAR TEORI
MD4
MD4 adalah fungsi hash 128-bit. Tujuan asli desain MD4 adalah bahwa
memecahkan MD4 akan membutuhkan usaha brute-force yang keras:
menemukan pesan berbeda dengan nilai-hash yang sama memerlukan 264
operasi, dan menemukan pesan yang menghasilkan nilai-hash yang telah
ditentukan memerlukan sekitar 2128 operasi. MD4 menggunakan konvensi
little-endian untuk konversi byte ke word 32-bit.
MD5
MD5 didesain sebagai versi MD4 yang diperkuat, setelah tumbukan MD4
ditemukan. MD5 telah digunakan secara luas. Perubahan yang dibuat untuk
mencapai MD5 dari MD4 adalah sebagai berikut:
1. penambahan putaran keempat dari 16 langkah, dan fungsi Putaran 4
2. penggantian fungsi Putaran 2 dengan fungsi baru
3. modifikasi urutan akses untuk word pesan dalam Putaran 2 dan 3
4. modifikasi jumlah pergeseran
5. penggunaan konstanta tambahan unik dalam tiap 4 × 16 langkah,
berdasarkan bagian bilangan bulat 232 ⋅ sin ( j ) untuk langkah j
6. penambahan output dari langkah sebelumnya ke tiap 64 langkah.
7. SHA-1
Secure Hash Algorithm (SHA-1) berbasis MD4. Perbedaan utama SHA-1
dari MD4 adalah sebagai berikut:
1. Nilai-hash 160 bit, dan digunakan lima variabel rantai 32-bit.
2. Fungsi kompresi mempunyai empat putaran, menggunakan fungsi
tangga MD4 f, g, dan h sebagai berikut: f dalam putaran pertama, g
ketiga, dan h dalam putaran kedua dan keempat. Tiap langkah memiliki
20 putaran.
3. Dalam fungsi kompresi, tiap blok pesan 16-word diperluas menjadi blok
80-word.
4. Langkah inti dimodifikasi sebagai berikut: satu-satunya rotasi yang
digunakan adalah rotasi konstan 5-bit; variabel kerja kelima
ditambahkan ke tiap hasil langkah; word pesan dari blok pesan yang
diperluas diakses secara sekuensial; dan C di-update sebagai B yang
dirotasi ke kiri 30 bit.
5. SHA-1 menggunakan empat konstanta tambahan bukan-nol, sedangkan
MD4 menggunakan tiga konstanta yang dua diantaranya bukan-nol.
RIPEMD-160
RIPEMD-160 adalah fungsi hash berbasis MD4. Keseluruhan fungsi
kompresi RIPEMD-160 memetakan input 21-word (variabel rantai 5-word
ditambah blok pesan 16-word, dengan word 32-bit) ke output 5-word. Tiap
blok input diproses secara paralel oleh versi berbeda (jalur kiri dan jalur
kanan) dari fungsi kompresi. Output 160-bit dari jalur yang terpisah
dikombinasikan untuk memberikan output tunggal 16-bit.
Fungsi kompresi RIPEMD-160 berbeda dari MD4 dalam hal jumlah word
variabel rantai, jumlah putaran, fungsi putaran (tabel 2.6), urutan word input
yang diakses, dan jumlah rotasi hasil. Jalur komputasi kiri dan kanan berbeda
satu sama lain dalam hal dua item terakhir, konstanta tambahan, dan dalam
urutan penerapan fungsi putaran. Maksud dari desain ini adalah untuk
memperbaiki resistensi terhadap strategi serangan yang ada. Tiap jalur paralel
menggunakan IV yang sama seperti SHA-1.
8. METODOLOGI PENELITIAN
Metode yang dilakukan dalam penulisan skripsi ini adalah sebagai berikut:
- Mempelajari literatur yang berhubungan dengan algoritma hash kriptografik
baik berupa buku, paper dalam bentuk fisik maupun elektronik.
- Membuat perangkat lunak aplikasi untuk memproses hashing dan menghitung
berbagai besaran tiap algoritma hash kriptografik.
- Menguji perangkat lunak dengan memberikan berbagai masukan yang telah
ditentukan.
- Membuat kesimpulan dari hasil yang diperoleh.
HASIL IMPLEMENTASI DAN PEMBAHASAN
Ada empat modul atau kelas yang dibuat dalam aplikasi skripsi ini, dengan
rincian sebagai berikut:
1. Modul utama; adalah satu-satunya modul yang memiliki tampilan visual dan
berupa suatu applet Java.
2. Modul MD5; berisi proses inti dari algoritma hash MD5.
3. Modul SHA-1; berisi proses inti dari algoritma hash SHA-1.
4. Modul RIPEMD-160; berisi proses inti dari algoritma hash RIPEMD-160.
Tampilan modul utama diperlihatkan dalam gambar 1.
Gambar 1 Tampilan visual dari modul utama.
Pada skripsi ini dilakukan pengujian untuk memperoleh nilai dari parameter
yang digunakan untuk membandingkan tiga algoritma hash kriptografik. Untuk itu
digunakan beberapa file berukuran lebih dari satu megabyte (MB) sebagai
9. masukan untuk dihitung nilai-hashnya. Daftar file yang digunakan dalam
pengujian ditunjukkan oleh tabel 1. Hasil pengujian diperlihatkan dalam tabel 2.
Tabel 1 Daftar file masukan.
Nama file Letak Ukuran
WINWORD.EXE C:Program FilesMicrosoft OfficeOffice10 10.324 KB
class2.doc D:BackupVisual Basic Controlbeginvb1 2.617 KB
Plus!.bmp C:WINDOWS 1.537 KB
KOF98.ZIP D:BackupNeo-GeoRoms 39.975 KB
Not enuf.mp3 D:BackupMP3Rock 8.483 KB
Tabel 2 Hasil pengujian keseluruhan.
Algoritma Waktu (rata-rata) Kecepatan (rata-rata)
MD5 1,92 dtk 6579,20 KB/ dtk
SHA-1 2,81 dtk 4472,96 KB/ dtk
RIPEMD-160 3,60 dtk 3488,51 KB/ dtk
KESIMPULAN
1. Algoritma MD5 menghasilkan nilai-hash sepanjang 128 bit, sedangkan SHA-
1 dan RIPEMD-160 menghasilkan nilai-hash sepanjang 160 bit.
2. Kecepatan proses MD5 > SHA-1 > RIPEMD-160.
DAFTAR PUSTAKA
Bosselaers, Antoon. The Hash Function RIPEMD-160.
http://www.esat.kuleuven.ac.be/~bosselae/ripemd160.html, 1999.
Cohn, Mike, Bryan Morgan, et al. Java Developer's Reference. Indianapolis:
Sams.net Publishing, 1996.
Flanagan, David. Java in a Nutshell. 2nd ed. O'Reilly & Associates, May 1997.
Girdley, Michael, Kathryn A. Jones, et al. Web Programming with Java. 1st ed.
Indianapolis: Sams.net Publishing, 1996.
Grand, Mark, Jonathan Knudsen. Java Fundamental Classes Reference. 1st ed.
O'Reilly & Associates, May 1997.
10. Hopson, K.C., Stephen E. Ingram. Developing Professional Java Applet.
Indianapolis: Sams.net Publishing, 1996.
Jaworski, Jamie. Java 1.2 Unleashed. Indianapolis: Macmillan Computer
Publishing, 1998.
Lemay, Laura, Charles L. Perkins, Michael Morrison. Teach Yourself Java in 21
Days Professional Reference Edition. Indianapolis: Sams.net Publishing,
1996.
Menezes, Alfred J., Paul C. van Oorschot, Scott A. Vanstone. Handbook of
Applied Cryptography. CRC Press, Inc., 1996.
Nagin, Paul, John Impagliazzo. Computer Science : a breadth-first approach with
Pascal. John Wiley & Sons, Inc., 1995.
National Institute of Standards and Technology, U.S. Department of Commerce.
Secure Hash Standard. NIST FIPS PUB 180-1, May 31, 1994.
Norton, Peter, Wiliam Stanek. Peter Norton’s Guide to Java Programming.
Indianapolis: Sams.net Publishing, 1996.
Rivest, R. The MD5 Message Digest Algorithm. RFC 1321, April 1992.
Sanchez, Julio, Maria P. Canton. Java ™ 2 Weekend Crash Course. Terj. Imam
Mustaqim, Jakarta: PT. Elex Media Komputindo, 2002.
Schneier, Bruce. Applied Cryptography. 2nd ed. New York: John Wiley, 1996.
SSH Communications Security. Cryptography A-Z. http://www.ssh.fi, 2002.
Stallings, William. Cryptography and Network Security: Principles and Practice,
Second Edition. Prentice Hall, PTR, 1997.
Stallings, William. Data and Computer Communications. New Jersey: Prentice-
Hall, Inc., 1997.
Tanenbaum, Andrew S. Jaringan Komputer. Edisi ke-3. Jil. 2, terj. Gurnita
Priatna, Jakarta: Prenhallindo, 1997.
Vanderburg, Glenn L., et al. Tricks of the Java Programming Gurus. Indianapolis:
Sams.net Publishing, 1996.
Walnum, Clayton. Java By Example. Indianapolis: Que Corporation, 1996.