Skip to content

ElGamal Kriptosistemi ve Ayrık Logaritma Problemi

RSA algoritmasının çarpanlara ayırma zorluğuna dayanan yapısını inceledikten sonra, asimetrik kriptografinin bir diğer devasa sütunu olan ElGamal Kriptosistemini ele alacağız. 1985 yılında Taher ElGamal tarafından geliştirilen bu algoritma, gücünü soyut cebir ve sayı teorisinin en güvenilir problemlerinden biri kabul edilen Ayrık Logaritma Probleminden (Discrete Logarithm Problem - DLP) alır.

ElGamal algoritması, Diffie-Hellman anahtar değişim protokolünün şifreleme ve deşifreleme yapabilecek şekilde genişletilmiş bir modifikasyonudur. Günümüzde yaygın olarak kullanılan Eliptik Eğri Kriptografisinin (ECC) de temel mantıksal şemasını oluşturur.

📌 Gerekli Matematiksel Ön Bilgiler: Ayrık Logaritma Problemi (DLP)

Bir p asal sayısı ve Zp çarpımsal grubunun bir g üreteci (generator) verildiğinde;

yga(modp)

eşitliğini sağlayan a üssünü bulma işlemine ayrık logaritma problemi denir (a=loggy(modp)).

Eğer p yeterince büyük seçilirse (modern standartlarda en az 2048 bit), a ve g değerlerinden y'yi hesaplamak (üslü ifade) polinomsal zamanda çok kolayken; y ve g değerlerinden hareketle gizli olan a'yı bulmak bilgisayarsal olarak imkansızdır (üstel zaman gerektirir).


🔑 Anahtar Üretim Süreci (Key Generation)

Mesaj alıcısı, kendisine ait açık ve gizli anahtar çiftini kurgulamak için şu adımları izler:

  1. Çok büyük bir p asal sayısı seçilir.
  2. Zp grubuna ait bir g üreteci belirlenir. (g'nin kuvvetleri mod p'de gruptaki tüm elemanları üretmelidir).
  3. 1<a<p1 aralığında rastgele bir gizli anahtar (private key) a seçilir.
  4. Bu gizli anahtara karşılık gelen kamusal değer y hesaplanır:yga(modp)
  • Açık Anahtar (Public Key): (p,g,y) üçlüsüdür ve herkesin erişimine açılır.
  • Gizli Anahtar (Private Key): Sadece alıcıda saklanan a tam sayısıdır.

🔒 Fonksiyonların Tanımı ve Doğruluk İspatı

Tanım: ElGamal Şifreleme ve Deşifreleme Fonksiyonları

Gönderici, iletmek istediği açık metni mZp şartını sağlayan sayısal bir mesaja dönüştürür. Burada:

  • g: Zp grubunun kamusal üreteci (generator),
  • y: Alıcının gizli anahtarına (a) karşılık gelen ve yga(modp) şeklinde hesaplanan kamusal açık anahtarıdır (public key).

Şifreleme fonksiyonu e(p,g,y), şifreleme sürecine rastgelesellik katmak amacıyla her mesaj için 1<k<p1 aralığında, gcd(k,p1)=1 şartını sağlayan geçici (ephemeral) bir k tamsayısı seçer. Şifreli metin bir sayı çiftinden ((c1,c2)) oluşur:

e(p,g,y)(m,k)=(c1,c2)c1gk(modp)c2myk(modp)

Alıcı, kendisine ulaşan (c1,c2) şifreli metin çiftini kendi a gizli anahtarını kullanan deşifreleme fonksiyonu da ile çözer:

da(c1,c2)c2(c1a)1(modp)

Teorem: ElGamal Algoritmasının Doğruluğu

Her mZp açık metni ve rastgele seçilen her k geçici anahtarı için, deşifreleme fonksiyonu orijinal mesajı hatasız bir şekilde geri döndürür.

İspat

Deşifreleme fonksiyonunun tanımından yola çıkarak c1 ve c2 bileşenlerini yerlerine koyalım:

da(c1,c2)c2(c1a)1(modp)

Şifreleme adımından biliyoruz ki c1gk(modp) ve c2myk(modp)'dir. Ayrıca açık anahtar tanımından yga(modp) eşitliği geçerlidir. Bu ifadeleri denklemde yerine yazıp üslü sayılar kurallarına göre düzenleyelim:

c2(c1a)1(myk)((gk)a)1(modp)(m(ga)k)(gka)1(modp)mgakgak(modp)mgakak(modp)mg0(modp)m1m(modp)

Burada gak ifadesi ile şifreleme sırasında oluşturulan ortak gizli bilgi (shared secret), deşifreleme esnasında c1a işlemiyle alıcı tarafından yeniden üretilmiş ve çarpımsal tersi alınarak sistemden sadeleştirilmiştir. Böylece deşifre işleminin doğruluğu kanıtlanmış olur.

📌 Olasılıksal Şifreleme (Probabilistic Encryption)

RSA kriptosisteminde aynı m mesajı aynı açık anahtarla şifrelendiğinde her zaman aynı c şifreli metnini üretir (deterministik yapı). Bu durum, saldırganların tahmin yürüterek frekans analizi yapmasına olanak tanır.

ElGamal'de ise şifreleme fonksiyonuna dahil olan geçici k parametresi sayesinde, aynı m mesajı aynı anahtarla defalarca şifrelense bile her seferinde tamamen farklı bir (c1,c2) çifti üretilir. Bu özellik ElGamal'i semantik olarak çok daha güvenli kılar.


📝 Çözümlü Uygulama

Örnek: Bir ElGamal kurgusunda kamusal parametreler p=11 ve üreteç g=2 olarak seçilmiştir. Alıcının gizli anahtarı a=3 olduğuna göre açık anahtarı hesaplayınız. Ardından göndericinin k=4 geçici anahtarını kullanarak şifrelediği m=5 açık metnine ait (c1,c2) şifreli metnini bulunuz ve bu şifreli metni deşifre ediniz.

💡 Çözümü Göster / Gizle

1. Anahtar Üretim Aşaması:

  • Verilenler: p=11, g=2, a=3.
  • Kamusal değer y hesaplanır:yga(modp)y23(mod11)=8
  • Açık Anahtar: (p,g,y)=(11,2,8)
  • Gizli Anahtar: a=3

2. Şifreleme Aşaması: Gönderici m=5 mesajını ve rastgele seçtiği k=4 değerini kullanarak şifreli metin bileşenlerini üretir:

  • c1 bileşeni:

    c1gk(modp)c124(mod11)=165(mod11)
  • c2 bileşeni:

    c2myk(modp)c2584(mod11)

    8'in kuvvetlerini mod 11 altında indirgeyelim:

    818(mod11)82=6492(mod11)84(2)2=4(mod11)

    O halde c2 değeri:

    c254=209(mod11)
  • Şifreli Metin Çifti: (c1,c2)=(5,9)

3. Deşifreleme Aşaması: Alıcı (5,9) şifreli metnini alır ve kendi gizli anahtarı a=3 ile deşifre fonksiyonunu çalıştırır:

mc2(c1a)1(modp)
  • Adım A: Öncelikle ortak gizli bilgi olan c1a değerini hesaplayalım:

    c1a53(mod11)=125(mod11)

    125 sayısının 11 ile bölümünden kalan (1111=121):

    125121=4c1a4(mod11)
  • Adım B: Şimdi bu değerin mod 11 altındaki çarpımsal tersini ((4)1) bulmalıyız. Sağlanması gereken şart:

    4(4)11(mod11)

    Deneme veya Genişletilmiş Öklid ile; 43=121(mod11) olduğundan, çarpımsal ters 3 olarak bulunur.

  • Adım C: Son olarak formülü tamamlayıp mesajı çözelim:

    m93(mod11)=27(mod11)

    27 sayısının mod 11 altındaki dengi (112=22):

    2722=5m=5

Sonuç: Ayrık logaritma asimetrisine dayanan ElGamal kriptosistemi başarıyla çalışmış ve orijinal açık metin olan m=5 değerine kayıpsız bir şekilde geri dönülmüştür.

Akademik amaçlarla tasarlanmış açık kaynaklı eğitim arşivi. Bu sitedeki tüm ders notları ve içerikler CC BY-NC-SA 4.0 Lisansı ile korunmaktadır.