Artikel Fungsi Hash Pada Kriptograf

Kriptografi adalah ilmu dan seni untuk menjaga kerahasiaan data. Algoritma kriptografi modern merupakan algoritma yang beroperasi dalam metode bit. Algoritma enkripsi dan dekripsi memproses semua data dan informasi dalam bentuk rangkaian bit. Rangkaian bit yang menyatakan plainteks dienkripsi menjadi cipherteks dalam bentuk rangkaian bit, demikian sebaliknya. Algoritma kriptografi modern terbagi ke dalam tiga, yaitu algoritma simetri (block cipher dan stream cipher), algoritma asimetri dan fungsi hash. Fungsi hash dalam dunia ilmu komputer digunakan untuk penyimpanan data pada database dan digunakan untuk enkripsi dan dekripsi data dalam kriptografi. Makalah ini membahas tentang fungsi hash kriptografis, sifat-sifat fungsi hash dan penerapannya pada dunia kriptografi.
1. PENDAHULUAN
Sejak digunakan dalam perang dunia, kriptografi terus mengalami perkembangan. Jika dahulu kriptografi menyamarkan teks asli (plainteks) menjadi teks sandi (cipherteks) dengan keluaran berupa karakter huruf yang dikenal dengan kriptografi klasik, kini teks sandi yang dihasilkan ialah berupa mode bit yang dikenal dengan kriptografi modern. Perkembangan ini tidak lepas dari penggunaan komputer digital yang merepresentasikan data dalam bentuk biner . (rizky, 2009:2). Kriptografi modern kini lebih banyak digunakan, karena cenderung lebih aman daripada kriptografi klasik. Algoritma kriptografi modern terbagi ke dalam algoritma simetri, algoritma asimetri dan fungsi hash. Algoritma simetri ialah algoritma yang mempergunakan kunci yang sama pada enkripsi dan dekripsinya. Algoritma ini merupakan algoritma yang paling umum digunakan. Algoritma asimetri ialah algoritma yang mempergunakan kunci yang berbeda pada enkripsi dan dekripsinya (yusuf, 2004:50). Fungsi hash adalah fungsi yang menerima masukkan string yang panjangnya sembarang dan mentransformasikannya menjadi string keluaran yang panjangnya tetap (nilai hash), umumnya berukuran jauh lebih kecil daripada string masukkannya (rinaldi, 2006:2). Ide dasar dari fungsi hash adalah menghitung nilai hash dari kunci atau nilai asli, kemudian membandingkan kunci atau nilai asli dengan isi pada memori yang beralamat nomor hashnya tanpa harus memeriksa isi tabel satu per satu sehingga lebih efisien.
2. FUNGSI HASH KRIPTOGRAFIS
Fungsi hash Kriptografis adalah fungsi hash yang memiliki beberapa sifat keamanan tambahan sehingga dapat dipakai untuk tujuan keamanan data . Umumnya digunakan untuk keperluan autentikasi dan integritas data. Persamaan fungsi hash secara matematis ialah h = H(M); M = pesan ukuran sembarang, h = nilai hash (hash value) atau pesan-ringkas (message- digest); h <<<< M. Misalkan: size(M) = 1 MB, size(h) = 128 bit
Nama lain fungsi hash adalah:
a) fungsi kompresi (compression function)
b) cetak-jari (fingerprint)
c) cryptographic checksum
d) message integrity check (MIC)
e) manipulation detection code (MDC)
Sifat-Sifat Fungsi Hash Kriptografi
a) Tahan preimej (Preimage resistant): bila diketahui nilai hash h maka sulit (secara komputasi tidak layak) untuk mendapatkan m dimana h = hash(m).
b) Tahan preimej kedua (Second preimage resistant): bila diketahui input m1 maka sulit mencari input m2 (tidak sama dengan m1) yang menyebabkan hash(m1) = hash(m2).
c) Tahan tumbukan (Collision-resistant): sulit mencari dua input berbeda m1 dan m2 yang menyebabkan hash(m1) = hash(m2). Fungsi hash merupakan fungsi yang bersifat satu arah dimana jika kita masukkan data, maka dia akan menghasilkan sebuah “checksum” atau “fingerprint” dari data tersebut dan tidak dapat diubah kembali menjadi pesan semula. Sebuah pesan yang dilewatkan ke fungsi hash akan menghasilkan keluaran yang disebut Message Authenticated Code (MAC). Dilihat dari sisi matematik, fungsi hash memetakan satu set data ke dalam sebuah set yang lebih kecil dan terbatas ukurannya.
Sifat-sifat fungsi hash satu-arah adalah sebagai berikut:
a) Fungsi H dapat diterapkan pada blok data berukuran berapa saja.
b) H menghasilkan nilai (h) dengan panjang tetap (fixed-length output).
c) H(x) mudah dihitung untuk setiap nilai x yang diberikan.
d) Untuk setiap h yang dihasilkan, tidak mungkin dikembalikan nilai x sedemikian sehingga H(x) = h. Itulah sebabnya fungsi H dikatakan fungsi hash satu-arah (one-way hash function).
e) Untuk setiap x yang diberikan, tidak mungkin mencari y ¹ x sedemikian sehingga H(y) = H(x).
f) Tidak mungkin mencari pasangan x dan y sedemikian sehingga H(x) = H(y). Masukan fungsi hash adalah blok pesan (M) dan keluaran dari hashing blok pesan sebelumnya,
hi = H(Mi, hi – 1) Skema fungsi hash ditunjukkan pada Gambar 2.1.

Gambar 2.1 Fungsi hash satu-arah
Aplikasi fungsi hash satu arah bertujuan untuk:
1. Menjaga integritas data
a) Fungsi hash sangat peka terhadap perubahan 1 bit pada pesan
b) Pesan berubah 1 bit, nilai hash berubah sangat signifikan.
c) Bandingkan nilai hash baru dengan nilai hash lama. Jika sama, pesan masih asli. Jika tidak sama, pesan sudah dimodifikasi
2. Menghemat waktu pengiriman.
a) Misal untuk memverifikasi sebuah salinan arsip dengan arsip asli.
Fungsi Hash satu arah 5
b) Salinan dokumen berada di tempat yang jauh dari basisdata arsip asli
c) Daripada mengirim salinan arsip tersebut secara keseluruhan ke komputer pusat (yang membutuhkan waktu transmisi lama), lebih mangkus mengirimkan message digest-nya.
d) Jika message digest salinan arsip sama dengan message digest arsip asli, berarti salinan arsip tersebut sama dengan arsip master.
3. Menormalkan panjang data yang beraneka ragam.
a) Misalkan password panjangnya bebas (minimal 8 karakter)
b) Password disimpan di komputer host (server) untuk keperluan otentikasi pemakai komputer.
c) Password disimpan di dalam basisdata.
d) Untuk menyeragamkan panjang field password di dalam basisdata, password disimpan dalam bentuk nilai hash (panjang nilai hash tetap).
2.1. Sidik Jari
Kini akan dibahas mengenai keutuhan pesan saat dikirimkan. Saat pengirim pesan hendak mengirimkan pesannya, dia harus membuat sidik jari dari pesan yang akan dikirim untuk penerima pesan. Pesan (yang besarnya dapat bervariasi) yang akan di-hash disebut preimej, sedangkan outputnya yang memiliki ukurannya tetap, disebut nilai hash. Kemudian, melalui saluran komunikasi yang aman, dia mengirimkan sidik jarinya kepada penerima. Setelah penerima menerima pesan si pengirim, penerima kemudian juga membuat sidik jari dari pesan yang telah diterimanya dari pengirim. Kemudian kedua sidik jari dibandingkan. Jika kedua sidik jari itu identik, maka penerima dapat yakin bahwa pesan itu utuh tidak diubah-ubah sejak dibuatkan sidik jari yang diterimanya. Jika pesan sudah diubah, tentunya akan menghasilkan nilai hash yang berbeda.

Fungsi hash untuk membuat sidik jari tersebut dapat diketahui oleh siapapun, tak terkecuali, sehingga siapapun dapat memeriksa keutuhan dokumen atau pesan tertentu. Tak ada algoritma rahasia dan umumnya tak ada pula kunci rahasia. Jaminan dari keamanan sidik jari berangkat dari kenyataan bahwa hampir tidak ada dua pre-image yang memiliki nilai hash yang sama. Inilah yang disebut dengan sifat bebas collision dari suatu fungsi hash yang baik. Selain itu, sangat sulit untuk membuat suatu preimej jika hanya diketahui hash-valuenya saja.
2.2. Tanda Tangan Digital
Penerima pesan dapat merasa yakin bahwa sidik jari yang datang bersama pesan yang diterimanya memang berkorelasi. Namun bagaimana penerima pesan dapat merasa yakin bahwa pesan itu beasal dari pengirim tanpa ada gangguan dari pihak yang tidak diinginkan pada saat pesan melintas melalui saluran komunikasi? Untuk mencegah terjadinya pemalsuan sidik jari, pengirim pesan membubuhkan tanda tangannya pada pesan tersebut. Dalam dunia elektronik, pengirim pesan membubuhkan tanda tangan digitalnya pada pesan yang akan dikirimkan untuk penerima sehingga penerima dapat merasa yakin bahwa pesan itu memang dikirim oleh pengirim. Sifat yang diinginkan dari tanda tangan digital diantaranya adalah:
a) Tanda tangan itu asli (otentik), tidak mudah ditulis/ditiru oleh orang lain. Pesan dan tanda tangan pesan tersebut juga dapat menjadi barang bukti, sehingga penandatangan tak bisa menyangkal bahwa dulu ia tidak pernah menandatanganinya.
b) Tanda tangan itu hanya sah untuk dokumen (pesan) itu saja. Tanda tangan itu tidak bisa dipindahkan dari suatu dokumen ke dokumen lainnya. Ini juga berarti bahwa jika dokumen itu diubah, maka tanda tangan digital dari pesan tersebut tidak lagi sah.
c) Tanda tangan itu dapat diperiksa dengan mudah.
d) Tanda tangan itu dapat diperiksa oleh pihak-pihak yang belum pernah bertemu dengan penandatangan.
e) Tanda tangan itu juga sah untuk kopi dari dokumen yang sama persis. Meskipun ada banyak skenario, ada baiknya kita perhatikan salah satu skenario yang cukup umum dalam penggunaan tanda tangan digital. Tanda tangan digital memanfaatkan fungsi hash satu arah untuk menjamin bahwa tanda tangan itu hanya berlaku untuk dokumen yang bersangkutan saja. Bukan dokumen tersebut secara keseluruhan yang ditandatangani, namun biasanya yang ditandatangani adalah sidik jari dari dokumen itu beserta timestamp-nya dengan menggunakan kunci privat. Timestamp berguna untuk menentukan waktu pengesahan dokumen.

Keabsahan tanda tangan digital dapat diperiksa oleh penerima pesan. Pertama-tama penerima membuat kembali sidik jari pesan yang diterimanya. Lalu penerima mendekripsikan tanda tangan digital pengirim untuk mendapatkan sidik jari yang asli. Penerima kemudian membandingkan kedua sidik jari tersebut. Jika kedua sidik jari tersebut sama, maka dapat diyakini bahwa pesan tersebut ditanda tangani oleh pengirim pesan.
2.3. Sertifikat Digital
Pengiriman pesan dengan tanda tangan digital dapat dilakukan jika pengirim dan penerima pesan sudah saling mengenal dan mengetahui kunci untuk ekripsi dan dekripsi pesan. Jika pengirim dan penerima pesan belum saling mengenal atau tidak saling mengetahui kunci untuk enkripsi dan dekripsi, maka perlu adanya pihak ketiga. Setiap anggota jaringan diasumsikan telah memiliki saluran komunikasi pribadi yang aman dengan pihak ketiga. Saluran inilah yang dimanfaatkan untuk mengirim kunci publik penerima ke pengirim pesan (dan sebaliknya). Pihak ketiga ini menjadi penjamin keabsahan kunci jika pengirim dan penerima pesan sebelumnya tidak pernah bertukar kunci publik. Skenario ini tetap membutuhkan kunci-8 kunci kriptografi (baik itu simetris ataupun asimetris) untuk pengamanan saluran komunikasi antara pihak ketiga dengan pengirim atau penerima pesan. Masalah di atas dapat dipecahkan dengan penggunaan sertifikat digital. Jadi pihak ketiga sukup menanda tangani kunci publik milik setiap orang di jaringan tersebut. Sebenarnya dalam sertifikat tersebut tak hanya berisi kunci publik, namun dapat berisi pula informasi penting lainnya mengenai jati diri pemilik kunci publik, seperti misalnya nama, alamat, pekerjaan, jabatan, perusahaan dan bahkan hash dari suatu informasi rahasia. Semua orang mempercayai otoritas pihak ketiga dalam memberikan tanda tangan, sehingga orang-orang dalam jaringan itu merasa aman menggunakan kunci publik yang telah ditandatangani pihak ketiga.

Jika seseorang berhasil mencuri sertifikat digital yang dipertukarkan antara pengirim dan penerima pesan, serta menggantinya dengan sertifikat digital milik dirinya sendiri, maka pengirim dan penerima pesan dapat segera melihat bahwa sertifikat digital yang diterimanya bukan ‘lawan bicara’ yang semestinya. Serangan terhadap sistem yang memiliki pengamanan dengan sertifikat digital sulit dilakukan. Secara teoritis keunggulan dari tanda tangan digital adalah kemampuan untuk melakukan proses otentikasi secara off-line. Pemeriksa cukup memiliki kunci publik dari OS utama untuk mengetahui sah-tidaknya kunci publik dari lawan bicaranya. Selain itu untuk meningkatkan keamanan, kunci publik OS utama bisa saja diintegrasikan dalam program aplikasi. Namun kenyataannya, karena ada kemungkinan sertifikat digital tersebut hilang, tercuri atau identitas pemilik sertifikat berubah (perubahan alamat surat elektronik atau nomor KTP misalnya), maka sertifikat digital perlu diperiksa keabsahannya dengan melihat daftar sertifikat terbatalkan (certificate revocation list) yang disimpan oleh OS. 9
3. ALGORITMA FUNGSI HASH KRIPTOGRAFI
Beberapa algoritma fungsi hash kriptografi:

Penjelasan tentang Algoritma MD-5
Setiap pesan yang akan dienkripsi, terlebih dahulu dicari berapa banyak bit yang terdapat pada pesan. Kita anggap sebanyak b bit. Di sini b adalah bit non negatif integer, b bisa saja nol dan tidak harus selalu kelipatan delapan[10]. Pesan dengan panjang b bit dapat digambarkan seperti berikut : m_0 m_1 …..m_(b-1) Terdapat 5 langkah yang dibutuhkan untuk untuk menghitung intisari pesan. Adapun langkah–langkah tersebut dijelaskan pada subbab-subbab berikut :
- Menambahkan bit
- Penambahan Panjang Pesan
- Inisialisasi MD-5
- Proses Pesan di dalam Blok 16 Word
- Keluaran MD-5
Kesimpulan
Beberapa kesimpulan yang dapat diperoleh dari Artikel ini adalah:
- Message Digest 5 (MD5) adalah sebuah fungsi hash satu arah yang mengubah masukan dengan panjang variabel menjadi keluaran dengan panjang tetap yaitu 128 bit.
- Rerata kecepatan dari program aplikasi MD-5 adalah 7,1633 Mbytes/detik
- Aplikasi yang dibuat hanya efektif digunakan untuk ukuran file kurang dari 40 Mbytes.
- Sumber daya komputer berpengaruh terhadap kecepatan enkripsi.
Tidak ada komentar:
Posting Komentar