logo search
All_lections

А. Проверка подлинности процессов при распределении ключей с использованием црк

Пусть вызывающий процесс обозначается через А, а вызываемый - через В. Оба процесса (абонента) имеют идентификаторы IA и IB. Абоненты имеют также мастер-ключи КМА и КМB, известные только соответственно А и В, а также ЦРК. Мастер-ключи распределяются между абонентами вне РКС. Это может быть специальная почта, другие автоматизированные системы и т. п.

Абонент А посылает в ЦРК в открытом виде идентификатор IА и зашифрованные на КМА идентификатор IB, случайное число r1 и просьбу обеспечить связь с В:

1. А→ЦРК: IА, КМА (IB, r1 «Прошу установить связь с В»).

По открытому идентификатору IA соответствующая процедура обеспечивает выбор мастер-ключа КМA, расшифровывает сообщение, а затем генерируется сеансовый ключ Кs и отсылается зашифрованное сообщение А:

2. ЦРК→А: КМА (r1 Кs, IВ, КМВ (Кs, IА))

Это сообщение может расшифровать только абонент А, имеющий ключ КМА. Случайное число r1 подтверждает, что полученное сообщение не является повторным, а выдано ЦРК в ответ на сообщение А. Абонент А оставляет у себя Ks, генерирует случайное число r2 и отправляет сообщение абоненту В:

3. А→В: КМВ (Кs, IА), Кs(r2).

Сообщение может расшифровать только В. Полученный идентификатор IА указывает, что именно абонент А инициирует сеанс связи. Часть сообщения, зашифрованная мастер-ключом КМВ, подтверждает, что сеансовый ключ Кs получен в ЦРК. Абонент В расшифровывает с помощью Кs случайное число r2. Если используется односторонняя процедура подтверждения подлинности, то абонент В передает абоненту А сообщение:

4. В→А: Кs(f(r2)).

Такая процедура не обеспечивает полной уверенности В в том, что именно А является действительным инициатором обмена. Так существует возможность попытки повторной посылки сообщения 4 злоумышленником С позднее. Такое воздействие практически не будет иметь отрицательных последствий для В, так как у С нет сеансового ключа Кs. Он не сможет ни прочесть сообщение В, ни дослать ему фальсифицированное сообщение. Чтобы исключить и такую возможность, необходимо использовать процедуру тройного «рукопожатия». Тогда вместо сообщения 4 абонент В посылает А следующее сообщение:

4'. В→А: Кs(r2, r3), где r3 - случайное число.

В ответ А передает сообщение, подтверждающее его подлинность:

5. А→В: Кs(r3)

Если все шаги выполнены успешно, то считается, что абоненты А и В - подлинные, и они могут проводить сеанс обмена сообщениями с помощью ключа Кs.

Недостатками такого алгоритма проверки подлинности и распределения ключей являются:

Процедура взаимного подтверждения подлинности в системах с открытым ключом также заключается в обмене ключами и последующем подтверждении подлинности. Администратор ЦРК имеет доступ к открытому ключу КОЦРК и закрытому ключу КЗЦРК, а также к открытым ключам всех абонентов сети. Абонент А обращается с запросом в ЦРК для получения своего открытого ключа и открытого ключа вызываемого абонента В:

1. А→ЦРК: IA, IB, «Вышлите ключи».

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

2. ЦРК→А: КЗЦРК (КОА, IА), КЗЦРК(КОВ, IВ).

Абонент А расшифровывает сообщение с помощью открытого ключа КОЦРК, который доставлен ему надежным путем. Полученные идентификаторы абонентов А и В подтверждают, что ЦРК правильно воспринял запрос и КОB - открытый ключ абонента В.

На следующем шаге процедуры абонент А посылает абоненту В сообщение, в котором сгенерированное число r1 и идентификатор IА зашифрованы открытым ключом КОB, а открытый ключ КОА и идентификатор IА зашифрованы закрытым ключом ЦРК.

3. А→В: КОВ(r1, IА), КЗЦРК(КОА, IА).

Абонент В расшифровывает первую часть сообщения с помощью своего закрытого ключа КЗB, а вторую часть - с помощью открытого ключа КОЦРК. На основании полученной информации абонент В делает вывод, что связь с ним устанавливает абонент А, что подтверждается зашифрование открытого ключа А и его идентификатора с помощью секретного ключа ЦРК КЗЦРК. После шага 3 абоненты А и В имеют по два открытых ключа. Если используется одностороннее подтверждение подлинности, то на последнем шаге В посылает сообщение:

4. В→А: КОА(f(r1)).

Если расшифрованное число r1 совпадает с тем, которое посылалось абоненту В, то абонент А получает подтверждение подлинности абонента В, так как число r1 при передаче по сети было зашифровано открытым ключом абонента В и могло быть расшифровано только владельцем закрытого ключа абонента В. Если используется процедура взаимного подтверждения подлинности, то осуществляется трёхстороннее «рукопожатие». Тогда на четвёртом шаге абонент В, наряду с числом r1 передаёт абоненту А сгенерированное им случайное число r2.

4'. В→А: КОА(r1, r2).

В ответ абонент А передаёт сообщение:

5. А→В: КОВ(r2).

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

Примером реальной системы, в которой реализован принцип Подтверждения подлинности процессов при распределении ключей с использованием ЦРК, является вычислительная сеть со специальным сервером аутентификации Кеrberos. Клиентские компоненты Кеrberos присутствуют в большинстве современных операционных систем (наиболее полно в ОС Solaris). В защищённом сервере Кеrberos хранятся секретные ключи всех абонентов сети.

Процедура подтверждения подлинности клиента с и сервера s реализуется следующей последовательностью шагов.

1. Клиент с→Kerberos: Iс, s1, timeexp, r1.

Клиент с передает Kerberos в открытом виде свой идентификатор Iс, запрашиваемый сервис s1, срок годности билета timeexp и случайное число r1.

2. Kerberos→клиент с: Кccs, timeexp, r1); Кsсs).

Kerberos возвращает сеансовый ключ Ксs, идентификатор сервера Is, атрибуты timeexp и r1, зашифрованные ключом клиента, а также сеансовый ключ Кcs, зашифрованный ключом сервера с.

3. Клиент с→сервер s: Кcs(Ic, ts, ck); Кscs).

Клиент посылает серверу свой идентификатор Iс, временной штамп ts и контрольную сумму ck, зашифрованные сеансовым ключом, а также пересылает без изменений зашифрованный ключ Кsсs), который называется билетом.

4. Сервер s→клиент с: Кcs(Is, ts).

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

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