Rumah > Artikel > Operasi dan penyelenggaraan > Bagaimana untuk mengelakkan penyulitan lemah dalam bahasa C
Penyulitan merujuk kepada menggunakan algoritma khas untuk menukar data maklumat asal, supaya walaupun pengguna yang tidak dibenarkan mendapatkan maklumat yang disulitkan, mereka tidak akan mengetahui maklumat tersebut . Kaedah penyahsulitan masih tidak dapat memahami kandungan mesej. Algoritma penyulitan biasa boleh dibahagikan terutamanya kepada: penyulitan simetri, penyulitan asimetri, dan penyulitan sehala. Pelbagai algoritma penyulitan digunakan dalam senario yang berbeza Pilih algoritma yang sesuai berdasarkan ciri-ciri algoritma penyulitan, seperti kelajuan pengkomputeran, keselamatan, dan kaedah pengurusan utama. Penyulitan yang mudah dipecahkan Algoritma dipanggil algoritma penyulitan lemah, seperti algoritma DES yang boleh dipecahkan dalam masa yang terhad menggunakan kaedah yang lengkap. Artikel ini mengambil kod sumber bahasa JAVA sebagai contoh untuk menganalisis punca penyulitan lemah dan cara membaikinya.
Untuk algoritma penyulitan yang lemah dalam rintangan serangan, setelah dieksploitasi, maklumat privasi peribadi mungkin bocor dan kehilangan harta benda mungkin berlaku . Dari Januari 2018 hingga April 2019, terdapat sejumlah 2 maklumat kerentanan yang berkaitan dengannya dalam CVE. Maklumat kerentanan adalah seperti berikut:
CVE | 漏洞概况 |
---|---|
CVE-2018-9028 | CA Privileged AccessManager 2.x中传输密码时使用弱加密,降低了密码破解的复杂性。 |
CVE-2018-6619 | 在 Easy Hosting Control Panel(EHCP)v0.37.12.b通过利用无盐的弱加密算法,使攻击者更容易破解数据库密码。 |
3. Kod sampel
Kod sampel yang digunakan di bawah berasal daripada Penanda Aras (https://www.owasp.org /index.php /Benchmark), nama fail sumber: BenchmarkTest00019.java.
Contoh operasi kod di atas adalah untuk membaca kandungan dalam permintaan dan menyulitkannya, dalam Bab 49 Line mendapat contoh membaca fail konfigurasi benchmarkprops
. Muatkan fail konfigurasi pada baris 50 dan baca atribut cryptoAlg1
dalam fail konfigurasi pada baris 52 hingga 53. Jika tiada atribut sedemikian, DESede/ECB/PKCS5Padding
akan digunakan secara lalai untuk menetapkan nilai kepada algorithm
. Baris 54 akan membina objek c yang disulitkan menggunakan algorithm
sebagai algoritma penyulitan. Seterusnya sediakan kata laluan yang disulitkan. Baris 57~58 menunjukkan penjana kunci untuk algoritma penyulitan DES. Baris 59 menyatakan bahawa mod operasi objek penyulitan c ialah penyulitan, dengan kunci ialah kunci. Baris 62 hingga 76 menukar aliran input dalam permintaan kepada input tatasusunan bait dan baris 77 menyulitkan input Hasil penyulitan ialah tatasusunan bait result
. Kunci yang dijana menggunakan algoritma DES adalah pendek, hanya 56 bit, dan kelajuan operasi adalah perlahan Selain itu, algoritma DES bergantung sepenuhnya pada kunci dan terdedah kepada serangan carian yang menyeluruh.
Gunakan Pengawal Kod untuk mengesan kod sampel di atas Anda boleh mengesan kecacatan "penyulitan lemah", dan tahap paparan adalah sederhana. Laporkan kecacatan pada baris 57 kod, seperti yang ditunjukkan dalam Rajah 1:
Rajah 1: Contoh pengesanan penyulitan lemah
Dalam kod pembaikan di atas, baris 58 menggunakan algoritma AES untuk menggantikan algoritma DES AES boleh menjana kunci sekurang-kurangnya 128 bit dan sehingga 256 bit, dan Kelajuan operasi adalah pantas dan penggunaan memori adalah rendah.
Gunakan Pengawal Kod untuk mengesan kod yang dibaiki, dan anda boleh melihat bahawa kecacatan "penyulitan lemah" tidak lagi wujud. Seperti yang ditunjukkan dalam Rajah 2:
Atas ialah kandungan terperinci Bagaimana untuk mengelakkan penyulitan lemah dalam bahasa C. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!