TDCTF Academy Logo TDCTF ACADEMY

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):

  1. Setuju pada angka publik: g = 5, p = 23
  2. Alice pilih rahasia a=6, kirim: A = g^a mod p
  3. Bob pilih rahasia b=15, kirim: B = g^b mod p
  4. Alice hitung: s = B^a mod p
  5. Bob hitung: s = A^b mod p
  6. 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

PADA HALAMAN INI