Протокол распределения ключей

22.04.2021

Протокол распределения ключей (англ. Key distribution protocols) — это условленная последовательность действий пользователей (криптографический протокол) по созданию защищенного канала связи, заключающаяся в генерации и обмене сеансовыми ключами и аутентификации сообщений.

Основной задачей протоколов распределения ключей является выработка участниками (будем называть их в дальнейшем, как всегда, Алисой и Бобом) общего ключа. Вместе с тем и Боб, и Алиса должны быть уверены в том, что связь ведется именно с собеседником, а не со злоумышленником или подставным лицом. Большинство подобных протоколов основываются на существовании доверенного центра (в дальнейшем — Трент), и предполагается, что каждому пользователю Трент выделяет секретный ключ, таким образом перед началом работы протокола все ключи уже находятся у пользователей.

Все протоколы распространения ключей так или иначе делятся на следующие категории (пересекающиеся):

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

Симметричные протоколы

основная статья: Симметричные криптосистемы

Лягушка с открытым ртом

Протокол "Лягушка с открытым ртом" (Wide-Mouth Frog англ.), оригинальная статья Wide-Mouth Frog — простейший протокол управления ключами. Он позволяет двум абонентам установить общий сессионный ключ для защищенного общения между собой. В протоколе принимает участие доверенный центр.

Описание работы протокола

  • Алиса хочет установить сессионный ключ с Бобом. Она начинает, формируя:

1. K — случайный сеансовый ключ

2. TA — метку времени

и отправляет Тренту (доверенному центру), добавив своё имя:

M0 = A, EA (TA, B, K).

  • Трент, используя общий с Алисой секретный ключ, расшифровывает сообщение и проверяет правильность метки времени TAи идентификатора Боба. Если все хорошо, он формирует:

TB — новую метку времени (которая может отличаться от TA) и отправляет Бобу

M1 = EB (TB, A, K).

  • Боб получает сообщение, расшифровывает его общим с Трентом ключом и проверяет метку времени TA и идентификатор Алисы. Если сообщение прошло проверку, то теперь Боб имеет общий с Алисой ключ.

Протокол Нидхема-Шрёдера

Протокол Нидхема-Шрёдера на симметричных ключах (англ. The Needham-Schroeder shared-key protocol) важен, в первую очередь, по историческим причинам. Он является основой для многих протоколов распространения ключей, использующих доверенный центр, начиная с 1978 года. В том числе протоколы Kerberos и Otway-Rees (описанные ниже) берут своё начало в этом протоколе.

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

Описание работы протокола Нидхема-Шрёдера

Ситуация перед началом работы протокола
  • 3 действующих лица: клиенты Алиса и Боб, которые хотят получить ключ для общения между собой, Трент — доверенный центр.
  • У Алисы и Боба есть секретные ключи EA и EB соответственно для общения с Трентом.
  • Алиса выбирает число NA, Боб выбирает число NB.
Период работы протокола
  • Итак, Алиса запускает протокол, формирует сообщение, состоящее из своего и Боба идентификаторов, а так же выбранного числа NAи отправляет его Тренту.

M0 = A, B, NA.

  • Получив сообщение от Алисы, Трент формирует сообщение, состоящее из двух частей. В первую часть он кладет NA, идентификатор Боба, а также новый ключ K, который и хотят получить Алиса и Боб. Вторая часть сообщения так же содержит новый ключ K и еще идентификатор Алисы, но при этом она зашифрована секретным ключом Трента и Боба EB. Все сообщение шифруется секретным ключом Алисы и Трента EA. и отправляется Алисе.

M1 = EA (NA, B, K, EB (K, A)).

  • Алиса расшифровывает сообщение. Найдя в сообщении NA, она убеждается, что поговорила с Трентом. Вторую часть, зашифрованную EB она прочитать совершенно не способна, пересылает её Бобу.

M2 = EB (K, A).

  • Боб получает и расшифровывает сообщение, достает оттуда новый ключ K и формирует сообщение для Алисы, в котором сообщает ей своё число NB, шифрованное новым ключом.

M3 = EK (NB).

  • Алиса получает сообщение, достает оттуда NB, меняет его и отправляет обратно Бобу.

M4 = EK (NB - 1).

  • Алиса и Боб владеют общим ключом K.

Протокол Kerberos

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

Kerberos был разработан в середине 80-х в рамках проекта Athena в MIT.

Потому как использование Kerberos распространялось в различные среды, оказались необходимыми изменения для поддержки новых моделей использования. Для удовлетворения этих потребностей в 1989 году началась разработка Kerberos версии 5 (Kerberos V5). И хотя версия 4 до сих пор работает на многих сайтах, пятая версия считается стандартом Kerberos.

Описание работы Kerberos

Ситуация перед началом работы протокола
  • 3 действующих лица: Алиса — клиент, Боб — сервер, которому Алиса хочет доказать свою подлинность, Трент — доверенный центр.
  • У Алисы и Боба есть секретные ключи EA и EB соответственно для общения с Трентом.
  • Алиса выбирает число NA, а так же устанавливает метку времени TA по своим часам.
  • t — период валидности (lifetime), выбираемый Трентом.
Период работы протокола
  • Алиса, запуская протокол, в открытом виде передает Тренту 3 вещи: свой и Боба идентификаторы, а так же выбранное число NA.

M0 = A, B, NA.

  • Трент, получив сообщение от Алисы, генерирует ключ K для дальнейшего общения Алисы и Боба и передает обратно Алисе сообщение из двух частей. Первая часть зашифрована секретным ключом Алисы и содержит K, NA, период валидности t и идентификатор Боба. Вторая же часть неизвестна Алисе — она зашифрована секретным ключом Боба, и в ней содержится K, t и идентификатор Алисы.

M1 = EA (K, NA, t, B) , EB (K, A, t).

  • Алиса расшифровывает первую часть принятого от Трента сообщения, получает ключ K и создает новый пакет для отправки Бобу, в который входят идентификатор Алисы, t и метка времени TA. После этого Алиса отправляет Бобу сообщение из двух частей: первая часть — это та, что пришла от Трента, а вторая — созданная Алисой.

M2 = EB (K, A, t), EK(A, TA, t).

  • Боб принимает сообщение. Расшифровав первую часть, он достает новый ключ K, а затем, используя его, расшифровывает вторую часть. Чтобы подтвердить Алисе, что он знает новый ключ K, Боб отправляет ей сообщение с меткой времени, зашифрованное новым ключом K.

M3 = EK (TA).

  • Алиса удостоверяется, что Боб — это Боб. Здесь применимы следующие рассуждения: Боб мог расшифровать сообщение от Алисы с меткой времени, только если он знал ключ K. А ключ K он мог узнать, только если знает EB. А так как это секретный ключ Боба и Трента, то приславший сообщение Алисе — Боб.
  • Алиса и Боб готовы к обмену сообщениями, используя ключ K.

Дополнения

The Kerberos Ticket

В специализированной литературе зачастую сообщение EB (K, A, t) называется ticket. Каждый раз, когда условная Алиса доказывает свою личность условному Бобу (ведь число пользователей в сети может быть гораздо больше, чем 2), она полагается на Трента (доверенный центр), доверяя ему сгенерировать новый секретный ключ и безопасно вручить его обоим пользователям. Новый секретный ключ K называется сеансовым ключом (англ. Session key), и как раз Kerberos Ticket используется, чтобы доставить его Бобу. Kerberos Ticket является сертификатом, выданным доверенным центром и зашифрованным с помощью EB — общего ключа Боба и Трента. Среди прочей информации, билет содержит случайный сеансовый ключ, который будет использоваться для аутентификации Алисы Бобом, имя участника (в данном случае Алисе), которому сеансовый ключ был выдан, и срок действия, по истечении которого сеансовый ключ больше не действителен. Данный сертификат (Kerberos Ticket) не отправляется непосредственно Бобу, но вместо этого отправляется клиенту (Алисе), который направляет его для проверки Бобу в составе запроса. Так как сертификат шифруется на сервере ключом, известным только Тренту и Бобу, то изменить сертификат (Kerberos Ticket) для клиента (Алисы) не представляется возможным.

Протокол Отвея-Рииса

Протокол Отвея-Рииса (англ. The Otway-Rees Protocol) — протокол на симметричных ключах, позволяющий распределять ключи, не используя метки времени.

Повторимся, что перед началом работы протокола у нас есть:

  • Доверенный центр Трент
  • 2 пользователя: Алиса и Боб, которые получили EA и EB
  • Алиса выбирает числа N и NA, Боб выбирает NB.

Описание работы протокола

  • Алиса формирует сообщение для Боба, в котором открытым текстом передает N, A, B, а также те же самые N, A, B с NA, зашифрованные общим с Трентом ключом EA.

M0 = N, A, B, EA(NA, N, A, B)

  • Боб получает сообщение, вторая часть которого для него совершенно нерасшифровываема, добавляет в него еще одну строчку, которую шифрует ключом EB и отправляет Тренту.

M1 = N, A, B, EA(NA, N, A, B), EB(NB, N, A, B).

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

Трент генерирует ключ K и посылает Бобу сообщение.

M3 = EA (NA, K), EB (NB, K).

  • Первую часть, зашифрованную ключом Алисы, Боб расшифровать совершенно не может, а вторую часть он спокойно расшифровывает и, считав, NB, удостоверяется, что сообщение пришло от Трента. Затем принимает сгенерированный ключ K. Теперь Боб готов к общению с Алисой, осталось только доставить ей ключ. Боб отправляет Алисе первую часть сообщения от Трента.

M4 = EA (NA, K).

  • Алиса принимает сообщение, удостоверяется, что оно от Трента (NA), и считывает ключ K.
  • Алиса и Боб готовы к общению.

Что в результате

Изящно получаем за 4 сообщения:

  • Боб уверен, что поговорил с Трентом: Боб отправил ему число NB, шифрованное секретным ключом EB, и получил обратно другое сообщение, содержащее то же самое число и шифрованное тем же самым ключом.
  • Алиса в свою очередь тоже уверена, что Боб поговорил с Трентом, потому что она послала своё число NA, шифрованное ключом EA, и получила обратно другое сообщение, но при этом тоже содержащим NA и шифрованное EA.
  • У Алисы и Боба появился общий ключ K.

Проблема

  • Алиса никак не может быть уверена, что Боб — это Боб. Она лишь уверена, что общается с неким лицом, которое может ходить к Тренту. Чтобы решить эту проблему на 4 шаге Боб может отправить Алисе не только EA (NA, K), но еще и, например, EK (NA, NB), доказывая тем самым, что он знает ключ K. А Алиса в свою очередь может ответить Бобу EK (NB), тоже доказывая, что знает ключ K.

Асимметричные протоколы

основная статья: Криптосистема с открытым ключом

Протокол Нидхема-Шрёдера

Протокол Нидхема-Шрёдера на асимметричных ключах (англ. The Needham-Schroeder public-key protocol) был опубликован так же, как его симметричный родственник, в 1978 году. Это широко применяемая модель при изучении формальных методов проверки криптографических протоколов. Эта популярность очевидно идет от одной из самых успешных историй в этой области — в 1994 году протокол подвергся успешной атаке повтором (replay attack) спустя 16 лет после его публикования. Атаку произвел David G. Lowe — канадский ученый в области Computer Science.

На сайте Вурстерского политехнического института (англ. Worcester Polytechnic Institute) можно найти оригинальную статью, которую публиковал David G. Lowe

Данный протокол предоставляет взаимную передачу ключей kA и kB, а также взаимную аутентификацию.

Описание работы протокола

Ситуация перед началом работы
  • У Алисы и Боба есть публичные процедуры кодирования PA и PB.
  • Алиса и Боб хотят взаимно идентифицировать друг друга с помощью трёх сообщений и используя публичные ключи.
Период работы протокола
  • Алиса выбирает свою часть ключа, kA, и формирует сообщение Бобу, в которое кладет свой идентификатор и kA. Все сообщение шифруется публичным ключом Боба PB и отправляется ему же.

M0 = PB (A, kA).

  • Боб расшифровал сообщение и теперь знает, что с ним хочет поговорить Алиса, и для общения она хочет использовать ключ kA. Боб выбирает свою часть ключа, kB, и отправляет Алисе сообщение, состоящее из двух ключей kA и kB, зашифрованное открытым ключом Алисы. Тем самым Боб подтверждает Алисе, что получил часть её ключа KA.

M1 = PA (kA, kB).

  • Теперь очередь Алисы доказать Бобу, что она — Алиса. Чтобы это сделать, она должна уметь расшифровывать сообщения, зашифрованные ключом PA. С чем она прекрасно справляется — она расшифровывает сообщение от Боба, забирает оттуда kA и отправляет Бобу сообщение, содержащее его ключ kB.

M2 = PB (kB).

  • В результате на этапе сообщения M1 Алиса уверена, что Боб — это Боб, и Боб знает весь ключ. А на этапе сообщения M2 Боб уверен, что разговаривал с Алисой, и она знает весь ключ.

Наиболее широко известные атаки на криптографические протоколы

Подмена

Подмена (англ. Impersonation) — попытка подменить одного пользователя другим. Нарушитель, выступая от имени одной из сторон и полностью имитируя её действия, получает в ответ сообщения определенного формата, необходимые для подделки отдельных шагов протокола.

Методы противодействия состоят в:

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

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

Атака повтором

Атака повтором (англ. Replay attack) — повторное использование ранее переданного в текущем или предыдущем сеансе сообщения или его части в текущем сеансе протокола.

Например, повторная передача информации ранее проведенного протокола идентификации может привести к повторной успешной идентификации того же самого или другого пользователя.

В протоколах передачи ключей данная атака часто применяется для повторного навязывания уже использованного ранее сеансового ключа — атака на основе новизны (freshness attack).

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

Комбинированная атака

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

Метод противодействия состоит в обеспечении целостности сеансов протоколов и отдельных сообщений.


Имя:*
E-Mail:
Комментарий: