Для генерации ключевой пары выбираются большое простое число р и примитивный элемент
g мультипликативной группы поля GF(p). Выбирается случайное число х такое, что x<p-1.
Открытым ключом является y = gx ( mod p), секретным ключем является x.
Подпись сообщения M
Для того, чтобы подписать сообщение M пользователю A необходимо выполнить следующие действия:
выбрать случайно и равновероятно число k из группы обратимых элементов
кольца Zp-1*. То есть НОД(k,p-1) = 1,
вычислить a = gk (mod q),
вычислить b = (M-xa)k-1 (mod p-1),
подписью для сообщения M является пара (a,b).
Проверка подписи для сообщения M
Для проверки подписи (a,b) для сообщения M получатель B проверяет выполнение равенства
gM = ya ab (mod p).
Надо заметить, что для ускорения процесса подписи вычисления на шагах 1,2 можно проводить заранее, вычислять
значения k-1 тоже.
Как и в других похожих схемах подписи значение k должно оставаться в секрете и выбираться cлучайно.