Corak Salah Guna Kriptografi Teratas
Tinjau kesilapan pembangun yang paling lazim: mod ECB, pembenihan PRNG yang lemah dan membina kripto sendiri.
Corak Salah Guna Kriptografi Teratas ialah pelajaran Cryptology Academy percuma di CoddyKit. Ini ialah pelajaran 4 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Cryptology Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Cryptology Academy merangkumi sejumlah 4 pelajaran.
Mod ECB Mendedahkan Corak Blok
Mod Buku Kod Elektronik (ECB) menyulitkan setiap blok secara berasingan menggunakan kunci yang sama. Blok teks biasa yang serupa menghasilkan blok teks sifir yang serupa. Demonstrasi klasik ialah "penguin ECB": penyulitan imej peta bit menggunakan ECB mengekalkan struktur imej pada aras blok, menyebabkan bentuk luar penguin kelihatan dengan jelas dalam teks sifir. Mod ECB tidak menyediakan keselamatan semantik dan tidak boleh digunakan untuk sebarang tujuan penyulitan praktikal.
Melaksanakan Kriptografi Sendiri
Melaksanakan primitif kriptografi dari awal merupakan antara amalan paling berbahaya dalam pembangunan perisian. Kriptografi memerlukan ketepatan sempurna dalam keadaan yang berhadapan dengan penyerang: kebocoran pemasaan yang halus, ralat terlebih atau terkurang satu pada pelapik, atau salah faham terhadap keperluan keselamatan boleh mewujudkan kerentanan yang boleh dieksploitasi tetapi tidak dapat dibezakan daripada tingkah laku yang betul dalam pengujian biasa. Malah pakar kriptografi juga melakukan kesilapan pelaksanaan; pembangun aplikasi hendaklah menggunakan pustaka yang diaudit dengan teliti sahaja.
MD5 dan SHA-1 untuk Tujuan Keselamatan
MD5 telah terbukti rentan terhadap perlanggaran sejak 2004; mencipta dua fail dengan cincangan MD5 yang sama adalah mudah dari segi pengiraan. Serangan perlanggaran SHA-1 telah dibuktikan secara praktikal melalui serangan SHAttered oleh Google pada tahun 2017, yang menghasilkan dua fail PDF dengan cincangan SHA-1 yang sama. Kedua-duanya tidak boleh digunakan untuk sebarang tujuan keselamatan: tandatangan digital, integriti kandungan, penyimpanan kata laluan atau HMAC. Gunakan SHA-256, SHA-3 atau BLAKE2 untuk pelaksanaan moden.
Pembenihan PRNG Boleh Diramal
Menggunakan time() atau nilai lain yang boleh diramal untuk membenihkan penjana nombor pseudorawak merupakan kerentanan kritikal apabila keluaran PRNG digunakan untuk tujuan keselamatan. Penyerang yang mengetahui secara anggaran masa sesuatu kunci dijana boleh mencuba semua kemungkinan benih dalam ruang masa yang kecil untuk mendapatkan semula kunci tersebut. Contoh klasik: versi awal Netscape membenihkan penjanaan kunci SSL menggunakan masa dan ID proses, yang kedua-duanya boleh dilihat oleh penyerang pada mesin yang sama.
Pemilihan PRNG Lemah
rand() dalam C, java.util.Random dan modul random Python menggunakan penjana kongruen linear deterministik atau Mersenne Twister, yang direka untuk kualiti statistik dalam simulasi, bukan untuk keselamatan. Penyerang yang memerhatikan keluaran yang mencukupi daripada penjana ini boleh membina semula keadaan dalamannya dan meramalkan semua keluaran akan datang. Untuk tujuan keselamatan, gunakan CSPRNG yang disediakan oleh OS: secrets.token_bytes() dalam Python, crypto.randomBytes() dalam Node.js atau /dev/urandom dalam Linux.
Penyulitan Tanpa Pengesahan
Penyulitan tanpa pengesahan hanya memberikan kerahsiaan, bukan integriti. Penyerang yang tidak boleh membaca teks biasa masih boleh mengubah teks sifir, yang berpotensi menyebabkan perubahan yang boleh dijangka pada teks biasa (terutamanya dalam mod CTR atau CBC). Sifat ini membolehkan serangan: penyerang yang memintas urus niaga bank yang disulitkan mungkin menukar bit untuk mengubah jumlah pemindahan atau akaun destinasi tanpa mengetahui teks biasa. Sentiasa gunakan penyulitan yang disahkan (AEAD).
Menetapkan Kunci dan IV dalam Kod
Meletakkan kunci penyulitan atau vektor permulaan secara terus dalam kod sumber merupakan kerentanan kritikal. Kod sumber sering dihantar ke repositori kawalan versi, termasuk repositori yang kadangkala terbuka kepada umum. Walaupun repositori itu persendirian, sesiapa sahaja yang mempunyai akses kepada kod tersebut memiliki kuncinya. Kunci yang ditetapkan secara terus bermakna semua tika menggunakan kunci yang sama, manakala penggiliran kunci memerlukan penggunaan semula. Kunci mesti disimpan dalam pemboleh ubah persekitaran, sistem pengurusan rahsia (HashiCorp Vault, AWS Secrets Manager) atau modul keselamatan perkakasan.
Penggunaan Semula Vektor Permulaan
Menggunakan vektor permulaan yang sama untuk beberapa operasi penyulitan dengan kunci yang sama mewujudkan kerentanan serius. Dalam mod CTR, penggunaan semula IV menghasilkan strim kunci yang sama, lalu membolehkan teks biasa diperoleh semula melalui XOR. Dalam mod CBC, penggunaan semula IV membolehkan penyerang mengesan apabila dua mesej bermula dengan blok teks biasa yang sama. Dalam GCM, penggunaan semula nilai sekali guna (IV) membawa akibat bencana (lihat pelajaran tentang penggunaan semula nilai sekali guna). Jana IV rawak yang baharu untuk setiap operasi penyulitan; tambahkannya di hadapan teks sifir untuk disimpan bersama konteks penyahsulitan.
Pencincangan Kata Laluan dengan Fungsi Cincangan Pantas
Menyimpan kata laluan yang dicincang menggunakan MD5, SHA-256 atau sebarang cincangan kriptografi pantas yang lain adalah tidak memadai. GPU moden boleh mengira berbilion-bilion cincangan SHA-256 sesaat, menjadikan serangan cuba paksa luar talian terhadap pangkalan data cincangan yang dicuri sangat pantas. Pencincangan kata laluan memerlukan fungsi yang sengaja direka agar perlahan dan menggunakan banyak memori: bcrypt, scrypt atau Argon2id. Fungsi ini direka untuk menjadikan cuba paksa mahal walaupun menggunakan perkakasan khusus, sekali gus menjadikan serangan luar talian tidak praktikal dari segi pengiraan.
Mengabaikan Pengesahan Sijil
Melumpuhkan pengesahan sijil SSL/TLS (menetapkan ssl.CERT_NONE dalam Python, menghantar -k kepada curl atau menetapkan trustAllCerts=true dalam Android) menghapuskan perlindungan daripada serangan orang tengah. Penyerang boleh mengemukakan sebarang sijil dan memintas semua komunikasi. Amalan ini muncul dalam pembangunan untuk memintas ralat sijil yang ditandatangani sendiri tetapi sering terbawa-bawa ke dalam pengeluaran. Sentiasa gunakan pengesahan sijil yang betul dan betulkan isu sijil yang mendasarinya dengan sewajarnya.
Gagal Menyemak Nilai Pulangan
Fungsi kriptografi menyampaikan kegagalan melalui nilai pulangan atau pengecualian. Mengabaikan perkara ini membolehkan pelaksanaan diteruskan dengan keadaan yang tidak sah: penyahsulitan yang menghasilkan data sampah, pengesahan yang gagal atau penjanaan kunci yang mengalami ralat. Dalam API berasaskan C seperti OpenSSL, mengabaikan nilai pulangan amat berbahaya kerana program mungkin diteruskan dengan memori yang tidak dimulakan. Sentiasa semak setiap nilai pulangan daripada fungsi kriptografi dan kendalikan kegagalan dengan selamat.
Kelemahan Mod ECB
Mengapakah mod ECB (Buku Kod Elektronik) dianggap tidak selamat untuk menyulitkan data?
Ringkasan Penyalahgunaan Kriptografi
Corak penyalahgunaan utama yang perlu dielakkan: jangan sekali-kali gunakan mod ECB (kebocoran corak blok), jangan laksanakan primitif kriptografi sendiri, tolak MD5 dan SHA-1 untuk keselamatan, benihkan PRNG menggunakan CSPRNG dan bukannya time(), gunakan CSPRNG untuk semua kerawak yang sensitif terhadap keselamatan, sentiasa sahkan data yang disulitkan (AEAD), jangan sekali-kali tetapkan kunci atau IV secara terus dalam kod, jana IV baharu bagi setiap penyulitan, gunakan Argon2id untuk kata laluan dan bukannya cincangan pantas, sentiasa sahkan sijil TLS, dan semak setiap nilai pulangan kriptografi.
Pelajari Cryptology Academy dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 67
- Pelajaran
- 261
Soalan Lazim
Adakah pelajaran “Corak Salah Guna Kriptografi Teratas” percuma?
Ya — teks penuh “Corak Salah Guna Kriptografi Teratas” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Cryptology Academy, tingkat taraf kepada CoddyKit PRO. Kursus Cryptology Academy merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Corak Salah Guna Kriptografi Teratas”?
Tinjau kesilapan pembangun yang paling lazim: mod ECB, pembenihan PRNG yang lemah dan membina kripto sendiri. Anda berlatih Cryptology Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Cryptology Academy?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Cryptology Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 4 daripada 4.
Berapa lamakah pelajaran “Corak Salah Guna Kriptografi Teratas” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Cryptology Academy ini?
Ya. Setiap pelajaran Cryptology Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Serangan Padding Oracle secara Terperinci
- Serangan Ulangan dan Kerentanan Penggunaan Semula Nonce
- Serangan Pemasaan pada Kod Tahap Aplikasi
- Corak Salah Guna Kriptografi Teratas