Bahasa Melayu

Alat pembangun · SHA kalkulator cincang

Serangan Sambungan Panjang: Mengapa SHA-256(rahsia + mesej) Bukan MAC

· Mengapa ia penting

sha-256 kriptografi keselamatan

Blok keadaan SHA-256 dilanjutkan dengan bait tambahan untuk memalsukan cincangan yang sah
Ilustrasi vektor ToolAcre asal

Menandakan rahsia pada mesej dan mencincangnya kelihatan seperti pengesahan, tetapi struktur SHA-256 membolehkan penyerang memanjangkan mesej tanpa mengetahui rahsianya. Siaran ini menerangkan serangan dan pembaikan.

Tandatangan permintaan buatan sendiri — cincang(rahsia + badan) dan sebab ia berasa selamat

Pembangun memerlukan pengesahan mesej tetapi tidak mempunyai pengetahuan HMAC, jadi mereka menggabungkan rahsia dengan mesej dan mencincang hasilnya. Pendekatan ini kelihatan selamat pada mulanya: output ialah cap jari bersaiz tetap yang sepatutnya berubah jika sesiapa mengubah suai mesej. Walau bagaimanapun, SHA-256 mempunyai kecacatan seni bina yang dipanggil sambungan panjang yang membolehkan penyerang menambahkan data pada mesej dan mengira ringkasan yang sah tanpa mengetahui rahsianya. Kalkulator cincang ToolAcre SHA mengira ringkasan biasa sahaja, bukan pengesahan berkunci, kerana perbezaan ini penting untuk keselamatan sebenar.

Menandakan rahsia sebelum pencincangan adalah menarik secara intuitif kerana sahaja pemegang rahsia boleh mengira semula cincangan. Jika mesej berubah, cincang juga berubah, jadi ia kelihatan seperti bukti keaslian. API mungkin menandatangani permintaan dengan menggabungkan rahsia kongsi dan badan permintaan, kemudian mencincang hasil dan memasukkan cincangan itu dalam permintaan. Pelayan menerima badan, mengira semula cincang dengan salinan rahsianya dan menyemak sama ada ia sepadan. Jika penyerang menukar badan, cincangan tidak akan sepadan—atau begitu yang difikirkan oleh pembangun.

Merkle–Damgård membocorkan keadaannya — ringkasan terakhir ialah keadaan dalaman, jadi penyerang boleh terus mencincang dari tempat anda berhenti

SHA-256 tergolong dalam keluarga yang dipanggil fungsi cincang Merkle–Damgård. Fungsi ini memproses input dalam blok bersaiz tetap, merantai fungsi mampatan yang mengambil keadaan sebelumnya dan blok semasa dan mengeluarkan keadaan baharu. Fungsi mampatan adalah satu-satunya kriptografi primitif dalam; strategi rantaian dan skema pelapik menjadikan keseluruhan pembinaan berfungsi. Intisari akhir hanyalah keadaan akhir yang dicetak dalam perenambelasan. Ini bukan sampingan: output adalah keadaan dalaman. Sesiapa sahaja yang melihat ringkasan mempunyai keadaan yang tepat yang diperlukan untuk meneruskan pencincangan dari saat itu.

Untuk melanjutkan mesej, penyerang bermula dengan ringkasan diperhatikan rahsia + original_message dan menganggapnya sebagai pembolehubah keadaan untuk panggilan fungsi mampatan baharu. Mereka menambahkan data yang ingin mereka tambahkan, meletakkannya dengan betul untuk panjang penuh mesej baharu dan mengira ringkasan. Apabila pelayan mengesahkan ringkasan palsu ini dengan menambah rahsia dan pencincangannya sendiri, pengiraan diteruskan secara sama dengan pengiraan penyerang selepas rahsia awal diserap. Pelayan mengira ringkasan yang sama, dan mesej palsu diterima tanpa penyerang mengetahui rahsianya sama sekali.

Cara sambungan berfungsi — menambahkan padding dan data tambahan untuk memalsukan cincangan yang sah untuk mesej yang lebih panjang

Algoritma yang berbeza dipengaruhi secara berbeza oleh sambungan panjang. SHA-1 terdedah: penyerang boleh memerhati SHA-1 penghadaman dan memanjangkan mesej. SHA-256 terdedah dengan cara yang sama. SHA-512 juga terdedah kepada serangan sambungan. SHA-384 menahan sambungan panjang kerana ia dibina sebagai SHA-512 dipenggal kepada 384 bits. Output fungsi mampatan lebih panjang daripada ringkasan yang diterbitkan, jadi penyerang tidak mempunyai maklumat yang mencukupi untuk meneruskan pencincangan. Binaan span yang digunakan dalam SHA-3 juga tahan kerana ia tidak membocorkan keadaan dalaman.

Memahami algoritma yang terdedah memerlukan mengetahui sesuatu tentang saiz fungsi mampatan berbanding saiz ringkasan yang diterbitkan. SHA-256 menerbitkan 256 bits dan keadaan fungsi mampatan juga ialah 256 bits, jadi ringkasan ialah keseluruhan keadaan. Penyerang mempunyai segala yang diperlukan untuk meneruskan. SHA-384 menerbitkan 384 bits, tetapi keadaan fungsi mampatan asas ialah 512 bits kerana SHA-384 dibina di atas SHA-512. Ringkasan sahaja mendedahkan 384 daripada 512 bits tersebut, meninggalkan 128 bits tidak diketahui oleh penyerang. Ini adalah sifat reka bentuk yang disengajakan SHA-384 yang memberikan rintangan ini.

Pembinaan SHA-1, SHA-256 dan SHA-512 yang disokong mendedahkan keadaan penuh; SHA-384 pemangkasan menukar sempadan sambungan

Penyelesaian untuk mengesahkan mesej dengan rahsia kongsi ialah HMAC, kod pengesahan mesej cincang berkunci. HMAC tidak menyediakan rahsia dan cincang; sebaliknya, ia menggunakan rahsia dalam dua operasi cincang bersarang menggunakan skema padding khusus yang dipanggil pad dalam dan luar. Pembinaannya ialah HMAC(rahsia, mesej) = SHA256(secret_XOR_outer_pad, SHA256(rahsia_XOR_inner_pad, mesej)). Pendekatan bersarang ini menutup jurang sambungan panjang kerana walaupun penyerang mempunyai penghadaman cincang dalaman, mereka tidak boleh meneruskan pencincangan tanpa rahsia.

Sebab untuk memastikan operasi penghadaman dan HMAC berasingan adalah untuk mengelakkan kesilapan biasa untuk merawat kedua-duanya secara bergantian. Pembangun yang belajar tentang pencincangan melalui alat yang melakukan kedua-duanya mungkin terlupa yang mana yang mereka gunakan semasa mereka menulis kod. Mengekalkan pengiraan ringkasan secara berasingan menjadikan pilihan itu jelas dan mengukuhkan pembelajaran yang memerlukan pengesahan HMAC atau tandatangan. Kalkulator cincang ToolAcre SHA melabelkan cernaan biasa dengan jelas dan dokumentasi menerangkan bahawa HMAC ialah operasi yang berbeza sama sekali.

HMAC sebagai pembetulan — binaan bersarang yang menutup jurang dan sebab ia adalah jawapan standard

Contoh konsep lanjutan panjang berfungsi pada vektor ujian biasa abc. Pengkomputeran SHA-256 pada ASCII teks abc menghasilkan ringkasan ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad. Katakan ringkasan ini adalah hasil daripada cincangan rahsia + abc dengan rahsia 5-bait, memberikan sejumlah 8 bytes input. SHA-256 memproses input dalam blok 64-bait, jadi blok pertama dan satu-satunya telah dilapisi dengan panjang mesej dan bait padding lain. Penyerang melihat ringkasan dan ingin memalsukan mesej bermula dengan abc diikuti dengan data tambahan.

Mereka tidak boleh menambah secara langsung pada abc kerana mereka tidak mengetahui padding tepat yang telah ditambahkan di dalam cincangan. Walau bagaimanapun, mereka boleh mengira mesej berlapik penuh: abc ditambah dengan padding yang diperlukan untuk input 8-bait kepada blok 64-bait. Mereka kemudian menambahkan data tambahan mereka, mengira padding untuk jumlah panjang baharu dan cincang gabungan dengan menganggap ringkasan yang diperhatikan sebagai keadaan permulaan. Hasilnya ialah ringkasan SHA-256 yang sah yang pelayan akan terima kerana ia menambah rahsia dan mengira cincangan yang sama.

Contoh yang berkesan — langkah-langkah konseptual untuk memanjangkan mesej yang ditandatangani, tanpa sasaran langsung

Untuk mengelakkan serangan ini dalam sistem sebenar, pembangun tidak seharusnya cuba membina pengesahan daripada cincang biasa. HMAC ialah jawapan standard dan ToolAcre SHA kalkulator cincang ialah alat untuk mengira ringkasan biasa untuk semakan integriti, pencincangan kandungan dan tujuan bukan pengesahan yang serupa. Contoh penggunaan selamat bagi ringkasan SHA-256 biasa termasuk jumlah semak fail, di mana penyerang tidak boleh mengawal kedua-dua fail dan ringkasan; storan boleh alamat kandungan, dengan cincangan adalah kunci carian; dan tandatangan digital digabungkan dengan tandatangan, di mana tandatangan memberikan pengesahan.

Skop penuh isu ini termasuk algoritma lain yang disediakan oleh pelayar. SHA-1 terdedah kepada sambungan panjang dan telah rosak secara kriptografi sebelum ia menjadi relevan. Kalkulator ToolAcre melabelkan SHA-1 sebagai warisan sahaja dan menerangkan serangan perlanggaran yang menjadikannya tidak sesuai untuk aplikasi baharu. Untuk aplikasi baharu, SHA-256 ialah pilihan yang wajar untuk ringkasan biasa, dan jika pengesahan diperlukan, HMAC dengan SHA-256 adalah jawapannya. SHA-384 dan SHA-512 kedua-duanya terdedah, tetapi SHA-384 dilindungi oleh pemotongan.

Perkara ini tidak meliputi — kalkulator ToolAcre mengira pencernaan biasa, bukan HMAC; siaran itu menerangkan mengapa perbezaan itu penting

Apabila membina model mental fungsi cincang, pembinaan Merkle-Damgård dan sambungan panjang menjadi konsep utama. Fungsi cincang mesti mengendalikan panjang input sewenang-wenangnya dan menghasilkan output tetap. Cara ia melakukan ini adalah dengan merantai blok fungsi mampatan demi blok, dan cara keadaan akhir ditukar kepada output sangat penting. Jika keadaan akhir adalah output sepenuhnya, maka output itu mengandungi semua maklumat yang diperlukan untuk meneruskan pencincangan. Jika keadaan akhir dipotong, sebahagian disembunyikan.

Untuk pembangun membaca tentang serangan sambungan panjang buat kali pertama, persoalannya ialah bagaimana untuk mengetahui sama ada ia mempengaruhi kes penggunaan mereka. Jika input kepada cincang ialah pemalar awam dan cincang digunakan sebagai kunci carian atau cap jari, sambungan panjang adalah tidak relevan. Jika cincang digunakan untuk mengesahkan mesej apabila kedua-dua pihak berkongsi rahsia, sambungan panjang adalah kelemahan kritikal dan HMAC ialah penyelesaiannya. Kalkulator cincang ToolAcre SHA memaparkan ringkasan dan kiraan bait, menjelaskan bahawa ini adalah output pengiraan, bukan mekanisme pengesahan.

Bawa pulang: gunakan MAC untuk pengesahan — kalkulator cincang ToolAcre SHA adalah untuk ringkasan integriti; pengesahan memerlukan HMAC atau tandatangan

Menggunakan ini pada sistem pengeluaran, prinsipnya adalah mudah: jangan sekali-kali menggunakan cincang kosong untuk pengesahan apabila rahsia terlibat. HMAC ialah pembinaan standard yang menutup vektor serangan sambungan panjang sepenuhnya. SHA-256 dan SHA-384 kedua-duanya selamat untuk tujuan yang dimaksudkan apabila digunakan dengan betul. Memahami tiga perkara utama—bahawa Merkle–Damgård mendedahkan keadaannya dalam ringkasan, bahawa SHA-384 memotong untuk menyembunyikan sebahagian keadaan dan bahawa HMAC menggunakan binaan bersarang untuk menghalang sambungan—memberi alat kepada pembangun untuk membuat pilihan yang tepat.

Kalkulator cincang ToolAcre SHA merangkumi pengajaran ini: ia menyediakan ringkasan biasa untuk pembelajaran dan untuk kegunaan bukan pengesahan yang sah, ia melabelkan SHA-1 sebagai warisan dan ia tidak melaksanakan operasi HMAC kerana dalam konteks yang berbeza. Apabila pembangun mencapai kalkulator cincang biasa untuk mengesahkan permintaan, kedudukan alat dan dokumentasi membimbing mereka ke arah HMAC dan tandatangan sebagai alat yang betul. Kit alat ToolAcre memfokuskan pada apa yang disediakan oleh Web Crypto secara langsung dan menerangkan sempadan di mana setiap primitif adalah sesuai.