Криптографические методы аутентификации
Многие системы аутентификации используют для самой аутентификации
или представления контекста доступа алгоритм шифрования с открытым ключом
RSA. Способы аутентификации, основанные на RSA, сводятся к следующему
алгоритму.
- Система А генерирует последовательность байтов, обычно
случайную, кодирует ее своим ключом и посылает системе В.
- Система В раскодирует ее своим ключом. Это возможно,
только если системы владеют парными ключами.
- Системы тем или иным способом обмениваются "правильными"
значениями зашифрованной посылки.
Аутентификация SSH
Для примера рассмотрим принцип RSA-аутентификации в пакете
ssh [www.cs.hut.fi
SSH] — Secure Shell. Пакет представляет собой функциональную замену программ
rlogin/rsh и соответствующего этим программам демона rshd. В пакет входят
программы ssh (клиент) и sshd (сервер), а также утилиты для генерации
ключей RSA и управления ими. ssh использует RSA для прозрачной аутентификации
пользователя при входе в удаленную систему. Кроме того, ssh/sshd могут
осуществлять шифрование данных, передаваемых по линии во время сеанса
связи и выполнять ряд других полезных функций.
Сервер хранит список известных общедоступных ключей для каждого из пользователей
в файле SHOME/.ssh/authorized_keys, где $НОМЕ обозначает домашний каталог
пользователя. Файл состоит из строк формата host_name:
key— по строке для каждого из разрешенных клиентов. В свою очередь,
каждый клиент хранит в файле $HOME/.ssh/private_key свой приватный ключ.
Когда из удаленной системы-клиента приходит запрос на аутентификацию,
sshd запрашивает публичный ключ. Если полученный ключ совпадает с хранящимся
в файле значением для этой системы, сервер генерирует случайную последовательность
из 256 бит, шифрует ее публичным ключом и посылает клиенту. Клиент расшифровывает
посылку своим личным ключом, вычисляет 128-битовую контрольную сумму и
возвращают ее серверу. Сервер сравнивает полученную последовательность
с правильной контрольной суммой и принимает аутентификацию в случае совпадения
(рис. 12.5). Теоретически контрольные суммы могут совпасть и в случае
несовпадения ключей, но вероятность такого события крайне мала.

Рис. 12.5. Аутентификация SSH
Аутентификация Lotus Notes
Система групповой работы Lotus Notes также использует для аутентификации
открытый ключ. При создании учетной записи пользователя генерируются 621-битный
приватный и соответствующий ему публичный ключи. Публичный ключ размещается
в доменной адресной книге (рис. 12.6). Приватный ключ подвергается шифрованию
закрытым ключом, который потом запрашивается у пользователя в качестве
пароля, и сохраняется в идентификационном файле.

Рис. 12.6. Аутентификация в Lotus Notes
Чтобы аутентифицироваться в системе, пользователь должен
указать идентификационный файл и набрать пароль, который позволит расшифровать
хранящийся в файле приватный ключ. После этого все пакеты, которыми пользователь
обменивается с сервером Notes, снабжаются цифровой подписью на основе
этого ключа. Сервер может проверить аутентичность подписи, используя хранящийся
в его адресной книге публичный ключ.
Более сложная ситуация возникает, когда пользователь должен аутентифицироваться
в другом домене, в адресных книгах которого он не числится. Чтобы сделать
такую авторизацию возможной, Notes вводит еще одно понятие: сертификат
домена. Этот сертификат также представляет собой пару ключей, пароль к
приватному ключу которой известен только администраторам домена. Каждый
идентификационный файл, создаваемый в домене, подписывается приватным
ключом этого сертификата (рис. 12.7).
Регистрируясь в чужом домене, пользователь предъявляет свои имя и публичный
ключ, подписанные сертификатом своего домена. Если принимающий домен не
знает такого сертификата, аутентификация отвергается. Чтобы домен мог
признать чужой сертификат, его администратор должен провести кросс-сертификацию,
а попросту говоря создать в доменной адресной книге документ, в котором
хранится публичный ключ сертификата домена [redbooks.ibm.com sg245341]
(рис. 12.8).

Рис. 12.7. Сертификат домена Lotus Notes

Рис. 12.8. Кросс-сертификация между доменами Lotus Notes
Методы, основанные на RSA и других алгоритмах шифрования,
не могут решить проблемы распространения прорыва безопасности между доверяемыми
системами: проникший в доверяемую систему взломщик получает доступ к приватным
ключам и может использовать их для немедленной регистрации в любой из
доверяющих систем или даже скопировать ключи для проникновения в эти системы
в более удобное время. Шифрование приватного ключа паролем несколько усложняет
осуществление такой операции, но в этом случае взломщик может осуществить
словарную атаку. Однако, как уже говорилось ранее, это является практически
неизбежной платой за разрешение автоматической регистрации в нескольких
системах.
В то же время криптографические методы практически устраняют опасность
имитации доверяемой системы путем подмены сетевого адреса и значительно
увеличивают надежность других методов аутентификации. Например, передача
пароля по сети в зашифрованном виде, особенно при использовании двухключевого
шифрования или динамических ключей, практически устраняет возможность
раскрытия пароля с помощью его подслушивания и т. д.
Есть основания утверждать, что использование криптографических методов
может решить многие проблемы безопасности компьютерных сетей и даже одиночных
компьютеров.
|