Аутентификация с применением сертификатов открытых ключей
Раздел книги "Информационная безопасность и смарт-карты" (в авторском варианте). © Константин Мытник, Сергей Панасенко, 2018
Аутентификация на основе сертификатов открытых ключей изначально была одной из основных целей при создании инфраструктуры открытых ключей [35] (PKI была подробно описана в разделе 6.3.2).
С использованием PKI могут создаваться различные протоколы аутентификации, основанные на применении асимметричной криптографии. В качестве примеров протоколов аутентификации, основанных на применении сертификатов открытых ключей, Брюс Шнайер в [76] приводит три описанных далее протокола.
Протокол № 1 позволяет пользователю B аутентифицировать пользователя A (здесь и далее под словом «пользователь» будем подразумевать любой субъект аутентификации, например, компьютер, приложение или какой-либо другой компонент распределенной информационной системы). Он включает в себя выполнение следующих действий:
MA = (TA, RA, IB, dA),
где:
- TA – метка времени пользователя A;
- IB – идентификатор пользователя B;
- dA – произвольные данные, назначение и интепретация которых могут зависеть от системы, использующей данный протокол аутентификации; при необходимости, данные dA могут быть зашифрованы на открытом ключе пользователя B – EB (предполагается, что пользователь A заранее проверил валидность сертификата пользователя B (CB) и извлек из него EB).
(CA, DA(MA)),
где:
- CA – сертификат пользователя A;
- DA(MA) – сообщение MA, подписанное секретным ключом пользователя A – DA.
Таким образом, описанный протокол № 1 позволяет выполнить одностороннюю аутентификацию. Наличие меток времени в протоколе требует обязательной синхронизации системного времени между пользователями A и B (обычно такая синхронизация используется с некоторой заданной заранее точностью).
В протоколе обеспечивается защита от повторов на основе меток времени и случайных чисел. При этом использование случайного числа RA (и, соответственно, проверка его уникальности пользователем B) выглядит опциональным, поскольку задача защиты от повторов может быть решена только на основе меток времени.
Протокол № 2 является расширением протокола № 1 и позволяет выполнить взаимную аутентификацию пользователей A и B. Первая часть данного протокола полностью аналогична описанному выше протоколу № 1, после чего выполняются следующие действия (практически «симметричные» действиям протокола № 1), позволяющие пользователю A аутентифицировать пользователя B:
MB = (TB, RB, IA, RA, dB),
где:
- TB – метка времени пользователя B;
- IA – идентификатор пользователя A;
- RA – случайное число пользователя A, сгенерированное и переданное в рамках протокола № 1;
- dB – произвольные данные, при необходимости могут быть зашифрованы на открытом ключе пользователя A – EA.
Протокол № 3 также позволяет выполнить взаимную аутентификацию, но, в отличие от предыдущих, он не требует синхронизации времени участвующих в выполнении протокола пользователей, что является несомненным преимуществом.
Первые этапы данного протокола выполняются аналогично описанному выше протоколу № 2, но метки времени не используются и могут быть, например, обнулены. Дальнейшие шаги протокола № 3 выглядят так:
Таким образом обеспечивается защита от атак повтором ранее перехваченных сообщений без использования меток времени.
Схема описанных выше протоколов приведена на рис. 7.2.
Рисунок 7.2. Схема протоколов аутентификации на основе сертификатов открытых ключей
Альтернативный описанному выше протоколу № 3 пример протокола взаимной аутентификации, основанного на использовании сертификатов открытых ключей и также защищенного от атак повтором ранее перехваченных сообщений, приведен в [50]. Фактически он использует те же элементы, что и протокол № 3, но в несколько иной последовательности (рис. 7.3):
(CA, RA, IB, DA(RA, RB, IB)),
где обозначения эквивалентны использованным ранее в данном разделе.
(CB, IA, DB(RB, RA, IA)).
Рисунок 7.3. Альтернативный протокол взаимной аутентификации на основе сертификатов открытых ключей
Аналогично описанному выше соотношению протоколов № 3 и № 1, используя только шаги 1–4 данного протокола, можно получить протокол односторонней аутентификации пользователя A пользователем B.
Кроме того, в [50] описан также протокол односторонней аутентификации с использованием меток времени (рис. 7.4):
(CA, TA, IB, DA(TA, IB)).
Рисунок 7.4. Протокол односторонней аутентификации с использованием меток времени
Аутентификация на основе сертификатов открытых ключей, несомненно, является значительно более надежной по сравнению с рассмотренной ранее парольной аутентификацией. В сочетании с фактом, что такую аутентификацию можно распространить на потенциально неограниченное число пользователей (пользователю достаточно иметь сертификат открытого ключа, цепочка проверки которого приводит к доверенному сертификату), аутентификация на основе механизмов PKI широко и традиционно используется в сети Интернет [4].
В частности, аутентификация на основе сертификатов X.509 является частью протоколов SSL/TLS; она выполняется в момент установления защищенного соединения [120, 155].
Как было сказано выше, на сертификатах открытых ключей может быть основано множество различных протоколов аутентификации. Достоинства и недостатки различных подходов к разработке таких протоколов описаны в документе [211].
В частности, на примере приведенных выше протоколов легко заметить, что защита от повторов, основанная на случайных числах, требует передачи лишних сообщений, тогда как использование меток времени требует синхронизации времени участвующих в аутентификации сторон. Следовательно, данные свойства протоколов влияют на решение об использовании того или иного протокола аутентификации в конкретной информационной системе.