Материал: Раздел 3. Криптографические протоколы

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

15

Раздел 3. Криптографические протоколы.

В традиционных (классических) криптографических системах предпола-

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

Криптография с открытым ключом значительно расширила класс задач, решаемых с помощью криптографических методов [7,8,9]. В результате появилась необходимость в интерактивных, многоразовых двусторонних обменах сообщениями между участниками, которые не всегда доверяют друг другу, в передаче информации между несколькими участниками. Последовательность действий участников обмена информацией, использующих криптографические приемы для решения нетрадиционных задач, называют криптографическими протоколами.

3.1. Системы с открытым распределением ключей для абонентских сетей.

Пусть несколько абонентов A, B, C, договорились об обмене информацией. Они могут выбрать некоторое общее простое число p, такое, что p-1 раскладывается на простые сомножители в первой степени. Число вида N = p1p2p3…pk называется эвклидовым числом. Каждый из участников выбирает два числа меньших и взаимно простых с p-1 так, чтобы:

a1a2 º b1b2 º c1c2 º 1 mod (p-1).

Пусть абонент A хочет передать сообщение S абоненту B. Он кодирует свое сообщение возведением в степень a1: Sa1 º S1 mod p и передает его B. Тот в свою очередь кодирует полученное сообщение возведением в степень b1 : S1b1 º S2 mod p и возвращает его A. A возводит его в степень a2 и передает его B: S2a2 º S3 mod p. B возводит его в степень b2 и читает сообщение. Справедливость результата следует из сравнения: a1b1a2b2 º 1 mod (p – 1).

Пример. Пусть абоненты A, B и C выбрали число p = 103. Это число простое, причем 103-1 = 102 – эвклидово число, так как представляется в виде произведения простых чисел в первых степенях: 102 = 2*3*17. Каждый из участников выбирает пару секретных ключей:

A: a1 = 25, a2 = 49,

B: b1 = 19 , b2 = 43,

C: c1 = 35, c2 = 35.

Пусть теперь A посылает к B сообщение S = 67. Он возводит его в степень 25 и находит остаток по модулю 103: 6725 º 86 mod 103.

B возводит число 86 в степень b2 = 19 и отправляет результат к A:

8619 º 96 mod 103.

A возводит полученное сообщение в степень 49 и передает его B:

9649 º 21 mod 103.

B получив сообщение, возводит его в степень 43 и читает исходный текст: 2143 º 67 mod 103. Таким образом, S = 67.

Открытым ключом в этой системе является модуль p. Недостатком такой системы является большое число передач от одного абонента к другому.

    1. Банки и вкладчики.

Рассмотрим задачу [ 6 ], в которой вкладчики банка v1,v2,…vk передают шифрованное распоряжение ответственному работнику банка B (банкиру). При этом кроме конфиденциальности должна обеспечиваться узнаваемость вкладчика, чтобы по полученному сообщению банкир B сумел идентифицировать автора сообщения и выполнить именно его распоряжение.

Банкир B выбирает некоторое число N = PQ, где P и Q – большие простые числа. Каждый из вкладчиков vi (i = 1,2,3,…,k) также выбирают свои значения

ni = piqi, причем желательно, чтобы N > ni. Затем как банкир, так и вкладчики находят значения j (N) – банкир и j (ni) – все вкладчики. После чего каждый выбирает свой открытый ключ E - банкир и ei – вкладчики из условий:

0 < E < j (N) , ( E, j (N) ) = 1 – банкир и 0 < ei < j (ni), (ei, j (ni)) = 1 – вкладчики. Затем банкир и вкладчики находят свои секретные ключи D и di из сравнений:

ED º 1 mod j (N), 0 < D < j (N) – банкир,

edº 1 mod j (ni), 0 < d < j (ni) – вкладчики.

После этих операций открыто публикуется телефонная книга с открытыми ключами:

B: N, E

vi: ni, ei.

Пусть теперь некоторый вкладчик vi хочет передать распоряжение m банкиру B. Он шифрует его сначала своим секретным ключом (возводя m в степень di по mod ni, а затем открытым ключом банкира: m1 º mdi mod ni, m2 º m1E mod N. Сообщение m2 передается по открытому каналу связи. Банкир, получив сообщение m2 сначала расшифровывает его своим секретным ключом D, а затем открытым ключом вкладчика vi. В результате получает:

m3 º m2D mod N, m4 º m3ei mod ni. При этом m4 = m, т.е. банкир B расшифровывает переданное ему распоряжение, при этом заодно и идентифицирует (узнает) вкладчика. Это похоже на проверку подписи вкладчика и иногда называется “электронная подпись”. Если вкладчик из открытой телефонной книги узнает, что банкир выбрал число N < ni, то изменив порядок шифровки получит тот же результат, если банкир также изменит порядок расшифровки.

Пример.

Пусть банкир выбрал простые числа P = 23, Q = 11; вкладчик v: p = 13, q = 7. После чего и банкир и вкладчик вычисляют сначала функции Эйлера: j(23*11) = 220; j (13*7) = 72, затем выбирают открытые и вычисляют секретные ключи, например: E = 71, D = 31; e = 29, d = 5. Открыто публикуются числа: P*Q = 253, p*q = 91, E = 71, e = 29. Секретным ключом банкира является число D = 31, а секретным ключом вкладчика d = 5.

Пусть вкладчик решил дать секретное поручение банкиру в виде числа m = 41. Он шифрует его своим секретным ключом t, а затем открытым ключом банкира S:

415 º 6 mod 91, 671 º 94 mod 253. Это сообщение (число 94) по открытому каналу передается банкиру. Банкир расшифровывает сообщение сначала своим секретным ключом D, а затем открытым ключом вкладчика e:

94 31 º 6 mod 253, 629 º 41 mod 77. Банкир принимает указание вкладчика в виде числа 41.

    1. Цифровая подпись

В некоторых случаях, сделка, совершенная по сети, должна быть юридически признаваемой, чтобы ни один из партнеров не мог отказаться от авторства переданного сообщения. Для этого существует специальный прием, называемый “цифровой подписью”. В принципе, протокол, рассмотренный в предыдущем разделе, также позволяет банкиру проверить авторство присланного сообщения и может рассматриваться как процедура “цифровой подписи”. Известно несколько разновидностей цифровых подписей. Если шифруется сообщение, это гарантирует, что оно не было изменено. Однако обычно подписывается не сам документ, а его “портрет”. Это делается по ряду причин. Во-первых, часто сам документ не является секретным, но важно, чтобы он не был изменен и получен именно из того источника, откуда ожидался.

Часто для создания кода аутентичности используется алгоритм DSA (цифровая подпись). Последние биты результата используются как код аутентичности. Отличие от шифрования состоит в том, что код аутентичности является необратимым.

Односторонняя функция хэширования получает на вход сообщение М произвольной длины, а на выходе выдает хэш-код постоянной длины. В отличие от MAC функция хэширования не требует секретного ключа. В качестве функции хэширования часто используется SHA-1 [ 4 ].

3.4. Электронные платежи

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

Будем использовать три транзакции: снятие со счета, платеж и депозит.

При расчете электронными деньгами необходимо обеспечить:

- безопасность банка в виде невозможности подделать подпись банка или по набору подлинных банкнот, подписанных банком, создать новую фальшивую банкноту с банковской подписью,

- неотслеживаемость покупателя в виде невозможности сопоставления выданных банкнот, которые со временем возвращаются в банк, и покупателя, получившего эти банкноты.

Эти, на первый взгляд, парадоксальные требования обеспечиваются с помощью так называемой “затемненной” подписи в соответствии со схемой RSA.

Банк выбирает два простых числа p и q, открытый ключ e и вычисляет свой секретный ключ d из условия: ed ≡ 1 mod j (N = pq), затем открыто публикует N, e и некоторую одностороннюю функцию f: ZN ® ZN,

Генерация подписи банка состоит в применении к сообщению m функции дешифрования: s ≡ md mod N. В простейшем варианте электронной подписи ключом в d соответствует банкнота достоинством в 1 денежную единицу (рубль, сто рублей, тысяча и т.п.) Для получения нескольких денежных единиц в данном протоколе необходимо каждый раз обращаться в банк. Более сложный протокол обеспечивает получение электронной банкноты произвольного достоинства.

При снятии со счета покупатель выбирает некоторое случайное число nÎ ZN и вычисляет f(n). Покупатель хочет получить о банка подпись на банкноте, т.е. f(n)d. Однако если он просто пошлет в банк значение f(n), то нарушится условие неотслеживаемости, так как банк, снимая со счета покупателя сумму , сопоставит покупателю выданную (подписанную банком)

Банкноту. Для устранения этого покупатель выбирает некоторое случайное число r Î ZN, r ¹ 0, вычисляет f(n)re mod N и посылает результат в банк. Банк вычисляет значение f(n)dr mod N и возвращает его покупателю. Покупатель “снимает” затемняющий множитель r и получает подписанную банкноту в виде ( n, f(n)d mod N). Этой банкнотой он будет рассчитываться с продавцом.

В транзакции платежа покупатель передает продавцу электронную банкноту ( n, f(n)d mod N), подлинность которой тот может проверить самостоятельно, вычислив по n значение f(n), а затем проверив условие (f(n)d )е mod N) º f(n).

3.5. Аутентификация сообщений

Сообщения считаются аутентичными, если они получены из того источника, который объявлен в сообщении и не подвергались изменениям. Т.е. обеспечение аутентификации это защита от активных атак противника.

Двумя важными задачами аутентификации являются:

- проверка того, что содержимое сообщения не было изменено,

- проверка того, что сообщение прибыло именно из того источника о котором информирует сообщение.

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

  1. Аутентификация сообщения с помощью шифрования.

Если у отправителя и получателя имеются секретные ключи, то можно

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

  1. Аутентификация сообщений без шифрования.

В ряде случаев само сообщение является открытым, но нужно прове-

рить, не изменялось ли оно. Например, при передаче компьютерных программ по интернету.

В этом случае к сообщению добавляется приставка ( тег ). К сообщению добавляется криптографическая контрольная сумма или код аутентичности сообщения постоянной длины MAC (Message Authentication Code). При этом отправитель А и получатель В используют общий секретный ключ KAB. Отправитель сообщения вычисляет MACM = F (KAB, M) и посылает сообщение M с приставкой MACM. Получатель по сообщению и ключу вычисляет MACM и сравнивает его с пришедшим. Если они совпадают, то можно сделать выводы:

а) Сообщение не было изменено,

в) Сообщение пришло из указанного источника,

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

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

Пусть p и q – простые числа, причем q делит p - 1. Например, p = 23, q = 11, или p = 59, q = 29. Пусть выбрано g такое, что gq º 1 mod p. для первого примера g = 2, так как 211 º 1 mod 23, для второго примера g = 4, так как 429 º 1 mod 59.

Алиса выбирает некоторое случайное число x из диапазона чисел: {0,1,2,…q-1} и вычисляет ключ y = g-x mod p, который открыто публикует.

Далее Алиса выбирает случайное число k из множества {0,1,2,…q-1}, вычисляет r = gk mod p и r отправляет к Бобу.

Боб выбирает некоторый случайный запрос e из множества

{0,1,2,…2t-1}, где t – некоторое целое и посылает e к Алисе.

Алиса вычисляет s = k + xe mod q и посылает s к Бобу на проверку.

Боб проверяет соотношение: r = gsye mod p и если оно выполняется, принимает доказательство Алисы, что она владеет секретным ключом, в противном случае доказательство отвергается.

Пример. Пусть p = 59, q = 29, тогда можно взять g = 4. Случайное число x, выбираемое Алисой, x = 9, тогда y = 4-9º 17 mod 59. Число 17 является открытым ключом Алисы.

Далее Алиса выбирает k например, k = 12, вычисляет r = 412 º 35 mod 59 и число r = 35 посылается к Бобу. Пусть случайный запрос Боба e = 10, который он посылает к Алисе. Алиса вычисляет: s = 12 + 9*10 mod 29 º 15 mod 29. Число s = 15 посылается к Бобу.

Боб проверяет соотношение: 4151710º 57*12 º 35 mod 59. Поскольку r = 35, то доказательство принимается.

В рассмотренном случае автор только доказывал, что владеет некоторым

секретом.

Однако для того, чтобы исключить оплату одной и той же банкнотой нескольких покупок, продавец отправляет электронную банкноту в банк для проверки и зачисления на свой счет. Банк по реестру проверяет, не была ли ранее потрачена эта банкноты и зачисляет денежную квоту на счет продавца.

При снятии со счета у банка остается некоторое значение f(n)d r mod N), которое из-за затемняющего множителя r представляет собой просто случайное число.

Пример.

Пусть банком выбраны простые числа p = 17 и q = 19. Тогда N = 323, j (323) = 288. Открытый ключ выберем, например, в виде e = 11, секретный (вычисленный) ключ d = 131 и односторонняя функция, например, f(x) = x2 mod 323.

Публикуются открытые ключи N, e и односторонняя функция f(x).

При снятии со счета покупатель выбирает случайное число, например, n = 25, вычисляет f(25) = 252 º 302 mod 323, выбирает затемняющий множитель, например, r = 20 и вычисляет f(n)re mod N, которое в данном случает будет равно 302*2011 mod 323 º 74 mod 323 и посылает в банк число 74. Банк возводит полученное число в степень d = 131 и получает 74131 º 63 mod 323. Покупатель снимает затемняющий множитель r = 20, решая сравнение 63/20 mod 323 º 310. Таким образом банкнота, подписанная банком имеет вид ( 25, 310). Эта банкнота отправляется продавцу. Если продавец хочет самостоятельно проверить подлинность банкноты, он может вычислить f(25) = 25 2 º 302 mod 323 и затем 310 11 º 302 mod 323. Совпадение полученных значений свидетельствует о подлинности банкноты. Однако для гарантии того, что эта банкноты не использовалась в других платежах, продавец отправляет ее в банк, который по реестру проверяет, что она впервые используется в платеже и зачисляет одну денежную единицу на счет продавца.