Rambler's Top100

Перейти на главную страницу

Карта сайта

 

Аутентификация с применением сертификатов открытых ключей

Раздел книги "Информационная безопасность и смарт-карты" (в авторском варианте). © Константин Мытник, Сергей Панасенко, 2018

 

 

Аутентификация на основе сертификатов открытых ключей изначально была одной из основных целей при создании инфраструктуры открытых ключей [35] (PKI была подробно описана в разделе 6.3.2).
С использованием PKI могут создаваться различные протоколы аутентификации, основанные на применении асимметричной криптографии. В качестве примеров протоколов аутентификации, основанных на применении сертификатов открытых ключей, Брюс Шнайер в [76] приводит три описанных далее протокола.
Протокол № 1 позволяет пользователю B аутентифицировать пользователя A (здесь и далее под словом «пользователь» будем подразумевать любой субъект аутентификации, например, компьютер, приложение или какой-либо другой компонент распределенной информационной системы). Он включает в себя выполнение следующих действий:

  1. Пользователь A генерирует случайное число RA и создает следующее сообщение:

MA = (TARAIBdA),

где:

  1. На основе сообщения MA пользователь A формирует и отправляет пользователю B сообщение следующего вида:

(CADA(MA)),

где:

  1. Пользователь B проверяет валидность сертификата CA и извлекает из него открытый ключ пользователя A – EA.
  2. С помощью открытого ключа EA пользователь B проверяет подпись сообщения MA и убеждается в его целостности.
  3. Для завершения аутентификации пользователя A пользователь B выполняет также следующие проверки данных, содержащихся в сообщении MA:

Таким образом, описанный протокол № 1 позволяет выполнить одностороннюю аутентификацию. Наличие меток времени в протоколе требует обязательной синхронизации системного времени между пользователями A и B (обычно такая синхронизация используется с некоторой заданной заранее точностью).
В протоколе обеспечивается защита от повторов на основе меток времени и случайных чисел. При этом использование случайного числа RA (и, соответственно, проверка его уникальности пользователем B) выглядит опциональным, поскольку задача защиты от повторов может быть решена только на основе меток времени.
Протокол № 2 является расширением протокола № 1 и позволяет выполнить взаимную аутентификацию пользователей A и B. Первая часть данного протокола полностью аналогична описанному выше протоколу № 1, после чего выполняются следующие действия (практически «симметричные» действиям протокола № 1), позволяющие пользователю A аутентифицировать пользователя B:

  1. Пользователь B генерирует случайное число RB и создает следующее сообщение:

MB = (TBRBIA, RAdB),

где:

  1. Пользователь B посылает пользователю A сообщение MB, подписанное своим секретным ключом DB, т. е. DB(MB).
  2. С помощью открытого ключа EB пользователь A проверяет подпись сообщения MB и убеждается в его целостности.
  3. Процедура аутентификации завершается выполнением следующих проверок:

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

  1. Пользователь A проверяет эквивалентность значения RA, полученного от пользователя B, значению RA, отправленному ему в рамках выполнения протокола № 1 (если такая проверка не проводилась на последнем шаге протокола № 2).
  2. Пользователь A подписывает полученное от пользователя B случайное число RB и отправляет DA(RB) пользователю B.
  3. Пользователь B проверяет подпись полученного от пользователя A случайного числа RB с помощью открытого ключа пользователя A (EA) и проверяет, эквивалентно ли это число значению RB, переданному пользователю A при выполнении действий протокола № 2.

Таким образом обеспечивается защита от атак повтором ранее перехваченных сообщений без использования меток времени.
Схема описанных выше протоколов приведена на рис. 7.2.

Рисунок 7.2. Схема протоколов аутентификации на основе сертификатов открытых ключей

Протоколы аутентификации на основе сертификатов открытых ключей

Альтернативный описанному выше протоколу № 3 пример протокола взаимной аутентификации, основанного на использовании сертификатов открытых ключей и также защищенного от атак повтором ранее перехваченных сообщений, приведен в [50]. Фактически он использует те же элементы, что и протокол № 3, но в несколько иной последовательности (рис. 7.3):

  1. Пользователь B генерирует случайное число RB и отправляет его пользователю A.
  2. Пользователь A генерирует случайное число RA, после чего формирует и отправляет пользователю B следующее сообщение:

(CARAIBDA(RARBIB)),

где обозначения эквивалентны использованным ранее в данном разделе.

  1. Пользователь B проверяет валидность сертификата CA и извлекает из него открытый ключ пользователя A – EA.
  2. С помощью EA пользователь B проверяет целостность подписанной части полученного сообщения, после чего проверяет корректность адресата сообщения (IB) и эквивалентность отправленного и принятого значений RB.
  3. Пользователь B формирует и отправляет пользователю A следующее сообщение:

(CBIADB(RBRAIA)).

  1. Пользователь A проверяет валидность сертификата CB и извлекает из него открытый ключ пользователя B – EB.
  2. Затем, используя EB, пользователь A проверяет целостность подписанного фрагмента сообщения, после чего убеждается в корректности идентификатора IA и эквивалентности отправленного и принятого значений RA.

Рисунок 7.3. Альтернативный протокол взаимной аутентификации на основе сертификатов открытых ключей

Протокол взаимной аутентификации на основе сертификатов открытых ключей

Аналогично описанному выше соотношению протоколов № 3 и № 1, используя только шаги 1–4 данного протокола, можно получить протокол односторонней аутентификации пользователя A пользователем B.
Кроме того, в [50] описан также протокол односторонней аутентификации с использованием меток времени (рис. 7.4):

  1. Проходящий аутентификацию пользователь A формирует и отправляет пользователю B следующее сообщение:

(CATAIBDA(TAIB)).

  1. Пользователь B проверяет валидность сертификата CA и извлекает из него открытый ключ пользователя A – EA.
  2. Используя открытый ключ EA, пользователь B проверяет целостность подписанной части сообщения.
  3. После этого пользователь B проверяет корректность полученных данных: идентификатора IB и метки времени TA.

Рисунок 7.4. Протокол односторонней аутентификации с использованием меток времени

Протокол односторонней аутентификации с использованием меток времени

Аутентификация на основе сертификатов открытых ключей, несомненно, является значительно более надежной по сравнению с рассмотренной ранее парольной аутентификацией. В сочетании с фактом, что такую аутентификацию можно распространить на потенциально неограниченное число пользователей (пользователю достаточно иметь сертификат открытого ключа, цепочка проверки которого приводит к доверенному сертификату), аутентификация на основе механизмов PKI широко и традиционно используется в сети Интернет [4].
В частности, аутентификация на основе сертификатов X.509 является частью протоколов SSL/TLS; она выполняется в момент установления защищенного соединения [120, 155].
Как было сказано выше, на сертификатах открытых ключей может быть основано множество различных протоколов аутентификации. Достоинства и недостатки различных подходов к разработке таких протоколов описаны в документе [211].
В частности, на примере приведенных выше протоколов легко заметить, что защита от повторов, основанная на случайных числах, требует передачи лишних сообщений, тогда как использование меток времени требует синхронизации времени участвующих в аутентификации сторон. Следовательно, данные свойства протоколов влияют на решение об использовании того или иного протокола аутентификации в конкретной информационной системе.