Alat pengembang · SHA kalkulator hash
Tabrakan, Preimage, dan Preimage Kedua: Tiga Sasaran Keamanan Hash
· Latar belakang
sha-256 kriptografi keamanan
Sebuah nasihat mengatakan suatu algoritma memiliki masalah tabrakan dan Anda perlu tahu apakah penggunaan Anda terpengaruh. Posting ini mendefinisikan tiga properti resistensi, menunjukkan kasus penggunaan mana yang bergantung pada properti mana, dan menerapkannya ke SHA-1.
Apakah penggunaan saya terpengaruh? — pertanyaan yang jarang dijawab secara langsung oleh penasihat
Sebuah nasihat datang mengatakan SHA-1 mengalami masalah tabrakan, jadi sistem Anda harus ditingkatkan. Namun bagaimana jika sistem Anda menggunakan SHA-1 hanya untuk mendapatkan kunci, bukan untuk mengautentikasi pesan? Bagaimana jika SHA-1 hanya digunakan untuk menghapus duplikat file yang identik, bukan untuk membuktikan keaslian? Pertanyaannya "apakah sistem saya terpengaruh?" tidak dapat dijawab tanpa memahami properti fungsi hash apa yang sebenarnya rusak dan properti apa yang bergantung pada kasus penggunaan Anda.
Fungsi hash menyediakan beberapa properti keamanan: resistensi preimage, resistensi preimage kedua, dan resistensi tabrakan. Pembobolan satu properti tidak merusak properti lainnya, dan beberapa kasus penggunaan hanya bergantung pada properti yang tetap aman. Kalkulator hash ToolAcre SHA menampilkan algoritme dan lebar intisarinya, properti yang menentukan batasan untuk setiap sasaran keamanan. Memahami properti ini adalah langkah pertama dalam memutuskan apakah suatu saran memengaruhi sistem Anda.
Resistensi preimage - jika diberi hash, Anda tidak dapat menemukan input yang menghasilkannya
Resistensi preimage berarti bahwa dengan adanya suatu intisari, maka tidak mungkin menemukan masukan yang menghasilkan intisari tersebut. Anda menerima hash kata sandi dan ingin menebak kata sandinya; ini adalah serangan preimage. Resistensi preimage kedua berarti bahwa dengan adanya pesan dan hashnya, tidak mungkin menemukan pesan berbeda dengan hash yang sama. Anda memiliki file yang diunduh dan checksum SHA-256-nya; penyerang ingin menukar file dengan file lain yang memiliki hash yang sama; ini adalah serangan preimage kedua.
Resistensi tabrakan berarti tidak mungkin menemukan dua pesan berbeda dengan hash yang sama. Anda menandatangani dokumen; seorang penyerang ingin membuat dokumen berbeda dengan tanda tangan yang sama; ini adalah serangan tabrakan. Ketiga skenario ini memerlukan jumlah pekerjaan yang berbeda dari penyerang, dan batasan keamanannya pun berbeda. Resistensi pra-gambar adalah properti yang paling kuat, dan jarang ada properti yang dapat ditembus. Mengingat intisari, menemukan gambar awal memerlukan pencarian brute force melalui ruang masukan yang mungkin. Lebar intisari memengaruhi ruang pencarian umum, namun artikel ini tidak menyatakan jumlah operasi tanpa menurunkannya dan menentukan model serangan.
Resistensi preimage kedua - jika diberi masukan, Anda tidak dapat menemukan masukan berbeda dengan hash yang sama
Resistensi preimage kedua adalah yang terkuat berikutnya, dan juga jarang ditembus secara terpisah. Mengingat pesan dan hashnya, menemukan pesan berbeda dengan hash yang sama juga memerlukan pekerjaan eksponensial dalam ukuran intisari. Pencarian preimage dan tabrakan kedua memberi penyerang pilihan yang berbeda, sehingga batas generiknya tidak dapat dipertukarkan. Perbedaan kualitatif sudah cukup di sini; tidak ada batasan numerik yang ditegaskan tanpa derivasi sebaris. Suatu algoritma kehilangan resistensi preimage kedua jika ada serangan struktural yang tidak memerlukan brute force.
Ketahanan benturan adalah yang paling lemah dari ketiga sifat tersebut, dan merupakan salah satu yang paling sering patah atau bengkok. Pencarian tabrakan memungkinkan penyerang memilih kedua masukan, tidak seperti dua sasaran lainnya, sehingga memiliki batasan umum yang berbeda. Artikel ini sengaja menghilangkan angka-angka tanggal ulang tahun dan jadwal perangkat keras karena perolehan dan sumbernya berada di luar materi yang diverifikasi.
Resistensi tabrakan — Anda tidak dapat menemukan dua input dengan hash yang sama, dan mengapa ini adalah yang terlemah dari ketiganya
Memetakan tiga properti keamanan untuk menggunakan kasus menunjukkan properti mana yang diperlukan untuk setiap tugas. Deduplikasi bergantung pada asumsi bahwa jika dua file memiliki hash yang sama, maka keduanya adalah file yang sama. Hal ini memerlukan ketahanan terhadap tabrakan: jika tabrakan mungkin terjadi, penyerang dapat membuat dua file berbeda dengan hash yang sama dan mematahkan invarian deduplikasi. Namun, ini merupakan persyaratan yang lemah, karena tabrakan praktis sangat jarang terjadi meskipun secara teoritis mungkin terjadi.
Tanda tangan digital memerlukan ketahanan benturan dalam bentuk yang kuat. Ketika penandatangan membuat tanda tangan untuk hash dokumen, dan verifikasi kemudian memeriksa tanda tangan tersebut, keduanya harus memeriksa hash yang sama. Jika tabrakan mudah terjadi, penyerang dapat memalsukan tanda tangan untuk dokumen lain dengan menemukan tabrakan dengan dokumen yang ditandatangani. Ini adalah serangan yang memotivasi peningkatan sertifikat dari SHA-1 menjadi SHA-256. Sertifikat yang ditandatangani oleh CA dan sertifikat palsu dengan tanda tangan yang sama keduanya lolos verifikasi jika hash mengalami benturan.
Resistensi tabrakan berbeda dari target pra-gambar; tidak ada angka terikat ulang tahun yang muncul tanpa derivasi
Penyimpanan beralamat konten menggunakan hash sebagai kunci pencarian. Jika file disimpan di lokasi yang ditentukan oleh hashnya, dan kemudian diambil menggunakan hash yang sama, kedua operasi tersebut harus mencapai file yang sama. Hal ini memerlukan ketahanan benturan jika terdapat penyerang aktif, namun hanya memerlukan ketahanan gambar kedua jika penyerang pasif. Penyerang pasif tidak bisa menciptakan tabrakan; mereka hanya dapat mengamati apakah file yang sah bertabrakan secara kebetulan.
Verifikasi unduhan menggunakan checksum untuk mengonfirmasi bahwa file yang diambil dari internet tidak rusak. Checksum biasanya diterbitkan bersama file dari sumber terpercaya. Penyerang yang memodifikasi file yang diunduh tidak dapat memperbarui checksum tanpa akses ke sumber terpercaya. Kasus penggunaan ini memerlukan resistensi preimage kedua: mengingat file asli dan checksumnya, penyerang tidak akan dapat menghasilkan file berbeda dengan checksum yang sama. SHA-1 resistensi preimage kedua masih kokoh meskipun terjadi benturan.
Integritas peta dan penggunaan penamaan pada properti yang diperlukan; hash biasa bukanlah penyimpanan kata sandi
Penyimpanan kata sandi adalah satu-satunya kasus penggunaan di mana fungsi hash bukanlah alat yang tepat. Jika kata sandi disimpan sebagai hash SHA-256, dan database hash bocor, penyerang dapat menjalankan serangan kamus: melakukan hash terhadap jutaan tebakan dan memeriksa apakah ada yang cocok dengan hash yang disimpan. Penyerang hanya memerlukan satu gambar awal untuk setiap kata sandi, dan fungsi cepat memberi penyerang putaran perbandingan offline yang efisien tanpa batas kecepatan aplikasi.
Kata sandi memerlukan fungsi yang sengaja dibuat lambat, padat memori, dan diasinkan per pengguna seperti Argon2id, scrypt, atau bcrypt. Garam unik per pengguna membuat kata sandi yang identik menghasilkan catatan tersimpan yang berbeda, sedangkan memori dan waktu yang dikonfigurasi dari fungsi kata sandi membuat masing-masing kandidat sengaja dibuat lebih mahal. Parameter yang tepat memerlukan pembandingan lokal dan tidak ditentukan di sini. Kalkulator hash ToolAcre SHA tidak melakukan hashing kata sandi, dan dokumentasi panduan menjelaskan mengapa SHA-256 tidak cocok untuk kasus penggunaan ini.
Contoh praktis — menerapkan pemetaan ke SHA-1 di repositori Git versus SHA-1 di sertifikat
Contoh praktis: SHA-1 di repositori Git. Setiap komitmen Git memiliki hash SHA-1 sebagai ID objeknya. Jika resistensi tabrakan SHA-1 rusak, apakah repositori Git rentan? Jawabannya adalah: mungkin. Penyerang dapat membuat komit dengan SHA-1 yang sama dengan komit yang sudah ada dan mengirimkannya ke server repositori, yang kemudian dapat menyajikan komit berbeda ke klien berbeda. Namun, hal ini memerlukan pemilihan target tertentu dan menghitung tabrakan, yang mahal bahkan dengan SHA-1 yang rusak.
Anggota proyek Git telah menerbitkan peta jalan untuk bermigrasi ke SHA-256, tetapi urgensinya tidak terlalu mendesak karena serangan praktis memerlukan teknik tabrakan dan kompromi server. Untuk pengembang yang bertanya "apakah keamanan repositori Git saya bergantung pada SHA-1 ketahanan terhadap tabrakan?" jawabannya adalah ya, namun risiko praktisnya rendah dibandingkan ancaman keamanan lainnya. Kalkulator hash ToolAcre SHA menyediakan SHA-1 dan SHA-256, diberi label dengan tepat, sehingga pengembang dapat menghitung keduanya dan memahami perbedaannya.
Kesimpulan: beri nama properti sebelum Anda panik — kalkulator hash ToolAcre SHA memungkinkan Anda melihat panjang intisari yang menetapkan batasan setiap algoritme
Untuk sistem apa pun yang menggunakan SHA-1, keputusan untuk memutakhirkan bergantung pada apakah kasus penggunaan memerlukan properti spesifik yang rusak. Jika kasus penggunaannya adalah tanda tangan digital atau deduplikasi terhadap penyerang aktif, diperlukan ketahanan terhadap tabrakan, dan SHA-1 rusak, jadi segera tingkatkan ke SHA-256. Jika kasus penggunaannya adalah penyimpanan atau checksum yang ditujukan pada konten, resistensi preimage kedua diperlukan, dan SHA-1 masih aman untuk tujuan tersebut, meskipun SHA-256 lebih disukai untuk pembuktian di masa mendatang.
Jika kasus penggunaannya adalah derivasi kunci atau verifikasi kata sandi, resistensi preimage diperlukan, dan tidak ada alat apa pun dalam toolkit ini yang boleh digunakan sama sekali karena fungsi yang lebih cepat lebih baik untuk derivasi kunci. Kalkulator hash ToolAcre SHA memungkinkan pengembang menghitung intisari dan melihat properti beraksi. Memahami ketiga properti ini dan mencocokkannya dengan kasus penggunaan adalah dasar dalam membuat pilihan kriptografi yang aman dalam sistem nyata.