Alat pembangun · SHA kalkulator cincang
Perlanggaran, Praimej dan Praimej Kedua: Tiga Matlamat Keselamatan Hash
· Latar belakang
sha-256 kriptografi keselamatan
Nasihat mengatakan algoritma mempunyai masalah perlanggaran dan anda perlu tahu sama ada penggunaan anda terjejas. Siaran ini mentakrifkan tiga sifat rintangan, menunjukkan kes penggunaan yang bergantung pada yang mana, dan menggunakannya pada SHA-1.
Adakah penggunaan saya terjejas? — soalan yang jarang dijawab oleh penasihat secara langsung
Nasihat tiba mengatakan SHA-1 mengalami masalah perlanggaran, jadi sistem anda mesti menaik taraf. Tetapi bagaimana jika sistem anda menggunakan SHA-1 sahaja untuk terbitan kunci, bukan untuk mengesahkan mesej? Bagaimana jika SHA-1 sahaja digunakan untuk menyahduplikasi fail yang sama, bukan untuk membuktikan ketulenan? Soalan "adakah sistem saya terjejas?" tidak boleh dijawab tanpa memahami sifat fungsi hash yang sebenarnya rosak dan sifat yang bergantung pada kes penggunaan anda.
Fungsi cincang menyediakan berbilang sifat keselamatan: rintangan praimej, rintangan praimej kedua dan rintangan perlanggaran. Pecah dalam satu harta tidak memecahkan yang lain, dan sesetengah kes penggunaan sahaja bergantung pada harta benda yang kekal selamat. Kalkulator cincang ToolAcre SHA memaparkan algoritma dan lebar cernaannya, sifat yang menentukan had bagi setiap matlamat keselamatan. Memahami sifat ini ialah langkah pertama dalam memutuskan sama ada nasihat mempengaruhi sistem anda.
Rintangan praimej — diberi cincangan, anda tidak dapat mencari input yang menghasilkannya
Rintangan praimej bermaksud bahawa diberi penghadaman, ia sepatutnya sukar untuk mencari input yang menghasilkan pencernaan itu. Anda menerima cincang kata laluan dan ingin meneka kata laluan; ini adalah serangan praimej. Rintangan praimej kedua bermakna bahawa diberikan mesej dan cincangnya, adalah mustahil untuk mencari mesej yang berbeza dengan cincang yang sama. Anda mempunyai fail yang dimuat turun dan jumlah semak SHA-256nya; penyerang ingin menukar fail dengan fail lain yang mempunyai cincangan yang sama; ini adalah serangan praimej kedua.
Rintangan perlanggaran bermakna tidak mungkin untuk mencari mana-mana dua mesej berbeza dengan cincang yang sama. Anda sedang menandatangani dokumen; penyerang mahu mencipta dokumen berbeza dengan tandatangan yang sama; ini adalah serangan perlanggaran. Ketiga-tiga senario ini memerlukan jumlah kerja yang berbeza daripada penyerang, dan had keselamatan berbeza. Rintangan praimej ialah sifat terkuat, dan jarang sekali yang rosak. Memandangkan ringkasan, mencari praimej memerlukan carian kekerasan melalui ruang input yang mungkin. Lebar ringkasan mempengaruhi ruang carian generik, tetapi artikel ini tidak menyatakan kiraan operasi tanpa memperolehnya dan mentakrifkan model serangan.
Rintangan praimej kedua — diberi input, anda tidak boleh mencari input berbeza dengan cincang yang sama
Rintangan praimej kedua adalah yang paling kuat seterusnya, dan ia juga jarang dipecahkan secara berasingan. Memandangkan mesej dan cincangnya, mencari mesej berbeza dengan cincang yang sama juga memerlukan kerja eksponen dalam saiz ringkasan. Carian praimej kedua dan perlanggaran memberikan penyerang pilihan yang berbeza, jadi sempadan generik mereka tidak boleh ditukar ganti. Perbezaan kualitatif adalah memadai di sini; tiada terikat berangka ditegaskan tanpa terbitan sebaris. Algoritma kehilangan rintangan praimej kedua jika terdapat serangan struktur yang tidak memerlukan kekerasan.
Rintangan perlanggaran adalah yang paling lemah daripada tiga sifat, dan ia adalah yang paling kerap patah atau bengkok. Carian perlanggaran membolehkan penyerang memilih kedua-dua input, tidak seperti dua matlamat lain, jadi ia mempunyai sempadan generik yang berbeza. Artikel ini sengaja meninggalkan angka terikat hari lahir dan garis masa perkakasan kerana memperoleh dan mendapatkannya adalah di luar bahan yang disahkan.
Rintangan perlanggaran — anda tidak boleh menemui mana-mana dua input dengan cincang yang sama, dan mengapa ini adalah yang paling lemah daripada tiga
Pemetaan tiga sifat keselamatan untuk menggunakan kes menunjukkan sifat yang diperlukan untuk setiap tugas. Deduplikasi bergantung pada andaian bahawa jika dua fail mempunyai cincangan yang sama, ia adalah fail yang sama. Ini memerlukan rintangan perlanggaran: jika perlanggaran boleh berlaku, penyerang boleh mencipta dua fail berbeza dengan cincang yang sama dan memecahkan invarian penyahduplikasian. Walau bagaimanapun, ini adalah keperluan yang lemah, kerana perlanggaran praktikal sangat jarang berlaku walaupun secara teorinya mungkin.
Tandatangan digital memerlukan rintangan perlanggaran dalam bentuk yang kuat. Apabila penandatangan menghasilkan tandatangan untuk cincang dokumen, dan pengesah kemudiannya menyemak tandatangan itu, kedua-duanya mesti menyemak cincang yang sama. Jika perlanggaran adalah mudah, penyerang boleh memalsukan tandatangan untuk dokumen lain dengan mencari perlanggaran dengan dokumen yang ditandatangani. Ini ialah serangan yang mendorong peningkatan daripada SHA-1 kepada SHA-256 dalam sijil. Sijil yang ditandatangani oleh CA dan sijil palsu dengan tandatangan yang sama kedua-duanya lulus pengesahan jika cincang mengalami perlanggaran.
Rintangan perlanggaran berbeza daripada matlamat praimej; tiada angka terikat hari lahir muncul tanpa terbitan
Storan beralamat kandungan menggunakan cincang sebagai kunci carian. Jika fail disimpan di lokasi yang ditentukan oleh cincangnya, dan kemudian diambil menggunakan cincang yang sama, kedua-dua operasi mesti mencapai fail yang sama. Ini memerlukan rintangan perlanggaran jika terdapat penyerang aktif, tetapi ia sahaja memerlukan rintangan praimej kedua jika penyerang pasif. Penyerang pasif tidak boleh mencipta perlanggaran; mereka sahaja boleh memerhati sama ada fail yang sah bertembung secara kebetulan.
Pengesahan muat turun menggunakan jumlah semak untuk mengesahkan bahawa fail yang diambil daripada Internet tidak rosak. Checksum biasanya diterbitkan bersama fail daripada sumber yang dipercayai. Penyerang yang mengubah suai fail yang dimuat turun tidak boleh mengemas kini checksum tanpa akses kepada sumber yang dipercayai. Kes penggunaan ini memerlukan rintangan praimej kedua: memandangkan fail asal dan jumlah semaknya, penyerang tidak sepatutnya dapat menghasilkan fail lain dengan jumlah semak yang sama. SHA-1 rintangan praimej kedua masih kukuh walaupun perlanggaran pecah.
Petakan integriti dan penggunaan penamaan kepada sifat yang diperlukan; cincang biasa bukan storan kata laluan
Storan kata laluan ialah satu kes penggunaan di mana fungsi cincang bukanlah alat yang betul. Jika kata laluan disimpan sebagai cincang SHA-256 dan pangkalan data cincang bocor, penyerang boleh menjalankan serangan kamus: cincang berjuta-juta tekaan dan semak sama ada ada yang sepadan dengan cincang yang disimpan. Penyerang sahaja memerlukan satu praimej untuk setiap kata laluan dan fungsi pantas memberikan penyerang gelung perbandingan luar talian yang cekap tanpa had kadar aplikasi.
Kata laluan memerlukan fungsi masin yang sengaja perlahan, keras memori, setiap pengguna seperti Argon2id, scrypt atau bcrypt. Garam bagi setiap pengguna yang unik menjadikan kata laluan yang sama menghasilkan rekod tersimpan yang berbeza, manakala memori yang dikonfigurasikan fungsi kata laluan dan kos masa menjadikan setiap calon sengaja lebih mahal. Parameter tepat memerlukan penanda aras tempatan dan tidak ditetapkan di sini. Kalkulator cincang ToolAcre SHA tidak melakukan pencincangan kata laluan dan dokumentasi panduan menerangkan sebab SHA-256 tidak sesuai untuk kes penggunaan ini.
Contoh yang berkesan — menggunakan pemetaan kepada SHA-1 dalam repositori Git berbanding SHA-1 dalam sijil
Contoh yang berjaya: SHA-1 dalam repositori Git. Setiap komit Git mempunyai cincangan SHA-1 sebagai ID objeknya. Jika SHA-1 rintangan perlanggaran rosak, adakah repositori Git terdedah? Jawapannya ialah: mungkin. Penyerang boleh membuat komit dengan SHA-1 yang sama seperti komit sedia ada dan menolaknya ke pelayan repositori, yang kemudiannya mungkin menyampaikan komit yang berbeza kepada klien yang berbeza. Walau bagaimanapun, ini memerlukan memilih sasaran tertentu dan mengira perlanggaran, yang mahal walaupun dengan SHA-1 yang rosak.
Ahli projek Git telah menerbitkan peta jalan untuk berhijrah ke SHA-256, tetapi keperluan mendesak adalah sederhana kerana serangan praktikal memerlukan kedua-dua teknik perlanggaran dan kompromi pelayan. Untuk pembangun yang bertanya "adakah keselamatan repositori Git saya bergantung pada SHA-1 rintangan perlanggaran?" jawapannya ya, tetapi risiko praktikal adalah rendah berbanding ancaman keselamatan yang lain. Kalkulator cincang ToolAcre SHA menyediakan kedua-dua SHA-1 dan SHA-256, dilabelkan dengan sewajarnya, supaya pembangun boleh mengira sama ada dan memahami perbezaannya.
Bawa pulang: namakan harta itu sebelum anda panik — kalkulator cincang ToolAcre SHA membolehkan anda melihat panjang ringkasan yang menetapkan had setiap algoritma
Untuk mana-mana sistem yang menggunakan SHA-1, keputusan untuk menaik taraf bergantung pada sama ada kes penggunaan memerlukan sifat khusus yang rosak. Jika kes penggunaan ialah tandatangan digital atau penyahduplikasian terhadap penyerang aktif, rintangan perlanggaran diperlukan dan SHA-1 rosak, jadi naik taraf kepada SHA-256 dengan segera. Jika kes penggunaan ialah storan beralamat kandungan atau jumlah semak, rintangan praimej kedua diperlukan dan SHA-1 masih selamat untuk tujuan itu, walaupun SHA-256 lebih disukai untuk kalis masa hadapan.
Jika kes penggunaan ialah terbitan kunci atau pengesahan kata laluan, rintangan praimej diperlukan dan tiada apa-apa pun dalam kit alat ini harus digunakan sama sekali kerana fungsi yang lebih pantas adalah lebih baik untuk terbitan kunci. Kalkulator cincang ToolAcre SHA membolehkan pembangun mengira ringkasan dan melihat sifat dalam tindakan. Memahami ketiga-tiga sifat ini dan memadankannya dengan kes penggunaan adalah asas untuk membuat pilihan kriptografi yang selamat dalam sistem sebenar.