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

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

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

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

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

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

Wide-Mouth Frog

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

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

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

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

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

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

M 0 = A, E A (T A , B, K).

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

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

M 1 = E B (T B , A, K).

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

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

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

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

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

Ситуация перед началом работы протокола
  • 3 действующих лица: клиенты Алиса и Боб, которые хотят получить ключ для общения между собой, Трент — доверенный центр.
  • У Алисы и Боба есть секретные ключи E A и E B соответственно для общения с Трентом.
  • Алиса выбирает число N A , Боб выбирает число N B .
Период работы протокола
  • Графическое описание работы протокола Нидхема-Шредера на симметричных ключах
    Итак, Алиса запускает протокол, формирует сообщение, состоящее из своего и Боба идентификаторов, а также выбранного числа N A , и отправляет его Тренту.

M 0 = A, B, N A .

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

M 1 = E A (N A , B, K, E B (K, A)).

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

M 2 = E B (K, A).

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

M 3 = E K (N B ).

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

M 4 = E K (N B - 1) .

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

Протокол Kerberos

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

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

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

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

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

M 0 = A, B, N A .

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

M 1 = E A (K, N A , t, B) , E B (K, A, t).

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

M 2 = E B (K, A, t), E K (A, T A , t).

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

M 3 = E K (T A ).

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

Дополнения

The Kerberos Ticket

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

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

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

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

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

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

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

M 0 = N, A, B, E A (N A , N, A, B)

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

M 1 = N, A, B, E A (N A , N, A, B), E B (N B , N, A, B).

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

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

M 2 = E A (N A , K), E B (N B , K).

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

M 3 = E A (N A , K).

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

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

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

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

Проблема

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

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

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

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

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

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

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

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

Ситуация перед началом работы
  • У Алисы и Боба есть публичные процедуры кодирования P A и P B .
  • Алиса и Боб хотят взаимно идентифицировать друг друга с помощью трёх сообщений и используя публичные ключи.
Графическое описание работы протокола Нидхема-Шрёдера на открытых ключах
Период работы протокола
  • Алиса выбирает свою часть ключа, k A , и формирует сообщение Бобу, в которое кладет свой идентификатор и k A . Все сообщение шифруется публичным ключом Боба P B и отправляется ему же.

M 0 = P B (A, k A ).

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

M 1 = P A (k A , k B ).

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

M 2 = P B (k B ).

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

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

Подмена

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

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

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

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

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

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

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

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

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

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

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

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

Примечания

  1. Pablo Giambiagi. Secrecy for Mobile Implementations of Security Protocols. — 2001. — С. 36 . — ISSN .
  2. John Kelsey, Bruce Schneier, David Wagner. Protocol Interactions and the Chosen Protocol Attack. — 1997. — С. 8 . — ISSN .
  3. Alexei Lisitsa. . Дата обращения: 15 декабря 2014. 7 марта 2016 года.
  4. B. Clifford Neuman and Theodore Ts'o. [ Kerberos: An Authentication Service for Computer Networks] . IEEE Communications Magazine (1994). Дата обращения: 15 декабря 2014. Архивировано из 26 мая 2013 года.
  5. Сергей Николенко. (Осень 2009). Дата обращения: 14 декабря 2014. 14 декабря 2014 года.
  6. Dr. Geoff Hamilton. . Дата обращения: 14 декабря 2014. Архивировано из 14 декабря 2014 года.
  7. Olivier Michel. . Дата обращения: 15 декабря 2014. 8 марта 2016 года.
  8. Gavin Lowe. (1995). Дата обращения: 15 декабря 2014. 16 декабря 2014 года.
  9. А.В. Черемушкин. (ноябрь 2009).

Литература

  • Alfred J.Menezes, Paul C. van Oorschot, Scott A. Vanstone. Handbook of Applied Cryptography. — 1996. — С. 489—534. — 816 с. — ISBN 0-8493-8523-7 .

Ссылки

  • Сергей Николенко. . Лекториум. ( )
  • Dr. Bill Young. (англ.) . Texas University (2014). — Курс лекций по компьютерной безопасности, в том числе и по криптографическим протоколам.
Источник —

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