Михаил Кондрин
Проект Heimdal-Kerberos, в прошлом году отметивший 10-летний юбилей
выпуском «круглой» версии 1.0 и переездом на новый сайт, позволяет объединить
возможности инфраструктуры публичных ключей (Public Key Infrastructure – PKI) и
Kerberos в рамках единой регистрационной системы. Об этом, а также других
новинках этого программного пакета будет сегодня рассказано.
Центральное правительство, или
Групповая солидарность?
Прежде чем заняться практической демонстрацией новых возможностей Heimdal-Kerberos,
хотелось бы напомнить историю возникновения Kerberos и систем PKI, в частности
стандарта X.509, используемого в том числе и в таком популярном и известном в
мире Linux продукте, как OpenSSL. Эта история поможет понять достоинства и
недостатки каждого из решений.
Протокол Kerberos и идея публичных ключей,
представленная в протоколе X.509, появились почти одновременно в середине 80-х
годов, и оба пытались решить одну и ту же задачу обеспечения сетевой
безопасности. Под сетевой безопасностью нужно понимать не только шифрование
передачи данных и дистанционной проверки паролей, но и возможность как серверу,
так и клиенту удостовериться в идентичности друг друга. Оба проекта решали эту
проблему примерно одинаковым способом – введением третьей trusted-стороны,
авторитету которой доверяли бы обе стороны сетевого взаимодействия.
На этом их сходство заканчивалось. Kerberos
возник всё же несколько ранее и идеологически он был построен более просто.
Использование алгоритма симметричного шифрования, когда третья сторона (KDC –
контроллер сервера Kerberos) владеет паролями как клиента, так и сервера,
поэтому может обеспечить обе стороны общим ключом, пригодным как для
идентификации друг друга, так и для шифрования пересылаемых данных, позволяет
более экономно использовать вычислительные ресурсы.
В то же время протокол работал в онлайновом
режиме – выпуск сессионных ключей (билетиков, tickets) всегда выполняется
сервером KDC и по специальному протоколу пересылается клиенту. Не вдаваясь в
подробности (которые, однако, можно найти в статье [1]), идентичность клиента и
сервера удостоверяется тем, что им удалось расшифровать сессионный ключ,
который получен от KDC, будучи зашифрованным паролями клиента (пользователя) и
сервера. А успешность расшифровки сессионного ключа проверяется тем, что обеим
сторонам удалось установить сетевой обмен, который они при желании могут
шифровать, используя все тот же сессионный ключ.