Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шубина / Лекция_9.ppt
Скачиваний:
8
Добавлен:
15.03.2015
Размер:
152.58 Кб
Скачать

Схемы идентификации

Схема цифровой подписи и проверки подлинности разработана Амосом Фиатом ( Amos Fiat) и Ади Шамиром (Adi Shamir), Уриелем Фейге (Uriel Feige). Фиат и Шамир модифицировали алгоритм, превратив его в доказательство подлинности с нулевым знанием .

Упрощенная схема идентификации

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

Т.е. выбирается v так, чтобы уравнение x 2 ≡ v (mod n) имело решение, и существовало v -1 mod n.. Это v и будет открытым ключом П. Затем вычисляется наименьшее s, для которого

s ≡ sqrt (v -1 ) (mod n). Это будет закрытый ключ П.

Используется следующий протокол идентификации.

(1) П выбирает случайное r, меньшее n.

Затем он вычисляет x =-r 2 mod n и посылает x В.

(2)В посылает П случайный бит b.

(3)Если b = 0, то П посылает В r.

Если b = 1, то П посылает В y = r*s mod n.

(4)Если b = 0, В проверяет, что x = -r 2 mod n, убеждаясь, что П знает значение sqrt(x).

Если b = 1, В проверяет, что x = y 2 *v mod n, убеждаясь, что П знает значение sqrt(v -1 ).

Это один этап протокола, называемый аккредитацией.

Пи В повторяют этот протокол t раз, пока В не убедится, что П знает s. Это протокол "разрезать и выбрать".

Если П не знает s, он может подобрать r так, что сможет обмануть В, если он пошлет 0, или он может подобрать r так, что он сможет обмануть В, если он пошлет ему 1 . Он не может сделать одновременно и то, и другое

Вероятность обмана В один раз, равна 50 процентам. Вероятность обмана t раз, равна 1/2 t .

В может попробовать вскрыть протокол, выдавая себя за П. Он может начать выполнение протокола с другим пользователем. Чтобы этот протокол работал, П никогда не должна использовать r повторно. В противном случае, если В на шаге (2) пошлет П другой случайный бит, то он получит оба ответа П . Тогда даже по одному из них он сможет вычислить s, и для П все закончится.

Чтобы повысить число аккредитаций на этап и уменьшить взаимодействия П и В сначала генерируется n, произведение двух больших простых чисел. Для генерации открытого и закрытого

ключей П сначала выбирает k различных чисел: v 1, v 2, . . . v k, где каждое v i является квадратичным остатком mod n, т.е. v i выбираются так, чтобы x 2 ≡ v i (mod n) имело ре- шение, и существовало v i -1 mod n. Строка, v 1, v 2, . . . v k, служит открытым ключом. Затем вычисляются наименьшие s i, для которых s i ≡ sqrt (v i -1 ) (mod n). Строка s 1, s 2, . . . s k, служит закрытым ключом.

Выполняется следующий протокол:

(1)П выбирает случайное r, меньшее n. Затем вычисляется x = -r 2 mod n и посылает x В.

(2)В посылает П строку из k случайных битов: b1, b2, . . . bk.

(3)П вычисляет y = r *(s1b1*s2b2* …*sk bk )mod n. (Он перемножает вместе значения si, соответствующие b i=1. Если первым битом В будет 1, то s1 войдет в произведение, а если первым битом будет

0, то нет, и т.д.) и посылает В.

(4) В проверяет, что x = y 2 *(v1b1 *v2 b2 *vk bk) mod n. (Он перемножает вместе значения vi, основываясь на случайной двоичной строке. Если его первым битом является 1, то v1 войдет в произведение, а если первым битом будет 0, то нет, и т.д.) П и В повторяют этот протокол t раз, пока В не убедится, что П знает s1, s2, . . . sk. Вероятность, что П удастся обмануть В t раз, равна 1/2 kt

. Авторы рекомендуют использовать вероят-ность мошенничества 1/2 20 и предлагают значения k = 5 и t = 4. Если у вас склонность к мании преследования, увеличьте эти значения.

В протокол можно встроить идентификационные данные. Пусть I - это двоичная строка, представляющая идентификатор П:

имя, адрес, номер социального страхования, размер головного убора и другая личная информация .

Используем однонаправленную хэш-функцию H(x) для вычисле- ния H(I, j), где j - небольшое число, добавленное к I. Найдем набор j, для которых H(I,j) - это квадратичный остаток по модулю n.

Эти значения H(I, j) становятся v1, v2, . . . vk (j не обязаны быть квадратичными остатками).

Открытым ключом П служит I и перечень j. П посылает I и перечень j В перед шагом (1) протокола (или В загружает эти значения с какой-то открытой доски объявлений), и В генерирует v1, v2, . . . vk из H(I,j).

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

Фейге, Фиат и Шамир добавили, что для неидеальных хэш- функций можно посоветовать рандомизировать I, добавляя к нему длинную случайную строку R. Эта строка выбирается арбитром и открывается В вместе с I. В типичных реализациях k должно быть от 1 до 18. Большие значения k могут уменьшить время и трудности связи, уменьшая количество этапов. Длина n должна быть не меньше 512 битов. Если каждый пользователь выберет свое собственное n и опубликует его в файле открытых ключей, то можно обойтись и без арбитра. Однако такой RSA-подобный вариант делает схему заметно менее удобной. Превращение этой схемы идентификации в схему подписи - это вопрос превращения В в хэш-функциию. Главным преимуществом схемы цифровой подписи Fiat-Shamir по сравнению с RSA является ее скорость. Улучшенная схема подписи Fiat-Shamir - выбор v1, v2, . . . vk так, чтобы они были первыми k простыми числами. То есть v1= 1, v2= 3, v 3= 5, и т.д. Это открытый ключ. Закрытым ключом, s1, s2, . . . sk, служат случайные квадратные корни, определяемые как

si = sqrt (vi -1 ) (mod n). В этой версии у каждого участника должен

быть свой n.

Такая модификация облегчает проверку подписей, не влияя на время генерации подписей и их безопасность. Среди других улучшений на основе алгоритма Fiat-Shamir существует и N- сторонняя схема идентификации.

Схема идентификации Ohta-Okamoto - является вариантом схемы идентификации Feige-Fiat-Shamir, его безопасность основана на трудности разложения на множители. Схема идентификации Guillou-Quisquater.

Несколько подписей. Что если несколько человек захотят подписать один и тот же документ? Проще всего, чтобы они подписали его порознь, но рассматриваемая схема подписи делает это лучше. Пусть А и Б подписывают документ, а К проверяет подписи, но в процесс подписания может быть вовлечено произвольное количество людей . Как и раньше, А и Б обладают уникальными значениями J и B: (JA,BA) и (JB,BB). Значения n и v являются общими для всей системы.

(1)А выбирает случайное целое rА, находящееся в диапазоне от 1 до n-1, вычисляет TА = rА v mod n и посылает TА Б.

(2)Б выбирает случайное целое rВ, находящееся в диапазоне от 1 до n-1 и вычисляет TВ = rВ v mod n и посылает TВ А.

(3)А и Б, каждый вычисляет T = (TА*TВ) mod n.

(4)А и Б, каждый вычисляет d = H(M,T), где M - подписываемое сообщение, а H(x) - однонаправленная хэш-функция. Значение d, полученное с помощью хэш-функции, должно быть в диапазоне от 0 до v-1. Если выход хэш-функции выходит за этот диапазон, он должен быть приведен по модулю v.

(5)А вычисляет DA = rABA d mod n и посылает DA Б.

(6)Б вычисляет DB = rBBB d mod n и посылает DB А.

(7)А и Б, каждый вычисляет D = DA DB mod n. Подпись состоит из

сообщения M, двух вычисленных значений, d и D, и атрибутов обоих подписывающих: JA и JB.

(8)К вычисляет J = JA JB mod n.

(9)К вычисляет T’ = Dv J d mod n. Затем она вычисляет d' = H(M,T'). Если d ≡ d', то множественная подпись действительна..

Этот протокол может быть расширен на любое количество людей Для этого подписывающие сообщение люди должны перемножить свои значения Ti на этапе (3), и свои значения Di на этапе (7). Чтобы проверить множественную подпись, нужно на этапе (8) перемножить значения Ji подписывающих (8). Либо все подписи правильны, либо существует по крайней мере одна неправильная подпись. Безопасность схемы проверки подлинности и подписи Клауса Шнорра (SCHNORR) опирается на трудность вычисления дискретных логарифмов. Для генерации пары ключей сначала выбираются два простых числа , p и q так, чтобы q было сомножителем p-1. Затем выбирается a, не равное 1, такое что

aq ≡ 1 (mod p). Все эти числа могут быть свободно опубликованы и использоваться группой пользователей . Для генерации конкретной пары ключей выбирается случайное число, меньшее q.

Оно служит закрытым ключом, s. Затем вычисляется открытый ключ v = a-s mod p.

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

(1)П выбирает случайное число r, меньшее q, и вычисляет

x = a r mod p. Эти вычисления являются предварительными и могут быть выполнены задолго до появления В .

(2)П посылает x В.

(3)В посылает П случайное число e, из диапазона от 0 до 2 t-1 . (Что такое t - позже.)

(4)П вычисляет y = (r + se) mod q и посылает y В.

(5)В проверяет, что x = a y v e mod p.

Безопасность алгоритма зависит от параметра t. Сложность вскрытия алгоритма примерно равна 2 t . Шнорр советует использовать p около 512 битов, q - около 140 битов и t - 72.

Соседние файлы в папке Шубина