Panduan komprehensif ini meneroka konsep encryption lanjutan, algoritma, dan protokol yang digunakan dalam sistem komunikasi selamat moden. Sesuai untuk pembangun dan profesional keselamatan.
Algoritma Symmetric Encryption
AES (Advanced Encryption Standard)
Standard emas untuk symmetric encryption, diterima pakai oleh kerajaan A.S. pada tahun 2001.
Ciri-ciri Utama
- Saiz key: 128, 192, atau 256 bit
- Saiz blok: 128 bit
- Rounds: 10, 12, atau 14 bergantung pada saiz key
- Prestasi: Sangat dioptimumkan, pecutan perkakasan tersedia
Mod Biasa
- GCM (Galois/Counter Mode): Authenticated encryption, disyorkan untuk kebanyakan kes penggunaan
- CBC (Cipher Block Chaining): Mod tradisional, memerlukan MAC berasingan
- CTR (Counter): Boleh diparalelkan, digunakan dalam beberapa protokol
ChaCha20
Stream cipher moden direka oleh Daniel J. Bernstein, semakin popular sebagai alternatif AES.
Kelebihan
- Lebih pantas daripada AES pada peranti tanpa pecutan perkakasan
- Implementasi constant-time (tahan terhadap timing attacks)
- Reka bentuk mudah, lebih mudah untuk dilaksanakan dengan selamat
- Digunakan dengan Poly1305 untuk authenticated encryption
Asymmetric Encryption
RSA (Rivest-Shamir-Adleman)
Digunakan secara meluas untuk key exchange dan digital signatures.
Pertimbangan Utama
- Saiz key minimum: 2048 bit (4096 bit disyorkan untuk keselamatan jangka panjang)
- Prestasi: Mahal dari segi pengiraan berbanding symmetric encryption
- Skim padding: Gunakan OAEP untuk encryption, PSS untuk signatures
- Ancaman quantum: Terdedah kepada komputer quantum (algoritma Shor)
Elliptic Curve Cryptography (ECC)
Alternatif yang lebih cekap kepada RSA dengan keselamatan setara pada saiz key yang lebih kecil.
Curve Popular
- Curve25519: Direka untuk ECDH key exchange, diterima pakai secara meluas
- Ed25519: Untuk digital signatures, digunakan dalam SSH, GPG
- P-256 (secp256r1): Standard NIST, disokong secara meluas
- P-384, P-521: Tahap keselamatan lebih tinggi
Kelebihan Berbanding RSA
- 256-bit ECC ≈ keselamatan 3072-bit RSA
- Pengiraan lebih pantas
- Key dan signatures lebih kecil
- Keperluan bandwidth dan penyimpanan lebih rendah
Protokol Key Exchange
Diffie-Hellman (DH)
Membolehkan dua pihak mewujudkan shared secret melalui saluran tidak selamat.
Varian
- Classic DH: Implementasi asal
- ECDH: Versi Elliptic Curve (lebih cekap)
- X25519: ECDH moden menggunakan Curve25519
Perfect Forward Secrecy (PFS)
Memastikan komunikasi lepas kekal selamat walaupun key jangka panjang terjejas.
Implementasi
- Jana pasangan key ephemeral untuk setiap sesi
- Musnahkan session keys selepas digunakan
- Digunakan dalam TLS 1.3, Signal Protocol, dll.
Hash Functions
Keluarga SHA-2
- SHA-256: Output 256-bit, digunakan secara meluas
- SHA-384, SHA-512: Tahap keselamatan lebih tinggi
- Aplikasi: Digital signatures, pengesahan sijil, password hashing (dengan teknik yang betul)
SHA-3 (Keccak)
- Pembinaan berbeza daripada SHA-2 (sponge function)
- Tahan terhadap length extension attacks
- Sesuai untuk aplikasi yang memerlukan margin keselamatan tinggi
BLAKE2/BLAKE3
- Lebih pantas daripada SHA-2 dan SHA-3
- Selamat secara kriptografi
- BLAKE3: Sangat boleh diparalelkan, cemerlang untuk data besar
Key Derivation Functions (KDFs)
PBKDF2 (Password-Based Key Derivation Function 2)
- Tujuan: Dapatkan key kriptografi daripada password
- Iterations: Minimum 100,000 (cadangan OWASP)
- Kes penggunaan: Penyimpanan password, key derivation
Argon2
Pemenang Password Hashing Competition (2015), disyorkan untuk aplikasi baharu.
Varian
- Argon2id: Hibrid (disyorkan untuk kebanyakan kes penggunaan)
- Argon2i: Dioptimumkan terhadap side-channel attacks
- Argon2d: Rintangan maksimum terhadap serangan GPU
scrypt
- Fungsi memory-hard (tahan terhadap serangan perkakasan)
- Digunakan oleh Litecoin, Tarsnap
- Keseimbangan baik antara keselamatan dan keserasian
Message Authentication Codes (MACs)
HMAC (Hash-based MAC)
- Menggabungkan hash function dengan secret key
- Menyediakan pengesahan dan integriti
- Biasa: HMAC-SHA256, HMAC-SHA512
Poly1305
- Authenticator sekali guna
- Digunakan dengan ChaCha20 untuk authenticated encryption
- Pantas dan constant-time
Authenticated Encryption
Mengapa Ia Penting
Encryption sahaja tidak menjamin integriti. Penyerang boleh mengubah suai ciphertext tanpa dikesan. Authenticated encryption menyelesaikan masalah ini.
AEAD (Authenticated Encryption with Associated Data)
- AES-GCM: Paling disokong secara meluas
- ChaCha20-Poly1305: Lebih baik pada peranti mudah alih
- AES-CCM: Digunakan dalam beberapa protokol wayarles
Digital Signatures
RSA Signatures
- Padding: Gunakan PSS (Probabilistic Signature Scheme)
- Hash function: SHA-256 atau lebih tinggi
- Saiz key: 2048 bit minimum
ECDSA (Elliptic Curve Digital Signature Algorithm)
- Signatures lebih kecil daripada RSA
- Memerlukan penjanaan nonce yang berhati-hati (RNG lemah = key terjejas)
- Varian deterministik (RFC 6979) disyorkan
Ed25519
- Deterministik (tidak memerlukan RNG)
- Penjanaan dan pengesahan signature pantas
- Signatures kecil (64 bytes)
- Tahan terhadap side-channel attacks
Protokol Moden
Signal Protocol
Protokol end-to-end encryption terkini digunakan oleh Signal, WhatsApp, Facebook Messenger.
Ciri-ciri Utama
- Double Ratchet: Mengemaskini key secara berterusan
- Perfect Forward Secrecy: Mesej lepas kekal selamat
- Post-Compromise Security: Pulih daripada key compromise
- Asynchronous: Berfungsi walaupun penerima offline
TLS 1.3
Versi terkini protokol Transport Layer Security.
Penambahbaikan
- Menghapuskan algoritma lemah dan cipher suites
- Sentiasa menyediakan forward secrecy
- Handshake lebih pantas (1-RTT, pilihan 0-RTT)
- Encrypted Server Hello
Noise Protocol Framework
Framework protokol kriptografi moden untuk membina sistem komunikasi selamat.
Aplikasi
- WireGuard VPN
- Lightning Network
- I2P messaging
Post-Quantum Cryptography
Ancaman
Komputer quantum boleh memecahkan RSA dan ECC menggunakan algoritma Shor. Algoritma simetri kurang terjejas tetapi memerlukan key yang lebih besar.
Calon Post-Quantum NIST
- Kyber: Key encapsulation berasaskan lattice
- Dilithium: Digital signatures berasaskan lattice
- SPHINCS+: Signatures berasaskan hash
Strategi Peralihan
- Pendekatan hibrid: Gabungkan algoritma klasik dan post-quantum
- Tingkatkan saiz symmetric key kepada 256 bit
- Pantau proses penyeragaman NIST
- Rancang untuk algorithm agility
Amalan Terbaik Implementasi
Jangan Buat Crypto Sendiri
Gunakan perpustakaan yang mantap dan disemak rakan sebaya:
- libsodium: Tahap tinggi, mudah digunakan
- OpenSSL: Komprehensif, disokong secara meluas
- BoringSSL: Fork OpenSSL Google
- Ring: Perpustakaan kriptografi Rust
Pengurusan Key
- Gunakan hardware security modules (HSMs) untuk key kritikal
- Laksanakan dasar key rotation
- Jangan sekali-kali hardcode key dalam kod sumber
- Gunakan key derivation untuk pelbagai tujuan
- Padamkan key dengan selamat dari memori selepas digunakan
Penjanaan Nombor Rawak Selamat
- Gunakan RNG selamat secara kriptografi (CSPRNG)
- Jangan sekali-kali gunakan fungsi rand() standard
- RNG sistem operasi: /dev/urandom (Linux), CryptGenRandom (Windows)
- Khusus bahasa: crypto.randomBytes (Node.js), modul secrets (Python)
Pencegahan Timing Attack
- Gunakan perbandingan constant-time untuk secrets
- Elakkan branching berdasarkan data rahsia
- Sedar tentang cache timing attacks
- Gunakan perpustakaan yang direka dengan rintangan timing attack
Pengujian dan Pengesahan
Audit Keselamatan
- Pengujian penembusan berkala
- Semakan kod oleh pakar keselamatan
- Audit keselamatan pihak ketiga
- Program bug bounty
Pematuhan
- FIPS 140-2/3: Standard kerajaan A.S.
- Common Criteria: Pensijilan keselamatan antarabangsa
- PCI DSS: Keperluan industri kad pembayaran
Sumber untuk Pembelajaran Lanjut
Buku
- "Cryptography Engineering" oleh Ferguson, Schneier, dan Kohno
- "Serious Cryptography" oleh Jean-Philippe Aumasson
- "Applied Cryptography" oleh Bruce Schneier
Sumber Online
- Cryptopals Crypto Challenges
- Kursus Cryptography Stanford (Coursera)
- IACR ePrint Archive
- Crypto Stack Exchange