Одним из наиболее эффективных практических протоколов аутентификации считаеся протокол Шнорра.
Пусть
Ø р и q — простые числа такие, что q делит р -1.
(Шнорр предлагает использовать р длины порядка 512 бит и q — длины порядка 140 битов.)
Ø g ÎZ p таково, что gq = 1 mod р, g ¹ 1.
Ø х ÎZ q — секретный ключ
Ø у = gx mod p — открытый ключ.
Определение х по у - это задача дискретного логарифмирования, для которой на данный момент не известны эффективные алгоритмы.
Открытые ключи всех участников схемы должны публиковаться таким образом, чтобы исключалась возможность их подмены (такое хранилище ключей называется общедоступным сертифицированным справочником). Эта проблема, называемая часто проблемой аутентичности открытых ключей, составляет отдельный предмет исследований в криптографии.
В протоколе Шнорра количество раундов равно трем. Приведем алгоритм протокола по шагам:
1. В качестве секретного ключа схемы аутентификации Алиса выбирает случайное число k из множества {1,..., q — 1}, вычисляет открытый ключ r = gk mod p и посылает r Бобу.
2. Боб выбирает случайный запрос е из множества {0,..., 2t - 1}, где t — некоторый параметр, и посылает е Алисе.
3. Алиса вычисляет s = k + хе mod q и посылает s Бобу.
Боб проверяет соотношение r = gsye mod p и, если оно выполняется, принимает доказательство, в противном случае — отвергает.
Первое из требований к стойкости протоколов аутентификации — корректность, означает, что противник, знающий только открытый ключ у, может пройти аутентификацию лишь с пренебрежимо малой вероятностью.
Несложный анализ показывает, что корректность протокола Шнорра зависит от выбранного значения параметра t. В самом деле, если t невелико, то противник имеет хорошие шансы просто угадать тот запрос е, который он получит от Боба на шаге 2.
Пусть для простоты t = 1. Тогда противник, не знающий секретного ключа х, может действовать следующим образом. Подбросив монету, он выбирает равновероятным образом одно из значений 0 или 1. Обозначим его через е'. Далее противник выбирает произвольное s из {0 ,..., q- 1}, вычисляет mod p и посылает r Бобу. Ясно, что запрос е, полученный от Боба на шаге 2, совпадет с е' с вероятностью 1/2, и именно с такой вероятностью противник пройдет аутентификацию. Если же значение t достаточно велико, то шансы угадать запрос е малы. Шнорр [1] рекомендует t = 72. Вероятность простого угадывания будет 2-72, ее можно считать пренебрежимо малой.
Если в схеме Шнорра Алиса является противником, то на шаге 1 вместо действий, предписанных протоколом, она может выбирать r произвольным (но эффективным) образом. Иными словами, Алиса использует некоторый полиномиальный вероятностный алгоритм, который для каждого конкретного значения r определяет вероятность его выбора.
Пусть r — некоторое значение, которое Алиса передала Бобу на шаге 1. Предположим, что нам удалось найти два запроса
e1,e2 Î {0,...,2t-1}, e1¹e2,
такие, что Алиса может для каждого из них найти соответствующие значения s, для которых проверка на шаге 4 даст положительный результат. Обозначим эти значения s через s1 и s2 соответственно. Мы имеем:
r = gslyel mod p,
r = gs2ye2 mod p.
Отсюда
(gslyel = gs2ye2 ) mod p, или (gsl-s2 = ge2-el ) mod p.
Поскольку e1 ¹ е2, существует (е1 – e2)-1 mod q и, следовательно,
(s1-s2)(e2-e1) -1 mod q = х — дискретный логарифм у.
Таким образом, либо запросы e1 ¹ е2, такие, что Алиса может ответить надлежащим образом на оба из них (при одном и том же r) на шаге 3 протокола, встречаются «достаточно редко», и это означает, что атака Алисы успешна лишь с пренебрежимо малой вероятностью, либо такие значения попадаются «достаточно часто», и тогда тот алгоритм, который применяет Алиса, можно использовать для вычисления дискретных логарифмов.
Эта неформально изложенная идея была использована Шнорром [1] для доказательства полиномиальной сводимости задачи дискретного логарифмирования к задаче, стоящей перед пассивным противником, т. е. таким, который пытается пройти аутентификацию, зная лишь открытый ключ. Иными словами, доказано, что в предположении трудности задачи дискретного логарифмирования схема аутентификации Шнорра является стойкой против пассивного противника, т. е. корректной.
Активный противник может провести некоторое количество сеансов выполнения протокола в качестве проверяющего с честным доказывающим (или подслушать такие выполнения) и после этого попытаться атаковать схему аутентификации. Для стойкости против активного противника достаточно, чтобы протокол аутентификации был доказательством с нулевым разглашением. Однако свойство нулевого разглашения для схемы Шнорра до сих пор никому доказать не удалось. Более того, на данный момент известен единственный метод доказательства свойства нулевого разглашения — так называемый метод «черного ящика». В этом методе моделирующая машина использует алгоритм проверяющего лишь в качестве оракула, то есть, не анализируя сам этот алгоритм, подает ему на вход любые значения по своему выбору и получает соответствующие выходные значения.
Доказано, что трехраундовые доказательства с нулевым разглашением, в которых последнее свойство устанавливается методом «черного ящика», существуют лишь в тривиальном случае, т. е. когда проверяющий может самостоятельно, без всякой помощи доказывающего, проверить истинность утверждаемого. В отношении схемы Шнорра из этого результата следует, что либо существует эффективный алгоритм дискретного логарифмирования, либо свойство нулевого разглашения этого протокола не может быть доказано методом «черного ящика». Вопрос о существовании доказательств с нулевым разглашением, для которых свойство нулевого разглашения не может быть доказано методом «черного ящика», остается открытым.
Нетрудно показать, что схема Шнорра обладает несколько более слабым свойством — свойством нулевого разглашения относительно честного проверяющего. В этом случае достаточно построить моделирующую машину только для честного проверяющего, который на шаге 2 и в самом деле выбирает случайный запрос е из множества {0,..., 2t -1}.
Свойства нулевого разглашения относительно честного проверяющего может оказаться достаточно, если схема аутентификации используется, например, для контроля за доступом в охраняемое помещение. В этом случае Алиса — это пропуск, выполненный в виде интеллектуальной карточки, а Боб — компьютер охраны. В такой ситуации главная задача — обеспечить корректность схемы аутентификации, а защищаться от нечестного проверяющего бессмысленно. Что же касается свойства нулевого разглашения относительно честного проверяющего, то оно представляется далеко не лишним, так как позволяет обезопаситься от противника, который может попытаться подслушивать сеансы выполнения протокола с целью изготовления фальшивого пропуска.
Прежде чем завершить разговор о протоколах аутентификации, необходимо подчеркнуть, что никакое математически строго доказанное свойство криптографического протокола не может гарантировать его безопасности во всех случаях жизни. В самом деле, даже протокол доказательства с нулевым разглашением не защищает от следующей атаки на схему аутентификации, известной в криптографической литературе под названием «мафиозная угроза». В данном сценарии имеются четыре участника: А, В, С и D. Предположим, что А зашел в кафе выпить чашечку кофе и расплачивается с помощью кредитной карточки. Для выполнения любой банковской операции карточка должна идентифицировать себя, т. е. выполнить протокол аутентификации. Но владелец кафе, В, — мафиози, сообщник которого С в тот же самый момент находится в магазине ювелира D и пытается купить бриллиант, также с помощью кредитной карточки. При этом С «представляется» как А, а D просит доказать это с помощью протокола аутентификации. Устройство считывания для карточек у В и карточка у С — это специально изготовленные приемо-передающие устройства, которые лишь пересылают сообщения между А и D. В результате А, обмениваясь сообщениями с В, на самом деле идентифицирует себя для D. Следовательно, только математического обоснования стойкости того или иного криптографического протокола недостаточно. Для практического применения конкретного протокола требуются еще усилия специалистов в области информационной безопасности по анализу условий его применения.