1. Pengenalan Kriptografi
Kriptografi adalah ilmu dan seni melindungi informasi melalui teknik penyandian (encoding). Dalam konteks pengembangan perangkat lunak, kriptografi adalah fondasi keamanan yang melindungi data baik saat disimpan (at rest), saat dikirim (in transit), maupun saat diproses (in use). Tanpa kriptografi, tidak akan ada e-commerce, internet banking, atau komunikasi privat di era digital.
Sebagai developer, memahami kriptografi bukan berarti Anda harus menjadi ahli matematika β tetapi Anda harus tahu kapan, mengapa, dan bagaimana menggunakan primitif kriptografi yang tepat. Menggunakan kriptografi yang salah bisa lebih berbahaya daripada tidak menggunakan sama sekali, karena memberikan rasa aman palsu (false sense of security).
Konsep Dasar Kriptografi
| Konsep | Penjelasan | Contoh |
|---|---|---|
| Plaintext | Data asli yang belum dienkripsi | "Rahasia123" |
| Ciphertext | Data yang sudah dienkripsi β tidak bisa dibaca | "xK9mP2nQ..." |
| Encryption | Proses mengubah plaintext menjadi ciphertext | AES, RSA |
| Decryption | Proses mengubah ciphertext kembali menjadi plaintext | Dengan kunci yang tepat |
| Key | Nilai rahasia yang digunakan untuk enkripsi/dekripsi | 256-bit random key |
| Algorithm | Prosedur matematika untuk enkripsi/dekripsi | AES-256-GCM |
| Hashing | Fungsi satu arah β tidak bisa dibalik | SHA-256, bcrypt |
Perbedaan Kriptografi Klasik vs Modern
| Aspek | Klasik | Modern |
|---|---|---|
| Basis | Substitusi & Transposisi huruf | Matematika & komputasi kompleks |
| Keamanan | Bisa dipecahkan dengan analisis frekuensi | Komputasional infeasible untuk dipecahkan |
| Contoh | Caesar Cipher, Vigenère, Enigma | AES, RSA, ECC, ChaCha20 |
| Penggunaan | Edukasi, puzzle | TLS, SSH, blockchain, e-commerce |
Gunakan selalu library dan algoritma yang sudah teruji dan divalidasi oleh komunitas kriptografi global. Membuat "security by obscurity" (algoritma rahasia) hampir selalu berakhir dengan kegagalan. Gunakan library seperti cryptography (Python), crypto (Node.js), atau OpenSSL.
2. Symmetric Encryption
Symmetric encryption menggunakan satu kunci yang sama untuk enkripsi dan dekripsi. Kunci ini harus dirahasiakan dan dikirim ke pihak lain melalui channel yang aman. Symmetric encryption jauh lebih cepat daripada asymmetric encryption, sehingga cocok untuk mengenkripsi data dalam volume besar.
AES (Advanced Encryption Standard)
AES adalah standar enkripsi symmetric yang paling banyak digunakan di dunia. Mendukung kunci 128, 192, dan 256 bit. Disetujui oleh NSA untuk informasi classified hingga TOP SECRET.
sequenceDiagram
participant A as π Alice
participant E as ποΈ Penyerang
participant B as π Bob
Note over A,B: Shared Parameters: g (generator), p (prime)
A->>A: Pilih private key a
A->>A: Hitung A = g^a mod p
A-->>E: Kirim A (public)
E-->>B: Kirim A (public)
B->>B: Pilih private key b
B->>B: Hitung B = g^b mod p
B-->>E: Kirim B (public)
E-->>A: Kirim B (public)
A->>A: Shared Secret = B^a mod p = g^(ab)
B->>B: Shared Secret = A^b mod p = g^(ab)
Note over A,B: β
Keduanya mendapat g^(ab) yang SAMA!
Note over E: β Penyerang hanya tahu A dan B
TIDAK BISA hitung g^(ab) tanpa a atau b
ECC (Elliptic Curve Cryptography)
| Aspek | RSA | ECC |
|---|---|---|
| Key Size untuk keamanan sama | 3072-bit | 256-bit |
| Kecepatan | π‘ Lebih lambat | π’ Lebih cepat |
| Ukuran signature | Besar | Kecil |
| Cocok untuk | Legacy systems | Mobile, IoT, TLS modern |
| Contoh kurva | β | Curve25519, P-256, secp256k1 |
4. Hashing & HMAC
Hashing adalah fungsi satu arah (one-way function) yang mengubah input berapapun panjangnya menjadi output tetap (fixed-length) yang disebut hash atau digest. Berbeda dengan enkripsi, hashing TIDAK BISA DIBALIK β Anda tidak bisa mendapatkan input asli dari hash-nya. Hashing digunakan untuk verifikasi integritas data dan penyimpanan password.
Cryptographic Hash Functions
6. TLS/SSL (Transport Layer Security)
TLS (Transport Layer Security) adalah protokol kriptografi yang mengamankan komunikasi di internet. Setiap kali Anda melihat https:// di browser, itu berarti koneksi Anda dilindungi oleh TLS. TLS menggunakan kombinasi symmetric encryption (untuk kecepatan) dan asymmetric encryption (untuk pertukaran kunci awal) β ini disebut hybrid encryption.
TLS Handshake
sequenceDiagram
participant C as π₯οΈ Client
participant S as π₯οΈ Server
C->>S: Client Hello
(supported ciphers, random, key share)
S->>C: Server Hello
(chosen cipher, random, key share)
S->>C: Verify Certificate
S->>C: CertificateVerify (signature)
S->>C: Finished
Note over C,S: Derive Session Key from shared secret
C->>S: Finished
Note over C,S: π SECURE CHANNEL
AES-256-GCM / ChaCha20-Poly1305
Konfigurasi TLS yang Aman
flowchart TB
Root["ποΈ ROOT CA\n(Disimpan di browser/OS)"]
Root -->|"Signs"| Inter["π INTERMEDIATE CA\n("Let's Encrypt R3")"]
Inter -->|"Signs"| EE["π END-ENTITY CERT\n(beebanelabs.pages.dev)\nPublic Key + Identity"]
EE --> Browser["π₯οΈ Browser verifies chain"]
Browser --> Check["β
Root CA trusted?"]
Check -->|Yes| OK["β
Connection Secure"]
Check -->|No| FAIL["β Untrusted Certificate"]
style Root fill:#2a1f0a,stroke:#f59e0b,stroke-width:2px
style Inter fill:#0f1d3a,stroke:#60a5fa,stroke-width:1.5px
style EE fill:#0f2a1f,stroke:#3ecf8e,stroke-width:1.5px
style OK fill:#0a2a1f,stroke:#3ecf8e
style FAIL fill:#2a0f0f,stroke:#ef4444
8. Quiz: Uji Pemahamanmu!
Setelah membaca tutorial di atas, jawablah 5 pertanyaan berikut untuk menguji pemahamanmu tentang Kriptografi: