0Pricing
Cryptology Academy · Pelajaran

Pola Penyalahgunaan Kriptografi Teratas

Tinjau kesalahan pengembang yang paling umum: mode ECB, penyemaian PRNG yang lemah, dan membuat kripto sendiri.

Pola Penyalahgunaan Kriptografi Teratas adalah pelajaran Cryptology Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Cryptology Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Cryptology Academy mencakup 4 pelajaran total.

Mode ECB Mengungkap Pola Blok

Mode Buku Kode Elektronik (ECB) mengenkripsi setiap blok secara independen dengan kunci yang sama. Blok teks biasa yang identik menghasilkan blok teks tersandi yang identik. Demonstrasi klasiknya adalah "penguin ECB": mengenkripsi gambar bitmap dengan ECB mempertahankan struktur gambar pada tingkat blok, sehingga garis luar penguin terlihat jelas pada teks tersandi. Mode ECB tidak menyediakan keamanan semantik dan tidak boleh digunakan untuk tujuan enkripsi praktis apa pun.

Membuat Kriptografi Sendiri

Mengimplementasikan primitif kriptografi dari nol adalah salah satu praktik paling berbahaya dalam pengembangan perangkat lunak. Kriptografi memerlukan ketepatan sempurna dalam kondisi yang bermusuhan: kebocoran waktu yang halus, kesalahan selisih satu pada pengisian, atau kesalahpahaman tentang persyaratan keamanan dapat menciptakan kerentanan yang dapat dieksploitasi dan tidak dapat dibedakan dari perilaku yang benar dalam pengujian normal. Bahkan pakar kriptografi pun dapat melakukan kesalahan implementasi; pengembang aplikasi sebaiknya hanya menggunakan pustaka yang telah diaudit dengan baik.

MD5 dan SHA-1 untuk Keamanan

MD5 telah berhasil dipatahkan untuk serangan kolisi sejak 2004; membuat dua berkas dengan hash MD5 yang sama sangat mudah secara komputasi. Serangan kolisi SHA-1 telah dibuktikan secara praktis melalui serangan SHAttered oleh Google pada 2017, yang menghasilkan dua berkas PDF dengan hash SHA-1 yang sama. Keduanya tidak boleh digunakan untuk tujuan keamanan apa pun: tanda tangan digital, integritas konten, penyimpanan kata sandi, atau HMAC. Gunakan SHA-256, SHA-3, atau BLAKE2 untuk penerapan modern.

Inisialisasi PRNG yang Dapat Diprediksi

Menggunakan time() atau nilai lain yang dapat diprediksi untuk menginisialisasi generator bilangan pseudorandom merupakan kerentanan kritis ketika keluaran PRNG digunakan untuk tujuan keamanan. Penyerang yang mengetahui perkiraan waktu pembuatan kunci dapat mencoba seluruh ruang nilai awal (semua kemungkinan cap waktu dalam rentang kecil) untuk memulihkan kunci. Contoh klasiknya adalah versi awal Netscape yang menginisialisasi pembuatan kunci SSL dengan waktu dan ID proses, yang keduanya dapat diamati oleh penyerang pada mesin yang sama.

Pemilihan PRNG yang Lemah

rand() dalam C, java.util.Random, dan modul random Python menggunakan generator kongruensial linear deterministik atau Mersenne Twister yang dirancang untuk kualitas statistik dalam simulasi, bukan untuk keamanan. Penyerang yang mengamati cukup banyak keluaran generator ini dapat merekonstruksi keadaan internalnya dan memprediksi semua keluaran berikutnya. Untuk tujuan keamanan, gunakan CSPRNG yang disediakan OS: secrets.token_bytes() dalam Python, crypto.randomBytes() dalam Node.js, atau /dev/urandom di Linux.

Enkripsi Tanpa Autentikasi

Enkripsi tanpa autentikasi hanya memberikan kerahasiaan, bukan integritas. Penyerang yang tidak dapat membaca teks biasa tetap dapat mengubah teks tersandi, yang berpotensi menyebabkan perubahan yang dapat diprediksi pada teks biasa (khususnya dalam mode CTR atau CBC). Sifat dapat dimodifikasi ini memungkinkan serangan: penyerang yang mencegat transaksi bank terenkripsi dapat membalik bit untuk mengubah jumlah transfer atau rekening tujuan tanpa mengetahui teks biasanya. Selalu gunakan enkripsi terautentikasi (AEAD).

Menanamkan Kunci dan IV secara Permanen

Menanamkan kunci enkripsi atau vektor inisialisasi ke dalam kode sumber secara permanen merupakan kerentanan kritis. Kode sumber sering disimpan dalam repositori pengendalian versi, terkadang di repositori publik. Bahkan dalam repositori privat, siapa pun yang memiliki akses ke kode memiliki kuncinya. Kunci yang ditanamkan secara permanen berarti semua instans menggunakan kunci yang sama, dan rotasi kunci memerlukan penerapan ulang. Kunci harus disimpan dalam variabel lingkungan, sistem pengelolaan rahasia (HashiCorp Vault, AWS Secrets Manager), atau modul keamanan perangkat keras.

Menggunakan Ulang Vektor Inisialisasi

Menggunakan vektor inisialisasi yang sama untuk beberapa enkripsi dengan kunci yang sama menimbulkan kerentanan serius. Dalam mode CTR, penggunaan ulang IV menghasilkan aliran kunci yang sama, sehingga pemulihan teks biasa melalui XOR dimungkinkan. Dalam mode CBC, penggunaan ulang IV memungkinkan penyerang mendeteksi kapan dua pesan dimulai dengan blok teks biasa yang sama. Dalam GCM, penggunaan ulang nonce (IV) bersifat fatal (lihat pelajaran tentang penggunaan ulang nonce). Hasilkan IV acak baru untuk setiap operasi enkripsi; tambahkan IV ke awal teks tersandi agar disimpan bersama konteks dekripsi.

Pencincangan Kata Sandi dengan Hash Cepat

Menyimpan kata sandi yang dicincang dengan MD5, SHA-256, atau fungsi hash kriptografis cepat lainnya tidak memadai. GPU modern dapat menghitung miliaran hash SHA-256 per detik, sehingga serangan pencarian menyeluruh luring terhadap basis data hash yang dicuri menjadi sangat cepat. Pencincangan kata sandi memerlukan fungsi lambat yang dirancang khusus dan membutuhkan banyak memori: bcrypt, scrypt, atau Argon2id. Fungsi-fungsi ini dirancang agar pencarian menyeluruh menjadi mahal, bahkan dengan perangkat keras khusus, sehingga serangan luring tidak layak dilakukan secara komputasi.

Mengabaikan Validasi Sertifikat

Menonaktifkan validasi sertifikat SSL/TLS (menetapkan ssl.CERT_NONE dalam Python, meneruskan -k ke curl, atau menetapkan trustAllCerts=true di Android) menghilangkan perlindungan terhadap serangan perantara. Penyerang dapat memberikan sertifikat apa pun dan mencegat seluruh komunikasi. Praktik ini muncul dalam pengembangan untuk melewati kesalahan sertifikat yang ditandatangani sendiri, tetapi sering terbawa hingga ke produksi. Selalu gunakan validasi sertifikat yang benar dan perbaiki masalah sertifikat yang mendasarinya dengan tepat.

Tidak Memeriksa Nilai Kembalian

Fungsi kriptografi menyampaikan kegagalan melalui nilai kembalian atau pengecualian. Mengabaikannya memungkinkan eksekusi berlanjut dengan keadaan yang tidak valid: dekripsi yang menghasilkan data tak bermakna, verifikasi yang gagal, atau pembuatan kunci yang mengalami kesalahan. Dalam API berbasis C seperti OpenSSL, mengabaikan nilai kembalian sangat berbahaya karena program mungkin melanjutkan eksekusi dengan memori yang belum diinisialisasi. Selalu periksa setiap nilai kembalian dari fungsi kriptografi dan tangani kegagalan dengan aman.

Kelemahan Mode ECB

Mengapa mode ECB (Buku Kode Elektronik) dianggap tidak aman untuk mengenkripsi data?

Ringkasan Penyalahgunaan Kriptografi

Pola penyalahgunaan utama yang harus dihindari: jangan pernah gunakan mode ECB (kebocoran pola blok), jangan pernah mengimplementasikan primitif kriptografi sendiri, jangan gunakan MD5 dan SHA-1 untuk keamanan, inisialisasi PRNG dengan CSPRNG bukan time(), gunakan CSPRNG untuk semua keacakan yang sensitif bagi keamanan, selalu autentikasi data terenkripsi (AEAD), jangan pernah menanamkan kunci atau IV secara permanen, hasilkan IV baru untuk setiap enkripsi, gunakan Argon2id untuk kata sandi bukan hash cepat, selalu validasi sertifikat TLS, dan periksa setiap nilai kembalian fungsi kriptografi.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Pola Penyalahgunaan Kriptografi Teratas” gratis?

Ya — teks lengkap “Pola Penyalahgunaan Kriptografi Teratas” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Cryptology Academy, upgrade ke CoddyKit PRO. Kursus Cryptology Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Pola Penyalahgunaan Kriptografi Teratas”?

Tinjau kesalahan pengembang yang paling umum: mode ECB, penyemaian PRNG yang lemah, dan membuat kripto sendiri. Kamu berlatih Cryptology Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Cryptology Academy?

Tidak diperlukan pengalaman sebelumnya. Cryptology Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.

Berapa lama pelajaran “Pola Penyalahgunaan Kriptografi Teratas” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Cryptology Academy ini?

Ya. Setiap pelajaran Cryptology Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Serangan Padding Oracle secara Mendalam
  2. Serangan Pemutaran Ulang dan Kerentanan Penggunaan Ulang Nonce
  3. Serangan Pewaktuan pada Kode Tingkat Aplikasi
  4. Pola Penyalahgunaan Kriptografi Teratas
← Kembali ke Cryptology Academy