10 APLIKASI KRIPTOGRAFI SEDERHANA
MENGGUNAKAN FUNGSI HASHING (MD5) PADA MODUL PHP
Eka Wahyu Hidayat
Jurusan Teknik Informatika Fakultas Teknik Universitas Siliwangi Tasikmalaya
ABSTRACT
Computers network enable to do the activity of data change over and transfer from one computer to the others. There are some very important problems in delivery and acception of data in computer network, that is data security (confidentialy, authentication, integrity, non-repuditation). The problem can be overcome with cryptograph using MD5 (Message Digest 5). MD5 is a development of Hash Function Algorithm, which gives guarantee that data sending will be equal to data accepted. One of the computer network based programming language which providing Hash Function is PHP. PHP have standard procedure to protect data in the computer network by means of special library for the encrypted of data. PHP recognized two encrypts libraries those are MCRYPT and MHASH. In this research will be made an application for the encrypted of data in the form of string use MD5 hash function by exploiting PHP library, that is MHASH.
Key Word: Cryptograph, MD5, MHASH
ABSTRAK
Jaringan komputer memungkinkan terjadinya kegiatan pertukaran data dari satu komputer ke komputer lain. Ada beberapa persoalan yang sangat penting dalam proses pengiriman dan penerimaan data dalam jaringan komputer, yaitu keamanan data (kerahasiaan, otentikasi, integritas, non-repudiasi). Persoalan tersebut dapat diatasi dengan kriptografi menggunakan MD5 (Message Digest 5). MD5 merupakan pengembangan dari Algoritma Fungsi Hash yang memberikan jaminan bahwa data yang dikirim akan sama dengan data yang diterima. Bahasa pemrograman berbasis jaringan komputer yang menyediakan Fungsi Hash salah satunya adalah PHP. PHP memiliki prosedur standar untuk mengamankan data-data pada jaringan komputer berupa library khusus untuk mengenkripsi data. Dalam PHP dikenal dua library enkripsi, yaitu MCRYPT dan MHASH. Pada penelitian ini akan dibuat sebuah aplikasi untuk mengenkripsi data berupa string menggunakan fungsi hash MD5 dengan memanfaatkan library PHP, yaitu MHASH.
Kata Kunci: Kriptografi, MD5, MHASH.
I. PENDAHULUAN
Perkembangan teknologi dewasa ini mengarah pada pemanfaatan teknologi informasi untuk mendukung aktifitas pertukaran data dari satu tempat ke tempat lain menggunakan perangkat
komputer melalui suatu jaringan komputer. Jaringan komputer termasuk kedalam infrastruktur teknologi informasi yang digunakan sebagai sarana untuk pertukaran data dan informasi. Teknologi ini menjadi suatu
11 kebutuhan yang sangat penting untuk
mendukung aktifitas individu maupun kelompok dalam bertukar informasi. Internet adalah representasi dari teknologi jaringan komputer. Meskipun bukan satu-satunya media untuk pertukaran data dan informasi, internet paling sering digunakan untuk pertukaran data. Media internet ini bersifat terbuka, maksudnya adalah setiap data yang melewati jaringan komputer bisa dibaca oleh siapa saja menggunakan teknik-teknik pemro- graman tertentu. Untuk itu diperlukan aplikasi keamanan agar kerahasiaan, otentikasi, integritas, dan non-repudiasi data pada saat proses pengiriman dan penerimaan data tetap terjaga. Kerahasiaan berarti bahwa data yang melalui jaringan komputer tidak dapat dibaca oleh orang yang tidak berkepentingan terhadap data tersebut. Otentikasi berarti memberikan jaminan mengenai keaslian data. Integritas berarti memberikan jaminan bahwa data tidak mengalami perubahan sewaktu melewati jaringan komputer, dengan kata lain data yang diterima sama dengan data yang dikirim. Non-repudiasi berarti pengirim data tidak dapat menyangkal bahwa data yang dikirim bukan darinya.
Ada beberapa permasalahan yang perlu dipertimbangkan untuk membuat sebuah aplikasi keamanan data yang baik, yaitu diperlukan biaya yang cukup tinggi untuk rekayasa perangkat lunak aplikasi keamanan data, pemilihan metode kriptografi yang tepat dan sesuai digunakan untuk aplikasi yang akan direkayasa, dan kecenderungan pemrograman internet menggunakan fungsi hashing yaitu salah satu bagian dari fungsi kriptografi satu arah yang siap pakai dan biasa disediakan sebagai modul pelengkap pada library bahasa pemrograman tertentu.
Mengacu pada permasalahan tersebut akan dikembangkan sebuah aplikasi keamanan data dengan usulan yang di ajukan adalah pembangunan sebuah aplikasi berbasis web sederhana untuk mengenkripsi data berupa string menggunakan fungsi hash MD5 dengan memanfaatkan library PHP, yaitu MHASH. String data yang akan di enkripsi di input dari sebuah form pada sisi Client dan diproses di Server, dengan output berupa nilai hash atau hasil enkripsi dalam bentuk binary dan heksadesimal besera ukuran bloknya.
12 II. LANDASAN TEORI
Kriptografi
Kriptografi berasal dari bahasa Yunani, Cryptos (tersembunyi) dan Grafos (tulisan). Secara umum kriptografi berarti suatu cara melalui perhitungan matematika dengan tujuan untuk menjaga nilai suatu informasi agar tidak dimanfaatkan oleh pihak yang tidak berhak atas informasi tersebut. Kegiatan kriptografi lebih kearah melakukan pengacakan atau masking data sedemikian rupa sehingga data tersebut tidak bisa dibaca oleh pihak ketiga. Dalam Kriptografi dikenal istilah Enkripsi (Encryption) dan Deskripsi (Decryption). Enkripsi adalah proses pengacakan Plaintext (data sebelum diacak) menjadi Ciphertext (hasil pengacakan). Sedangkan Deskripsi adalah proses mengembalikan Ciphertext ke Plaintext. Dalam kriptografi terdapat sebuah fungsi yang sesuai digunakan untuk keperluan aplikasi keamanan seperti otentikasi dan integritas pesan, yaitu fungsi hash. Fungsi Hashing
Fungsi hash adalah sebuah fungsi hasil dari suatu persamaan matematika yang mengambil input berupa variable dengan panjang variabel (preimage) bervariasi dan merubahnya menjadi
variable baru yang unik dengan panjang tetap (biasanya lebih pendek atau berukuran jauh lebih kecil daripada ukuran semula) melalui persamaan
(M) H
h dimana h adalah nilai hash dari fungsi H untuk masukan string M, keluarannya biasa disebut nilai hash dan direpresentasikan dalam bilangan heksadesimal. Fungsi hash berjalan hanya satu arah. Fungsi satu-arah (one-way function) adalah fungsi hash yang bekerja dalam satu arah, yaitu pesan yang sudah diubah menjadi message digest tidak dapat dikembalikan menjadi pesan semula dengan kata lain untuk menghitung nilai hash dari pre-image tidaklah sulit, tetapi sangat sulit untuk membangkitkan pre-image dari nilai hash-nya. Metode fungsi hash satu arah ini berfungsi melindungi data dari modifkasi selama data berada dalam jaringan.
Salah satu aplikasi fungsi hash diantaranya adalah untuk memverifikasi kesamaan salinan suatu arsip dengan arsip asli yang tersimpan di dalam sebuah basis data terpusat. Biasanya yang diverifikasi hanya nilai hash-nya saja, karena jika melakukan verifikasi arsip secara keseluruhan akan membutuhkan waktu transmisi cukup lama dan biaya yang tinggi.
13 Library MHASH
Fungsi Hashing memiliki banyak ragam, salah satunya Mhash. Mhash sendiri mendukung beragam algoritma fungsi hashing dan disimpan sebagai pustaka pada Library Mhash seperti Adler32, CRC32, CRC32B, Gost, Hava128, Haval160, Haval192, Haval256, MD4, MD5, Ripemd160, Ripemd128, SHA1, SHA256, Tiger, Tiger128, dan Tiger160. Sedangkan untuk pembangkitan kunci, library
Mhash mendukung proses
pembangkitan kunci dari Mcrypt, Asis, Hex, Pkdes, Simple, Salted, dan Isalted. Library Mhash yang paling banyak digunakan dalam keamanan jaringan komputer dan internet adalah MD5 atau messagedigest5.
Message Digest 5
Dalam sudut pandang ilmu kriptografi, MD5 adalah rangkaian algoritma Message Digest dan termasuk ke dalam Fungsi Hash satu arah. MD5 dirancang oleh Ron Rivest yang juga merupakan salah satu pengembang algoritma RSA pada tahun 1991 dengan tujuan untuk keamanan data. MD5 merupakan perbaikan dari MD4 setelah ditemukan kelemahannya oleh Cryptanalysis, yaitu sebutan untuk pihak ketiga yang selalu mencari kelemahan setiap fungsi
kriptografi dengan cara memecahkan Kunci Deskripsi.
MD5 bekerja dengan cara mengolah data masukan kedalam blok-blok bit sebanyak 512 bit dan dibagi kedalam 16 subblok berukuran 32 bit. Keluaran MD5 di set menjadi 4 blok yang masing-masing berukuran 32 bit, setelah digabungkan akan membentuk nilai hash 128 bit. Secara perhitungan matematis penggunaan MD5 tidak memungkinkan untuk mendapatkan dua pesan berbeda dengan nilai hash yang sama. Algoritma MD5 A B C D A B C D <<<.s F Mi Ki Gambar 1. Algoritma MD5. Algortima MD5 beroperasi pada kondisi 128-bit, dibagi menjadi empat word 32-bit pada A, B, C dan D. Operasi tersebut di inisialisasi dijaga untuk tetap konstan. Algoritma utama
14 kemudian beroperasi pada
masing blok pesan 512-bit, masing-masing blok melakukan pengubahan terhadap kondisi pesan. Tahapan pemrosesan blok pesan yaitu batasan putaran dimana tiap putaran membuat 16 operasi serupa berdasar pada fungsi non-linier F, tambahan modular, dan melakukan rotasi ke kiri. Fungsi kompresi yang digunakan oleh algoritma md5 adalah s) K[i] M[i] d) c, g(b, (a b a
dimana g adalah salah fungsi primitif pada F yaitu: Z) (X Y Z) Y, I(X, Z Y X Z) Y, H(X, Z) (Y Z) (X Z) Y, G(X, Z) X ( Y) (X Z) Y, F(X,
, , , adalah operasi logika untuk XOR, AND, OR dan NOT, sehingga ada empat macam kemungkinan fungsi non-linier yang digunakan pada tiap-tiap putaran.
PHP Hypertext Preprocessor
PHP merupakan server-side embedded scripting language, yaitu bahasa berupa skrip pemrograman yang dapat disisipkan pada dokumen HTML dan bekerja pada lingkungan server seperti Apache dan IIS. Semua sintaks PHP pada dokumen HTML dijalankan pada server sedangkan yang dikirimkan ke browser hanya hasilnya saja. Alasan
penggunaan PHP sebagai web scripting adalah kesederhanaan (simplicity) dan memiliki banyak modul yang disimpan pada pustaka PHP dengan ektensi DLL. Ektensi DLL pada modul PHP bersifat third party dan dapat dipanggil pada skrip PHP sebagai sebuah fungsi. Fungsi-fungsi yang ada pada PHP salah satunya adalah fungsi MHASH untuk enkripsi data menggunakan metoda Hashing.
III. METODE PENELITIAN
Metodologi penelitian yang dilakukan pada penelitian ini adalah sebagai berikut:
1. Studi Literatur, studi literatur dilakukan sebelum memulai penelitian melalui buku-buku, jurnal-jurnal, dan artikel-artikel yang berhubungan dan menunjang penelitian ini.
2. Pembuatan Program Aplikasi, hasil yang didapat pada studi literatur diterjemahkan menjadi suatu rancangan antarmuka interaksi untuk memasukkan nilai string yang akan di enkripsi dan diimplementasikan menjadi program aplikasi untuk memproses nilai masukan menggunakan metode hashing MD5.
15 3. Pengujian, pengujian dilakukan
terhadap hasil implementasi program aplikasi yang dikembangkan. Jika pada saat pengujian ditemukan kekurangan maka dilakukan studi literatur dan memperbaiki program aplikasi yang dibuat hingga tujuan yang ingin dicapai terpenuhi.
IV. HASIL DAN PEMBAHASAN Hasil dan pembahasan dalam penelitian ini di representasikan melalui beberapa tahapan yaitu:
1. Melakukan analisis terhadap proses enkripsi dari suatu nilai input sehingga menghasilkan suatu nilai hash.
2. Menyusun hasil analisis kedalam pemodelan sistem.
3. Pengkodean yaitu menulis script PHP sampai menghasilkan antarmuka pengguna.
4. Setting atau pengaturan web server dan modul-modul yang diperlukan. 5. Pengujian terhadap aplikasi yang
dibuat.
Analisis Proses Enkripsi
Dari analisis diperoleh kebutuhan sistem diantaranya yaitu:
1. Dialog layar berupa form untuk memasukkan data yang akan di-enkripsi.
2. Dialog layar untuk menampilkan hasil enkripsi dari data yang di-input pada form masukkan.
3. Diperlukan suatu file pada modul PHP yang berguna untuk melakukan hashing yaitu php_mhash.dll. Pemodelan Sistem
Pemodelan sistem dilakukan terhadap kinerja sistem dalam melakukan proses enkripsi suatu data. Adapun alur proses enkripsi digambarkan pada gambar berikut: Enkripsi Hash Value Data Fungsi MHASH Library PHP
Gambar 2. Alur Proses Enkripsi Pengkodean
Tahapan ini melakukan penyusunan skrip php untuk mengimplementasikan rancangan sesuai pemodelan sistem yaitu implementasi proses enkripsi. Kegiatan tahapan ini adalah:
16 2. Membuat skrip pemanggilan dan
pemrosesan fungsi hash menggunakan MD5.
3. Membuat skrip pemrosesan menggunakan metode hashing lain. 4. Membuat antarmuka hasil enkripsi. Hasil dari perancangan dan pengembangan serta instalasi sistem, akan diperoleh sebuah aplikasi kriptografi sederhana menggunakan fungsi hashing (MD5) pada modul php. Gambar 3 menunjukkan antarmuka untuk melakukan input data yang akan di enkripsi, sedangkan gambar 4 menunjukkan hasil proses enkripsi terhadap data yang di-input pada gambar 3.
Gambar 3. Antarmuka Input Data Pengaturan Web Server
Intalasi PHP diperlukan agar sistem yang dibuat dapat berjalan pada web server. Web server yang digunakan adalah Apache. Untuk mempermudah
instalasi dan pengaturan PHP dan Apache ini digunakan WampServer yang sudah terintegrasi dengan cukup baik. Karena pada tahapan analsis diperlukan suatu file pada modul PHP yang berguna untuk melakukan hashing yaitu php_mhash.dll maka modul ini harus diaktifkan terlebih dahulu melalui Php Extensions pada config file php.ini. Pengujian Aplikasi
Pengujian aplikasi ini dilakukan terhadap aplikasi kriptografi menggunakan MD5 yang dibuat dengan memasukkan bermacam input data sehingga dihasilkan suatu nilai hash.
Kasus 1
Dicoba untuk melihat nilai hash dimana tidak ada nilai input atau null („ „) pada form masukkan. Hasilnya: d41d8cd98f00b204e9800998ecf8427e Kasus 2
Dicoba untuk melihat nilai hash dengan input ‟Informatika‟. Hasilnya: 270007185d0f4b290ded51f9345a7f29 Kasus 3
Perubahan yang kecil pada input akan menghasilkan hash yang benar-benar berbeda, misalnya pada kata ‟Informatika‟, huruf ‟f‟ diganti menjadi ‟p‟ sehingga input menjadi „Inpormatika‟, Hasilnya:
a1fb6d9d116be440f4c5236faf7fccc5 Kasus 4
Mencoba untuk melihat nilai hash untuk nilai input yang lebih panjang yaitu „Teknik Informatika Fakultas Teknik Universitas Siliwangi Tasikmalaya‟. Hasilnya:
17 Gambar 4. Tampilan Hasil Pemrosesan
V. KESIMPULAN DAN SARAN Beberapa kesimpulan dapat diperoleh selama penelitian ini adalah:
1. Message Digest 5 (MD5) merupakan fungsi Hash satu arah yang mengubah masukan berupa variabel menjadi keluaran berupa nilai hash dalam bentuk umum heksadesimal dengan panjang tetap yaitu 128 Bit dengan ukuran blok 16 bytes.
2. Input data yang sama, setelah dilakukan enkripsi akan menghasilkan nilai hash yang sama. Itu berarti bahwa tidak mungkin
didapat nilai hash yang sama untuk input masukan yang berbeda.
3. Diperlukan Web Server untuk memanggil fungsi MHASH pada PHP karena script PHP bersifat embedded dan hanya bisa di eksekusi pada sisi server.
4. Sumber daya komputer dan jaringan komputer berpengaruh terhadap kecepatan enkripsi.
Saran yang bisa diberikan untuk penelitian ini adalah untuk mendapatkan nilai hash yang powerfull dan sulit dilakukan pelacakkan karena salah satu cara untuk membongkar atau mengetahui data dibalik nilai hash
18 adalah melalui Brute-Force atau
pelacakan terbalik. Untuk itu aplikasi MD5 dapat dikombinasikan atau digabung dengan algoritma kriptografi lainnya sehingga didapat aplikasi kriptografi yang lebih handal.
DAFTAR PUSTAKA
A. Menezes, P. Van Oorschot, S. Vanstone., “Handbook of applied Cryptography”., CRC Press., 1996.
B. Schneider, “Applied Cryptography”., John Wiley & Sons., New York., 1994.
Didik Dwi Prasetyo., “PHP dan MySQL”., Elex Media Komputindo., Jakarta., 2003.
Irvan Prama Defindal., “Penggunaan Enkripsi dalam PHP Menggunakan Library MHASH”., ITB
J. Castagnetto, H. Rawat, S. Schumann, C. Scollo, D. Veliath., “Professional PHP Programming”., Wrox Press., 1999.
Pfleeger, Charles P, “Security in Computing Second Edition”., Prentice-Hall International., New Jersey., 1997.
http://en.wikipedia.org/wiki/md5 http://mhash.sourceforge.net/ http://md5.rednoize.com/ http://www.cryptography.org/ http://www.md5encryption.com/