Bahasa Melayu

Alat pembangun · SHA kalkulator cincang

SHA-256 lwn SHA-512: Saiz Perkataan, Bulat dan Mengapa 512 Boleh Lebih Pantas

· Bagaimana ia berfungsi

sha-256 kriptografi prestasi pelayar-apis

Perbandingan sebelah menyebelah 32-bit dan 64-perkataan kecil, 64 berbanding 80 pusingan, dan 256, 384 dan 512 bit keluaran
Ilustrasi vektor ToolAcre asal

SHA-512 menghasilkan penghadaman yang lebih panjang namun selalunya berjalan lebih pantas pada perkakasan 64-bit. Siaran ini menerangkan perbezaan struktur antara keduanya dan cara SHA-384 sesuai, jadi anda boleh memilih berdasarkan fakta.

Cincang yang lebih panjang, berjalan lebih pantas? — pemerhatian kontra-intuitif yang memulakan perbandingan

SHA-512 menghasilkan penghadaman yang lebih panjang namun selalunya berjalan lebih pantas daripada SHA-256 pada perkakasan 64-bit. Pemerhatian balas intuitif datang daripada reka bentuk CPU: pemproses yang dioptimumkan untuk aritmetik 64-bit melaksanakan operasi 64-bit lebih pantas daripada operasi 32-bit pada data yang sama. SHA-256 beroperasi pada perkataan 32-bit, manakala SHA-512 beroperasi pada perkataan 64-bit. Pada 64-bit CPU, yang terakhir sesuai dengan perkakasan secara lebih semula jadi dan menghabiskan lebih sedikit masa untuk penukaran saiz perkataan dan pelapik.

Ini tidak menjadikan SHA-512 lebih baik untuk setiap kes penggunaan. Pencernaan yang lebih panjang memerlukan lebih banyak storan dan lebar jalur. Pilihan di antara mereka hendaklah dibuat berdasarkan keperluan saiz output anda dan platform, bukan pada erti kata "lebih baharu" atau "lebih kuat" yang samar-samar.

32-bit berbanding 64-bit perkataan — perbezaan struktur teras dan sebab ia sesuai dengan CPU moden

SHA-256 beroperasi pada perkataan 32-bit sepanjang algoritma. Jadual mesej mengembang 16 32-bit perkataan menjadi 64 32-bit perkataan. Setiap pusingan mengemas kini lapan pembolehubah kerja 32-bit. Blok mesej ialah 512 bits (enam belas 32-bit perkataan). Outputnya ialah 256 bits (lapan 32-bit perkataan). Semua aritmetik dilakukan pada nilai 32-bit, dengan limpahan balut pada 2^32.

SHA-512 beroperasi pada 64-bit perkataan. Jadual mesej mengembang 16 64-bit perkataan menjadi 80 64-bit perkataan (bukan 64, seperti dalam SHA-256). Setiap pusingan mengemas kini lapan pembolehubah kerja 64-bit. Blok mesej ialah 1024 bits (enam belas 64-bit perkataan). Outputnya ialah 512 bits (lapan 64-bit perkataan). Semua aritmetik dilakukan pada nilai 64-bit, dengan limpahan balut pada 2^64.

64 pusingan berbanding 80, 512-bit berbanding blok 1024-bit — apa yang berubah setiap blok dan setiap bait

SHA-256 berlari 64 pusingan setiap blok; SHA-512 berlari 80 pusingan setiap blok. Ini bermakna SHA-512 melakukan lebih banyak pencampuran setiap blok. Pada pandangan pertama, ini kedengaran lebih perlahan. Tetapi saiz perkataan yang lebih besar dan saiz blok bermakna SHA-512 memproses lebih banyak bit setiap pusingan. Untuk a 1-megabait fail, SHA-256 proses 1048576 / 512 = 2048 blok, masing-masing dengan 64 pusingan, untuk sejumlah 131072 pusingan. SHA-512 proses 1048576 / 1024 = 1024 blok, masing-masing dengan 80 pusingan, untuk sejumlah 81920 pusingan. SHA-512 melakukan lebih sedikit pusingan secara keseluruhan, walaupun ia melakukan lebih banyak pusingan setiap blok.

Perbezaan dalam masa jam dinding bergantung pada pengoptimuman CPU untuk saiz perkataan. CPU dengan 64-bit ALU (unit logik aritmetik) akan melaksanakan operasi 64-bit dengan cekap. Jika CPU yang sama mesti memecahkan 32-bit SHA-256 operasi kepada berbilang operasi mikro atau menjalankannya pada unit pelaksanaan yang lebih kecil, kos setiap operasi adalah lebih tinggi. Pemproses moden mengoptimumkan untuk operasi 64-bit, menjadikan SHA-512 selalunya lebih pantas walaupun terdapat pusingan tambahan setiap blok.

Saiz blok dan kiraan bulat menerangkan kerja setiap bait; daya pengeluaran sebenar memerlukan penanda aras platform

Aritmetik blok menerangkan mengapa output yang lebih panjang tidak perlu membayangkan lebih banyak kerja setiap bait. SHA-256 melakukan enam puluh empat pusingan untuk setiap blok 512-bit, manakala SHA-512 melakukan lapan puluh pusingan untuk setiap blok 1,024-bit. Reka bentuk kedua melakukan lebih banyak pusingan pada setiap blok tetapi menggunakan input dua kali lebih banyak apabila ia memproses satu.

Perbandingan struktur itu tidak meramalkan penanda aras pelayar tertentu. Web Crypto boleh menggunakan arahan asli, pustaka sistem pengendalian atau kod dioptimumkan lain dan panjang input mengubah bahagian yang dibelanjakan untuk persediaan. Ukur persekitaran sasaran sebenar apabila pemprosesan penting; repositori sahaja menyokong dakwaan kualitatif bahawa perkataan yang lebih luas boleh sesuai dengan perkakasan 64-bit.

Panjang output mempengaruhi perwakilan dan sifat keselamatan tanpa anggaran kerja serangan tanpa sumber

SHA-384 bukan algoritma yang berasingan; ia ialah SHA-512 dengan dua perubahan: pemalar cincang awal adalah berbeza, dan output dipotong kepada 384 bits (48 bytes) dan bukannya 512 bits penuh. Pemangkasan ini mempunyai faedah terhadap serangan lanjutan panjang: penyerang tidak boleh melanjutkan ringkasan dengan menambahkan data pada mesej asal, kerana keadaan penuh 512-bit tidak diketahui (sahaja 384 bits daripadanya telah didedahkan).

SHA-256 terdedah kepada serangan sambungan panjang: jika anda mengetahui ringkasan mesej dan anda mengetahui panjang mesej, anda boleh menambahkan data pada mesej dan mengira ringkasan mesej lanjutan tanpa mengetahui kandungan mesej asal. Ini penting dalam konteks keselamatan tertentu, seperti pelaksanaan HMAC yang menggunakan pembinaan yang lemah. SHA-384, walaupun berdasarkan SHA-512, tidak terdedah kerana keadaan penuh tidak terdedah. Ini menjadikan SHA-384 berguna dalam konteks di mana SHA-256 dianggap berisiko.

Contoh yang berkesan — pencincangan satu input dengan ketiga-tiga dan membandingkan panjang ringkasan bersebelahan

Saiz output adalah perbezaan yang paling mudah. SHA-256 menghasilkan 32 bytes (64 aksara heks); SHA-384 menghasilkan 48 bytes (96 aksara heks); SHA-512 menghasilkan 64 bytes (128 aksara heks). Untuk storan dalam URL atau JSON, pencernaan yang lebih lama memerlukan lebih banyak ruang. Untuk rintangan perlanggaran, keluaran yang lebih panjang menjadikan perlanggaran secara eksponen lebih sukar dicari. Output yang lebih luas memberikan ruang hasil yang lebih besar, manakala akibat produk segeranya adalah lebih mudah untuk diukur: lebih banyak bait dalam storan, URL dan medan protokol. Artikel ini tidak melampirkan anggaran kerja serangan kerana tiada satu pun yang diperoleh daripada bukti repositori.

Sesetengah sistem dan piawaian menyatakan SHA-256 secara eksplisit; yang lain menggunakan SHA-512 atau membenarkan pilihan. SSH cap jari lalai kepada SHA-256; cernaan imej bekas boleh SHA-256 atau SHA-512. Pengurus pakej seperti npm menggunakan SHA-512 untuk integriti subsumber. Pilihan sering dibuat untuk anda, tetapi memahami perbezaan membolehkan anda memilih dengan bijak apabila anda bersuara.

Perkara ini tidak meliputi — angka pemprosesan, yang bergantung pada CPU, pengkompil dan saiz input; jawatan itu kekal kualitatif

Kalkulator cincang ToolAcre SHA menawarkan SHA-256, SHA-384 dan SHA-512. Hash input yang sama dengan ketiga-tiga dan perhatikan panjang output. Pencernaan semuanya akan berbeza sepenuhnya antara satu sama lain, yang dijangkakan: algoritma menggunakan pemalar bulat yang berbeza, jadual mesej yang berbeza dan operasi pencampuran yang berbeza. Kiraan bait yang dipaparkan di samping ringkasan sahaja mencerminkan saiz input, bukan saiz output; ketiga-tiga algoritma memproses bait input yang sama secara identik melalui urutan pusingan masing-masing.

Pengujian pada perkakasan anda sendiri mendedahkan perbezaan prestasi. Cincang fail besar (kes ujian berbilang megabait) dengan setiap algoritma dan masa hasilnya. Pada sistem 64-bit moden, SHA-512 selalunya akan selesai dalam kurang masa jam dinding, walaupun kiraan bait mungkin mencadangkan sebaliknya. Pada sistem 32-bit atau pemproses terbenam, SHA-256 mungkin lebih pantas kerana ALU CPU dioptimumkan untuk operasi 32-bit.

Bawa pulang: pilih mengikut saiz output dan platform — kalkulator cincang ToolAcre SHA menawarkan SHA-256, SHA-384 dan SHA-512 supaya anda boleh melihat ketiga-tiganya pada input yang sama

Kekuatan kriptografi adalah berasingan daripada prestasi. Repositori tidak menandai SHA-256 sebagai rosak dan memilihnya sebagai lalai tujuan umum. Bukti produk itu tidak mewajarkan memanggil mana-mana primitif secara universal selamat; kesesuaian masih bergantung kepada pembinaan dan model ancaman. Beralih daripada SHA-256 kepada SHA-512 bukanlah peningkatan keselamatan; ia adalah pertukaran storan dan prestasi. Jika sistem anda menentukan SHA-256 dan anda memerlukan algoritma yang tepat itu, gunakannya. Jika anda mempunyai pilihan dan anda mahu penghadaman yang lebih panjang atau anda tahu platform anda 64-bit, SHA-512 ialah pilihan yang sah.

Pelaksanaan Web Crypto pelayar mengira ketiga-tiganya melalui crypto.subtle.digest. Peranti anda, versi pelayar dan beban sistem latar belakang semuanya menjejaskan prestasi yang diperhatikan. Tetapi perkara utama kekal: SHA-256 dan SHA-512 tidak bersaing untuk tajuk "fungsi cincang terbaik." Ia adalah alat yang direka untuk keperluan output yang berbeza, dan pilihan di antara mereka dibuat berdasarkan keperluan sistem anda, bukan pada tuntutan prestasi umum.