Back to IF4020 Kriptografi

Fungsi Hash dan Sifat-sifatnya

Questions/Cues

  • Apa itu fungsi hash dan apa yang dimaksud message digest?
  • Mengapa fungsi hash disebut satu-arah dan mengapa ia bukan fungsi enkripsi?
  • Apa tiga sifat keamanan fungsi hash (collision, preimage, second preimage)?
  • Apa itu kolisi dan mengapa ia berbahaya?
  • Algoritma hash mana yang masih aman dan mana yang sudah rusak?

Reference Points

  • IF4020 Kriptografi — Fungsi Hash (Slides 3-9, 24-25)

Definisi

Fungsi hash mengkompresi pesan berukuran sembarang menjadi string berukuran tetap:

disebut nilai hash, pesan ringkas (message digest), atau digest. Contoh: berukuran 1 MB hanya 256 bit. Sebuah password pendek, sebuah paragraf Lorem ipsum, maupun sebuah citra Peppers512.bmp semuanya menghasilkan digest 256 bit dengan SHA-256, tetapi isinya berbeda sama sekali.

Fungsi Hash Satu-Arah

Fungsi hash satu-arah (one-way function) bekerja dalam satu arah: pesan yang sudah diubah menjadi digest tidak dapat dikembalikan menjadi pesan semula (irreversible).

Mengapa fungsi hash bukan enkripsi, meski digest tampak acak:

  1. Nilai hash tidak dapat ditransformasi balik menjadi pesan semula (enkripsi harus bisa didekripsi).
  2. Proses hashing tidak memerlukan kunci (enkripsi selalu memakai kunci; lihat Definisi dan Layanan Kriptografi).

Tiga Sifat Keamanan

SifatArtiSerangan yang dicegah
Collision resistancesangat sukar menemukan dua input dengan membuat dua dokumen berbeda dengan digest sama
Preimage resistanceuntuk output sembarang, sukar menemukan dengan membalik hash (mis. dari digest ke password)
Second preimage resistancediberi dan , sukar menemukan dengan mengganti dokumen yang sudah ada dengan dokumen lain berdigest sama

Collision resistance adalah sifat paling kuat (paling sulit dipenuhi): kalau tumbukan mudah ditemukan, maka second preimage terancam.

flowchart LR
    M1["Pesan sembarang<br/>(1 MB, 1 KB, 1 byte)"] --> H["H"]
    H --> D["Digest tetap<br/>(mis. 256 bit)"]
    D -.->|"preimage resistance:<br/>sulit dibalik"| M1

Kolisi

Kolisi (collision) adalah kejadian dua string sembarang memiliki nilai hash yang sama. Karena ruang input tak terhingga dan ruang digest terbatas ( untuk SHA-256), kolisi pasti ada (prinsip pigeonhole); yang penting adalah apakah menemukannya layak secara komputasi. Bila kolisi dapat direkayasa, fungsi hash tidak aman secara kriptografis, sebab penyerang dapat membuat dua pesan berbeda dengan digest sama.

Contoh Digest dan Daftar Fungsi Hash Satu-Arah

Slide memperlihatkan tiga masukan yang sangat berbeda (kata sandi MyPassword, paragraf Lorem ipsum, dan citra Peppers512.bmp) yang semuanya menghasilkan digest 256 bit (64 digit hex). Pada hash generator daring, masukan Banyak musibah di negeriku (26 byte) menghasilkan MD5 (128 bit), SHA-1 (160 bit), SHA-256 (256 bit), SHA-384, dan SHA-512 sekaligus; SHA-1-nya adalah 3f7d679ffac3676c4291677bdf18322b704623fa.

Daftar fungsi hash satu-arah yang disebut di slide beserta panjang digest:

AlgoritmaDigest (bit)
MD2 / MD4 / MD5128
RIPEMD128
RIPEMD-128/256128 / 256
RIPEMD-160/320160 / 320
SHA-1160
SHA-256 / SHA-224 (SHA-2)256 / 224
SHA-512 / SHA-384 (SHA-2)512 / 384
SHA-3 (Keccak)sembarang
WHIRLPOOL512
Snefru128 atau 256
BLAKE 256/512256 / 512 (slide menulis “156/512”, kemungkinan salah ketik)
Grøstlmaksimum 512

Status Beberapa Fungsi Hash

AlgoritmaDigest (bit)Blok pesan (bit)Kolisi
MD2128128Ya
MD4128512Hampir
MD5128512Ya
RIPEMD128512Ya
RIPEMD-128/256128/256512Tidak
RIPEMD-160/320160/320512Tidak
SHA-0160512Ya
SHA-1160512Ada cacat
SHA-256/224256/224512Tidak
SHA-512/384512/3841024Tidak
WHIRLPOOL512512Tidak

Kolom “Kolisi” menyatakan apakah kolisi sudah berhasil ditemukan. Detail SHA di SHA-1 dan Konstruksi Merkle-Damgard, SHA-2 - SHA-256 dan SHA-512, dan SHA-3 Keccak dan Konstruksi Spons.

Summary

Fungsi hash mengkompresi pesan sembarang menjadi digest berukuran tetap (), dan bersifat satu-arah: tidak dapat dibalik dan tidak memakai kunci, sehingga bukan enkripsi. Tiga sifat keamanannya: collision resistance (sukar menemukan dengan ), preimage resistance (sukar menemukan input untuk suatu digest), dan second preimage resistance (sukar menemukan input kedua yang berdigest sama dengan input tertentu). Kolisi adalah dua input berbeda berdigest sama; bila dapat direkayasa, hash tidak aman. MD2, MD5, SHA-0 sudah ditemukan kolisinya, SHA-1 cacat, sedangkan SHA-256/512 dan WHIRLPOOL belum.