Схема цифровой подписи Клауса Шнорра(Schnorr)
Стойкость схемы Шнорра основывается на трудной задаче вычисления дискретных логарифмов. Для генерации пары ключей сначала выбираются два простых числа, p и q так, чтобы q было сомножителем p-1. Затем выбирается a, не равное 1, такое что aq = 1 ( mod p). Все эти числа могут быть свободно опубликованы и использоваться группой пользователей. Для генерации конкретной пары ключей выбирается случайное число, меньшее q. Оно служит закрытым ключом, s. Затем вычисляется открытый ключ v = a-s (mod p). Для подписи сообщений используется хэш-функция H(M).
Предварительные вычисления
Пользователь A выбирает случайное число r, меньшее q, и вычисляет x = ar (mod p).
Подпись сообщения M
Для того, чтобы подписать сообщение M пользователю A необходимо выполнить следующие действия:
  1. объединить M и x и хэшировать результат:
    e = H(M,x),
  2. вычислить y = (r + se) ( mod q). Подписью являются значения e и y, их нужно выслать получателю B.
Проверка подписи для сообщения M
Получатель B вычисляет x' = ay ve (mod p). Затем он проверяет, что хэш-значение для объединения M и x' равно e. e = H(M,x') Если это так, то он считает подпись верной.
В своей работе Шнорр приводит следующие свойства своего алгоритма:
  1. Большая часть вычислений, нужных для генерации подписи и независящих от подписываемого сообщения, может быть выполнена на стадии предварительных вычислений. Следовательно, эти вычисления могут быть выполнены во время простоя и не влияют на скорость вычисления подписи.
  2. При одинаковом уровне безопасности длина подписей для Schnorr короче, чем для RSA. Например, при 140-битовом q длина подписей равна всего лишь 212 битам, меньше половины длины подписей RSA. Подписи Schnorr также намного короче подписей ElGamal.

back next
Hosted by uCoz