Alat pengembang · SHA kalkulator hash
Efek Longsor: Mengapa Seseorang Berubah Karakter Menulis Ulang Hash SHA
· Cara kerjanya
sha-256 kriptografi keamanan validasi
Ubah satu huruf dan kira-kira setengah bit keluaran dibalik. Postingan ini menjelaskan properti avalanche, mengapa properti ini penting untuk deteksi kerusakan, dan bagaimana putaran SHA-2 mencapainya.
Mengharapkan hash untuk berubah sedikit — intuisi yang dibawa kebanyakan orang dan mengapa desain tersebut sengaja merusaknya
Kebanyakan orang berharap bahwa masukan yang sama akan menghasilkan keluaran yang serupa. Ubah satu karakter dalam file dan intisarinya akan sedikit berubah. Sebaliknya, hash kriptografi dirancang untuk melakukan hal sebaliknya: perubahan satu bit pada masukan akan membalikkan sekitar setengah bit keluaran, secara tidak terduga. Properti ini disebut efek longsoran salju, dan ini disengaja. Desainnya memiliki tujuan tertentu: deteksi kerusakan.
Efek longsoran salju adalah alasan mengapa "hampir cocok" bukanlah sebuah konsep dalam dunia hashing. Sebuah hash sama persis, atau tidak. Tidak ada kata "cukup dekat". Properti ini membuat hashing berguna untuk pemeriksaan integritas dan pengalamatan konten, dan membuat algoritma hashing yang lemah tidak dapat digunakan untuk tujuan keamanan.
Longsoran berarti difusi keluaran yang luas; artikel ini tidak membuat klaim probabilitas pasti tanpa sumber daya
Secara formal, efek avalanche berarti bahwa untuk dua masukan yang berbeda satu bit, keluaran intisari harus berbeda sekitar 50% bitnya. Untuk SHA-256 (256 bits keluaran), mengubah satu bit masukan akan membalik kira-kira 128 bit keluaran. Efeknya tidak pasti; itu adalah properti statistik. Namun ia kuat: dalam praktiknya, setiap bit masukan tercampur secara menyeluruh dengan setiap bit keluaran.
Mengapa sekitar setengahnya? Karena keluaran yang benar-benar acak akan berbeda dari keluaran acak lainnya dalam rata-rata setengah bitnya (sesuai dengan prinsip merpati dan statistik dasar). Fungsi hash yang baik mendekati keacakan; ia menghasilkan keluaran yang tampaknya tidak memiliki pola yang jelas. Rata-rata separuh bit yang terbalik adalah ciri keacakan. Jika hash hanya membalik 10% bit, penyerang dapat menemukan pola dan mengeksploitasinya.
Mengapa deteksi kerusakan memerlukannya — pengeditan kecil pada dokumen tidak boleh menghasilkan hash yang hampir identik sehingga dapat diterima jika dilihat sekilas
Deteksi kerusakan bergantung pada longsoran salju. Jika Anda mengunduh file dan menghitung SHA-256-nya, intisari yang diharapkan adalah ba7816... (sebagai contoh). Penyerang memodifikasi file dengan mengubah satu byte. Intisari baru berubah dari ba7816... menjadi sesuatu seperti 3d4e92... (benar-benar berbeda). Saat Anda memverifikasi file terhadap intisari yang diharapkan, ketidakcocokan terjadi secara langsung dan total. Tidak ada ruang untuk salah tafsir: file telah dirusak.
Tanpa longsoran salju, penyerang dapat mengubah satu byte dan intisarinya mungkin hanya bergeser sedikit, ke ba7817... (berbeda satu digit hex). Perbandingan biasa mungkin akan menghilangkan perbedaannya. Seorang penyerang bahkan dapat mencari masukan yang menghasilkan intisari yang dimulai dengan ba78, mengklaim bahwa file tersebut asli. Longsoran salju menjadikan hal ini sangat mahal: untuk menemukan dua input yang intisarinya dimulai dengan empat digit hex yang sama memerlukan lebih banyak pekerjaan daripada yang dimungkinkan oleh desain.
Bagaimana putaran menyebar berubah — rotasi, penambahan, dan fungsi non-linier yang membawa pengaruh satu bit ke seluruh keadaan
Putaran di SHA-256 (dan putaran di SHA-512) dirancang untuk menyebarkan perubahan. Setiap putaran mencampur data menggunakan fungsi non-linier (pilih, mayoritas) dan rotasi. Perubahan satu bit pada masukan memasuki jadwal pesan dan menyebar melalui putaran. Rotasi menggeser posisi bit. Fungsi non-linier menyembunyikan pengaruh bit: mengubah bit kontrol dalam operasi pemilihan dapat membalik bit keluaran mana pun, bergantung pada data yang dipilih.
Konstanta hash awal, konstanta jadwal pesan, jumlah rotasi, dan jumlah putaran semuanya dipilih untuk memaksimalkan efek longsoran salju. Angka-angka ini tidak sembarangan; mereka berasal dari spesifikasi SHA-2 dan telah dikriptanalisis secara ekstensif. Setiap perubahan pada konstanta atau penghitungan putaran akan menghasilkan algoritma yang berbeda (kemungkinan algoritma yang lebih lemah).
Contoh praktis - melakukan hashing pada dua input yang berbeda satu karakter dan membandingkan intisarinya sedikit demi sedikit
Menguji longsoran salju sangatlah mudah. Hash input abc dan catat intisarinya. Kemudian hash abc diikuti spasi, atau ganti satu karakter dengan yang lain: abd. Bandingkan keluaran hex. Untuk SHA-256, kira-kira setengah dari 64 digit hex akan berbeda. Hitung mereka. Vektor uji dari postingan ToolAcre: abc menghasilkan ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad. String kosong menghasilkan e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855. Intisari tersebut tidak memiliki kesamaan angka hex.
Coba ini di kalkulator ToolAcre dengan masukan apa pun. Hash sebuah kalimat. Kemudian ubah satu huruf dan hash lagi. Hitung digit hex yang berbeda. Anda akan menemukan bahwa sekitar setengahnya (32 dari 64, dalam banyak kasus) berbeda. Inilah efek longsoran salju yang sedang beraksi. Ini adalah properti desain algoritme, bukan suatu kebetulan.
Longsoran tidak menyediakan pencarian kesamaan atau dengan sendirinya mengukur resistensi tabrakan
Longsoran salju tidak membuat pencarian kesamaan atau perkiraan pencocokan. Jika Anda memiliki intisari ba7816... dan Anda ingin menemukan intisari serupa, Anda tidak memiliki jalan pintas. Anda harus menebak atau memaksa input kandidat, melakukan hashing pada masing-masing input, dan memeriksa kecocokan persisnya. Efek longsoran salju membuat setiap tebakan memiliki kemungkinan yang sama untuk menghasilkan keluaran yang serupa atau sama sekali berbeda. Beberapa algoritma hashing (disebut hashing sensitif terhadap lokalitas) dirancang untuk menjaga kesamaan; mereka berguna untuk deteksi dan pengelompokan hampir duplikat, tetapi mereka bukan hash kriptografi.
Longsoran salju juga tidak melindungi terhadap pencarian tabrakan yang pasti. Seorang kriptanalis masih dapat mencari dua masukan berbeda yang menghasilkan intisari yang sama, namun ruang pencariannya sangat besar. Pencarian tabrakan yang ditentukan adalah pertanyaan yang berbeda dari difusi visual. Artikel ini tidak mengutip angka tanggal ulang tahun atau garis waktu perangkat keras karena belum diturunkan di sini. Batasan yang dapat dipertahankan adalah bahwa longsoran salju saja tidak membuktikan atau mengukur resistensi tabrakan.
Kesimpulan: jangan sampai terjadi kesalahan — cobalah eksperimen satu karakter di kalkulator hash ToolAcre SHA dan lihat keseluruhan intisarinya berubah
Kalkulator hash ToolAcre SHA menjalankan algoritma SHA melalui implementasi Web Crypto browser. Anda dapat menggunakannya untuk memverifikasi longsoran salju sendiri. Setiap presisi dalam algoritma dimasukkan ke dalam output, dan implementasi Web Crypto diaudit dan dikelola oleh vendor browser. Anda melihat algoritma sebenarnya dijalankan pada input nyata. Properti kontra-intuitif bahwa satu perubahan karakter menulis ulang seluruh intisari bukanlah suatu cacat; itu adalah fitur yang membuat hashing berfungsi.
Saat Anda menggunakan hash untuk pemeriksaan integritas, Anda mengandalkan longsoran salju. Saat Anda menggunakannya untuk pengalamatan konten (seperti ringkasan gambar kontainer), Anda bergantung pada properti bahwa perubahan kecil menghasilkan ringkasan yang sangat berbeda. Saat Anda menggunakannya dalam tanda tangan digital (di mana tanda tangan dihitung berdasarkan hash pesan), efek longsoran memastikan bahwa gangguan pada pesan menghasilkan perubahan yang dapat dideteksi. Properti ini adalah fondasi keamanan berbasis hash.