Bahasa Melayu

Alat pembangun · SHA kalkulator cincang

Kesan Avalanche: Mengapa Satu Aksara Berubah Menulis Semula SHA Hash

· Bagaimana ia berfungsi

sha-256 kriptografi keselamatan pengesahan

Dua SHA-256 dicerna ditunjukkan sedikit demi sedikit, dengan kira-kira separuh bit diterbalikkan di antara mereka, menggambarkan kesan longsoran daripada satu perubahan aksara
Ilustrasi vektor ToolAcre asal

Tukar satu huruf dan kira-kira separuh bit keluaran terbalik. Siaran ini menerangkan sifat runtuhan salji, sebab ia penting untuk pengesanan gangguan dan cara pusingan SHA-2 mencapainya.

Mengharapkan cincangan berubah sedikit — gerak hati yang dibawa kebanyakan orang dan sebab reka bentuk sengaja memecahkannya

Kebanyakan orang menjangkakan bahawa input yang serupa menghasilkan output yang serupa. Tukar satu aksara dalam fail dan ringkasan akan berubah sedikit. Sebaliknya, cincangan kriptografi direka untuk melakukan sebaliknya: perubahan bit tunggal dalam input seharusnya membalikkan kira-kira separuh bit output, tanpa diduga. Sifat ini dipanggil kesan runtuhan salji, dan ia adalah disengajakan. Reka bentuk ini mempunyai tujuan khusus: pengesanan gangguan.

Kesan runtuhan salji itulah sebabnya "hampir padan" bukanlah satu konsep dalam dunia pencincangan. Cincang sepadan dengan tepat atau tidak. Tidak ada "cukup dekat." Sifat ini menjadikan pencincangan berguna untuk semakan integriti dan pengalamatan kandungan, dan ia menjadikan algoritma pencincangan yang lemah tidak boleh digunakan untuk tujuan keselamatan.

Avalanche bermaksud penyebaran keluaran yang luas; artikel ini tidak membuat tuntutan kebarangkalian tepat tanpa sumber

Secara rasmi, kesan longsoran bermakna bahawa untuk dua input yang berbeza dengan bit tunggal, cernaan output sepatutnya berbeza dalam kira-kira 50% daripada bitnya. Untuk SHA-256 (256 bits output), menukar satu bit input hendaklah terbalik kira-kira 128 bit output. Kesannya tidak tepat; ia adalah harta statistik. Tetapi ia kukuh: dalam amalan, setiap bit input dicampur dengan teliti dengan setiap bit output.

Mengapa kira-kira separuh? Kerana output yang benar-benar rawak akan berbeza daripada output rawak yang lain dalam separuh bitnya secara purata (mengikut prinsip lubang merpati dan statistik asas). Fungsi cincang yang baik menghampiri rawak; ia menghasilkan output yang kelihatan tidak mempunyai corak yang boleh dilihat. Separuh bit terbalik secara purata adalah ciri rawak. Jika cincang sahaja membalikkan 10% daripada bit, penyerang boleh mencari corak dan mengeksploitasinya.

Mengapa pengesanan gangguan memerlukannya — suntingan kecil pada dokumen tidak boleh menghasilkan cincangan yang hampir sama yang akan diterima sepintas lalu

Pengesanan gangguan bergantung pada runtuhan salji. Jika anda memuat turun fail dan mengira SHA-256nya, ringkasan yang dijangkakan ialah ba7816... (sebagai contoh). Penyerang mengubah suai fail dengan menukar satu bait. Intisari baharu berubah daripada ba7816... kepada sesuatu seperti 3d4e92... (berbeza sepenuhnya). Apabila anda mengesahkan fail terhadap ringkasan yang dijangkakan, ketidakpadanan adalah serta-merta dan menyeluruh. Tiada ruang untuk salah tafsir: fail telah diusik.

Tanpa runtuhan salji, penyerang boleh menukar bait dan ringkasan mungkin beralih sedikit sahaja, kepada ba7817... (satu digit heks berbeza). Perbandingan biasa mungkin terlepas perbezaannya. Penyerang juga boleh mencari input yang menghasilkan ringkasan bermula dengan ba78, dengan mendakwa fail itu sahih. Avalanche menjadikan ini sangat mahal: untuk mencari walaupun dua input di mana pencernaan bermula dengan empat digit hex yang sama memerlukan lebih banyak kerja daripada reka bentuk yang dibenarkan.

Cara penyebaran pusingan berubah — putaran, penambahan dan fungsi bukan linear yang membawa pengaruh satu bit di seluruh negeri

Pusingan dalam SHA-256 (dan pusingan dalam SHA-512) direka untuk menyebarkan perubahan. Setiap pusingan mencampurkan data menggunakan fungsi bukan linear (pilih, majoriti) dan putaran. Perubahan satu-bit dalam input memasuki jadual mesej dan disebarkan melalui pusingan. Putaran mengalihkan kedudukan bit. Fungsi bukan linear menyembunyikan pengaruh bit: menukar bit kawalan dalam operasi pilih boleh membalik mana-mana bit output, bergantung pada data yang dipilih.

Pemalar cincang awal, pemalar jadual mesej, jumlah putaran dan bilangan pusingan semuanya dipilih untuk memaksimumkan kesan runtuhan salji. Nombor ini tidak sewenang-wenangnya; ia datang daripada spesifikasi SHA-2 dan telah dianalisis secara meluas. Sebarang perubahan pada pemalar atau kiraan bulat akan menghasilkan algoritma yang berbeza (mungkin algoritma yang lebih lemah).

Contoh yang berkesan — pencincangan dua input yang berbeza dengan satu aksara dan membandingkan ringkasan sedikit demi sedikit

Menguji runtuhan salji adalah mudah. Hash input abc dan catatkan ringkasan. Kemudian cincang abc diikuti dengan ruang, atau gantikan satu aksara dengan sesuatu yang lain: abd. Bandingkan output hex. Untuk SHA-256, kira-kira separuh daripada 64 digit heks akan berbeza. Kira mereka. Vektor ujian daripada siaran ToolAcre: abc menghasilkan ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad. Rentetan kosong menghasilkan e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855. Pencernaan tersebut tidak mempunyai digit heks yang sama.

Cuba ini pada kalkulator ToolAcre dengan sebarang input. Hash ayat. Kemudian tukar satu huruf dan cincang lagi. Kira digit heks yang berbeza. Anda akan mendapati bahawa kira-kira separuh (32 daripada 64, dalam kebanyakan kes) berbeza. Ini adalah kesan runtuhan salji dalam tindakan. Ia adalah sifat reka bentuk algoritma, bukan kebetulan.

Avalanche tidak menyediakan carian persamaan atau dengan sendirinya mengukur rintangan perlanggaran

Avalanche tidak mencipta carian persamaan atau padanan anggaran. Jika anda mempunyai digest ba7816... dan anda ingin mencari digest yang serupa, anda tidak mempunyai jalan pintas. Anda mesti meneka atau memaksa input calon, cincang setiap satu dan semak padanan tepat. Kesan runtuhan salji menjadikan setiap tekaan berkemungkinan sama menghasilkan output yang serupa atau berbeza sama sekali. Beberapa algoritma pencincangan (dipanggil pencincangan sensitif lokaliti) direka bentuk untuk mengekalkan persamaan; ia berguna untuk pengesanan hampir pendua dan pengelompokan, tetapi ia bukan cincang kriptografi.

Avalanche juga tidak melindungi daripada carian perlanggaran yang ditentukan. Seorang cryptanalyst masih boleh mencari dua input berbeza yang menghasilkan ringkasan yang sama, tetapi ruang carian sangat besar. Carian perlanggaran yang ditentukan ialah soalan yang berbeza daripada resapan visual. Artikel ini tidak memetik angka terikat hari lahir atau garis masa perkakasan kerana ia tidak memperolehnya di sini. Sempadan yang boleh dipertahankan ialah runtuhan salji sahaja tidak membuktikan mahupun mengukur rintangan perlanggaran.

Bawa pulang: tiada yang hampir-hampir — cuba percubaan satu aksara dalam kalkulator cincang ToolAcre SHA dan tonton keseluruhan perubahan ringkasan

Kalkulator cincang ToolAcre SHA menjalankan algoritma SHA melalui pelaksanaan Web Crypto pelayar. Anda boleh menggunakannya untuk mengesahkan runtuhan salji sendiri. Setiap bit ketepatan dalam algoritma dimasukkan ke dalam output, dan pelaksanaan Web Crypto diaudit dan diselenggara oleh vendor pelayar. Anda melihat algoritma sebenar dijalankan pada input sebenar. Sifat kontra-intuitif yang menukar satu aksara menulis semula keseluruhan ringkasan bukanlah satu kecacatan; ia adalah ciri yang menjadikan pencincangan berfungsi.

Apabila anda menggunakan cincang untuk semakan integriti, anda bergantung pada runtuhan salji. Apabila anda menggunakannya untuk menangani kandungan (seperti ringkasan imej bekas), anda bergantung pada sifat bahawa perubahan kecil menghasilkan ringkasan yang jauh berbeza. Apabila anda menggunakannya dalam tandatangan digital (di mana tandatangan dikira melalui cincangan mesej), kesan runtuhan salji memastikan pengubahan mesej menghasilkan perubahan yang boleh dikesan. Harta ini adalah asas keselamatan berasaskan cincang.