it-swarm-id.com

Apa perbedaan antara Fungsi Hash dan Fungsi Hash Kriptografis?

Maksud saya, apakah ini hanya masalah "seberapa sulitkah untuk membalik fungsi dengan teknologi saat ini"?

Atau adakah konsep matematika atau properti yang membuat mereka berbeda?

Jika itu adalah masalah "seberapa sulitkah untuk membalikkan fungsi", maka apakah benar untuk mengatakan bahwa dengan kemajuan teknologi, beberapa Fungsi Hash Kriptografi berhenti menjadi Kriptografi hanya menjadi Fungsi Hash? Apakah ini yang terjadi pada MD5?

56
Mr.Eddart

Setiap fungsi hash kriptografis adalah fungsi hash. Tetapi tidak setiap fungsi hash adalah hash kriptografi.

Fungsi hash kriptografis bertujuan untuk menjamin sejumlah properti keamanan. Yang paling penting adalah sulit untuk menemukan tabrakan atau pra-gambar dan hasilnya tampak acak. (Ada beberapa properti lagi, dan "hard" memiliki batas yang didefinisikan dengan baik dalam konteks ini, tapi itu tidak penting di sini.)

Fungsi hash non kriptografis hanya mencoba menghindari tabrakan untuk input yang tidak berbahaya. Beberapa bertujuan untuk mendeteksi perubahan data yang tidak disengaja (CRC), yang lain mencoba memasukkan objek ke dalam ember yang berbeda di tabel hash dengan sesedikit mungkin tabrakan.

Sebagai gantinya jaminan yang lebih lemah mereka biasanya (jauh) lebih cepat.

Saya masih menyebut MD5 sebagai fungsi hash kriptografis, karena ditujukan untuk memberikan keamanan. Tapi itu rusak, dan dengan demikian tidak lagi dapat digunakan sebagai hash kriptografi. Di sisi lain ketika Anda memiliki fungsi hash non kriptografis, Anda tidak dapat benar-benar menyebutnya "rusak", karena tidak pernah mencoba untuk mengamankan pada awalnya.

62
CodesInChaos

Ada beberapa properti yang sangat membutuhkan fungsi hash kriptografis yang sangat dibutuhkan, yang tidak begitu kuat diperlukan untuk fungsi hash yang aman secara kriptografis:

  • resistensi preimage (diberi hash h pasti sulit untuk menemukan pesan m yang menghasilkan h saat hash
  • resistensi tabrakan yang lemah (diberi pesan m1 pasti sulit untuk menemukan pesan yang berbeda m2 maka m1 dan m2 menghasilkan hash yang sama)
  • resistensi tabrakan yang kuat (seharusnya sulit untuk menemukan pesan m1 dan m2 yang menghasilkan hash yang sama)

Dalam poin-poin itu, Anda melihat banyak sulit, yang merupakan ukuran kualitatif alih-alih kuantitatif. Jawaban terbaik di sini adalah kelayakan: ada garis fuzzy ketika sesuatu menjadi layak dan garis-garis itu bergerak seiring waktu (karena kemampuan komputasi tumbuh secara eksponensial sesuai dengan Hukum Moore, sekali masalah sulit sekarang dapat diselesaikan oleh ponsel Anda).

Secara umum, praktik yang baik untuk mengasumsikan bahwa sulit berarti waktu untuk mencapai beberapa tujuan adalah NP-complete. Ini berarti waktu yang dibutuhkan untuk memecahkan hash tumbuh kuat saat Anda menambah panjang hash.

Poin lain adalah, bahwa algoritma hashing yang aman secara kriptografis dapat berguna dalam beberapa aplikasi, tetapi tidak pada yang lain. Itu tergantung pada model penyerang Anda, sifat informasi yang ingin Anda lindungi dan hal-hal seperti persyaratan kinerja (sebagai aturan umum, semakin baik sifat kriptografi hash, semakin buruk perilaku runtime).

21
jupp0r

Saya akan mengatakan bahwa dua hal utama yang perlu dipahami di sini adalah:

  1. Istilah "fungsi hash" tidak jelas — atau lebih tepatnya, polysemous: ia memiliki "keluarga" makna yang terkait erat tetapi berbeda. Jika seseorang memberi label fungsi sebagai "fungsi hash," label itu tidak memberi tahu Anda properti apa yang harus dimiliki fungsi tersebut. Anda harus memeriksa konteks di mana istilah tersebut digunakan dan persyaratan dari konteks itu.
  2. Istilah "fungsi hash kriptografis" sedikit keliru - kelihatannya seperti deskripsi, tetapi memiliki definisi teknis yang terlibat yang sebenarnya tidak dijelaskan oleh istilah itu sendiri. Sederhananya, ada fungsi seperti kode otentikasi pesan (MAC) yang sering dilabeli sebagai fungsi hash dan menawarkan beberapa bentuk keamanan kriptografi, tetapi bukan "fungsi hash kriptografi" di konvensional definisi.

Istilah "fungsi hash kriptografis" secara konvensional digunakan untuk merujuk pada apa yang mungkin lebih baik diberi label sebagai fungsi hash yang tahan benturan , yaitu publik fungsi ("publik" = tidak memerlukan kunci rahasia) yang harus memiliki tiga properti ini:

  • Resistan preimage kedua: Untuk nilai acak m1 Dipilih oleh pihak yang jujur, sangat mahal bagi penyerang untuk menemukan nilai apa pun m2 ≠ m1 Sedemikian rupa sehingga hash(m1) = hash(m2).
  • Resistensi preimage: Untuk nilai acak h dipilih oleh pihak yang jujur, sangat mahal bagi penyerang untuk menemukan nilai apa pun m sedemikian rupa sehingga hash(m) = h.
  • Resistensi tabrakan: Sangat mahal bagi penyerang untuk menemukan pasangan nilai m1 ≠ m2 Sedemikian rupa sehingga hash(m1) = hash(m2).

Ada properti keempat yang gagal fungsi kriptografi yang lebih tua gagal sepele tapi yang lebih baru seperti SHA-3 dan Blake2 dirancang untuk dicapai:

  • Ketidakacuhan Oracle acak: Yang satu ini tidak mungkin dijelaskan secara singkat, tapi mari kita bodohkan hal ini: sangat mahal bagi penyerang untuk menemukan non -korelasi kebetulan antara output input pilihan mereka.

Properti Oracle acak (ketika diformulasikan dengan benar) menyiratkan tiga properti sebelumnya, serta yang tambahan seperti tidak adanya efisien serangan ekstensi panjang . (Ekstensi panjang adalah alasan paling jelas mengapa fungsi hash yang lebih lama seperti SHA-256 dan SHA-512 gagal properti Oracle acak.)

3
Luis Casillas