Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 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

 

           
  х2 =   (mod 35) имеет решения: х = 1, 6. 29, 34;
  х2 = 4 (mod 35) имеет решения: х = 2,12, 23, 33;
  х2 =   (mod 35) имеет решения: х = 3, 17, 18, 32;
  х2 = 11 (mod 35) имеет решения: х = 9, 16.19, 26;

14 х2 = 14 (mod 35) имеет решения: х = 7, 28;

 

15 х2 =15 (mod 35) имеет решения: х = 15, 20;

 

16 x2* 16 (mod 35) имеет решения: х = 4, 11, 24, 31;

       
  x2 =21 (mod 35) имеет решения: х = 14, 21;
  x2 = 25 (mod 35) имеет решения: х = 5, 30;

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

 

V V-1 S = sqrt(V-1')
     
     
     
     
     
     
     
     
     
     
     
     

Итак, сторона А получает открытый ключ, состоящий из К=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: 1286; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.008 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию