Diffie-Hellman Kalit Almashish
DH nima?
Diffie-Hellman (1976) — ochiq kanal orqali maxfiy kalit almashish protokoli. Ikkala tomon birgalikda hech kim bilib olmaydigan umumiy sir yaratadi.
🎨 Rang analogi
Alice va Bob bir xil umumiy rang bilishadi (sariq). Har biri o'ziga maxfiy rang tanlaydi va umumiy rang bilan aralashtiradi. So'ng aralashtirgan ranglarini almashtirishadi. Endi har biri uchala rangni biladi va bir xil umumiy rangga ega bo'ladi!
Matematik asosi
Ochiq parametrlar: g (generator), p (tub son)
Alice: a (maxfiy) → A = ga mod p (ochiq)
Bob: b (maxfiy) → B = gb mod p (ochiq)
Umumiy kalit: K = Ab mod p = Ba mod p = gab mod p
def diffie_hellman():
# Ochiq parametrlar
p = 23 # Kichik tub son (haqiqiyda 2048+ bit)
g = 5 # Generator
# Alice ning maxfiy kaliti
a = 6
A = pow(g, a, p) # A = 5^6 mod 23 = 8
print(f"Alice yuboradi: A = {A}")
# Bob ning maxfiy kaliti
b = 15
B = pow(g, b, p) # B = 5^15 mod 23 = 19
print(f"Bob yuboradi: B = {B}")
# Umumiy kalit hisoblash
K_alice = pow(B, a, p) # K = 19^6 mod 23 = 2
K_bob = pow(A, b, p) # K = 8^15 mod 23 = 2
print(f"Alice kaliti: {K_alice}")
print(f"Bob kaliti: {K_bob}")
assert K_alice == K_bob, "Kalit mos kelmadi!"
return K_alice
shared_key = diffie_hellman()
print(f"Umumiy sir kalit: {shared_key}") # 2
DH xavfsizlik muammolari
🕵️ MITM hujumi
Alice va Bob o'rtasida turgan tajovuzkor ikkala tomonga ham o'z ochiq kalitini yuboradi.
🔢 Kichik p
p kichik bo'lsa, diskret logarifm brute force bilan topiladi.
🔄 Statik kalit
Har sessiyada yangi a va b ishlatilmasa, forward secrecy yo'q.
💡 Bu mavzu bo'yicha amaliy mashq qilishni istaysizmi?
Asimmetrik challengelarini ko'rish →