Добавил:
Да поможет вам Котельников Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

10 Лекция - Методы и средства управления криптоключами

.pdf
Скачиваний:
8
Добавлен:
23.06.2024
Размер:
387.9 Кб
Скачать

11

3. A B:E k,Sign ka,ax ||ay , где величина k ay x mod p

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

(key confirmation).

Семейство протоколов MTI

В 1986 году Мацумото, Такашима и Имаи предложили (Matsumoto Т., Takashima Y., Imai Н. On seeking smart public-key- distribution systems // Trans, of the IECE of Japan - 1986.1 E69.1 pp. 99-106) целое семейство протоколов,

которые могут рассматриваться как вариант схемы Диффи-Хеллмана с аутентификацией, в котором пользователи имеют открытые ключи и вместо процедуры цифровой подписи используют модифицированный алгоритм выработки общего ключа. Данное семейство протоколов принято называть MTI — по первым буквам авторов.

Далее будем считать, что во всех протоколах пользователи A и B имеют секретные ключи kA , kB из GF(q)* соответственно и публикуют в открытом доступе свои открытые ключи

zA akA mod p , zB akB mod p .

В варианте протокола, получившего в англоязычной литературе название MTI-A(r), для выработки общего ключа k участники протокола вырабатывают случайные числа, соответственно x, у из GF(q)*, и для любого фиксированного заранее целого неотрицательного числа r обмениваются сообщениями:

1.A B:sA akAr x mod p ;

2.B A:sB akBr y mod p

Далее искомый общий ключ находится по формуле

k sB kA zB xkAr mod p sA kB zA ykBr mod p axkArkB ykBrkA mod p ,

Наибольшую известность получил протокол МТI-А(0), в котором величина r = 0, а формула для вычисления общего ключа принимает вид

k sB kA zB x mod p sA kB zA y mod p axkB ykA mod p

Аналогично в варианте протокола MTI-B(r) участники протокола вырабатывают случайные числа, соответственно x, у из GF(q)*, и для любого фиксированного заранее целого неотрицательного числа r обмениваются сообщениями:

1.A B:sA zBkAr x mod p ;

2.B A:sB zAkBr y mod p

12

Далее искомый общий ключ находится по формуле

k sB kA1

axkAr mod p sA kB1

aykBr mod p axkAr ykBr mod p

где величины kA1 , kB1 удовлетворяют сравнениям kAkA1 kBkB1 1 modq .

В варианте протокола MTI-C(r) участники также вырабатывают случайные числа, соответственно x, у из GF(q)*, и для любого фиксированного заранее целого неотрицательного числа r обмениваются сообщениями:

1.A B:sA zBkAr x mod p ;

2.B A:sB zAkBr y mod p

Вместе с тем для вычисления общего ключа k используются другие соотношения:

k sB xkAr 1 mod p sA ykBr 1 mod p axykArkBr mod p (***)

Упражнение. Проверьте корректность соотношений, позволяющих вычислить общий ключ в приведенных выше семействах протоколов МТI- B(r) и MTI-C(r).

С момента появления протоколов семейства MTI к ним были разработаны атаки, которые иллюстрируют различные уязвимости. Остановимся на некоторых из них более подробно.

Атака в подгруппе малого порядка

В начале раздела мы зафиксировали, что вычет a образует циклическую подгруппу простого порядка q в мультипликативной группе простого поля GF(p).

Предположим, что a является первообразным корнем по модулю p, то есть порождает все множество вычетов {1,2,...,р - 1}- Тогда его показатель по модулю р, очевидно, равен р — 1.

Рассмотрим целое число w такое, что w|p-1, p-1= wv и целая величина v принимает небольшое значение. Легко видеть, что всегда существует такое w, для которого v = 2.

Теперь опишем атаку в подгруппе малого порядка (small subgroup attack) применительно к протоколу МТI-C(1). Нарушитель С имеющий возможность перехватывать и заменять сообщения в линии связи, выполняет следующую последовательность действий

1 A C :sA zBkAr x mod p ;

2C B:sAw mod p

3B C:sB zAkBr y mod p

4C A:sBw mod p

Тогда оба участника протокола вырабатывают общий ключ в

13

соответствии с (***)

k axywkAkB mod p .

Вместе с тем, поскольку показатель элемента aw по модулю p равен v, а величина v мала, нарушитель может перебрать все возможные значения

a,a2,...,av 1 mod p

и опробовать их в качестве ключа k . При v = 2 нарушителю будет необходимо опробовать всего 2 значения. Очевидно, что данная атака применима к протоколу MTI-C(r) для любого значения г.

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

Действительно, если нарушитель на втором и четвертом шагах соответственно приведенной атаки вычислит

sqA mod p , sbq mod p ,

то участники протокола все равно выработают одинаковый общий ключ k , равный 1. Защита от подобных действий нарушителя заключается в проверке условий sA,sB 1 mod p .

Упражнение. Примените атаку в подгруппе малого порядка для анализа базового протокола Диффи-Хеллмана.

В явном виде атака в подгруппе малого порядка неприменима к протоколам семейства MTI-A(r) и MTI-B(r). Однако при некоторых дополнительных допущениях о возможностях нарушителя возможна компрометация и этих протоколов.

Будем считать, что нарушитель может изменять открытые ключи zA ,. и zB участников протокола. Такая ситуация может возникнуть в случае, когда участники протокола получают ключи из некоторого удаленного хранилища. Предположим, что для определенного выше значения w нарушителю удалось заменить указанные ключи на

z*A zAw mod p , z*B zBw mod p .

Тогда реализация атаки в подгруппе малого порядка на протокол MTI- А(г), то есть

замена нарушителем сообщения sA akAr x mod p на сообщение s*A sAw mod p и

замена нарушителем сообщения sB akBr y mod p на сообщение

s*B sBw mod p ,

приведут к тому, что частник A вычислит ключ

k xkr r kA xkr ykrk xk kr

k s*B A z*B A mod p aywkB awkB A mod p aw B A B A mod p

14

и участник В вычислит тот же общий ключ

k s*A kB z*A ykBr

mod p axwkAr kB awkA ykBr

mod p aw ykBr kA xkBkAr

mod p

.

что показатель элемента aw по модулю p мал, нарушитель

Учитывая,

может эффективно опробовать все возможные значения общего ключа k .

Описанная

нами атака, использующая

подмену открытых

ключей

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

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

Атака в подгруппе простого порядка

Описанная нами выше атака в подгруппе малого порядка применима в случае, когда элемент a является первообразным корнем по модулю p и его показатель, очевидно, не является простым числом. Однако использование элементов с простым показателем q, где q|p-1, не всегда может гарантировать стойкость протокола, что было продемонстрировано в 1997 году китайскими криптографами (Lim С.Н., Lee P.J. A key recovery attack on discrete logarithm based schemes using a prime order subgroup // In B. Kaliski, editor, Advances in Cryptology - Crypto ’97. - Lecture Notes in Computer Science Volume 1294. - 1997. pp. 249-263).

 

Будем считать, что показатель элемента a по модулю p равен q, а

величина

p 1

имеет много маленьких простых делителей r,...,r

таких, что

 

 

 

q

1

u

 

 

 

 

 

 

u

 

 

 

 

 

ri

q.

Такая ситуация может возникнуть, например,

 

в случае

i 1

 

 

 

 

 

использования параметров, удовлетворявших устаревшему отечественному стандарту ГОСТ Р 34.10-94, когда log2 q 256 и log2 q 1024.

Предположим, что нарушитель C может являться легитимным участником протокола, то есть обладать некоторым секретным kС из GF(q)* и открытым ключом, удовлетворяющим равенству

zС akС mod p .

Опишем атаку нарушителя на протокол МТI-A(0). Перед проведением атаки нарушитель выбирает некоторый делитель r r1,...,ru и вычисляет

элемент b из GF(q)* показатель которого равен r, тогда bl 1 mod p для всех 1=1,... ,r-1 и br 1 mod p .

Теперь нарушитель выполняет с участником В, который подвергается

15

атаке, следующий протокол.

C B:sC bax mod p

B C :sB ay mod p

Далее в соответствии с соотношениями МТI-A(0) участник В вычисляет общий ключ

k sC kB zC y mod p bkB axkB ykC mod p .

Одновременно нарушитель С вычисляет другой ключ

k1 sB kC zB x mod p axkB ykC mod p ,

для которого, очевидно, выполнено равенство k1bkB k mod p .

Поскольку показатель элемента b по модулю p равен r, и r невелико, то нарушитель может эффективно подобрать такое значение l, что

k1bl k mod p

Для определения верного значения l необходимо иметь возможность отбраковывания ложных значений. Такая возможность обычно появляется, если участники протокола должны выполнять обмен зашифрованными сообщениями на общем ключе k .

Одновременно для найденного нарушителем значения l выполнено сравнение

kB l modr .

Следовательно, повторяя подобную атаку

для всех значений

r r1,...,ru , нарушитель может вычислить значения

kB li modr ,i

 

и

1,u

далее, с использованием китайской теоремы об остатках, вычислить точное значение секретного ключа участника B.

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

проверить, принадлежит ли данное сообщение подгруппе порядка q. Как легко заметить, направляемое нарушителем сообщение sC bax mod p

такой проверке не удовлетворяет.

Другой способ заключается в выборе параметров p и q так, чтобы

делители величины p 1 были по возможности минимальны. Наиболее q

оптимальный вариант в этом случае — положить p = 2q +1, то есть взять в качестве р и q простые - близнецы.

Однако даже при таком выборе нарушитель сможет получить информацию об одном бите секретного ключа kB , а именно kB (mod 2).

Атака на выработку ключа с третьим участником

Существует целый класс атак на протоколы обмена ключевой информацией, в которых нарушителем достигается следующая ситуация. Два участника протокола A и B вырабатывают общий ключ k , но при этом участник A считает, что он выработал ключ k с участником B, а участник B

16

считает, что он выработал общий ключ с третьим участником, скажем, C. В англоязычной литературе такие атаки носят название unknown key-share attack, которое можно перевести на русский язык как атака на выработку ключа с третьим участником.

В 1995 году появилась работа (Menezes AJ., Qu М., Vanstone S.A. Some new key agreement protocob providing implicit authentication. // Workshop on Selected Areas in Cryptography (SAC’95). 1 1995. | pp. 22-32.), в который были приведены атаки на выработку ключа с третьим участником, применимые ко всем протоколам семейства MTI. Мы опишем одну из таких атак применительно в протоколу МТI-В(0).

Снова предположим, что нарушитель C может являться легитимным участником протокола, то есть обладать некоторым секретным ключом kС из GF(q)* и открытым ключом, удовлетворяющим равенству

zС zAkC akAkС mod p , где zA — открытый ключ участника Ф. При этом нарушителю С известно точное значение величины kAkС (mod q).

Тогда атака на выработку ключа с третьим участником протокола может быть записана следующим образом.

x

1 A C :sA zB mod p ;

2C B:sC sA mod p

3B C :sB zC y mod p

4C A:s1B sBkC1 mod p

Далее, участник А вычисляет общий ключ k в соответствии с равенствами

k s1B kA1

ax mod p zC ykC1

ax mod p ax y mod p ,

и участник B вычисляет тот же общий ключ k

k s

kB1

ay mod p z

B

xkB1

ay mod p ax y mod p .

C

 

 

 

 

Таким образом, участники протокола А и В могут обмениваться сообщениями, зашифрованными на общем ключе k, но при этом участник А считает, что он обменивается с В, а участник В считает, что он обменивается сообщениями с С.

Упражнение Предложите аналогичные атаки на протоколы семейства МТI-A(0) и МТI-С(0).

Для защиты от подобного класса атак можно использовать несколько способов

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

17

значения kС (x из GF(q)* случайное число):

1.T C:sT zC x mod p

k 1

;

2.C T :sC sT C mod p

После получения сообщения sC удостоверяющий центр Т должен проверить выполнение сравнения ax sC mod p . В случае, если

данное сравнение выполнено, то удостоверяющий центр принимает решение о том, что участник С владеет корректным секретным ключом kС .

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

пару значений zA y ,

MAC k,sA

 

 

 

zA y В этом случае

 

 

нарушитель, не зная ключа k, не сможет подделать код аутентичности.

Фактически использование кодов аутентичности является операцией подтверждения ключа k.

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

Выработка ключа для конференц-связи Простейшим примером схемы распределения ключей для проведения

конференц-связи является использование централизованного распределения ключей с помощью трехстороннего протокола передачи ключей с использованием доверенного центра. Для реализации такого подхода можно возложить на одного из пользователей функции центра генерации и распределения ключей. Однако это вносит серьезную асимметрию между участниками конференцсвязи.

Приведем пример протокола для трех участников А, В, С, в котором все участники имеют одинаковые полномочия и выполняют симметричные функции. Будем считать, как и ранее, что зафиксирован вычет а из GF(p), показатель которого по модулю р равен q, где q - простое число.

Для выработки общего ключа k участники протокола генерируют соответственно случайные числа х, у, z из GF(q)* и обмениваются сообщениями согласно схеме:

1.A B: X ax mod p ,

2.B C:Y ay mod p ,

3.C A:Z az mod p ,

18

4.A B: X1 Zx mod p ,

5.B C:Y1 X y mod p ,

6.C A:Z1 Yz mod p ,

Общий ключ k вычисляется участниками протокола по формулам:

k X1 z mod p Y1 x mod p Z1 y mod p axyz mod p

Упражнение Возможна ли на рассмотренный протокол атака «человек посередине», атака в подгруппе малого порядка, атака на выработку ключа с третьим (в данном случае — четвертым участником? Ответ обоснуйте приведением конкретной схемы действий нарушителя.

ПРОТОКОЛЫ ПЕРЕДАЧИ КЛЮЧЕЙ Двусторонние протоколы с помощью симметричного шифрования

Будем считать, что участники протокола А и В имеют общий секретный ключ kAB - Тогда передачу ключа k от участника А к участнику В можно проводить по схеме:

A B:E kAB,k ||t ||ID B

где Е(k,*) - алгоритм зашифрования на ключе kAB , t - метка времени, ID B -

идентификатор получателя ключа.

Отметим, что метка времени предотвращает повторную передачу того же сообщения.

Можно использовать также протокол типа «запрос-ответ»:

B A:r B ;

A B:E kAB,k ||r B || ID B ,

где r B - случайный двоичный вектор заданной длины, выработанный

получателем ключа - участником протокола В.

Указанный протокол можно модифицировать так, чтобы в выборе ключа kAB участвовали обе стороны:

B A:r B ;

A B:E kAB,kA ||r A ||r B || ID B , B A:E kAB,kB ||r B ||r A || ID A

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

k Kdf kA,kB .

Трехсторонние протоколы

Пусть в сети имеется центр Т, у которого имеется индивидуальная связь на секретных ключах k DT с каждым из абонентов D и который

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

более удобна для абонента В:

19

1.

A B:r,ID A ,ID B ,Ek A

 

r A ||r ||ID A || ID B ;

 

 

T

r A ||r|| ID A ||ID B , а также

2.

B T :r,ID A ,ID B ,Ek A

 

 

 

T

 

 

 

Ek B

r B ||r ||ID A || ID B

;

 

T

 

 

 

3.T B:Ek AT r A ||k ,Ek BT r B ||k ;

4.B A:Ek AT r A ||k .

Случайные числа r A , r B генерируется абонентами для

аутентификации центра Т, а случайное число r играет роль метки времени (для аутентификации сеанса связи).

Передача ключей с помощью асимметричного шифрования

Протоколы без использования электронной подписи Начнем с протоколов, не использующих электронную подпись (ЭП)

для аутентификации отправителя ключа. Полагаем, что абонент D обладает алгоритмом асимметричного шифования ED с открытым ключом k(D). Тогда передачу ключа k от А к В можно выполнить за один шаг:

1. A B:EBk B k ||t|| ID A , здесь t - метка времени,

предназначенная для предотвращения повторного использования ключа.

Упражнение Объясните, при каких условиях метка времени t может гарантировать корректность данного протокола, т.е. предотвратить от повторного использования ключа k, а при каких условиях — нет.

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

Для подтверждения правильности получения ключа и взаимной аутентификации можно использовать следующий протокол:

A B:EBk B k || ID A , B A:EAk A k ||r B , A B:EBk B r B

Протоколы с использованием электронной подписи

Для передачи ключа k с аутентификацией отправителя можно

использовать следующие типы протоколов.

 

 

 

Зашифрование подписанного ключа

 

 

 

A B:EBk B k ||t||SA ID B ||k ||t ,

 

 

Зашифрование

 

и

подпись

ключа.

 

A B:EBk B k ||t ,SA ID B ||k ||t

 

 

 

Зашифрование

и

подпись

зашифрованного

ключа.

 

A B:t,EBk B ID A ||k ,SA ID B ||k || EBk B ID A ||k

где SA - алгоритм выработки электронной подписи, t - метка времени.

20

Протокол CCITT X.S09

Международный стандарт CCITT Х.509 регламентирует следующий протокол аутентификации и распределения ключей:

A B:CA,DA,SA DA ,

B A:CB,DB,SB DB ,

A B:r B ,ID B ,SA r B ,ID B ,

где DA и DB - наборы передаваемых и подписываемых данных,

DA t A ||r A || ID B ||data A || EBk B k A ,

DB t B ||r B || ID A ||data B || EAk A k B ,

(в поля data() заносится дополнительная информация), SA, SB - электронные подписи, а СА, СВ - сертификаты открытых ключей абонентов. При этом сертификат СН представляет набор данных

CH ID H ||k H ||t ||Sk T ID H ||k H ||t

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

Транспортный протокол Шамира Пусть имеется коммутирующее преобразование Е такое, что при

любых ключах k1,k2 и любом сообщении x выполняется равенство

E k1,E k2,x E k2,E k1,x .

Тогда для передачи ключа kAB от абонента А к абоненту В можно применить следующий протокол:

A B:Ek A kAB ,

B A:Ek B Ek A kAB ,

AB:Dk A Ek B Ek A kAB

Вкачестве коммутирующего преобразования Е можно, например, использовать преобразование:

Ek m mk mod p , р - простое, НОД (k, р — 1) = 1.

Или более общий случай:

Ek m mk modn , НОД (k , n ) = 1, где n — функция Эйлера. Упражнение Покажите криптографическую несостоятельность

данного протокола, если в качестве коммутирующего преобразования Е используется шифр гаммирования: Ek m m k mod p (алфавит

шифрования и гамма наложения являются элементами абелевой группы). Необходимым условием хороших криптографических качеств

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