Panduan komprehensif ini mengeksplorasi konsep enkripsi tingkat lanjut, algoritma, dan protokol yang digunakan dalam sistem komunikasi aman modern. Ideal untuk developer dan profesional keamanan.
Algoritma Enkripsi Simetris
AES (Advanced Encryption Standard)
Standar emas untuk enkripsi simetris, diadopsi oleh pemerintah AS pada tahun 2001.
Fitur Utama
- Ukuran key: 128, 192, atau 256 bit
- Ukuran block: 128 bit
- Rounds: 10, 12, atau 14 tergantung ukuran key
- Performa: Sangat optimal, akselerasi hardware tersedia
Mode Umum
- GCM (Galois/Counter Mode): Authenticated encryption, direkomendasikan untuk sebagian besar kasus
- CBC (Cipher Block Chaining): Mode tradisional, memerlukan MAC terpisah
- CTR (Counter): Dapat diparalelkan, digunakan dalam beberapa protokol
ChaCha20
Stream cipher modern yang dirancang oleh Daniel J. Bernstein, semakin populer sebagai alternatif AES.
Keunggulan
- Lebih cepat dari AES pada perangkat tanpa akselerasi hardware
- Implementasi constant-time (tahan terhadap timing attack)
- Desain sederhana, lebih mudah diimplementasikan dengan aman
- Digunakan dengan Poly1305 untuk authenticated encryption
Enkripsi Asimetris
RSA (Rivest-Shamir-Adleman)
Banyak digunakan untuk key exchange dan digital signature.
Pertimbangan Key
- Ukuran key minimum: 2048 bit (4096 bit direkomendasikan untuk keamanan jangka panjang)
- Performa: Komputasi mahal dibandingkan enkripsi simetris
- Skema padding: Gunakan OAEP untuk enkripsi, PSS untuk signature
- Ancaman quantum: Rentan terhadap komputer quantum (algoritma Shor)
Elliptic Curve Cryptography (ECC)
Alternatif yang lebih efisien dari RSA dengan keamanan setara pada ukuran key yang lebih kecil.
Curve Populer
- Curve25519: Dirancang untuk ECDH key exchange, banyak diadopsi
- Ed25519: Untuk digital signature, digunakan dalam SSH, GPG
- P-256 (secp256r1): Standar NIST, didukung luas
- P-384, P-521: Level keamanan lebih tinggi
Keunggulan Dibanding RSA
- ECC 256-bit ≈ keamanan RSA 3072-bit
- Komputasi lebih cepat
- Key dan signature lebih kecil
- Kebutuhan bandwidth dan penyimpanan lebih rendah
Protokol Key Exchange
Diffie-Hellman (DH)
Memungkinkan dua pihak untuk membuat shared secret melalui channel yang tidak aman.
Varian
- Classic DH: Implementasi asli
- ECDH: Versi Elliptic Curve (lebih efisien)
- X25519: ECDH modern menggunakan Curve25519
Perfect Forward Secrecy (PFS)
Memastikan komunikasi masa lalu tetap aman bahkan jika key jangka panjang dikompromikan.
Implementasi
- Generate ephemeral key pair untuk setiap sesi
- Hancurkan session key setelah digunakan
- Digunakan dalam TLS 1.3, Signal Protocol, dll.
Hash Function
Keluarga SHA-2
- SHA-256: Output 256-bit, banyak digunakan
- SHA-384, SHA-512: Level keamanan lebih tinggi
- Aplikasi: Digital signature, validasi sertifikat, password hashing (dengan teknik yang tepat)
SHA-3 (Keccak)
- Konstruksi berbeda dari SHA-2 (sponge function)
- Tahan terhadap length extension attack
- Cocok untuk aplikasi yang memerlukan margin keamanan tinggi
BLAKE2/BLAKE3
- Lebih cepat dari SHA-2 dan SHA-3
- Aman secara kriptografi
- BLAKE3: Sangat dapat diparalelkan, sangat baik untuk data besar
Key Derivation Function (KDF)
PBKDF2 (Password-Based Key Derivation Function 2)
- Tujuan: Menurunkan cryptographic key dari password
- Iterasi: Minimum 100.000 (rekomendasi OWASP)
- Use case: Penyimpanan password, key derivation
Argon2
Pemenang Password Hashing Competition (2015), direkomendasikan untuk aplikasi baru.
Varian
- Argon2id: Hybrid (direkomendasikan untuk sebagian besar kasus)
- Argon2i: Dioptimalkan terhadap side-channel attack
- Argon2d: Resistensi maksimum terhadap GPU attack
scrypt
- Memory-hard function (tahan terhadap hardware attack)
- Digunakan oleh Litecoin, Tarsnap
- Keseimbangan baik antara keamanan dan kompatibilitas
Message Authentication Code (MAC)
HMAC (Hash-based MAC)
- Menggabungkan hash function dengan secret key
- Menyediakan autentikasi dan integritas
- Umum: HMAC-SHA256, HMAC-SHA512
Poly1305
- One-time authenticator
- Digunakan dengan ChaCha20 untuk authenticated encryption
- Cepat dan constant-time
Authenticated Encryption
Mengapa Penting
Enkripsi saja tidak menjamin integritas. Penyerang dapat memodifikasi ciphertext tanpa terdeteksi. Authenticated encryption menyelesaikan masalah ini.
AEAD (Authenticated Encryption with Associated Data)
- AES-GCM: Paling banyak didukung
- ChaCha20-Poly1305: Lebih baik pada perangkat mobile
- AES-CCM: Digunakan dalam beberapa protokol wireless
Digital Signature
RSA Signature
- Padding: Gunakan PSS (Probabilistic Signature Scheme)
- Hash function: SHA-256 atau lebih tinggi
- Ukuran key: Minimum 2048 bit
ECDSA (Elliptic Curve Digital Signature Algorithm)
- Signature lebih kecil dari RSA
- Memerlukan generasi nonce yang hati-hati (RNG lemah = key dikompromikan)
- Varian deterministik (RFC 6979) direkomendasikan
Ed25519
- Deterministik (tidak memerlukan RNG)
- Generasi dan verifikasi signature cepat
- Signature kecil (64 byte)
- Tahan terhadap side-channel attack
Protokol Modern
Signal Protocol
Protokol enkripsi end-to-end terdepan yang digunakan oleh Signal, WhatsApp, Facebook Messenger.
Fitur Utama
- Double Ratchet: Terus memperbarui key
- Perfect Forward Secrecy: Pesan masa lalu tetap aman
- Post-Compromise Security: Pulih dari key compromise
- Asynchronous: Bekerja bahkan saat penerima offline
TLS 1.3
Versi terbaru dari protokol Transport Layer Security.
Peningkatan
- Menghapus algoritma dan cipher suite yang lemah
- Selalu menyediakan forward secrecy
- Handshake lebih cepat (1-RTT, opsi 0-RTT)
- Encrypted Server Hello
Noise Protocol Framework
Framework protokol kriptografi modern untuk membangun sistem komunikasi aman.
Aplikasi
- WireGuard VPN
- Lightning Network
- I2P messaging
Post-Quantum Cryptography
Ancaman
Komputer quantum dapat memecahkan RSA dan ECC menggunakan algoritma Shor. Algoritma simetris kurang terpengaruh tetapi memerlukan key yang lebih besar.
Kandidat Post-Quantum NIST
- Kyber: Key encapsulation berbasis lattice
- Dilithium: Digital signature berbasis lattice
- SPHINCS+: Signature berbasis hash
Strategi Transisi
- Pendekatan hybrid: Gabungkan algoritma klasik dan post-quantum
- Tingkatkan ukuran symmetric key menjadi 256 bit
- Pantau proses standardisasi NIST
- Rencanakan algorithm agility
Best Practice Implementasi
Jangan Buat Crypto Sendiri
Gunakan library yang sudah mapan dan peer-reviewed:
- libsodium: High-level, mudah digunakan
- OpenSSL: Komprehensif, didukung luas
- BoringSSL: Fork OpenSSL dari Google
- Ring: Library kriptografi Rust
Key Management
- Gunakan hardware security module (HSM) untuk key kritis
- Implementasikan kebijakan key rotation
- Jangan pernah hardcode key dalam source code
- Gunakan key derivation untuk berbagai tujuan
- Hapus key dari memori dengan aman setelah digunakan
Secure Random Number Generation
- Gunakan cryptographically secure RNG (CSPRNG)
- Jangan pernah gunakan fungsi rand() standar
- 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 secret
- Hindari branching berdasarkan data secret
- Waspadai cache timing attack
- Gunakan library yang dirancang dengan resistensi timing attack
Testing dan Validasi
Security Audit
- Penetration testing berkala
- Code review oleh ahli keamanan
- Security audit pihak ketiga
- Program bug bounty
Compliance
- FIPS 140-2/3: Standar pemerintah AS
- Common Criteria: Sertifikasi keamanan internasional
- PCI DSS: Persyaratan industri kartu pembayaran
Sumber untuk Pembelajaran Lebih 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