Процедура состоит в следующем. Если пользователь А хочет быть уверенным, что сообщения, получаемые им от пользователя В, не являются ложными, он включает в посылаемое для В сообщение непредсказуемый элемент - запрос Х (например, некоторое случайное число). При ответе пользователь В должен выполнить над этим элементом некоторую операцию (например, вычислить некоторую функцию
). Это невозможно осуществить заранее, так как пользователю В неизвестно, какое случайное число Х придет в запросе. Получив ответ с результатом действий В, пользователь А может быть уверен, что В - подлинный. Недостаток этого метода - возможность установления закономерности между запросом и ответом.
Механизм запрос-ответ используется в более сложной процедуре аутентификации - "рукопожатии".
Процедура "рукопожатия" базируется на указанном выше механизме и заключается во взаимной проверке ключей, используемых сторонами. Иначе говоря, стороны признают друг друга законными партнерами, если докажут друг другу, что обладают правильными ключами. Процедуру рукопожатия обычно применяют в компьютерных сетях при организации сеанса связи между пользователями, пользователем и хост-компьютером, между хост-компьютерами и т.д.
Рассмотрим в качестве примера процедуру рукопожатия для двух пользователей А и В. (Это допущение не влияет на общность рассмотрения. Такая же процедура используется, когда вступающие в связь стороны не являются пользователями). Пусть применяется симметричная криптосистема. Пользователи А и В разделяют один и тот же секретный ключ
. Вся процедура показана на рис. 8.2.
Пусть пользователь А инициирует процедуру рукопожатия, отправляя пользователю В свой идентификатор
в открытой форме. Пользователь В, получив идентификатор
, находит в базе данных секретный ключ
и вводит его в свою криптосистему.
Тем временем пользователь А генерирует случайную последовательность S с помощью псевдослучайного генератора PG и отправляет ее пользователю В в виде криптограммы
. Пользователь В расшифровывает эту криптограмму и раскрывает исходный вид последовательности S. Затем оба пользователя А и В преобразуют последовательность S, используя открытую одностороннюю функцию
.
Пользователь В шифрует сообщение
и отправляет эту криптограмму пользователю А. Наконец, пользователь А расшифровывает эту криптограмму и сравнивает полученное сообщение
с исходным
. Если эти сообщения равны, пользователь А признает подлинность пользователя В.

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






