Коллектив авторов - Защита от хакеров корпоративных сетей
Во-первых, их криптография не очень хороша. Компания Solar Designer в документе «Анализ протокола TACACS+ и его реализации» приводит пример того, насколько идеально переговоры по поводу TACACS напомнили бы консультацию по вопросам безопасности. Этот документ размещен по адресу www.openwall.com/advisories/0W-00l-tac_plus.txt. Фальсифицировать пакеты таким образом, чтобы они казались бы знающими разделяемый секрет, – не очень трудная задача для подкованного злоумышленника с возможностями активного спуфинга.
Второе, и гораздо более важное: пароли в значительной степени теряют свою криптостойкость, если их совместно используют два хоста! И TACACS+, и RIPV2 зависят от единственного разделяемого пароля на протяжении всего использования инфраструктуры (на самом деле протокол TACACS+ можно было бы переписать, чтобы он не зависел от этого, но RIPV2, по мнению автора, вряд ли). Когда пароль только у двух машин, внимательно изучите последствия этого:
• пароль конфиденциальный? Все хосты, за исключением избранных, передаваемые по каналу связи данные воспринимают как шумовые помехи. Для посвященных хостов, владеющих разделяемым паролем, полученная абракадабра преобразуется в открытый осмысленный текст;
• пароль удостоверен? Каждая сторона зашифрованного канала связи уверена в подлинности идентификационных данных другой стороны. Основаниями для отклонения какого-либо хоста из десятков, сотен или тысяч других является либо кража им пароля, либо активный спуфинг, при помощи которого он самостоятельно установил соединение;
• пароль обеспечивает целостность? Любой передаваемый по зашифрованным каналам связи поток данных может быть разделен на части, разорван, похищен, или в него будут добавлены лишние данные, если была допущена утечка информации о пароле.
Хорошо зарекомендовало себя использование двумя хостами единственного пароля в виртуальных двухточечных соединениях. Даже когда соединения организованы по схеме клиент-сервер (как, например, в схеме TACACS+, где единственный клиентский маршрутизатор подтверждает подлинность пароля, предложенного CiscoSecure – вычислительной машиной базы данных сервера паролей Cisco). В любом случае одна из сторон соединения является или клиентом, запрашивающим пароль, или сервером, предлагающим его. Если она – сервер, то один-единственный хост с паролем является клиентом. Если она – клиент, то только единственный хост с паролем является сервером, которому она доверяет.
Но если схема передачи данных предусматривает существование нескольких клиентов одновременно, то любой из них, вероятно, может стать сервером. В этой ситуации трудно принять правильное решение. Разделение паролей прекрасно работает для двухточечных соединений, но дает сбои при подключении многих клиентов к одному серверу. В этом случае не следует всегда доверять противоположной стороне соединения.
...Примечание
Несмотря на свои недостатки, TACACS+ настолько гибок при назначении привилегий доступа и поддержки централизации управления, что реализация и развертывание сервера TACACS до сих пор остаются одним из лучших решений, которые компания может только придумать для повышения своей безопасности.
Это не означает, что если система использует в своей работе пароль, то она хорошо противодействует спуфингу. Для того чтобы предоставить инженеру безопасный способ передачи своего пароля маршрутизатору, маршрутизаторы Cisco используют обмен паролями по протоколу SSH. В этом случае пароль нужен только для подтверждения маршрутизатору подлинности пользователя. Вопросы конфиденциальности, целостности соединения (нельзя допустить передачу инженером своего пароля неверному устройству!) и аутентификации маршрутизатора решаются инженером на следующем уровне: уровне секретного ключа.
Способность подтвердить секретный ключ криптографической пары: «Я могу распознать ваш голос?»
Проверка способности подтвердить знание секретного ключа криптографической пары требует знания той части криптографии, которая известна под названием асимметричного шифрования, или асимметричных шифров. Симметричные шифры, как, например, алгоритмы тройного DES, Blowfish и Twofish, используют единственный ключ для зашифровки и расшифровки сообщения. Подробнее об этом уже говорилось в главе 6. Только в случае, когда два хоста совместно используют один и тот же ключ, гарантируется надежность аутентификации. Если одна из участвующих в соединении сторон не посылала сообщения, то это сделала другая сторона, у которой есть копия секретного ключа.
Даже в идеальном мире подобным системам присущи проблемы из-за того, что они не масштабируются. Это подразумевает не только то, что каждые два хоста, которым требуется разделяемый ключ, должны иметь по уникальному ключу для каждого хоста, с которым они намериваются обмениваться данными. С ростом числа участвующих в передаче ключей хостов сложность проблемы растет по экспоненциальному закону. Кроме того, данные ключи должны распространяться способом, который гарантировал бы безопасность их передачи через сеть, дискету или как-то еще. При передаче открытого текста обеспечить его конфиденциальность достаточно трудно. Поэтому обеспечить надежность передачи секретных ключей почти невозможно. Достаточно замаскироваться под одного из получателей секретного ключа, чтобы получить транзакцию ключа и участвовать в передаче данных под чужим именем.
Конечно, для защиты передачи ключей может использоваться большое количество уровней симметричных ключей (а в системах военного назначения используется). В конце концов, секретные данные тоже должны передаваться.
Асимметричные шифры, как, например, алгоритмы RSA, Диффи-Хеллмана (Diffie-Helman)/Эль Гамаля (El Gamel), предлагают лучшее решение. Используя один ключ, асимметричные шифры одновременно обеспечивают возможность зашифровывать, расшифровывать данные, заверить данные уникальной подписью пользователя и удостоверить ее подлинность. Один ключ предоставляет много возможностей. В асимметричных шифрах ключ подразделяется на два: секретный и общедоступный. С помощью секретного ключа можно сохранить данные в тайне, расшифровать их или объективно подтвердить подлинность своих идентификационных данных, подписав их. Общедоступный ключ распространяется свободно. С его помощью можно зашифровать данные таким образом, чтобы их можно было расшифровать только секретным ключом или использовать для проверки своей подписи, не позволяя подделать ее.
Огромное преимущество систем с асимметричным шифрованием заключается в том, что при их использовании нет необходимости пересылать по сети секретные ключи с одного хоста на другой. И это очень важно. Два хоста могут подтвердить подлинность друга друга без какой-либо передачи чего-нибудь, что могло бы расшифровать передаваемые данные или подделать данные идентификации. На этих принципах работает система, использующая PGP.
Способность подтвердить подлинность криптографической пары: «Ключевая пара представляет идентичность системы независимым образом?»
Главная проблема, с которой сталкиваются программы типа PGP, состоит в следующем: «Что произойдет после того, как люди станут узнавать пользователя по его способности расшифровывать определенные данные?» Другими словами, что произойдет, когда пользователь не сможет поменять ключи, которые он ранее рассылал людям для шифровки пересылаемых ему данных, потому что замена этих ключей будет подразумевать смену пользователя?
Все очень просто. Британский парламент начал кампанию по принятию закона, запрещающего пользователю менять свои пароли и обязывающего его обнародовать все сообщения электронной почты, которые он когда-либо посылал, вне зависимости от того, были они им удалены (но сохранены в архиве) или нет. Объясняется это необходимостью расшифровки электронной почты. Ужасно, что после того, как будет обнародован идентифицирующий пользователя ключ, станет возможным расшифровать все его сообщения, зашифрованные криптографическими методами. Прикрываясь требованием предоставления возможности расшифровывать данные, сторонники закона получают полный контроль над подписью пользователя, а это не одно и то же.
Возможности шифрования должны быть отделены от возможностей обеспечения идентичности пользователя. По существу, идентификационный ключ является асимметричной криптографической парой, которая никогда не используется для шифрования обычных данных. Она используется только как ключ авторизации, удостоверяющий возможность использования зашифрованных данных. В варианте протокола SSH, в разработке которого принимал участие автор, и версии программы PGP, известной как DROP (Dynamically Rekeyed OpenPGP – вариант программы PGP с динамически повторно используемыми ключами) строго соблюдается принцип разделения данных идентификации и собственно шифруемых данных. В конечном итоге все сводится к единственной криптографической паре – вершине достижений человечества в его стремлении построить доверительные отношения. Основная идея проста. Сервер ключей регулярно обновляет свои данные с использованием недолговечных криптографических ключевых пар шифровки / расшифровки сообщений. Отправитель электронной почты знает о безопасности получения от сервера ключей новых данных. Несмотря на то что новые данные ему неизвестны, он им доверяет, потому что они заверены известной ему долгосрочной кодовой комбинацией: долгосрочным ключом. Таким способом разграничиваются требования наличия краткосрочных ключей шифровки и расшифровки почты от требования обладания долгосрочными ключами подтверждения данных идентификации. В результате уменьшается уязвимость защищаемых систем к атакам злоумышленника.