β˜€οΈSiang
Keamanan

Kriptografi untuk Developer

Panduan lengkap memahami kriptografi bagi developer β€” symmetric dan asymmetric encryption, hashing, digital signatures, TLS/SSL, PKI, dengan contoh kode Python yang bisa langsung dipraktikkan

Artikel: Cryptography Developer Artikel: Cryptography Developer


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
PlaintextData asli yang belum dienkripsi"Rahasia123"
CiphertextData yang sudah dienkripsi β€” tidak bisa dibaca"xK9mP2nQ..."
EncryptionProses mengubah plaintext menjadi ciphertextAES, RSA
DecryptionProses mengubah ciphertext kembali menjadi plaintextDengan kunci yang tepat
KeyNilai rahasia yang digunakan untuk enkripsi/dekripsi256-bit random key
AlgorithmProsedur matematika untuk enkripsi/dekripsiAES-256-GCM
HashingFungsi satu arah β€” tidak bisa dibalikSHA-256, bcrypt

Perbedaan Kriptografi Klasik vs Modern

Aspek Klasik Modern
BasisSubstitusi & Transposisi hurufMatematika & komputasi kompleks
KeamananBisa dipecahkan dengan analisis frekuensiKomputasional infeasible untuk dipecahkan
ContohCaesar Cipher, Vigenère, EnigmaAES, RSA, ECC, ChaCha20
PenggunaanEdukasi, puzzleTLS, SSH, blockchain, e-commerce
Diagram: Jenis-Jenis Kriptografi
Jenis-Jenis Kriptografi

πŸ” KRIPTOGRAFI

πŸ”‘ Symmetric Key\n(1 kunci)

AES, DES, 3DES

ChaCha20, Blowfish

πŸ”‘ Asymmetric Key\n(2 kunci)

RSA, ECC, DH

Ed25519, X25519

#️⃣ Hashing\n(One-way)

SHA-256, SHA-3

MD5 (deprecated)

✍️ Digital Signatures\n(Autentikasi)

RSA-SHA256

ECDSA, EdDSA

⚠️ Jangan Pernah Membuat Algoritma Kriptografi Sendiri!

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 sama3072-bit256-bit
Kecepatan🟑 Lebih lambat🟒 Lebih cepat
Ukuran signatureBesarKecil
Cocok untukLegacy systemsMobile, 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

Diagram

βœ… VERIFICATION

✍️ SIGNING

Yes

No

Pesan Asli

Hash\n(SHA-256)

Sign with\nPrivate Key

Pesan + Signature

Pesan

Hash\n(SHA-256)

Signature

Verify with\nPublic Key

Match?

βœ… Autentik

❌ Ditolak



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

Diagram: TLS 1.3 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:

Pertanyaan 1: Apa perbedaan utama antara symmetric dan asymmetric encryption?

a) Symmetric lebih aman dari asymmetric
b) Symmetric menggunakan 1 kunci, asymmetric menggunakan 2 kunci (public & private)
c) Asymmetric lebih cepat dari symmetric
d) Tidak ada perbedaan

Pertanyaan 2: Mengapa SHA-256 TIDAK cocok untuk hashing password?

a) Karena SHA-256 terlalu pendek
b) Karena SHA-256 terlalu cepat β€” attacker bisa brute force miliaran hash/detik
c) Karena SHA-256 bukan fungsi hash
d) Karena SHA-256 bisa dibalik (reversible)

Pertanyaan 3: Apa yang dijamin oleh digital signature?

a) Kerahasiaan data
b) Autentikasi pengirim dan integritas data
c) Kompresi data
d) Enkripsi data

Pertanyaan 4: Algoritma symmetric encryption apa yang paling direkomendasikan saat ini?

a) DES
b) RC4
c) AES-256-GCM
d) MD5

Pertanyaan 5: Apa fungsi utama Certificate Authority (CA) dalam PKI?

a) Mengenkripsi semua data di internet
b) Mengelola password pengguna
c) Menerbitkan dan menandatangani sertifikat digital yang mengikat public key ke identitas
d) Membuat algoritma kriptografi baru
πŸ” Zoom
100%
🎨 Tema