Схема Шнорра

Материал из Википедии — свободной энциклопедии
Текущая версия страницы покане проверялась опытными участниками и может значительно отличаться отверсии, проверенной 2 сентября 2021 года; проверки требуют3 правки.
Перейти к навигацииПерейти к поиску

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

Содержание

Введение

[править |править код]

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

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

В протоколе имеются два участника — Алиса, которая хочет подтвердить свой идентификатор, и Боб, который должен проверить это подтверждение. У Алисы имеется два ключа —K1{\displaystyle \mathrm {K} _{1}}, открытый (общедоступный), иK2{\displaystyle \mathrm {K} _{2}} — закрытый (приватный) ключ, известный только Алисе. Фактически, Боб должен проверить, что Алиса знает свой закрытый ключK2{\displaystyle \mathrm {K} _{2}}, используя толькоK1{\displaystyle \mathrm {K} _{1}}.

Схема Шнорра — одна из наиболее эффективных среди практических протоколов аутентификации, реализующая данную задачу. Она минимизирует зависимость вычислений, необходимых для создания подписи, от сообщения. В этой схеме основные вычисления могут быть сделаны во время простоя процессора, что позволяет увеличить скорость подписания. Как иDSA, схема Шнорра использует подгруппу порядкаq{\displaystyle q} вZp{\displaystyle \mathbb {Z} _{p}^{*}}. Также данный метод используетхеш-функциюh:{0,1}Zp{\displaystyle h:\{0,1\}^{*}\to \mathbb {Z} _{p}}.

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

[править |править код]

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

  1. Выбирается простое числоp{\displaystyle p}, которое по длине обычно равняется1024{\displaystyle 1024} битам.
  2. Выбирается другое простое числоq{\displaystyle q} таким, чтобы оно было делителем числаp1{\displaystyle p-1}. Или другими словами должно выполнятьсяp10(modq){\displaystyle p-1\equiv 0{\pmod {q}}}. Размер для числаq{\displaystyle q} принято выбирать равным160{\displaystyle 160} битам.
  3. Выбирается числоg{\displaystyle g}, отличное от1{\displaystyle 1}, такое, чтоgq1(modp){\displaystyle g^{q}\equiv 1{\pmod {p}}}.
  4. Пегги выбирает случайное целое числоw{\displaystyle w} меньшееq{\displaystyle q}.
  5. Пегги вычисляетy=gqw(modp){\displaystyle y=g^{q-w}{\pmod {p}}}.
  6. Общедоступный ключ Пегги —(p,q,g,y){\displaystyle (p,q,g,y)}, секретный ключ Пегги —w{\displaystyle w}.

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

[править |править код]

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

[править |править код]
  1. Предварительная обработка. Алиса выбирает случайное числоr{\displaystyle r}, меньшееq{\displaystyle q}, и вычисляетx=gr(modp){\displaystyle x=g^{r}{\pmod {p}}}. Эти вычисления являются предварительными и могут быть выполнены задолго до появления Боба.
  2. Инициирование. Алиса посылаетx{\displaystyle x} Бобу.
  3. Боб выбирает случайное числоe{\displaystyle e} из диапазона от0{\displaystyle 0} до2t1{\displaystyle 2^{t}-1} и отправляет его Алисе.
  4. Алиса вычисляетs=r+we(modq){\displaystyle s=r+we{\pmod {q}}} и посылаетs{\displaystyle s} Бобу.
  5. Подтверждение. Боб проверяет чтоx=gsye(modp){\displaystyle x=g^{s}y^{e}{\pmod {p}}}

Безопасность алгоритма зависит от параметраt. Сложность вскрытия алгоритма примерно равна2t{\displaystyle 2^{t}}. Шнорр советует использоватьt около72 битов, дляp2512{\displaystyle p\geq 2^{512}} иq2140{\displaystyle q\geq 2^{140}}. Для решения задачи дискретного логарифма, в этом случае, требуется по крайней мере272{\displaystyle 2^{72}} шагов известных алгоритмов.

Пример

[править |править код]

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

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

Атаки на Схему

[править |править код]

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

[править |править код]

Если в схеме Шнорра предположить, что Алиса является противником, то на шаге 1 она может выбратьx{\displaystyle x} случайным, но эффективным способом. Пустьx{\displaystyle x} — это переданное Алисой число. Предположим, что можно найти два случайных числаe1{\displaystyle e_{1}} иe2{\displaystyle e_{2}} такие, чтоe1e2{\displaystyle e_{1}\neq e_{2}} и для каждого из них Алиса может найти соответствующиеs1{\displaystyle s_{1}} иs2{\displaystyle s_{2}}, для которых подтверждение даст положительный результат.Получаем:

x=gs1ye1modp{\displaystyle x=g^{s_{1}}y^{e_{1}}{\bmod {p}}}
x=gs2ye2modp{\displaystyle x=g^{s_{2}}y^{e_{2}}{\bmod {p}}}.

Отсюдаgs1ye1=gs2ye2(modp){\displaystyle g^{s_{1}}y^{e_{1}}=g^{s_{2}}y^{e_{2}}{\pmod {p}}} или жеye1e2=gs2s1(modp){\displaystyle y^{e_{1}-e_{2}}=g^{s_{2}-s_{1}}{\pmod {p}}}. Так какe1e2{\displaystyle e_{1}\neq e_{2}}, то существует(e2e1)1modq{\displaystyle (e_{2}-e_{1})^{-1}{\bmod {q}}} и, следовательно,(s1s2)(e2e1)1=wmodq{\displaystyle (s_{1}-s_{2})(e_{2}-e_{1})^{-1}=w{\bmod {q}}}, то есть дискретный логарифмy{\displaystyle y}. Таким образом, либоe1,e2,e1e2{\displaystyle e_{1},e_{2},e_{1}\neq e_{2}} такие, что Алиса может ответить надлежащим образом на оба из них (при одном и том жеx{\displaystyle x}) на шаге 3 протокола, встречаются редко, что означает, что атака Алисы успешна лишь с пренебрежимо малой вероятностью. Либо такие значения попадаются часто, и тогда тот алгоритм, который применяет Алиса, можно использовать для вычисления дискретных логарифмов.

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

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

[править |править код]

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

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

[править |править код]

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

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

[править |править код]
  1. Предварительная обработка. Пегги выбирает случайное числоr{\displaystyle r}, меньшееq{\displaystyle q}, и вычисляетx=gr(modp){\displaystyle x=g^{r}{\pmod {p}}}. Это стадия предварительных вычислений. Стоит отметить, что для подписи разных сообщений могут использоваться одинаковые открытый и закрытый ключи, в то время как числоr{\displaystyle r} выбирается заново для каждого сообщения.
  2. Пегги объединяет сообщениеM{\displaystyle M} иx{\displaystyle x} и хеширует результат для получения первой подписи:
    S1=H(M|grmodp){\displaystyle S_{1}=H(M|g^{r}{\bmod {p}})}
  3. Пегги вычисляет вторую подпись. Необходимо отметить, что вторая подпись вычисляется по модулюq{\displaystyle q}.
    S2=r+wS1modq{\displaystyle S_{2}=r+wS_{1}{\bmod {q}}}.
  4. Пегги отправляет Виктору сообщениеM{\displaystyle M} и подписиS1{\displaystyle S_{1}},S2{\displaystyle S_{2}}.

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

[править |править код]
  1. Виктор вычисляетX=gS2yS1modp{\displaystyle X=g^{S_{2}}y^{S_{1}}{\bmod {p}}} (либоX=gS2yS1modp{\displaystyle X=g^{S_{2}}y^{-S_{1}}{\bmod {p}}}, если вычислятьy{\displaystyle y} какy=gw(modp){\displaystyle y=g^{w}{\pmod {p}}}).
  2. Виктор проверяет, чтоH(M|X)=S1{\displaystyle H(M|X)=S_{1}}. Если это так, то он считает подпись верной.

Эффективность

[править |править код]

Основные вычисления для генерации подписи производятся на этапе предварительной обработки и на этапе вычисленияwS1modq{\displaystyle wS_{1}{\bmod {q}}}, где числаw{\displaystyle w} иS1{\displaystyle S_{1}} имеют порядок140{\displaystyle 140} битов, а параметрr{\displaystyle r} —72{\displaystyle 72} бита. Последнее умножение ничтожно мало по сравнению с модульным умножением в схемеRSA.

Проверка подписи состоит в основном из расчетаX=gS2yS1{\displaystyle X=g^{S_{2}}y^{S_{1}}}, который может быть сделан в среднем за1.5l+0.25t{\displaystyle 1.5l+0.25t} вычислений по модулюp{\displaystyle p}, гдеl=[log2q]{\displaystyle l=[log_{2}q]} есть длинаq{\displaystyle q} в битах.

Более короткая подпись позволяет сократить количество операций для генерации подписи и верификации: в схеме ШнорраO(log2qlog22p){\displaystyle O(\log _{2}q\log _{2}^{2}p)}, а в схеме Эль-ГамаляO(log3p){\displaystyle O(\log ^{3}p)}.

Пример

[править |править код]

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

  1. q=103{\displaystyle q=103} иp=2267{\displaystyle p=2267}. Причемp=22q+1{\displaystyle p=22q+1}.
  2. Выбираетсяf=2{\displaystyle f=2}, который является элементом в полеZ2267{\displaystyle Z_{2267*}}. Тогдаp1q=22{\displaystyle {\frac {p-1}{q}}=22} иg=222mod2267=354{\displaystyle g=2^{22}{\bmod {2}}267=354}
  3. Пегги выбирает ключw=30{\displaystyle w=30}, тогдаy=1206{\displaystyle y=1206}
  4. Секретный ключ Пегги —30{\displaystyle 30}, открытый ключ —(103,2267,354,1206){\displaystyle (103,2267,354,1206)}.

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

  1. Пегги нужно подписать сообщениеM=1000{\displaystyle M=1000}.
  2. Пегги выбираетr=11{\displaystyle r=11} и вычисляетgr=35411=630mod2267{\displaystyle g^{r}=354^{11}=630mod2267}.
  3. Предположим, что сообщение —1000{\displaystyle 1000} , и последовательное соединение означает1000630{\displaystyle 1000630} . Также предположим, что хеширование этого значения дает дайджестH(1000630)=200{\displaystyle H(1000630)=200} . Это означаетS1=200{\displaystyle S_{1}=200} .
  4. Пегги вычисляетS2=r+wS1modq=11+30200mod103=11+26=37{\displaystyle S_{2}=r+wS_{1}modq=11+30*200mod103=11+26=37}.
  5. Пегги отправляет ВикторуM=1000{\displaystyle M=1000},S1=200{\displaystyle S_{1}=200} иS2=37{\displaystyle S_{2}=37}.

Патенты

[править |править код]

Схема Шнорра имеет патенты в ряде стран. Например, в США № 4,995,082 от 19 февраля 1991 года (истёк 19 февраля 2008 года). В 1993 году Public Key Partners (PKP) из Саннивейла (Sunnyvale) приобрела мировые права на данный патент. Кроме США, данная схема запатентована также и в нескольких других странах.

Модификации схемы

[править |править код]

Модификация схемы, которая была выполнена Эрни Брикеллом (Brickell) и Кевином МакКерли (McCurley) в 1992 году, значительно повысила безопасность данной схемы.В их методе используется числоp{\displaystyle p}, которое так же, как иp1{\displaystyle p-1}, сложно разложить, простой делительq{\displaystyle q} числаp1{\displaystyle p-1} и элементα{\displaystyle \alpha } порядкаq{\displaystyle q} вZp{\displaystyle \mathbb {Z} _{p}^{*}}, которые впоследствии применяются в подписи. В отличие от схемы Шнорра подпись в их методе вычисляется уравнением

s=eα+kmod(p1){\displaystyle s=e\alpha +k{\bmod {(}}p-1)}.

Преимущества

[править |править код]

В то время, как в вычислительном плане модификация Брикелл и МакКерли менее эффективна, чем схема Шнорра, данный метод имеет преимущество, так как основывается на трудности двух сложных задач:

См. также

[править |править код]

Примечания

[править |править код]

Литература

[править |править код]

Ссылки

[править |править код]
Для улучшения этой статьижелательно:
  • Проставитьсноски, внести более точные указания на источники.
Пожалуйста, после исправления проблемы исключите её из списка параметров. После устранения всех недостатков этот шаблон может быть удалён любым участником.
Перейти к шаблону «Криптосистемы с открытым ключом»
Алгоритмы
Факторизация целых чисел
Дискретное логарифмирование
Криптография на решётках
Другие
Теория
Стандарты
Темы
Источник —https://ru.wikipedia.org/w/index.php?title=Схема_Шнорра&oldid=118723045
Категории:
Скрытые категории: