Взаимная проверка подлинности пользователей

Обычно стороны, вступающие в информационный обмен, нуждаются во взаимной проверке подлинности (аутентификации) друг друга. Этот процесс взаимной аутентификации выполняют в начале сеанса связи.

Для проверки подлинности применяют следующие способы:

· механизм запроса-ответа;

· механизм отметки времени ("временной штемпель").

Механизм запроса-ответа состоит в следующем. Если пользователь А хочет быть уверенным, что сообщения, получаемые им от пользователя В, не являются ложными, он включает в посылаемое для В сообщение непредсказуемый элемент – запрос X (например, некоторое случайное число). При ответе пользователь В должен выполнить над этим элементом некоторую операцию (например, вычислить некоторую функцию f (X)). Это невозможно осуществить заранее, так как пользователю В неизвестно, какое случайное число X придет в запросе. Получив ответ с результатом действий В, пользователь А может быть уверен, что В – подлинный. Недостаток этого метода – возможность установления закономерности между запросом и ответом.

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

В обоих случаях для защиты механизма контроля следует применять шифрование, чтобы быть уверенным, что ответ послан не злоумышленником.

При использовании отметок времени возникает проблема допустимого временного интервала задержки для подтверждения подлинности сеанса. Ведь сообщение с "временным штемпелем" в принципе не может быть передано мгновенно. Кроме того, компьютерные часы получателя и отправителя не могут быть абсолютно синхронизированы. Какое запаздывание "штемпеля" является подозрительным?

Для взаимной проверки подлинности обычно используют процедуру "рукопожатия" [55, 123]. Эта процедура базируется на указанных выше механизмах контроля и заключается во взаимной проверке ключей, используемых сторонами. Иначе говоря, стороны признают друг друга законными партнерами, если докажут друг другу, что обладают правильными ключами. Процедуру рукопожатия обычно применяют в компьютерных сетях при организации сеанса связи между пользователями, пользователем и хост-компьютером, между хост-компьютерами и т.д.

Рассмотрим в качестве примера процедуру рукопожатия для двух пользователей А и В. (Это допущение не влияет на общность рассмотрения. Такая же процедура используется, когда вступающие в связь стороны не являются пользователями). Пусть применяется симметричная криптосистема. Пользователи А и В разделяют один и тот же секретный ключ КАВ. Вся процедура показана на рис. 5.3.

· Пусть пользовательА инициирует процедуру рукопожатия, отправляя пользователюВ свой идентификатор IDА в открытой форме.

· ПользовательВ, получив идентификатор IDА, находит в базе данных секретный ключ КАВ и вводит его в свою криптосистему.

· Тем временем пользователь А генерирует случайную последовательность S с помощью псевдослучайного генератора PG и отправляет ее пользователю В в виде криптограммы

(S).

· ПользовательB расшифровывает эту криптограмму и раскрывает исходный вид последовательности S.

· Затем оба пользователя А и В преобразуют последователь-ность S, используя открытую одностороннюю функцию a(·).

· ПользовательB шифрует сообщение a(S) и отправляет эту криптограмму пользователю А.

· Наконец, пользовательA расшифровывает эту криптограмму и сравнивает полученное сообщение a´(S) с исходным a(S). Если эти сообщения равны, пользователь А признает подлинность пользователя В.

 

 
 

Рисунок 5.3 – Схема процедуры рукопожатия (пользователь А проверяет подлинность пользователя В)

 

Очевидно, пользовательB проверяет подлинность пользователяA таким же способом. Обе эти процедуры образуют процедуру рукопожатия, которая обычно выполняется в самом начале любого сеанса связи между любыми двумя сторонами в компьютерных сетях.

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

Иногда пользователи хотят иметь непрерывную проверку подлинности отправителей в течение всего сеанса связи. Один из простейших способов непрерывной проверки подлинности показан на рис. 5.4 [123]. Передаваемая криптограмма имеет вид

ЕК (IDА, M),

где IDА – идентификатор отправителя А; М – сообщение.

ПолучательB, принявший эту криптограмму, расшифровывает ее и раскрывает пару (IDА, M). Если принятый идентификатор IDА совпадает с хранимым значением IDА´, получатель В признает эту криптограмму.

 

 

Рисунок 5.4 – Схема непрерывной проверки подлинности отправителя

 

Другой вариант непрерывной проверки подлинности использует вместо идентификатора отправителя его секретный пароль. Заранее подготовленные пароли известны обеим сторонам. Пусть РА и РВ – пароли пользователей А и В соответственно. Тогда пользователь А создает криптограмму

С = ЕКА, М).

Получатель криптограммы расшифровывает ее и сравнивает пароль, извлеченный из этой криптограммы, с исходным значением. Если они равны, получатель признает эту криптограмму.

Процедура рукопожатия была рассмотрена в предположении, что пользователи А и В уже имеют общий секретный сеансовый ключ. Реальные процедуры предназначены для распределения ключей между подлинными партнерами и включает как этап распределения ключей, так и этап собственно подтверждения подлинности партнеров по информационному обмену.