Схема Шнорра
(
англ.
schnorr scheme
) — одна из наиболее эффективных и теоретически обоснованных схем аутентификации. Безопасность схемы основывается на трудности вычисления
дискретных логарифмов
. Предложенная
схема является модификацией схем
Эль-Гамаля (1985)
и
Фиата-Шамира (1986)
, но имеет меньший размер подписи. Схема Шнорра лежит в основе стандарта Республики Беларусь СТБ 1176.2-99 и южнокорейских стандартов KCDSA и EC-KCDSA. Она была покрыта патентом
, который истек в феврале 2008 года.
Содержание
Введение
Схемы аутентификации и электронной подписи — одни из наиболее важных и распространенных типов криптографических протоколов, которые обеспечивают целостность информации.
Понять назначение протоколов аутентификации можно легко на следующем примере. Предположим, что у нас есть информационная система, в которой необходимо разграничить доступ к различным данным. Также в данной системе присутствует администратор, который хранит все идентификаторы пользователей с сопоставленным набором прав, с помощью которого происходит разграничение доступа к ресурсам. Одному пользователю может быть одновременно разрешено читать один файл, изменять второй и в то же время закрыт доступ к третьему. В данном примере под обеспечением целостности информации понимается предотвращение доступа к системе лиц, не являющихся её пользователями, а также предотвращение доступа пользователей к тем ресурсам, на которые у них нет полномочий. Наиболее распространенный метод разграничения доступа,
парольная защита
, имеет массу недостатков, поэтому перейдем к криптографической постановке задачи.
В протоколе имеются два участника — Алиса, которая хочет подтвердить свой идентификатор, и Боб, который должен проверить это подтверждение. У Алисы имеется два ключа —
, открытый (общедоступный), и
— закрытый (приватный) ключ, известный только Алисе. Фактически, Боб должен проверить, что Алиса знает свой закрытый ключ
, используя только
.
Схема Шнорра — одна из наиболее эффективных среди практических протоколов аутентификации, реализующая данную задачу. Она минимизирует зависимость вычислений, необходимых для создания подписи, от сообщения. В этой схеме основные вычисления могут быть сделаны во время простоя процессора, что позволяет увеличить скорость подписания. Как и
DSA
, схема Шнорра использует подгруппу порядка
в
. Также данный метод использует
хеш-функцию
.
Генерация ключей
Генерация ключей для схемы подписи Шнорра происходит так же, как и генерация ключей для
DSA
, кроме того, что не существует никаких ограничений по размерам. Заметим также, что модуль
может быть вычислен автономно.
Выбирается простое число
, которое по длине обычно равняется
битам.
Выбирается другое простое число
таким, чтобы оно было делителем числа
. Или другими словами должно выполняться
. Размер для числа
принято выбирать равным
битам.
Предварительная обработка
. Алиса выбирает случайное число
, меньшее
, и вычисляет
. Эти вычисления являются предварительными и могут быть выполнены задолго до появления Боба.
Инициирование.
Алиса посылает
Бобу.
Боб выбирает случайное число
из диапазона от
до
и отправляет его Алисе.
Алиса вычисляет
и посылает
Бобу.
Подтверждение.
Боб проверяет что
Безопасность алгоритма зависит от параметра
t
. Сложность вскрытия алгоритма примерно равна
. Шнорр советует использовать
t
около
72
битов, для
и
. Для решения задачи дискретного логарифма, в этом случае, требуется по крайней мере
шагов известных алгоритмов.
Пример
Генерация ключей:
Выбирается простое
и простое
(
)
Вычисляется
из условия
, в данном случае
Алиса выбирает секретный ключ
и вычисляет открытый
ключ
Алиса отправляет открытый ключ
соответственно равный
, закрытый оставляет у себя —
Проверка подлинности:
Алиса выбирает случайное число
и отсылает
Бобу.
Боб отсылает Алисе число
Алиса считает
и отправляет
Бобу.
Боб вычисляет
и идентифицирует Алису, так как
.
Атаки на Схему
Пассивный противник
Если в схеме Шнорра предположить, что Алиса является противником, то на шаге 1 она может выбрать
случайным, но эффективным способом. Пусть
— это переданное Алисой число. Предположим, что можно найти два случайных числа
и
такие, что
и для каждого из них Алиса может найти соответствующие
и
, для которых подтверждение даст положительный результат.
Получаем:
.
Отсюда
или же
. Так как
, то существует
и, следовательно,
, то есть дискретный логарифм
. Таким образом, либо
такие, что Алиса может ответить надлежащим образом на оба из них (при одном и том же
) на шаге 3 протокола, встречаются редко, что означает, что атака Алисы успешна лишь с пренебрежимо малой вероятностью. Либо такие значения попадаются часто, и тогда тот алгоритм, который применяет Алиса, можно использовать для вычисления дискретных логарифмов.
Иными словами, доказано, что в предположении трудности задачи дискретного логарифмирования схема аутентификации Шнорра является стойкой против пассивного противника, то есть корректной.
Активный противник
Активный противник может провести некоторое количество сеансов выполнения протокола в качестве проверяющего с честным доказывающим (или подслушать такие выполнения) и после этого попытаться атаковать схему аутентификации. Для стойкости против активного противника достаточно, чтобы протокол аутентификации был
доказательством с нулевым разглашением
. Однако свойство нулевого разглашения для схемы Шнорра до сих пор никому доказать не удалось.
Протокол цифровой подписи
Алгоритм Шнорра также можно использовать и в качестве протокола цифровой подписи сообщения
. Пара ключей используется та же самая, но добавляется однонаправленная хеш-функция
.
Генерация подписи
Предварительная обработка.
Пегги выбирает случайное число
, меньшее
, и вычисляет
. Это стадия предварительных вычислений. Стоит отметить, что для подписи разных сообщений могут использоваться одинаковые открытый и закрытый ключи, в то время как число
выбирается заново для каждого сообщения.
Пегги объединяет сообщение
и
и хеширует результат для получения первой подписи:
Пегги вычисляет вторую подпись. Необходимо отметить, что вторая подпись вычисляется по модулю
.
.
Пегги отправляет Виктору сообщение
и подписи
,
.
Проверка подписи
Виктор вычисляет
(либо
, если вычислять
как
).
Виктор проверяет, что
. Если это так, то он считает подпись верной.
Эффективность
Основные вычисления для генерации подписи производятся на этапе предварительной обработки и на этапе вычисления
, где числа
и
имеют порядок
битов, а параметр
—
бита. Последнее умножение ничтожно мало по сравнению с модульным умножением в схеме
RSA
.
Проверка подписи состоит в основном из расчета
, который может быть сделан в среднем за
вычислений по модулю
, где
есть длина
в битах.
Более короткая подпись позволяет сократить количество операций для генерации подписи и верификации: в схеме Шнорра
, а в схеме Эль-Гамаля
.
Пример
Генерация ключей:
и
. Причем
.
Выбирается
, который является элементом в поле
. Тогда
и
Пегги выбирает ключ
, тогда
Секретный ключ Пегги —
, открытый ключ —
.
Подпись сообщения:
Пегги нужно подписать сообщение
.
Пегги выбирает
и вычисляет
.
Предположим, что сообщение —
, и последовательное соединение означает
. Также предположим, что хеширование этого значения дает дайджест
. Это означает
.
Пегги вычисляет
.
Пегги отправляет Виктору
,
и
.
Патенты
Схема Шнорра имеет патенты в ряде стран. Например, в США № 4,995,082 от 19 февраля 1991 года (истёк 19 февраля 2008 года). В 1993 году Public Key Partners (PKP) из Саннивейла (Sunnyvale) приобрела мировые права на данный патент. Кроме США, данная схема запатентована также и в нескольких других странах.
Модификации схемы
Модификация схемы, которая была выполнена Эрни Брикеллом (Brickell) и Кевином МакКерли (McCurley) в 1992 году, значительно повысила безопасность данной схемы.
В их методе используется число
, которое так же, как и
, сложно разложить, простой делитель
числа
и элемент
порядка
в
, которые впоследствии применяются в подписи. В отличие от схемы Шнорра подпись в их методе вычисляется уравнением
.
Преимущества
В то время, как в вычислительном плане модификация Брикелл и МакКерли менее эффективна, чем схема Шнорра, данный метод имеет преимущество, так как основывается на трудности двух сложных задач:
вычисление логарифма в циклической подгруппе порядка
в
;
Schnorr C.P.
Efficient Signature Generation by Smart Cards. — J. Cryptology, 1991. — С. 161—174.
Schnorr C.P.
Efficient Identification and Signatures for Smart Cards.Advances in Cryptology - CRYPTO’89. Lecture Notes in Computer Science 435. — 1990. — С. 239 — 252.
A. Menezes, P.van Oorschot, S. Vanstone.
Handbook of Applied Cryptography. — CRC Press, 1996. — 816 с. —
ISBN 0-8493-8523-7
.
Шнайер Б.
Прикладная криптография. Протоколы, алгоритмы, исходные тексты на языке Си = Applied Cryptography. Protocols, Algorithms and Source Code in C. —
М.
: Триумф, 2002. — 816 с. —
3000 экз.
—
ISBN 5-89392-055-4
.