Схема Шнорра

Схема Шнорра (англ. schnorr scheme) — одна из наиболее эффективных и теоретически обоснованных схем аутентификации. Безопасность схемы основывается на трудности вычисления дискретных логарифмов. Предложенная Клаусом Шнорром[en] схема является модификацией схем Эль-Гамаля (1985) и Фиата-Шамира (1986), но имеет меньший размер подписи. Схема Шнорра лежит в основе стандарта Республики Беларусь СТБ 1176.2-99 и южнокорейских стандартов KCDSA и EC-KCDSA. Она была покрыта патентом США 4999082, который истек в феврале 2008 года.

Введение править

Схемы аутентификации и электронной подписи — одни из наиболее важных и распространенных типов криптографических протоколов, которые обеспечивают целостность информации.

Понять назначение протоколов аутентификации можно легко на следующем примере. Предположим, что у нас есть информационная система, в которой необходимо разграничить доступ к различным данным. Также в данной системе присутствует администратор, который хранит все идентификаторы пользователей с сопоставленным набором прав, с помощью которого происходит разграничение доступа к ресурсам. Одному пользователю может быть одновременно разрешено читать один файл, изменять второй и в то же время закрыт доступ к третьему. В данном примере под обеспечением целостности информации понимается предотвращение доступа к системе лиц, не являющихся её пользователями, а также предотвращение доступа пользователей к тем ресурсам, на которые у них нет полномочий. Наиболее распространенный метод разграничения доступа, парольная защита, имеет массу недостатков, поэтому перейдем к криптографической постановке задачи.

В протоколе имеются два участника — Алиса, которая хочет подтвердить свой идентификатор, и Боб, который должен проверить это подтверждение. У Алисы имеется два ключа —  , открытый (общедоступный), и   — закрытый (приватный) ключ, известный только Алисе. Фактически, Боб должен проверить, что Алиса знает свой закрытый ключ  , используя только  .

Схема Шнорра — одна из наиболее эффективных среди практических протоколов аутентификации, реализующая данную задачу. Она минимизирует зависимость вычислений, необходимых для создания подписи, от сообщения. В этой схеме основные вычисления могут быть сделаны во время простоя процессора, что позволяет увеличить скорость подписания. Как и DSA, схема Шнорра использует подгруппу порядка   в  . Также данный метод использует хеш-функцию  .

Генерация ключей править

Генерация ключей для схемы подписи Шнорра происходит так же, как и генерация ключей для DSA, кроме того, что не существует никаких ограничений по размерам. Заметим также, что модуль   может быть вычислен автономно.

  1. Выбирается простое число  , которое по длине обычно равняется   битам.
  2. Выбирается другое простое число   таким, чтобы оно было делителем числа  . Или другими словами должно выполняться  . Размер для числа   принято выбирать равным   битам.
  3. Выбирается число  , отличное от  , такое, что  .
  4. Пегги выбирает случайное целое число   меньшее  .
  5. Пегги вычисляет  .
  6. Общедоступный ключ Пегги —  , секретный ключ Пегги —  .

Протокол проверки подлинности править

Алгоритм работы протокола править

  1. Предварительная обработка. Алиса выбирает случайное число  , меньшее  , и вычисляет  . Эти вычисления являются предварительными и могут быть выполнены задолго до появления Боба.
  2. Инициирование. Алиса посылает   Бобу.
  3. Боб выбирает случайное число   из диапазона от   до   и отправляет его Алисе.
  4. Алиса вычисляет   и посылает   Бобу.
  5. Подтверждение. Боб проверяет что  

Безопасность алгоритма зависит от параметра t. Сложность вскрытия алгоритма примерно равна  . Шнорр советует использовать t около 72 битов, для   и  . Для решения задачи дискретного логарифма, в этом случае, требуется по крайней мере   шагов известных алгоритмов.

Пример править

Генерация ключей:

  • Выбирается простое   и простое   ( )
  • Вычисляется   из условия  , в данном случае  
  • Алиса выбирает секретный ключ   и вычисляет открытый   ключ
  • Алиса отправляет открытый ключ   соответственно равный  , закрытый оставляет у себя —  

Проверка подлинности:

  • Алиса выбирает случайное число   и отсылает   Бобу.
  • Боб отсылает Алисе число  
  • Алиса считает   и отправляет   Бобу.
  • Боб вычисляет   и идентифицирует Алису, так как  .

Атаки на Схему править

Пассивный противник править

Если в схеме Шнорра предположить, что Алиса является противником, то на шаге 1 она может выбрать   случайным, но эффективным способом. Пусть   — это переданное Алисой число. Предположим, что можно найти два случайных числа   и   такие, что   и для каждого из них Алиса может найти соответствующие   и  , для которых подтверждение даст положительный результат. Получаем:

 
 .

Отсюда   или же  . Так как  , то существует   и, следовательно,  , то есть дискретный логарифм  . Таким образом, либо   такие, что Алиса может ответить надлежащим образом на оба из них (при одном и том же  ) на шаге 3 протокола, встречаются редко, что означает, что атака Алисы успешна лишь с пренебрежимо малой вероятностью. Либо такие значения попадаются часто, и тогда тот алгоритм, который применяет Алиса, можно использовать для вычисления дискретных логарифмов.

Иными словами, доказано, что в предположении трудности задачи дискретного логарифмирования схема аутентификации Шнорра является стойкой против пассивного противника, то есть корректной.

Активный противник править

Активный противник может провести некоторое количество сеансов выполнения протокола в качестве проверяющего с честным доказывающим (или подслушать такие выполнения) и после этого попытаться атаковать схему аутентификации. Для стойкости против активного противника достаточно, чтобы протокол аутентификации был доказательством с нулевым разглашением. Однако свойство нулевого разглашения для схемы Шнорра до сих пор никому доказать не удалось.

Протокол цифровой подписи править

Алгоритм Шнорра также можно использовать и в качестве протокола цифровой подписи сообщения  . Пара ключей используется та же самая, но добавляется однонаправленная хеш-функция  .

Генерация подписи править

  1. Предварительная обработка. Пегги выбирает случайное число  , меньшее  , и вычисляет  . Это стадия предварительных вычислений. Стоит отметить, что для подписи разных сообщений могут использоваться одинаковые открытый и закрытый ключи, в то время как число   выбирается заново для каждого сообщения.
  2. Пегги объединяет сообщение   и   и хеширует результат для получения первой подписи:
     
  3. Пегги вычисляет вторую подпись. Необходимо отметить, что вторая подпись вычисляется по модулю  .
     .
  4. Пегги отправляет Виктору сообщение   и подписи  ,  .

Проверка подписи править

  1. Виктор вычисляет   (либо  , если вычислять   как  ).
  2. Виктор проверяет, что  . Если это так, то он считает подпись верной.

Эффективность править

Основные вычисления для генерации подписи производятся на этапе предварительной обработки и на этапе вычисления  , где числа   и   имеют порядок   битов, а параметр   —   бита. Последнее умножение ничтожно мало по сравнению с модульным умножением в схеме RSA.

Проверка подписи состоит в основном из расчета  , который может быть сделан в среднем за   вычислений по модулю  , где   есть длина   в битах.

Более короткая подпись позволяет сократить количество операций для генерации подписи и верификации: в схеме Шнорра  , а в схеме Эль-Гамаля  .

Пример править

Генерация ключей:

  1.   и  . Причем  .
  2. Выбирается  , который является элементом в поле  . Тогда   и  
  3. Пегги выбирает ключ  , тогда  
  4. Секретный ключ Пегги —  , открытый ключ —  .

Подпись сообщения:

  1. Пегги нужно подписать сообщение  .
  2. Пегги выбирает   и вычисляет  .
  3. Предположим, что сообщение —   , и последовательное соединение означает   . Также предположим, что хеширование этого значения дает дайджест   . Это означает   .
  4. Пегги вычисляет  .
  5. Пегги отправляет Виктору  ,   и  .

Патенты править

Схема Шнорра имеет патенты в ряде стран. Например, в США № 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.
  • Варновский Н. П. Криптографические протоколы // Введение в криптографию / Под редакцией В. В. Ященко. — Питер, 2001. — 288 с. — ISBN 5-318-00443-1. Архивная копия от 25 февраля 2008 на Wayback Machine

Ссылки править