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