Academy / Asimmetrik / Diffie-Hellman Kalit Almashish

Diffie-Hellman Kalit Almashish

Asimmetrik O'rta

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.

← Hash Funksiyalari Modular Arifmetika →

💡 Bu mavzu bo'yicha amaliy mashq qilishni istaysizmi?

Asimmetrik challengelarini ko'rish →