Взаимная проверка подлинности пользователей
Обычно стороны, вступающие в информационный обмен, нуждаются во взаимной аутентификации. Этот процесс выполняется в начале сеанса связи.
Для проверки подлинности применяют следующие способы:
- механизм запроса-ответа;
- механизм отметки времени ("временной штемпель").
Механизм запроса-ответа. Если пользователь A хочет быть уверен, что сообщения, получаемые им от пользователя B, не являются ложными, он включает в посылаемое для B сообщение непредсказуемый элемент - запрос X (например, некоторое случайное число). При ответе пользователь B должен выполнить над этим числом некоторую заранее оговоренную операцию (например, вычислить некоторую функцию f(X)). Это невозможно осуществить заранее, так как пользователю B неизвестно, какое случайное число X придет в запросе. Получив ответ с результатом действий B, пользователь A может быть уверен, что B - подлинный. Недостаток этого метода - возможность установления закономерности между запросом и ответом.
Механизм отметки времени подразумевает регистрацию времени для каждого сообщения. В этом случае каждый пользователь сети может определить насколько "устарело" пришедшее сообщение и не принимать его, поскольку оно может быть ложным.
В обоих случаях для защиты механизма контроля следует применять шифрование, чтобы быть уверенным, что ответ послан не злоумышленником.
При использовании отметок времени возникает проблема допустимого временного интервала задержки для подтверждения подлинности сеанса. Ведь сообщение с "временным штемпелем" в принципе не может быть передано мгновенно. Кроме того, компьютерные часы получателя и отправителя не могут быть абсолютно синхронизированы.
Для взаимной проверки подлинности обычно используют процедуру "рукопожатия", которая базируется на указанных выше механизмах и заключается во взаимной проверке ключей, используемых сторонами. Иначе говоря, стороны признают друг друга законными партнерами, если докажут друг другу, что обладают правильными ключами. Процедуру "рукопожатия" применяют в компьютерных сетях при организации связи между пользователями, пользователем и хост-компьютером, между хост-компьютерами и т.д.
В качестве примера рассмотрим процедуру "рукопожатия" для двух пользователей A и B. Пусть применяется симметричная криптосистема. Пользователи A и B разделяют один и тот же секретный ключ KAB.
- Пользователь A инициирует "рукопожатие", отправляя пользователю B свой идентификатор IDA в открытой форме.
- Пользователь B, получив идентификатор IDA, находит в базе данных секретный ключ KAB и вводит его в свою криптосистему.
- Тем временем пользователь A генерирует случайную последовательность S с помощью псевдослучайного генератора PG и отправляет ее пользователю B в виде криптограммы EKAB(S).
- Пользователь B расшифровывает эту криптограмму и раскрывает исходный вид последовательности S.
- Затем оба пользователя преобразуют последовательность S, используя одностороннюю функцию f.
- Пользователь B шифрует сообщение f(S) и отправляет криптограмму EKAB(f(S)) пользователю A.
- Наконец, пользователь A расшифровывает эту криптограмму и сравнивает полученное сообщение f'(S) с исходным f(S). Если эти сообщения равны, то пользователь A признает подлинность пользователя B.
Пользователь A проверяет подлинность пользователя B таким же способом. Обе эти процедуры образуют процедуру "рукопожатия", которая обычно выполняется в самом начале любого сеанса связи между любыми двумя сторонами в компьютерных сетях.
Достоинством модели "рукопожатия" является то, что ни один из участников связи не получает никакой секретной информации во время процедуры подтверждения подлинности.
Иногда пользователи хотят иметь непрерывную проверку подлинности отправителей в течение всего сеанса связи. Рассмотрим один из простейших способов непрерывной проверки подлинности.
Чтобы отправить сообщение M, пользователь A передает криптограмму EK(IDA, M). Получатель расшифровывает ее и раскрывает пару (IDA, M). Если принятый идентификатор IDA совпадает с хранимым, получатель принимает во внимание это сообщение.
Вместо идентификаторов можно использовать секретные пароли, которые подготовлены заранее и известны обеим сторонам. Продолжение: Протоколы идентификации с нулевой передачей знаний
Литература
1. Романец Ю.В., Тимофеев П.А., Шаньгин В.Ф. Защита информации в компьютерных системах и сетях. Под ред. В.Ф. Шаньгина. - 2-е изд., перераб. и доп. - М.:Радио и связь, 2001. - 376 с.: ил.