Схема Эль-Гамаля (Elgamal) — криптосистема с открытым ключом, основанная на трудности вычисления дискретных логарифмов в конечном поле. Криптосистема включает в себя алгоритм шифрования и алгоритм цифровой подписи. Схема Эль-Гамаля лежит в основе бывших стандартов электронной цифровой подписи в США (DSA) и России (ГОСТ Р 34.10-94).
 Схема была предложена Тахером Эль-Гамалем в 1985 году. Эль-Гамаль разработал один из вариантов алгоритма Диффи-Хеллмана. Он усовершенствовал систему Диффи-Хеллмана и получил два алгоритма, которые использовались для шифрования и для обеспечения аутентификации. В отличие от RSA, алгоритм Эль-Гамаля не был запатентован и поэтому стал более дешёвой альтернативой, так как не требовалась оплата взносов за лицензию. Считается, что алгоритм попадает под действие патента Диффи-Хеллмана.
 Шифросистема Эль-Гамаля является фактически одним из способов выработки открытых ключей Диффи — Хеллмана.[источник не указан 739 дней] Шифрование по схеме Эль-Гамаля не следует путать с алгоритмом цифровой подписи по схеме Эль-Гамаля.
 Сообщение 
  
    
      
        M
      
    
    {\displaystyle M}
  
 должно быть меньше числа 
  
    
      
        p
      
    
    {\displaystyle p}
  
. Сообщение шифруется следующим образом:
 Нетрудно заметить, что длина шифротекста в схеме Эль-Гамаля вдвое больше исходного сообщения 
  
    
      
        M
      
    
    {\displaystyle M}
  
.
 Зная закрытый ключ 
  
    
      
        x
      
    
    {\displaystyle x}
  
, исходное сообщение можно вычислить из шифротекста 
  
    
      
        (
        a
        ,
        b
        )
      
    
    {\displaystyle (a,b)}
  
 по формуле:
 При этом нетрудно проверить, что
 и поэтому
 Для практических вычислений больше подходит следующая формула:
 
 Так как в схему Эль-Гамаля вводится случайная величина 
  
    
      
        k
      
    
    {\displaystyle k}
  
,то шифр Эль-Гамаля можно назвать шифром многозначной замены. Из-за случайности выбора числа 
  
    
      
        k
      
    
    {\displaystyle k}
  
 такую схему ещё называют схемой вероятностного шифрования. Вероятностный характер шифрования является преимуществом для схемы Эль-Гамаля, так как у схем вероятностного шифрования наблюдается большая стойкость по сравнению со схемами с определённым процессом шифрования. Недостатком схемы шифрования Эль-Гамаля является удвоение длины зашифрованного текста по сравнению с начальным текстом. Для схемы вероятностного шифрования само сообщение 
  
    
      
        M
      
    
    {\displaystyle M}
  
 и ключ не определяют шифротекст однозначно. В схеме Эль-Гамаля необходимо использовать различные значения случайной величины 
  
    
      
        k
      
    
    {\displaystyle k}
  
 для шифровки различных сообщений 
  
    
      
        M
      
    
    {\displaystyle M}
  
 и 
  
    
      
        
          M
          ′
        
      
    
    {\displaystyle M'}
  
. Если использовать одинаковые 
  
    
      
        k
      
    
    {\displaystyle k}
  
, то для соответствующих шифротекстов 
  
    
      
        (
        a
        ,
        b
        )
      
    
    {\displaystyle (a,b)}
  
 и 
  
    
      
        (
        
          a
          ′
        
        ,
        
          b
          ′
        
        )
      
    
    {\displaystyle (a',b')}
  
 выполняется соотношение 
  
    
      
        b
        (
        
          b
          ′
        
        
          )
          
            −
            1
          
        
        =
        M
        (
        
          M
          ′
        
        
          )
          
            −
            1
          
        
      
    
    {\displaystyle b(b')^{-1}=M(M')^{-1}}
  
. Из этого выражения можно легко вычислить 
  
    
      
        
          M
          ′
        
      
    
    {\displaystyle M'}
  
, если известно 
  
    
      
        M
      
    
    {\displaystyle M}
  
.
 Цифровая подпись служит для того чтобы можно было установить изменения данных и чтобы установить подлинность подписавшейся стороны. Получатель подписанного сообщения может использовать цифровую подпись для доказательства третьей стороне того, что подпись действительно сделана отправляющей стороной. При работе в режиме подписи предполагается наличие фиксированной хеш-функции 
  
    
      
        h
        (
        ⋅
        )
      
    
    {\displaystyle h(\cdot )}
  
, значения которой лежат в интервале 
  
    
      
        
          (
          
            1
            ,
            p
            −
            1
          
          )
        
      
    
    {\displaystyle \left(1,p-1\right)}
  
.
 Для подписи сообщения 
  
    
      
        M
      
    
    {\displaystyle M}
  
 выполняются следующие операции:
 Зная открытый ключ 
  
    
      
        
          (
          
            p
            ,
            g
            ,
            y
          
          )
        
      
    
    {\displaystyle \left(p,g,y\right)}
  
, подпись 
  
    
      
        
          (
          
            r
            ,
            s
          
          )
        
      
    
    {\displaystyle \left(r,s\right)}
  
 сообщения 
  
    
      
        M
      
    
    {\displaystyle M}
  
 проверяется следующим образом:
 Рассматриваемый алгоритм корректен в том смысле, что подпись, вычисленная по указанным выше правилам, будет принята при её проверке.
 Преобразуя определение 
  
    
      
        s
      
    
    {\displaystyle s}
  
, имеем
 Далее, из Малой теоремы Ферма следует, что
 Число 
  
    
      
        k
      
    
    {\displaystyle k}
  
 должно быть случайным и не должно дублироваться для различных подписей, полученных при одинаковом значении секретного ключа.
 то легко удостовериться в том, что пара 
  
    
      
        (
        r
        ,
        s
        )
      
    
    {\displaystyle (r,s)}
  
 является верной цифровой подписью для сообщения 
  
    
      
        x
        =
        M
      
    
    {\displaystyle x=M}
  
.
 В настоящее время криптосистемы с открытым ключом считаются наиболее перспективными. К ним относится и схема Эль-Гамаля, криптостойкость которой основана на вычислительной сложности проблемы дискретного логарифмирования, где по известным p, g и y требуется вычислить x, удовлетворяющий сравнению:
 ГОСТ Р34.10-1994, принятый в 1994 году в Российской Федерации, регламентировавший процедуры формирования и проверки электронной цифровой подписи, был основан на схеме Эль-Гамаля. С 2001 года используется новый ГОСТ Р 34.10-2001, использующий арифметику эллиптических кривых, определённых над простыми полями Галуа. Существует большое количество алгоритмов, основанных на схеме Эль-Гамаля: это алгоритмы DSA, ECDSA, KCDSA, схема Шнорра.
 Сравнение некоторых алгоритмов: