Протокол распределения ключей
(
англ.
Key distribution protocols
) — это условленная последовательность действий пользователей (
криптографический протокол
) по созданию защищенного канала связи, заключающаяся в генерации и обмене сеансовыми ключами и
аутентификации
сообщений.
Основной задачей протоколов распределения ключей является выработка участниками (будем называть их в дальнейшем, как всегда,
Алисой и Бобом
) общего ключа. Вместе с тем и Боб, и Алиса должны быть уверены в том, что связь ведется именно с собеседником, а не со злоумышленником или подставным лицом. Большинство подобных протоколов основываются на существовании
доверенного центра
(в дальнейшем — Трент), и предполагается, что каждому пользователю Трент выделяет секретный ключ, таким образом перед началом работы протокола все ключи уже находятся у пользователей.
Все протоколы распространения ключей так или иначе делятся на следующие категории (пересекающиеся):
Протокол
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
соответственно для общения с Трентом.
t — период валидности (lifetime), выбираемый Трентом.
Период работы протокола
Алиса, запуская протокол, в открытом виде передает Тренту 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
.
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 лет после его публикования. Атаку произвел
— канадский ученый в области
.
Данный протокол предоставляет взаимную передачу ключей 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) — подмена или другой метод обмана, использующий комбинацию данных из ранее выполненных протоколов, в том числе протоколов, ранее навязанных противником.
Метод противодействия состоит в обеспечении целостности сеансов протоколов и отдельных сообщений.
Примечания
Pablo Giambiagi.
Secrecy for Mobile Implementations of
Security Protocols. — 2001. —
С. 36
. —
ISSN
.
John Kelsey, Bruce Schneier, David Wagner.
Protocol Interactions and the Chosen Protocol
Attack. — 1997. —
С. 8
. —
ISSN
.
Alexei Lisitsa.
(неопр.)
. Дата обращения: 15 декабря 2014.
7 марта 2016 года.
↑
B. Clifford Neuman and Theodore Ts'o.
[
Kerberos: An Authentication
Service for Computer Networks]
(неопр.)
. IEEE Communications Magazine (1994). Дата обращения: 15 декабря 2014. Архивировано из
26 мая 2013 года.
↑
Сергей Николенко.
(неопр.)
(Осень 2009). Дата обращения: 14 декабря 2014.
14 декабря 2014 года.
Dr. Geoff Hamilton.
(неопр.)
. Дата обращения: 14 декабря 2014. Архивировано из
14 декабря 2014 года.
Olivier Michel.
(неопр.)
. Дата обращения: 15 декабря 2014.
8 марта 2016 года.
Gavin Lowe.
(неопр.)
(1995). Дата обращения: 15 декабря 2014.
16 декабря 2014 года.
А.В. Черемушкин.
(неопр.)
(ноябрь 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). — Курс лекций по компьютерной безопасности, в том числе и по криптографическим протоколам.