Yazan: Şadi Evren ŞEKER
Asimitrik şifreleme yöntemlerinden birisidir. Anahtar üretimi ve şifreleme / açma olarak iki aşamadan oluşur. Dayandığı matematiksel zorluk, dairesel gruplar (cyclic group) üzerindeki ayrık logaritmadır (discrete logarithm).
Anahtar üretme aşaması:
El Gamal şifrelemesinde dairesel gruplardan (cyclic group) faydalanılmaktadır. Alice q derecesinde bir G grubunu g üreticisi (Generator) ile üretir. Alice bu gruptan { 0 , … , q-1 } rasgele bir x değerini seçer. Alice h = gx değerini hesaplar.
Bu işlemler sonucunda Alice , g, G , q ve h değerlerini umumî anahtar (public key) olarak yayınlar.
Şifreleme aşaması (encryption):
Bob, göndermek istediği mesajı şifrelemek için Alice tarafından yayınlanan G grubundan faydalanır. Buna göre şifreli metin (cipher text) aşağıdaki şekilde adım adım hesaplanır:
Bob öncelikle Alice tarafından açık olarak yayınlanan G grubundan rasgele bir sayı seçer (bu örnekte y olarak geçecektir)
Bob iki adet sayıyı hesaplayarak Alice’e gönderir bunlar:
c1 = gy ve
c2 = m hy değerleridir. Dolayısıyla Bob, Alice’e (c1 , c2 ) çiftini yollar.
Şifre açma aşaması (decryption):
Alice, Bob’dan aldığı (c1 , c2 ) çiftini açmak için kendi hususî anahtarı olan x değerinden faydalanır.
Alice mesaja ulaşmak için basitçe ( c2 / c1x ) bölümünü hesaplar.
Bu şifreleme yönteminde G grubundan daha büyük mesajların gönderilmesi durumunda mesajı alt parçalara bölerek göndermek de mümkündür.
Merhaba, bir kaynakta plaintext’in (c2 / (c1^x)) formülüyle elde edilmesi yerine c2.(c1^(p-1-x)) şeklinde açılacağı gözüküyordu (p ile ifade edilen üzerinde çalışılan mod). Teyit etmek için soruyorum, bu iki ifade matematiksel olarak eşittir öyle değilmi. Şayet evetse 2 satır denklem çözümü ile gösterebilirseniz çok sevinirim.
Kaynak: Menezes, Applied Cryptography sf. 295
Teşekkürler.
eşittir. Ama gereksizdir 🙂
bakın ikinci denklem gereksiz yere karmaşıklaştırılmış.
c1^-x değerinin 1/c1^x olduğunu biliyoruz.
bu değer modüler aritmetikte olduğumuz için -x yerine p-1-x olarak yazılmış. Sebebi modüler aritmetikte – değerlerin moduloya tamamlanması. Örneğin -3 mod 5 = 2 olarak alınabilir.
Dolayısıyla denklemimiz
c1^p-1-x olarak yazılmış. Elbette algoritmada (El Gamal) bu değerin c2 ile çarpılması gerekiyor (ki benim yazımda da c2/c1^x formülünün payında olan c2 bu anlama gelmektedir. Denklemin son hali aşağıdaki şekilde oluyor:
c2(c1^(p-1-x))
başarılar
c2 / c1^x = c2.(c1^(-x)) 1. denklemimiz bu
c2.c1^(p-1-x) 2. denklemde bu
Dolayısıyla
c2.(c1^(-x)) = c2.c1^(p-1-x)
c2’ler sadeleştirilirse
(c1^(-x)) = c1^(p-1-x)
Tabanlar eşit olması sebebiyle üstlerde birbirlerine eşit olacaktır
(-x) = (p-1-x)
Denklemde bir eşitsizlik var sanki
Örneğin -3 mod 5 =2 örneğini vermişsiniz. p-1-x=5-1-3 ve -3 + 5 = 2 değerleri birbirlerine eşit değildir. Sizin denklemin doğru olduğu aşikar ancak menezes’in kaynağında bir yanlış noktamı var acaba?