Membangkitkan Kunci, Nonce & IV dengan Aman
Gunakan secrets, os.urandom, dan pembungkus yang aman dalam Python dan Node.
Membangkitkan Kunci, Nonce & IV dengan Aman 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.
Tiga Kategori
Tiga jenis nilai kriptografis yang berbeda perlu dibuat secara aman: (1) Kunci—berumur panjang, harus tidak dapat diprediksi dan rahasia. (2) IV—per pesan, boleh bersifat publik tetapi harus tidak dapat diprediksi (CBC) atau unik (GCM). (3) Nonce—harus unik untuk setiap penggunaan, boleh acak atau tidak.
Kunci Simetris
AES-128: secrets.token_bytes(16). AES-256: secrets.token_bytes(32). ChaCha20: secrets.token_bytes(32). Jangan pernah menurunkan kunci dari kata sandi tanpa KDF (PBKDF2/Argon2). Jangan pernah menggunakan ulang kunci di antara algoritme atau tujuan yang berbeda.
Pembuatan Kunci Asimetris
from cryptography.hazmat.primitives.asymmetric import ec, rsa rsa_key = rsa.generate_private_key(public_exponent=65537, key_size=2048) ec_key = ec.generate_private_key(ec.SECP256R1()) # The library handles entropy sourcing internally
IV untuk AES-CBC
AES-CBC memerlukan IV 16 byte yang acak secara seragam untuk setiap pesan. Jangan pernah menggunakan ulang IV dengan kunci yang sama. Jangan pernah menggunakan pencacah sebagai IV dalam mode CBC. Buat: iv = os.urandom(16). Tambahkan IV di depan teks tersandi—IV tidak perlu dirahasiakan, hanya perlu tidak dapat diprediksi.
Nonce untuk AES-GCM
AES-GCM memerlukan nonce 96 bit yang unik untuk setiap pasangan (kunci, pesan). Penggunaan ulang nonce merusak GCM secara fatal: penyerang dapat memulihkan kunci autentikasi dan memalsukan pesan. Gunakan nonce acak 12 byte (batas paradoks ulang tahun pada 2^32 pesan) atau pencacah.
Nonce Berbasis Pencacah
Untuk enkripsi volume tinggi dengan satu kunci: pertahankan pencacah persisten untuk setiap kunci. nonce = counter.to_bytes(12, "big"). Tambah pencacah setelah setiap enkripsi. Simpan pencacah ke penyimpanan persisten—penyetelan ulang saat mulai ulang menyebabkan penggunaan ulang.
AEAD Tahan terhadap Penyalahgunaan Nonce
AES-GCM-SIV dan Deoxys-II tahan terhadap penyalahgunaan nonce: penggunaan ulang nonce menurunkan keamanan menjadi setara dengan enkripsi deterministik (tidak ada kebocoran kunci autentikasi). Keduanya direkomendasikan ketika keunikan nonce sulit dijamin (sistem terdistribusi, skenario mogok lalu mulai ulang).
HKDF untuk Penurunan Kunci
Jangan gunakan material kunci mentah secara langsung untuk berbagai tujuan. Turunkan kunci khusus tujuan: from cryptography.hazmat.primitives.kdf.hkdf import HKDF. hkdf = HKDF(SHA256(), 32, salt, info=b"enc_key"). key = hkdf.derive(master_key). Gunakan info yang berbeda untuk setiap tujuan.
Kunci Sesi
Turunkan kunci khusus sesi dari rahasia bersama (misalnya keluaran ECDH) menggunakan HKDF. TLS 1.3 menurunkan kunci klien/server terpisah untuk proses jabat tangan dan data aplikasi. Kunci sesi mengisolasi kompromi: mengetahui satu kunci sesi tidak mengungkapkan apa pun tentang sesi lainnya.
Pembungkusan Kunci
Untuk menyimpan kunci dengan aman, bungkus kunci tersebut dengan Kunci Enkripsi Kunci (KEK) menggunakan AES-KW (RFC 3394) atau AES-GCM. Kunci yang dibungkus dapat disimpan dalam basis data atau dikirimkan. KEK disimpan dalam HSM atau penyimpanan kunci berbasis perangkat keras (Android Keystore, Apple Secure Enclave).
Daftar Periksa Audit
Periksa sebelum penerapan: (1) semua kunci berasal dari os.urandom/secrets. (2) Tidak ada kunci/IV yang ditanamkan secara permanen. (3) IV tidak pernah digunakan ulang dengan kunci yang sama. (4) Nonce GCM unik untuk setiap pesan. (5) Jadwal rotasi kunci telah ditetapkan. (6) Penurunan kunci menggunakan HKDF dengan teks info yang berbeda.
Pemeriksaan Singkat
Apa akibat penggunaan ulang nonce dalam AES-GCM?
Rangkuman
Kunci memerlukan pembuatan acak sejati; IV CBC memerlukan keacakan; nonce GCM memerlukan keunikan. Gunakan os.urandom/secrets, turunkan kunci dengan HKDF, dan bungkus dengan KEK. AEAD yang tahan terhadap penyalahgunaan nonce melindungi dari penggunaan ulang yang tidak disengaja. Berikutnya: Pembuktian Tanpa Pengetahuan.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Membangkitkan Kunci, Nonce & IV dengan Aman” gratis?
Ya — teks lengkap “Membangkitkan Kunci, Nonce & IV dengan Aman” 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 “Membangkitkan Kunci, Nonce & IV dengan Aman”?
Gunakan secrets, os.urandom, dan pembungkus yang aman dalam Python dan Node. 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 “Membangkitkan Kunci, Nonce & IV dengan Aman” 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
- Keacakan Sejati vs Keacakan Semu
- PRNG yang Aman secara Kriptografis
- Kekurangan Entropi & Kesalahan Kunci Lemah
- Membangkitkan Kunci, Nonce & IV dengan Aman