- Untuk integriti, gunakan SHA-256, SHA-512 atau SHA-3; elakkan MD5 dan SHA-1.
- Untuk penyulitan: AES-256 pada GCM/XTS; Ular, Twofish, dan Camellia adalah alternatif yang kukuh.
- Kata laluan: Argon2id (≥19 MiB, 2 iter.) atau scrypt/bcrypt berparameter baik.
- 3DES, RIPEMD-160 dan SHA-1 ditamatkan: berhijrah ke AES dan SHA-2/3.
Apabila kita bercakap tentang melindungi data, tidak semuanya sama: menyulitkan y untuk membuat hash Mereka adalah perkara yang berbeza dengan objektif yang berbeza. Dalam panduan ini, saya akan memberitahu anda, dengan jelas dan ringkas, apa itu. penyulitan yang lebih selamat dan algoritma pencincangan, bagaimana untuk memilihnya mengikut kes penggunaan dan apakah pilihan yang harus dielakkan pada masa kini.
Selain meliputi yang klasik seperti AES, SHA-2 dan SHA-3Anda akan lihat mengapa. MD5, SHA-1 atau 3DES Mereka bukan lagi idea yang bagus, apakah yang anda cadangkan? OWASP untuk menyimpan kata laluan dan cara menyemak integriti fail dengan betul. Dan, memandangkan anda bertanya, saya juga akan menerangkan yang mana satu untuk digunakan "jika kelajuan tidak penting," termasuk sifir seperti Camellia, Twofish, Serpent atau Kuznyechik, dan cincang seperti SHA-256, SHA-512, Whirlpool atau Streebog.
Apakah fungsi hash dan apakah yang menjadikannya selamat?
Fungsi cincang mengubah input saiz arbitrari menjadi a ringkasan panjang tetapUntuk kegunaan kriptografi, cincangan yang baik sepatutnya deterministiktahan terhadap praimej, praimej kedua ya perlanggaran, selain mempamerkan yang terkenal kesan runtuhan saljiPerubahan minimum dalam input menghasilkan hasil yang sama sekali berbeza.
Dalam fungsi ideal, ringkasan diedarkan dalam a seragam dan tidak dapat diramalkan di seluruh ruang keluaran, supaya dua input serupa menjana cincang yang kelihatan tidak berkaitan. Walaupun ideal tidak wujud, dengan saiz output seperti 256 bit Ruang yang mungkin adalah gergasi, yang membuat perlanggaran rawak tidak boleh dilaksanakan secara pengiraan dalam amalan semasa.
Penting: cincang ialah satu arahIa tidak boleh "nyahsulit". Satu-satunya cara teori untuk memulihkan kemasukan adalah melalui serangan oleh kekerasan atau mengikut kamus, dan di situlah sebab mengapa kata laluan mesti dirawat dengan fungsi dan parameter tertentu yang menjadikannya lambat untuk mengira penyerang.
Hash vs penyulitan: mereka tidak sama
Penyulitan ialah dwiarahIa menukar teks biasa kepada teks sifir dan, dengan kekunci yang betul, membalikkan proses. Hash ialah tidak dapat dipulihkan dan sentiasa mengembalikan output daripada panjang tetapPenyulitan melindungi kerahsiaanHash menyumbang integriti dan berfungsi sebagai "jejak kaki" data.
Kes biasa: untuk menghantar data sensitif, ia digunakan penyulitan (contohnya, HTTPS); untuk menyemak sama ada fail telah diubah suai, a hashUntuk menyimpan kata laluan, penyulitan mahupun SHA-256 tidak digunakan: kaedah lain digunakan. Kata laluan KDF seperti Argon2id, scrypt atau bcrypt dengan parameter kos.
Keadaan fungsi cincang yang paling biasa
- MD5 Ia menjana 128 bit dan kini tidak boleh digunakan untuk tujuan kriptografi: perlanggaran praktikal berlaku. Pada masa ini, ia hanya boleh digunakan dalam aplikasi tidak kritikal seperti pengesanan rasuah secara tidak sengajaWalau bagaimanapun, adalah dinasihatkan untuk berhijrah kepada alternatif moden kerana kelemahan mereka memudahkan serangan oleh perlanggaran yang disengajakan.
- SHA-1 Ia menghasilkan 160 bit dan juga terjejas. Penyelidikan telah mengurangkan kos perlanggaran kepada lebih kurang 263 operasi, dan pada tahun 2017 perlanggaran praktikal telah ditunjukkan HancurPenggunaannya tidak digalakkan dalam tandatangan, sijil dan sebarang senario keselamatan dunia sebenar.
- SHA-2 Ini adalah keluarga yang disyorkan oleh NIST untuk kegunaan umum: SHA-256, SHA-512, sebagai tambahan kepada varian terpotong seperti SHA-224, SHA-384, SHA-512/224 o SHA-512/256Mereka mengekalkan rintangan perlanggaran yang tinggi dan mendapat manfaat daripada pengoptimuman perkakasan, Walaupun SHA-256 Ia biasanya 20–30% lebih lambat daripada MD5 atau SHA-1.
- SHA-3 (dahulunya Keccak) bukan "SH-2 yang dipertingkatkan"; ia menggunakan a pembinaan span dan secara semula jadi tahan terhadap serangan lanjutan panjangIa menawarkan varian SHA3-224/256/384/512 dan sambungan keluaran boleh ubah SHAKE128/256. Penggunaannya semakin berkembang, walaupun SHA-2 kekal dominan disebabkan oleh prestasi dan sokongan.
- Hash lain: RIPEMD-160 Ia memberikan kurang keselamatan terhadap perlanggaran berbanding SHA-2 moden dan dipertimbangkan usang untuk reka bentuk baru; Whirlpool y Streebog (GOST R 34.11-2012) wujud, tetapi di luar persekitaran tertentu ekosistem dan pecutannya adalah terhad berbanding SHA-2/3.
Menyemak integriti fail (contoh praktikal)
Menerbitkan dan mengesahkan cincang membenarkan pengesanan perubahan atau rasuah dalam muat turun, dan kepada buat pautan muat turun terus Anda juga dinasihatkan untuk menerbitkan nilai SHA-256 rasmi. Walaupun anda akan melihat contoh menggunakan MD5, amalan yang disyorkan hari ini ialah menggunakan nilai SHA-256 rasmi. SHA-256 atau lebih tinggi. Dalam sistem seperti Unix Anda boleh melakukan sesuatu seperti ini: sha256sum archivo.iso dan bandingkan dengan nilai rasmi.
Jika anda perlu mengautomasikan proses, anda boleh merantai bersama arahanSebagai contoh, menjana pakej dan cincangnya dalam satu baris: tar cf - carpeta | tee paquete.tar | sha256sum -Penerima akan mengesahkan dengan sha256sum -c menggunakan nilai yang diterbitkan.
En Windows, PowerShell memudahkan pengiraan dengan: Get-FileHash .\fichero.zip -Algorithm SHA256Terdapat juga arahan untuk Periksa atribut fail dan penyulitan dalam Windows. Elakkan menggunakan MD5 atau SHA-1 sebagai "meterai integriti" dalam konteks keselamatan, kerana penyerang boleh memaksa perlanggaran dan menipu proses.
Bila hendak menggunakan cincang dan bila hendak menyulitkan
Usa hash Apabila anda mencari integriti, penyahduplikasian atau pengindeksan pantas: pengesahan fail, tandatangan digital (cincang mesej ialah apa yang ditandatangani), jadual cincang dalam struktur data atau penjanaan pengecam unik. Mereka juga digunakan dalam senarai hitam dan tandatangan daripada malware.
Usa penyulitan Untuk kerahsiaan: data dalam transit (HTTPS, VPN), data dalam keadaan rehat (cakera, pangkalan data), sandaran dan bimbitPenyulitan menghalang pihak ketiga daripada membaca kandungan tanpa kunci penyahsulitan.
Penyimpanan kata laluan: KDF dan pengesyoran OWASP
Untuk kata laluan, jangan sesekali gunakan cincang cepat tujuan umum (MD5, SHA-1, SHA-256 "mentah"). Ia menggunakan kata laluan KDF dengan kos boleh dikonfigurasikan y garam rawak: Argon2id, scrypt o bcryptMatlamatnya adalah untuk menjadikan serangan brute-force dan GPU/ASIC lebih mahal.
OWASP memberi keutamaan Argon2id dengan, sekurang-kurangnya, 19 MiB memori, 2 lelaran y paralelisme 1Jika ia tidak tersedia, cadangkan scrypt dengan N = 217, r = 8 yp = 1Sebagai pilihan ketiga, bcrypt dengan faktor kos sekitar 10-12 (atau yang memberi anda ~0,5 s pada perkakasan anda).
PBKDF2 Ia kekal untuk keperluan pematuhan: ia sah jika anda melaraskan lelaran yang cukup tinggi (berjuta-juta), tetapi terhadap GPU/ASIC moden ia berprestasi lebih teruk daripada scrypt atau Argon2id kerana kos ingatan yang rendah.
Prestasi algoritma hash
Cincang tujuan am direka bentuk untuk menjadi jeram dan cekap, sesuai untuk protokol dan pengesahan, tetapi bertentangan dengan apa yang kami cari kata laluanKelajuan sebenar bergantung pada input, algoritma, dan arahan pemproses dan selari.
Dalam senario volum tinggi atau masa nyata, cincang yang terlalu perlahan boleh menjadi kesesakanItulah sebabnya kami membezakan antara fungsi pantas (SHA-256/512) dan KDF perlahan (Argon2id, scrypt, bcrypt) yang memperkenalkan kos CPU dan memori sengaja.
Ciri-ciri penting cincang yang baik
Selain determinisme dan kesan runtuhan salji, cincang mestilah tahan terhadapnya praimej, praimej kedua ya perlanggaranDan saiz minimum sebanyak 256 bit untuk menahan kekerasan semasa dan margin masa hadapan.
Walaupun kadangkala ia dipermudahkan dengan mengatakan bahawa "dua input berbeza tidak boleh mempunyai cincang yang sama", realitinya ialah dengan perlanggaran keluaran terhingga adaPerkara penting ialah mereka tidak praktikal untuk dicari. Itulah sebabnya MD5 dan SHA-1 dipertimbangkan pecah dan SHA-2/3 kekal sebagai pertaruhan selamat.
Penyulitan dan mod simetri: perkara yang perlu digunakan hari ini
Dalam penyulitan simetri, rujukannya ialah AES dengan kunci daripada 128/192/256 bit. Perkara kritikal bukan hanya algoritma, tetapi cara operasi: elakkan ECB, gunakan mod yang disahkan seperti GCM atau, dalam penyimpanan, XTS (contohnya, untuk cakera). Jika anda bekerja dalam persekitaran Windows, semak juga sokongan perkakasan dan Keselamatan penyulitan BitLocker.
Sifir lain: Camellia (standard ISO, profil yang baik), Dua ikan y Ular (AES finalis, masih mantap), ChaCha20-Poly1305 (perisian yang sangat pantas dan sangat selamat). 3DES y DES telah ditinggalkan: 3DES juga terhad dan tidak digalakkan oleh pelbagai standard.
Penyulitan asimetri, tandatangan dan saiz kunci
Untuk mewujudkan kunci dan tanda, yang berikut digunakan: RSA y ECCDengan RSA, gunakan OAEP untuk penyulitan dan PSS Untuk tandatangan; jangan sekali-kali "bukukan" RSA. Saiz: sekurang-kurangnya RSA 3072 bit atau ECC 256 bit untuk anggaran tahap keselamatan 128 bit simetri.
Anda juga akan melihat Diffie-Hellman (termasuk varian lengkung eliptiknya) untuk pertukaran kunci dan DSA/ECDSA untuk tandatangan. Dalam protokol moden, gabungan TLS Ia menggunakan pertukaran asimetri dan penyulitan simetri yang disahkan untuk mengimbangi keselamatan dan prestasi.
Apa yang perlu dipilih jika kelajuan tidak penting?
Jika anda mengutamakan keselamatan/keteguhan Mengenai kelajuan, pilihan yang wajar adalah menggunakan algoritma yang mantap dan diaudit dengan baik, mengelakkan "koktel" yang tidak perlu. Dalam penyulitan simetri, pilih untuk AES-256 dengan GCM (lalu lintas) atau XTS (cakera). Camellia-256, Ular y Dua ikan Mereka adalah alternatif yang kukuh.
yang air terjun (AES-Twofish, Serpent-Twofish-AES, dsb.) jarang menambah nilai sebenar dan merumitkan pengauditan dan pematuhan. Jika model ancaman anda memerlukannya, lebih baik untuk mengukuhkan kunci, pengurusan IV, putaran dan pengesahan data yang merantai sifir secara sesuka hati.
Mengenai Kuznyechik (GOST): kukuh dari segi teknikal, tetapi dengan penelitian yang kurang antarabangsa. Gunakannya untuk pematuhan Jika dikehendaki oleh peraturan Rusia; jika tidak, gunakan kayu dengan AES/Camellia/Ular. Dalam aliran tanpa AES-NI, ChaCha20-Poly1305 Ia hebat, walaupun kelajuan bukanlah keutamaan anda di sini.
Untuk cincang umum (bukan kata laluan): lebih suka SHA-512/256 o SHA-256 oleh ekosistem dan sokongan; SHA3-256 Ia sangat baik jika anda mahukan imuniti kepada lanjutan panjang mengikut reka bentuk. Whirlpool y Streebog Ia sah, tetapi dengan penggunaan dan pecutan yang kurang.
Untuk kata laluan: Argon2id dengan memori yang mencukupi (≥ 19 MiB), 2+ lelaran dan keselarian yang ketat. Jika anda tidak boleh, scrypt berparameter dengan baik atau bcrypt dengan kos yang tinggi. Ini jauh lebih berkesan daripada "memuat naik bit" ke SHA generik.
Peraturan CA5350 (.NET): Elakkan algoritma yang tidak selamat
Analisis kod .NET memberi amaran (CA5350) jika ia mengesan 3DES, SHA-1 atau RIPEMD-160kerana mereka menawarkan jaminan yang lebih rendah berbanding pilihan moden. Penggantian cepat: TripleDES → AES; SHA-1/RIPEMD-160 → SHA-256/384/512.
Contoh kanonik pembetulan: daripada var h = SHA1.Create(); a var h = SHA256.Create();; dari RIPEMD160Managed.Create() a SHA256.Create(); dan daripada TripleDES.Create() a new AesManaged()Ia juga melaraskan saiz kunci dan mod selamat (GCM/XTS) mengikut keperluan.
Perbandingan pantas: penyulitan lwn. pencincangan
| Penampilan | Penyulitan | Hash |
|---|---|---|
| Kefahaman | Dwiarah (boleh diterbalikkan dengan kunci) | Satu arah (tidak boleh berbalik) |
| objektif | kerahsiaan | Integriti/Pengenalan |
| Salida | Panjang berubah-ubah | Panjang tetap |
| Contohnya | AES, ChaCha20, RSA, ECC | SHA-256, SHA-512, SHA-3 |
Serangan dan amalan terbaik yang perlu diingat
Walaupun dengan algoritma yang mantap, pelaksanaan Mereka penting. Elakkan ECB, sahkan pengisi dengan betul (CBC sensitif kepada padding oracles), menggunakan AEAD (GCM/ChaCha20-Poly1305), menjana IV/nonces yang tidak dapat diramal dan berbeza setiap mesej, dan sentiasa menyemak kesahihan sebelum mentafsir.
Untuk tandatangan digital, jangan tandatangani keseluruhan mesej; menandatangani hashDengan RSA, gunakan OAEP untuk penyulitan dan PSS untuk menandatangani; dengan ECDSA, ia dengan penuh kasih sayang menjaga rawak daripada nonces. Dan pastikan perpustakaan dan konfigurasi dikemas kini terhadap kelemahan baharu.
SHA-2 dan SHA-3 dengan lebih terperinci
SHA-256 Ia beroperasi dengan perkataan 32-bit, 64 pusingan, dan blok 512-bit; SHA-512 dengan perkataan 64-bit, 80 pusingan dan blok 1024-bit, maka varian terpotongnya seperti SHA-512/256 yang memberikan rintangan yang lebih baik kepada lanjutan panjang apabila output dikurangkan.
SHA-3 Ia menggunakan keadaan dalaman 1600-bit dan 24 pusingan pilih atur; ia menyerap data dengan XOR dan mengeluarkan seberapa banyak output yang diperlukan (SHAKE). Ia sangat fleksibel dan, walaupun dalam perisian generik ia mungkin lebih banyak lambat SHA-2, dengan reka bentuknya yang tersendiri, menyediakan kepelbagaian kriptografi.
Nota tentang menjana rawak
Untuk kriptografi, gunakan fon daripada rawak selamat sistem (contohnya, /dev/urandom, bahasa CSPRNG). Elakkan penjana seperti rand () atau MT19937 untuk kunci, IV atau garam: ia tidak tahan ramalan dan boleh menjejaskan keseluruhan skim anda.
Untuk menutup bulatan, mari fokus pada satu idea praktikal: memilih piawaian yang telah diaudit (AES-GCM/XTS, SHA-2/3), mengelakkan algoritma dengan sejarah perlanggaran atau kekunci pendek (MD5, SHA-1, DES/3DES), dan untuk kata laluan menggunakan KDF moden seperti Argon2id o scrypt dengan parameter yang ditentukur dengan baik; jika kelajuan bukan keutamaan, tingkatkan kos dan ingatan tanpa rasa takut, kerana itulah perisai terbaik anda terhadap serangan luar talian.
Penulis yang bersemangat tentang dunia bait dan teknologi secara umum. Saya suka berkongsi pengetahuan saya melalui penulisan, dan itulah yang akan saya lakukan dalam blog ini, menunjukkan kepada anda semua perkara yang paling menarik tentang alat, perisian, perkakasan, trend teknologi dan banyak lagi. Matlamat saya adalah untuk membantu anda mengemudi dunia digital dengan cara yang mudah dan menghiburkan.
