Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Упрощенная схема идентификации с нулевой передачей знаний
Схему идентификации с нулевой передачей знаний предложили в 1986 г. У. Фейге, А. Фиат и А. Шамир. Она является наиболее известным доказательством идентичности с нулевой передачей конфиденциальной информации.
Рассмотрим сначала упрощенный вариант схемы идентификации с нулевой передачей знаний для более четкого выявления ее основной концепции. Прежде всего, выбирают случайное значение модуля n, который является произведением двух больших простых чисел. Модуль n должен иметь длину 512... 1024 бит. Это значение n может быть представлено группе пользователей, которым придется доказывать свою подлинность. В процессе идентификации участвуют две стороны:
• сторона А, доказывающая свою подлинность,
• сторона В, проверяющая представляемое стороной А доказательство. Для того чтобы сгенерировать открытый и секретный ключи для стороны
А, доверенный арбитр (Центр) выбирает некоторое число V, которое является квадратичным вычетом по модулю п. Иначе говоря, выбирается такое число V, что сравнение
х2 =V(mod n)
имеет решение и существует целое число
V-1 mod n.
Выбранное значение V является открытым ключом для А. Затем вычисляют наименьшее значение S, для которого
S = sqrt(V-1)(modn).
Это значение S является секретным ключом для А.
Теперь можно приступить к выполнению протокола идентификации.
1. Сторона А выбирает некоторое случайное число r, r<n. Затем она вычисляет
х = r2 mod n
и отправляет х стороне В.
2. Сторона В посылает А случайный бит b.
3. Если b = 0, тогда А отправляет г стороне В. Если b = 1, то А отправляет стороне В у = r * S mod n.
4. Если b = 0, сторона В проверяет, что
x = r2mod n,
чтобы убедиться, что А знает sqrt(x). Если b = 1, сторона В проверяет, что x = y2*Vmod n, чтобы быть уверенной, что А знает sqrt(V1).
Эти шаги образуют один цикл протокола, называемый аккредитацией. Стороны А и В повторяют этот цикл t раз при разных случайных значениях r и b до тех пор, пока В не убедится, что А знает значение S.
Если сторона А не знает значения S, она может выбрать такое значение г, которое позволит ей обмануть сторону В, если В отправит ей b = 0, либо А может выбрать такое r, которое позволит обмануть В, если В отправит ей b = 1. Но этого невозможно сделать в обоих случаях. Вероятность того, что А обманет В в одном цикле, составляет 1/2. Вероятность обмануть В в t циклах равна (1/2)t
Для того чтобы этот протокол работал, сторона А никогда не должна повторно использовать значение г. Если А поступила бы таким образом, а сторона В отправила бы стороне А на шаге 2 другой случайный бит b, то В имела бы оба ответа А. После этого В может вычислить значение S, и для А все закончено.
Параллельная схема идентификации с нулевой передачей знаний
Параллельная схема идентификации позволяет увеличить число аккредитаций, выполняемых за один цикл, и тем самым уменьшить длительность процесса идентификации.
Как и в предыдущем случае, сначала генерируется число n как произведение двух больших чисел. Для того, чтобы сгенерировать открытый и
секретный ключи для стороны А, сначала выбирают К различных чисел V1 V2,
...,VK, где каждое V; является квадратичным вычетом по модулю n. Иначе говоря, выбирают значение Vi таким, что сравнение
х2 =Vi mod n
имеет решение и существует Vi-1modn. Полученная строка V1V2,..., VK
является открытым ключом.
Затем вычисляют такие наименьшие значения S,, что
Si = sqrt (Vi1) mod n.
Эта строка S1 S2,..., SK является секретным ключом стороны А. Протокол процесса идентификации имеет следующий вид: 1. Сторона А выбирает некоторое случайное число r, r<n. Затем она вычисляет х = r2 mod n и посылает х стороне В.
2. Сторона В отправляет стороне А некоторую случайную двоичную строку из К бит: b1, b2,.... bк.
3. Сторона А вычисляет
у = r * (S1b1 * S2b2 *...* SKbk) mod n.
Перемножаются только те значения Si, для которых bi = 1. Например, если bi = 1, то сомножитель S1 входит в произведение, если же bi = 0, то S1 не входит
в произведение, и т.д. Вычисленное значение у отправляется стороне В.
4. Сторона В проверяет, что
x = у2 * (V1b1 * V2b2 *...*Vkbk ) mod n.
Фактически сторона В перемножает только те значения Vi, для которых bi = 1. Стороны А и В повторяют этот протокол t раз, пока В не убедится, что А знает S1, S2.....SK.
Вероятность того, что. А может обмануть В, равна (1/2)Kt. Авторы рекомендуют в качестве контрольного значения брать вероятность обмана В равной (1/2)20 при К = 5 и t=4.
Пример. Рассмотрим работу этого протокола для небольших числовых значений. Если n = 35 (n - произведение двух простых чисел 5 и 7), то возможные квадратичные вычеты будут следующими:
Таблица 2.3
14 х2 = 14 (mod 35) имеет решения: х = 7, 28;
15 х2 =15 (mod 35) имеет решения: х = 15, 20;
16 x2* 16 (mod 35) имеет решения: х = 4, 11, 24, 31;
29 x2 = 29 (mod 35) имеет решения: х = 8, 13, 22, 27;
30 x2 = 30 (mod 35) имеет решения: х - 10, 25.
Заметим, что 14, 15, 21, 25 и 30 не имеют обратных значений по модулю 35. потому что они не являются взаимно простыми с 35. Следует также отметить, что число квадратичных вычетов по модулю 35, взаимно простых с n = p*q = 5*7=35 (для которых НОД (х, 35) = 1), равно
(р -1) (q -1)/4 = (5 -1) (7-1)/4 = 6.
Составим таблицу квадратичных вычетов по модулю 35, обратных к ним значений по модулю 35 и их квадратных корней.
Таблица 2.4
Итак, сторона А получает открытый ключ, состоящий из К=4 значений V:
[4, 11, 16, 29]. Соответствующий секретный ключ, состоящий из К=4 значений S:
[3 4 9 8].
Рассмотрим один цикл протокола.
1. Сторона А выбирает некоторое случайное число r =16, вычисляет x=162 mod35=11
и посылает это значение х стороне В.
2. Сторона В отправляет стороне А некоторую случайную двоичную строку
[1, 1,0, 1].
3. Сторона А вычисляет значение
у = r * (S1b1 * S2b2 *...* SKbk) mod n =16 * (З1 * 41 * 9° * 81) mod 35 = 31
и отправляет это значение у стороне В.
4. Сторона В проверяет, что
x = у2 * (V1b1 * V2b2 *...*Vkbk ) mod n = 312 * (41 *111 *16° * 291) mod 35 =11.
Стороны А и В повторяют этот протокол t раз, каждый раз с разным случайным числом r, пока сторона В не будет удовлетворена.
При малых значениях величин, как в данном примере, не достигается настоящей безопасности. Но если n представляет собой число длиной 512 бит и более, сторона В не сможет узнать ничего о секретном ключе стороны А, кроме того факта, что сторона А знает этот ключ.
В этот протокол можно включить идентификационную информацию. Пусть I-некоторая двоичная строка, представляющая иден-
тификационную информацию о владельце карты (имя, адрес, персональный идентификационный номер, физическое описание) и о карте (дата окончания действия и т.п.). Эту информацию I формируют в Центре выдачи интеллектуальных карт по заявке пользователя А.
Далее используют одностороннюю функцию f() для вычисления f(i,j), где j-некоторое двоичное число, сцепляемое со строкой i. Вычисляют значения
Vj = f(l, j)
для небольших значений j, отбирают К разных значений j, для которых Vj являются квадратичными вычетами по модулю п. Затем для отобранных квадратичных вычетов Vj вычисляют наименьшие квадратные корни из Vj-1(mod n). Совокупность из К значений Vj образует открытый ключ, а совокупность из К значений Sj-секретный ключ пользователя А.
Date: 2015-06-06; view: 1336; Нарушение авторских прав |