Протоколы аутентификации

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

Пусть Iа – идентификатор стороны А; DA – секретное криптопреобразование стороны А (секретный ключ); ЕА – открытое криптопреобразование стороны А (открытый ключ); TА – временной штамп стороны А; RА – случайное число, выбранное стороной А; СА – сертификат стороны.

IB – идентификатор стороны В; DB – секретное криптопреобразование стороны В (секретный ключ); EB – открытое криптопреобразование стороны В (открытый ключ); TB – временной штамп стороны В; RB – случайное число, выбранное стороной В.

Идентификаторы – это уникальные имена А и В. Временной штамп, включаемый в сообщение М, содержит также дату истечения срока действия М. Дополнительно он также может включать время создания М.

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

Тогда односторонний протокол аутентификации будет выглядеть следующим образом:

Пользователь А:

1. Выбирает RA.

2. Формирует сообщение М = (ТА, RA, IB, данные), где данные произвольны. Данные могут быть зашифрованы с помощью EB для секретности, например, когда А передает В ключ шифрования данных.

3. Посылает (СА, DA(M)) пользователю В.

Пользователь В:

1. Расшифровывает СА и получает ЕА. Проверяет дату окончания срока действия сертификата;

2. Использует ЕА для расшифрования DA(M), проверяя как подлинность подписи А, так и целостность подписанной информации.

3. Проверяет IB, содержащееся в М, на точность.

4. Проверяет ТА в М.

5. Дополнительно проверяет RA, содержащееся в М.

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

Первая схема подобного рода предложена в 1986 г. Фейге, Фиатом и Шамиром. Суть ее состоит в следующем:

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

В процессе аутентификации участвуют две стороны: сторона А, доказывающая свою подлинность, и сторона В – проверяющий.

Доверенный арбитр (центр распределения ключей) выбирает некоторое целое число v, являющееся квадратичным вычетом по модулю п, т.е. сущ. x: x2 = v(mod n), и взаимно простым с n. Это значение v передается А в качестве открытого ключа. Затем вычисляется наименьшее значение s, такое что s = (v1)1/ 2 (mod n). Это значение будет секретным ключом стороны А.

Далее протокол аутентификации выглядит следующим образом:

1. Сторона А выбирает случайное число r, 0 < r < n. Затем она вычисляет х = r2 mod n и отправляет его стороне В.

2. Сторона В посылает А случайный бит b.

3. Если b = 0, то А отправляет В число r. Если b = 1, то А отправляет В: у = r*s (mod n).

4. Если b = 0, то В проверяет, что х = r2 (mod n), чтобы убедиться, что А знает квадратный корень из х. Если b = 1, то сторона В проверяет, что х =y2*v (mod n), чтобы убедиться, что А знает квадратный корень из v–1.

Шаги 1–4 образуют один цикл протокола. Стороны повторяют этот цикл t раз при разных случайных значениях r и b. Если сторона А не знает значения s, она может выбрать такое r, которое позволит ей обмануть В в случае b = 0 или b = 1, но не в обоих случаях одновременно. Вероятность обмана в одном цикле составляет 0,5. Вероятность обмана в t циклах равна 2–t.

Недостатком данной схемы является большое число циклов протокола, необходимое для доказательства с требуемой вероятностью, если эта вероятность достаточно мала.

Способ, требующий только одного раунда обмена, но требующий большего объема вычислений, был предложен Гиллоу и Кискатером.

Пусть I – идентификационная информация стороны А (или значение ее хэш-функции); n – открытое произведение двух секретных простых чисел; v – открытое значение (показатель степени).

Секретный ключ g стороны А выбирается так, что Igv =1(mod n).

Сторона А отправляет В свои идентификационные данные I. Протокол доказательства:

1. А выбирает случайное целое r (1 < r < n – 1), вычисляет Т = rv (mod n) и отправляет это значение стороне В.

2. В выбирает случайное целое d (1 < d < n – 1) и отправляет это число стороне А.

3. А вычисляет D = rgd (mod n) и отправляет это значение В.

4. В вычисляет Т' =DvId (mod n) и проверяет выполнение равенства Т'= Т. Если оно выполняется, то проверка считается завершенной успешно.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: