**ElGamal imza şeması** Ayrık Logaritmanın hesaplanmasının zorluğuna dayanan bir dijital imzadır. Tahir el-Cemal tarafından 1984 yılında bulunmuştur. Açık anahtarlı kriptosistemi ve imza şeması ayrık logaritmaya dayanmaktadır.

ElGamal imza algoritması pratikte nadir kullanılır. NSA tarafından geliştirilen varyantı Dijital İmza Algoritması daha çok kullanılmaktadır. Bunun dışında başka varyantlar da vardır.ElGamal imza şeması yine Taher ElGamal tarafından bulunan ElGamal şifreleme algoritması ile karıştırılmamalıdır.

ElGamal imza şeması üçüncü şahısların güvensiz bir hattan gönderilen mesajın doğruluğunu onaylamasına izin verir.

Sistem Parametreleri
--------------------

* *H* çakışma olmayan bir (collision-resistant hash function) kriptografik özet fonksiyon olsun.
* *p* büyük bir asal sayı olsun öyle ki ayrık logaritmaları mod *p'*de zor olsun.
* *g* < *p* rassal seçilen bir mod n’deki çarpımsal grubun {\displaystyle Z\_{p}^{\*}} üreteci olsun.

Bu sistem parametreleri kullanıcılar arasında paylaşılabilir.

Anahtar Oluşturma
-----------------

* Gizli anahtar olan *x'*i rassal olarak 1 < *x* < *p* − 1. değerini seç
* *y* = *g**x* mod *p* değerini hesapla
* Açık anahtar(*p*, *g*, *y*).
* Özel anahtar *x*.

Bu adımlar imzalayan kişi tarafından bir kez yapılır.

İmza Oluşturma
--------------

Mesaj *m*i imzalamak için imzalayan kişi aşağıdaki adımları gerçekleştirir:

* Rassal bir *k* değeri seç öyle ki 0 < *k* < *p* − 1 ve gcd(*k*, *p* − 1) = 1.
* {\displaystyle r\,\equiv \,g^{k}{\pmod {p}}} değerini hesapla
* {\displaystyle s\,\equiv \,(H(m)-xr)k^{-1}{\pmod {p-1}}} değerini hesapla
* Eğer {\displaystyle s=0} ise başa dön.

(*r*,*s*) ikilisi *m*nin dijital imzasıdır.
İmzalayan kişi bu adımları her imza için tekrarlar.

Doğrulama
---------

Mesaj *m* nin imzası olan (*r*,*s*) aşağıdaki gibi doğrulanır.

* {\displaystyle 0<r<p} ve {\displaystyle 0<s<p-1}.
* {\displaystyle g^{H(m)}\,\equiv \,y^{r}r^{s}{\pmod {p}}.}

Doğrulayan kişi tüm koşullar sağlandığında imzayı kabul eder sağlanmazsa reddeder.

Doğruluk
--------

İmzalama algoritması ile üretilen imza her zaman doğrulayan kişi tarafından kabul edilirse algoritma doğrudur.

İmza oluşturma 

{\displaystyle H(m)\,\equiv \,xr+sk{\pmod {p-1}}.}
Bundan dolayı Fermat'nın son teoreminden 

{\displaystyle {\begin{aligned}g^{H(m)}&\equiv g^{xr}g^{ks}\\&\equiv (g^{x})^{r}(g^{k})^{s}\\&\equiv (y)^{r}(r)^{s}{\pmod {p}}.\\\end{aligned}}}

Güvenlik
--------

Üçüncü kişi imzalayan kişinin gizli anahtarı olan *x* değerini bularak ya da özet fonksiyonda çakışma bularak imzaların sahtesini yapabilir. Fakat bu iki problemin de zor olduğuna inanılmaktadır. İmzalayan kişi her bir imza için farklı ve rassal bir *k* değeri seçmeye ve *k'* nın ya da *k* ile ilgili kısmi bilginin sızmadığından emin olmalıdır. Diğer türlü, atak yapan kişi gizli anahtar olan *x* değerini ortaya çıkartabilir. Eğer iki mesaj, aynı *k* değerleri ve aynı anahtar kullanılarak gönderiliyorsa, atak yapan kişi, *x* değerini hesaplayabilir.

Ayrıca bakınız
--------------

* Dijital İmza Algoritması

| * g
* t
* d
Açık anahtarlı şifreleme |
| --- |
| Algoritmalar | 

|  |  |
| --- | --- |
| Sabit çarpanlara ayırma | 
* Benaloh
* Blum–Goldwasser
* Cayley–Purser
* Damgård–Jurik
* GMR
* Goldwasser–Micali
* Naccache–Stern
* Paillier
* Rabin
* RSA
* Okamoto–Uchiyama
* Schmidt–Samoa

 |
| Ayrık logaritma | 
* BLS
* Cramer–Shoup
* DH
* DSA
* ECDH
* ECDSA
* EdDSA
* EKE
* ElGamal
	+ imza çizelgesi
* MQV
* Schnorr
* SPEKE
* SRP
* STS

 |
| Diğerleri | 
* AE
* CEILIDH
* EPOC
* HFE
* IES
* Lamport
* McEliece
* Merkle–Hellman
* Merkle İmzası
* Naccache–Stern
* Naccache–Stern knapsack kriptosistemi
* NTRUEncrypt
* NTRUSign
* Üç geçişli protokol
* XTR

 |

 |
| Kuram | 
* Ayrık logaritma
* Eliptik eğrisel şifreleme
* Değişken olmayan şifreleme
* RSA problemi
* Trapdoor fonksiyonu

 |
| Standartlaştırma | 
* CRYPTREC
* IEEE P1363
* NESSIE
* NSA Suite B

 |
| Konular | 
* Elektronik imza
* OAEP
* Fingerprint
* PKI
* Güven ağları
* Anahtar boyutu
* Kuantum sonrası şifreleme

 |

Kaynakça
--------

1. ↑  Oppliger, Rolf. (2011). *Contemporary Cryptography*. 2nd ed. Norwood: Artech House. s. 303. ISBN 978-1-60807-145-6. OCLC 905527314.
2. ↑  *Provable security : second international conference, ProvSec 2008, Shanghai, China, October 30 - November 1, 2008 : proceedings*. Baek, Joonsang. Berlin: Springer. 2008. s. 68. ISBN 978-3-540-88733-1. OCLC 304563460.