Михаил Кондрин
С помощью библиотеки SASL сетевые приложения могут автоматически
договориться об использовании определенного механизма подтверждения
идентичности пользователя. Как осуществить взаимодействие библиотеки SASL c Kerberos?
Общие свойства SASL
Преимущества протокола Kerberos – сильная криптографическая защита паролей и
данных, единая система управления паролями пользователей и возможность
реализации single sign-on-системы (система единой регистрации пользователей).
Основной недостаток – сложная программная реализация механизма аутентификации. Для
того чтобы протокол, точнее, сервис и клиентское приложение, использовали
аутентификацию пользователей через Kerberos, соответствующий код должен быть
реализован как в клиентской, так и серверной частях протокола. Поэтому, если вы
попытаетесь организовать single sign-on-систему, вам потребуется приложить
определенные усилия по анализу используемых программных пакетов и выбору тех из
них, что поддерживают Kerberos.
Любой из вас в своей работе наверняка
сталкивается с протоколами отправки и получения электронной почты. Электронная
почта – старый и популярный протокол. И именно потому, что протокол старый
(созданный в те времена, когда разработчики не слишком задумывались о
безопасности своих продуктов) и популярный (широкий выбор потенциальных жертв),
электронная почта является удобной целью для злоумышленников. При этом ваша
задача состоит в организации безопасности нескольких сетевых протоколов – SMTP,
IMAP и/или POP3, их конфиденциальности и защиты от несанкционированного
доступа. В принципе способов добиться решения этой задачи может быть несколько
(см., например, [1, 2, 3, 4]), но решение с помощью Kerberos представляется мне
наиболее простым и удобным. Удобство в данном случае подразумевает не только
простоту администрирования, но и удобство пользователей, которые получают
единообразный способ доступа к протоколам чтения и отправки почты на основании
своего системного пароля как изнутри, так и извне локальной сети (в последнем
случае есть некоторые оговорки). Немаловажным обстоятельством является и то,
что Kerberos – хорошо масштабируемый протокол, который разрабатывался в расчете
на огромные университетские сети.
Ключевой элемент, обеспечивающий взаимодействие Kerberos
и почтовых служб, – пакет SASL (Simple Secure Authentication Layer),
разработанный в Университете Карнеги-Меллон. Помимо реализации от CMU
(получившей название Cyrus-SASL) существует GNU-версия gsasl [5], разрабатываемая
практически единолично шведским программистом Джеффсоном. Несмотря на то что gsasl
довольно быстро развивается, эта реализация все еще считается бета-версией и
значительно уступает по надежности Cyrus-SASL. Всего университетом Карнеги-Меллон
было выпущено две реализации библиотеки SASL, различающиеся между собой по API
и формату хранения пользовательских данных, хотя и совместимые по протоколу. В
настоящее время вторая версия SASL практически полностью вытеснила первую, и
поэтому под SASL я буду понимать именно вторую версию (которую иногда
обозначают как SASL2).