Lab 9: Diffie-Hellman - Bertukar Kunci di Channel Publik
Target: Memahami bagaimana dua pihak bisa membuat kunci rahasia bersama melalui komunikasi tidak aman
Tools:python3
Konsep
Diffie-Hellman memungkinkan Alice dan Bob membuat kunci rahasia bersama meskipun semua komunikasi mereka dipantau. Ini adalah fondasi dari Perfect Forward Secrecy di TLS.
Cara kerja (sederhana):
- Setuju pada angka publik:
g = 5, p = 23 - Alice pilih rahasia
a=6, kirim:A = g^a mod p - Bob pilih rahasia
b=15, kirim:B = g^b mod p - Alice hitung:
s = B^a mod p - Bob hitung:
s = A^b mod p - Keduanya punya kunci yang sama! Tapi tidak ada yang tahu a atau b.
Praktikum
cd ~ && mkdir crypto-lab9 && cd crypto-lab9
python3 << 'PYEOF'
import random
# Parameter publik (semua orang tahu ini)
p = 23 # prime (kecil untuk edukasi - di dunia nyata 2048-bit)
g = 5 # generator
# Alice
a = random.randint(1, p-1)
A = pow(g, a, p)
# Bob
b = random.randint(1, p-1)
B = pow(g, b, p)
# Tukar A dan B via channel publik
print(f"Parameter publik: p={p}, g={g}")
print(f"Alice kirim: A={A} (a rahasia={a})")
print(f"Bob kirim: B={B} (b rahasia={b})")
print()
# Alice hitung shared secret
s_alice = pow(B, a, p)
print(f"Alice hitung: s = B^a mod p = {s_alice}")
# Bob hitung shared secret
s_bob = pow(A, b, p)
print(f"Bob hitung: s = A^b mod p = {s_bob}")
print()
print(f"✅ Shared secret: {s_alice} (sama!)")
print()
# Demonstrasi: Eve (penyadap) tahu p, g, A, B tapi tidak tahu a, b
print("=== Eve (Penyadap) ==*")
print(f"Eve tahu: p={p}, g={g}, A={A}, B={B}")
print(f"Eve TIDAK tahu: a={a}, b={b}")
print(f"Untuk p=23, mudah dihitung (coba cari a dari A=g^a mod 23)")
print(f"Tapi untuk p=2048-bit, butuh waktu ribuan tahun!")
PYEOF
️ Analisis
| Aspek | Keterangan |
|---|---|
| Kekuatan | Bergantung pada Discrete Logarithm Problem (DLP) |
| MitM | Rentan Man-in-the-Middle - butuh authentication |
| Forward Secrecy | Jika key session bocor, session sebelumnya tetap aman |
| Penggunaan | TLS, SSH, IPsec, Signal Protocol |
Refleksi: Diffie-Hellman adalah keajaiban matematika - dua orang bisa membuat rahasia bersama tanpa pernah bertemu. Tapi tanpa authentication, Eve bisa menjadi Man-in-the-Middle. Solusi: authenticated DH (misal: menggunakan signature RSA).
Generated by @farishhz Agent Pentest Pipeline - TDCTF Security Academy