Ниже разъясняются детали, позволяющие лучше понять приведенные в табл. 12.1 и 12.2 шесть свойств.

Способность к передаче: «Система может разговаривать со мной?»

Можно найти одну исключительную идею, на которой основано доверие во всех сетях, при межличностном общении и, более того, при общении внутри одной системы. Передача информации - это посылка чего-либо, что может где-нибудь что-то представлять.

При этом совсем не предполагается, что передача информации идеальна. Министерство обороны США в превосходном (прежде всего по содержанию, следует обязательно прочитать, как можно быстрее, без промедления установите на нем закладку (закладка -маркер, уникально идентифицирующий запись или строку в базе данных, строку в исходном коде или позицию в файле текстового редактора) и подсветите 1ЖЬ документа) отчете под названием «Реализация потенциала С41» обращает внимание на следующее:

«Максимальная польза от систем (командных, управления, связи, компьютерных и интеллектуальных) основывается на их способности к взаимодействию и интеграции. Другими словами, для своей эффективной работы системы С4І должны взаимодействовать таким образом, чтобы они могли функционировать как часть большой «системы систем». Но благодаря этому при нападении на них многократно увеличиваются атакующие возможности противника».

«Реализация потенциала С4І» www.nap.edu/html/C4I

«Единственный способ обеспечить безопасность системы состоит в том, чтобы никогда не включать ее».

Неизвестный

Отключенная от любой сети система не может быть взломана (по крайней мере до тех пор, пока кто-либо не получит доступ с локальной консоли), но при этом ее нельзя использовать. Статистика свидетельствует, что некоторый процент несанкционированных пользователей будут пытаться получить доступ к ресурсу, к которому они не допущены. Несколько меньший процент от их числа будут пытаться фальсифицировать свои идентификационные данные. Из попытавшихся пользователей меньший, но не нулевой процент действительно будут обладать необходимой квалификацией и мотивацией для успешного (с их точки зрения) взлома установленной системы защиты. Так будет на любой установленной системе. Единственный способ избежать опасности попадания данных в неавторизованные руки заключается в недопущении какой-либо их рассылки.

Существует простая формула: для предотвращения несанкционированного раскрытия или потери защищенных данных администратору сети нужно полностью запретить удаленный доступ. Статистика свидетельствует о том, что лишь небольшое количество доверенных пользователей откажутся от доступа к данным, которые они уполномочены обрабатывать, прежде чем система защиты будет отклонена как слишком громоздкая и неудобная. Во время проектирования системы безопасности никогда не следует забывать о практическом результате ее использования. В противном случае с большей вероятностью откажутся от системы, чем от необходимого практического результата. Нельзя заработать на системе, если не видно, что она защищена от атак злоумышленника.

Как автор уже упоминал ранее, нельзя доверять каждому, но кому-то довериться все-таки надо. Если пользующиеся доверием люди имеют тенденцию располагаться в контролируемой администратором безопасности сети, то управление входными (правом доступа) и выходными (правом выхода) точками контролируемой сети позволит ему определить сервисы, если они есть, с помощью которых внешний мир может прислать сообщения компьютерам его сети. Межсетевые экраны являются хорошо известным первым рубежом защиты сети от атаки злоумышленника. Они не позволяют принимать сообщения от недоверенных доменов. В большинстве случаев межсетевые экраны самостоятельно не могут доверять содержимому проходящих через них сетевых пакетов, потому что оно может быть фальсифицировано любым доменом, через который прошел пакет, или даже его отправителем. Тем не менее в передаваемом пакете есть небольшая порция данных, которая выдает собственника пакета. Она несет информацию об отправителе данных. Этой маленькой порции данных достаточно для однозначной идентификации сети. Ее достаточно для предотвращения, помимо многого другого, появления в сети пакетов, которые были присланы в сеть недоверенными внешними пользователями. Ее даже достаточно для защиты от передачи компьютерам сети пакетов от пользователей, которые, являясь на самом деле недоверенными пользователями, маскируются под доверенных.

Фильтрация на выходе (egress filtering) - последняя форма фильтрации. Она имеет решающее значение для предотвращения распространения распределенных атак отказа в обслуживании (атак типа DDoS), потому что на уровне провайдера Интернета не пропускает в глобальный Интернет пакеты с фальсифицированным в заголовке пакета адресом отправителя. Фильтрация на выходе может быть выполнена на устройствах Cisco с использованием команды ip verify unicast reverse-path. Подробнее об этом можно узнать по адресу www.sans.org/y2k/egress.htm.

Потенциальная возможность передать противоположному концу соединения относится к основному уровню безопасности, который должен быть реализован. Даже самый незащищенный, доступный всем сервис удаленного доступа не может быть атакован недоверенным пользователем, если у него не будет средств посылки сообщения уязвимой системе. К сожалению, нельзя считать сеть достаточно защищенной, полагаясь только на межсетевой экран, который не позволяет послать кому угодно сообщение, угрожающее системе в сети. Вероятнее всего, до тех пор, пока не будет использован воинствующий вариант настройки межсетевого экрана (читайте межсетевой экран, работающий по радиоканалу (air firewall) или полное отключение соединений между локальной сетью и глобальным Интернетом), всегда найдутся дополнительные пути пересылки опасных сообщений. В отчете Министерства обороны далее пишется:

«В основе планирования реакции системы должен лежать принцип постепенного сокращения возможностей системы, то есть система или сеть должны утрачивать свои функциональные возможности постепенно, сравнивая серьезность направленной против нее атаки с возможностью защиты от нее».

Способность ответить: «Система может мне ответить?»

Ответить - это следующий шаг, который необходимо выполнить вслед за передачей информации. Всего лишь несколько протоколов предусматривают некоторую форму переговоров между отправителем и получателем данных. Некоторые из них ограничиваются определением объявляющих что-либо сообщений, которые рассылаются по сети от случая к случаю или по требованию заинтересованного в передаче хоста и которые посылаются тому, кто будет готов участвовать в передаче информации. Если для обмена данными между компьютерами, состоящего из фазы передачи и фазы приема данных, требуется провести переговоры, то у системы должна быть возможность передать свою реакцию на содержимое данных, полученных от другого компьютера сети. Подобная возможность принципиально отличается от возможности простой передачи данных. Она находится на более сложном уровне, и автор назвал ее способностью ответить (ability to respond).

Общепринята методика посылки ответа на принятые данные для проверки истинности сетевого адреса отправителя. Многие с большой охотой обращают внимание на адреса отправителей как на средство обеспечения неприкосновенности сетей и подавления атак фальсификации. Всегда найдется сеть, которая будет утверждать, что она лишь передала произвольный пакет, хотя на самом деле она породила его.

Для обработки подобной ситуации во многих протоколах предусмотрена попытка аннулирования подложного адреса отправителя посредством передачи ответного сигнала предполагаемому отправителю пакета. Если предполагается передача ответа, содержащего некоторые сведения о принятом сигнале, то это подразумевает некоторую форму интерактивного взаимодействия.

В протоколе TCP данный уровень защиты является стандартным. Он встроен в протокол в виде трехэтапного установления соединения. По существу трехэтапное установление соединения выглядит следующим образом. «Здравствуйте, я - Боб». «А я Алиса. Вы говорите, что Вы - Боб?» «Да, Алиса, я - Боб». Если Боб сообщает Алисе: «Да, Алиса, я - Боб», а Алиса перед этим с Бобом не разговаривала, то протокол может решить, что имеет место атака спуфинга вслепую (blind spoofing). (В действительности протоколы редко ищут случаи нападения. Скорее они функционируют только при отсутствии нападений. Это происходит из-за того, что большинство протоколов предназначены для установления соединения, а не для отражения атаки. В результате это приводит к невозможности работы по протоколу из-за аварийного завершения его функций, за исключением случаев обработки данных, предусмотренных протоколом. В итоге протоколы повышают уровень своей безопасности простым способом: значительно сокращают число хостов, которые могли бы легко атаковать их. Простое сокращение числа хостов, которые могли бы осуществить прямое нападение «с любой машины в Интернете» на «любую машину Интернета при наличии десятка подсетей между сервером и клиентом» часто на многие порядки сокращает число хостов, способных к эффективной атаке!)

Если на сетевом уровне рассматривать направленную против сети фальсификацию, целью которой является нейтрализация способности системы ответить на переданные ей данные, то существуют два типа атаки спуфинга: спуфинг вслепую и активный спуфинг (active spoofs). При спуфинге вслепую злоумышленник имеет смутные представления о входящем и выходящем трафиках атакуемого хоста (в особенности относительно неопознанных им переменных, с помощью которых протоколом предусмотрен ответ получателя данных их отправителю). При активном спуфинге у злоумышленника, по крайней мере, есть возможность прослушивания выходного трафика атакуемого хоста и, вероятно, возможность влиять в той или иной мере на трафик. Эти два вида атаки далее будут обсуждены отдельно.

Спуфинг вслепую. Для типовой реализации атаки спуфинга вслепую более чем достаточно того, что было сказано в главе 11 по поводу перехвата сеанса. Но чисто теоретически спуфинг вслепую преследует одну цель - найти способ предсказания изменений значения прогнозируемой переменной, а затем установить столько возможных соединений, сколько протокол может выдержать, и случайным способом правильно выбрать одно из них для успешного ответа на данные, которые никогда не были получены.

Одним из наиболее интересных результатов, полученным при развитии спуфинга вслепую, является открытие способов сканирования удаленных хостов вслепую. Конечно, невозможно проверить соединение с выбранным хостом или портом без посылки ему пакета и анализа на него реакции (нельзя заранее знать реакцию на пакет, который фактически не был отправлен), но сканирование вслепую позволяет исследовать ничего не подозревающий хост без его ведома. Попытки установления соединения проводятся обычным способом, но если они исходят от другого компьютера, так называемого компьютера зомби, то они фальсифицированы. Подобные зомби имеют связь с Интернетом, которая практически ими не используется, как, например, забытый всеми сервер. Поэтому злоумышленник может предполагать, что весь входящий и исходящий трафик этого зомби является результатом его косвенных или непосредственных действий.

Конечно, косвенный трафик является результатом возврата зомби пакетов исследуемому хосту.

При сканировании вслепую исследуемый хост должен как-то знать о получении зомби его положительных ответов. Антирез (Antirez) обнаружил способ узнать об этом, который был реализован хакером Федором (Fyodor) при построении сетевых схем пшар в виде опции -si. В открытом Антирезом (Antirez) способе используется поле IPID. На уровне протокола IP поле IPID позволяет одному пакету ссылаться на другой, устанавливая тем самым ссылки на фрагментированные пакеты. Во многих операционных системах поле IPID после отправки каждого пакета увеличивается на 1. (В операционной системе Windows приращение значения поля IPID происходит в соответствии с прямым порядком байтов (little-endian). Прямой порядок байтов - формат хранения и передачи двоичных данных, при котором сначала (первым) передается младший (наименее значимый) бит (байт). Поэтому на самом деле значение поля увеличивается на 256. Но на суть способа это не влияет.) В протоколе TCP предусмотрено, что при положительном ответе хоста на запрос установления соединения по указанному порту (получении сообщения с установленным в заголовке пакета флажком SYN - пакета SYN) он возвращает сообщение с установленными в заголовке пакета флажками подтверждения запроса на установления соединения SYN и АСК - пакета SYNIACK. Но когда зомби, который никогда не пытался соединиться с кем-либо, получает пакет SYNIACK, то он сообщает отправителю пакета о завершении сеанса связи с ним и завершает соединение. Это выполняется при помощи посылки пакета, в заголовке которого установлены флажки RST и АСК - пакета RSTIACK. В рамках подобной передачи никакие данные больше не пересылаются. Атакуемый хост посылает зомби пакет RSTIACK, если порт закрыт, а зомби ничего не присылает в ответ.

Существенным является то, что зомби посылает пакет RSTIACK каждый раз, когда злоумышленник находит у атакуемого хоста открытый порт. При каждой посылке этого пакета установленная на машине зомби операционная система увеличивает счетчик поля IPID на 1. Злоумышленник может исследовать зомби до и после попытки установления соединения с хостом. И если поле IPID будет увеличено на большее число раз, чем зомби прислал злоумышленнику пакетов, то злоумышленник может предположить, что зомби после получения пакетов от атакуемого хоста SYNIASK ответил ему пакетами RSTIACK.

Таким образом, атакуемый хост может быть исследован без всякого согласия с его стороны. Он может даже и не подозревать об его изучении. В то же время злоумышленник может использовать произвольный хост Интернета для маскировки своей деятельности.

Сканирование вслепую тривиально осуществить при помощи птар. Достаточно в командной строке указать опцию - si zombie host: port target: port и ждать. Более подробные сведения можно найти по адресу www.bursztein.net/secu/temoinus.html.

Активный спуфинг. Большинство переменных запросов при наличии возможности перехватить их заведомо могут стать жертвой спуфинга. Предполагая, что только законные доверенные хосты могут прислать ответ, читатель тем самым демонстрирует свою неправоту. Несанкционированный пользователь при помощи найденного им способа активного поиска может обнаружить запрос, а затем ответить на него. Тем самым он кому-то что-то доказал, выполнив никому не нужную трудоемкую работу.

Чуть более интересным представляется вопрос модуляции потока данных, передающегося по каналам связи. Сама по себе способность к передаче данных еще не предоставляет больших возможностей по управлению их содержимым. Можно создать помехи передаваемым сигналам и подавить их (особенно это относится к передаче данных по радиоканалу). Как правило, способность к передаче данных еще не подразумевает возможности понять, передает ли кто-либо еще что-нибудь. Фальсификация ответа является нечто большим. Возможность определить, что следует передать в ответ, подразумевает более сложную способность прочитать передаваемые биты (в противоположность чтения простых служебных бит, описывающих возможное время и место передачи данных).

Сказанное не означает возможности ответить на все, что передается по каналу связи. Как правило, способность ответить присутствует у многих явлений, но для передачи содержательных данных ее значение минимально. Активная деятельность на уровне битов на носителе данных может включать следующие дополнительные возможности:

• возможность прослушивать некоторые или все необработанные биты данных или пакеты в уже существующем потоке данных. Существенно, что в данном случае дополнительные данные не передаются, но на переданные данные отвечают или данными, которые ранее были сохранены на локальном хосте, или передают их по другому соединению;

• возможность изменять некоторые или все необработанные биты данных либо пакеты в уже существующем потоке данных прежде, чем они достигнут своего адресата. Возможности передачи данных увеличиваются. Появляется возможность первичной обработки некоторых битов данных или даже целых пакетов, если это будет необходимо;

• возможность генерировать некоторые или все необработанные биты или пакеты из потока данных как реакцию на перехват и прослушивание пакетов. Последствия этой возможности очевидны, как очевидно и то, что они не единственны;

• возможность модифицировать некоторые или все необработанные биты или пакеты из потока данных в зависимости от их содержания. Иногда для этого не обязательно создавать шумовые помехи или ретранслировать сигнал. Рассмотрим пример прямой радиотрансляции. Если в зависимости от содержания радиотрансляции (передаваемых в ней данных) есть необходимость внесения в нее изменений, то наилучшим решением будет задержка радиосигнала на время, достаточное для внесения изменений

(возможно, с использованием существующих задержек аппаратных средств), до того, как сигнал будет излучен в эфир. Непонятно, как можно промодулировать передающийся по воздуху радиосигнал, но если это удалось бы, то это было бы изящным решением проблемы;

• возможность удалять некоторые или все необработанные биты данных либо пакеты в зависимости от их содержания. Выборочное удаление данных реализовать сложнее модуляции, потому что получаемый при этом сигнал будет рассинхронизирован со своим оригиналом. Изохронному потоку данных (потоку данных с одинаковой скоростью передачи) требуется задержка для предотвращения передачи ложных указателей. (Нужно что-то послать, не так ли? Спертый воздух и будет этим чем-то.)

Вполне возможно, что любая из этих дополнительных возможностей может быть использована для законного подтверждения подлинности пользователя. За исключением случаев повреждения пакета (которые имеют место только тогда, когда удаление или изящная модификация данных невозможна, а пакет в любом случае не должен достичь своего адресата), все эти операции обычны для межсетевых экранов, концентраторов частных виртуальных сетей VPN и даже маршрутизаторов шлюзов.

Что из себя представляет переменная? Немного уже упоминалось о переменной, которая может потребоваться для прослушивания, вероятной генерации или представления какой-либо характеристики хоста с целью фальсификации потенциальной способности протокола отвечать на запросы.

Так что это за переменная?

Рассмотренные две возможности передать и ответить по своему значению чуть превосходят центральные концепции, которые лежат в основе представления бит на цифровом носителе и позволяют интерпретировать их одним из возможных способов. Обе эти возможности не представляют ни одну из форм интеллектуального знания относительно предназначения этих бит в контексте управления данными идентификации. Такими знаниями обладают упоминавшиеся возможности обработки потока данных, которые в большей степени основаны на общих криптографических конструкциях установления подлинности.

Способность к кодированию: «Система может говорить на моем языке?»

Способность к передаче предполагает, что пользователь может послать биты, а если у него есть возможность ответить, то получить, прочитать их и при необходимости ответить на полученные биты. Но как узнать, что нужно каждой из сторон? Так на свет появляется способность к кодированию, означающая, что у определенного пользователя должна быть возможность создавать пакеты в соответствии с требованиями используемых протоколов. Если протокол требует декодирования входных пакетов, то так и должно быть: пользователь должен обеспечить выполнение этого требования.

Относительно разговора о спуфинге протокола IP. TCP/IP - это стек (набор) протоколов, и протокол IP - один из них, причем он требует поддержки. Для защиты протокола IP от спуфинга следует использовать протоколы (подобные протоколу TCP), в которых при инициализации соединения предусмотрен обязательный ответ и которые могут лишить возможности передачи, бесцеремонно сбрасывая полученные данные в битоприемник (bit bucket) (это гипотетическая корзина, в которую сбрасываются «мусорные» записи базы данных), тем самым защищая сеть от входящих и выходящих пакетов, относительно содержимого которых появилось подозрение, что оно фальсифицировано отправителем пакета.

Всесторонняя защита протоколов TCP/IP может быть реализована с использованием методов, описываемых автором. В них большое значение имеет кодирование удостоверения, например кодового числа, которое защищает сообщение от несанкционированного изменения. (В протоколе TCP далеко не все построено на простом кодировании. Возвращаемые при каждом ответе случайные порядковые номера, по своей сути, являются недолговечным разделяемым секретом для каждого соединения. Разделяемые двумя сторонами секретные данные будут обсуждены в следующем разделе.)

Хотя очевидно, что кодирование необходимо для взаимодействия с другими хостами, тем не менее эта глава не о взаимодействии. Эта глава об идентификации. Достаточно ли предусмотренной в протоколе возможности понимать и говорить с другим хостом, для того чтобы подтвердить свою подлинность при получении доступа?

Для общедоступных сервисов это очень важный вопрос.

В большинстве случаев Интернет обслуживает внутренние потоки данных, не тревожа своих клиентов. Доказательство их подлинности может быть сведено к одному запросу HTTP с методом GET/ (В данном случае точка является знаком препинания, завершающим предложение, а не ссылкой слэш-точка. Обязательная ссылка слэш-точка в тексте выделяется курсивом.)

Описанный в RFC1945 метод запроса GET протокола HTTP известен многим. Есть возможность реализовать аутентификацию на более высоких уровнях, если они поддерживаются этим протоколом. Причем их модернизация может быть выполнена в достаточно мягкой форме. В основном доступ к системе зависит от знания протокола HTTP и возможности установить успешное соединение по протоколу TCP с использованием его стандартного порта 80.

Но не все протоколы открыты для общественности. Из-за недокументированных возможностей или наложенных ограничений на примеры программного кода внутренняя часть многих протоколов скрыта от постороннего взгляда. Для многих протоколов простой возможности говорить оказывается достаточным, чтобы считать собеседника достойным для предоставления затребованных им прав и уровня доверительных отношений. Считается, что если собеседник может разговаривать на понятном для системы языке, то он достаточно квалифицирован, чтобы использовать ее.

К сожалению, это не означает, что любой захочет связаться с системой.

Война между сторонниками открытых и закрытых исходных текстов программ в последнее время резко обострилась и в настоящее время находится в самом разгаре. В ней есть много такого, что вызывает сомнения. Но один аргумент может решить исход войны. Возможность разговаривать с кем-либо никогда не следует рассматривать достаточным основанием для предоставления рабочим станциям полномочий или для выдачи им распоряжений выполнить произвольную команду. Следует предусмотреть, чтобы серверы всегда предоставляли что-то, возможно даже пароль, прежде чем они смогут выполнять команды на клиентских машинах сети.

По всей видимости, до тех пор, пока не будет введено это ограничение, серверу вне зависимости от места его расположения будет предоставлено право повсюду управлять другими хостами.

Кто допустил эту ошибку?

Эту ошибку допустили Microsoft и Novell одновременно. Клиентские программы обеих компаний (возможно, исключая сети Windows 2000 с поддержкой технологии аутентификации и шифрования с открытым ключом Kerberos) после подключения не предусматривают какой-либо аутентификации в доменах, через которые они вошли в систему. В действительности домены, работающие с клиентскими программами названных компаний, могут только сказать: «Добро пожаловать в мой домен. Вот для вас сценарий команд, который вы сможете выполнить после подключения». В основе сказанного лежит предположение, что всякий, кто когда-либо подключился к локальной вычислительной сети, является ее законным пользователем. При этом полагается, что физическая безопасность офиса (вероятно, то место, где находится локальная вычислительная сеть) способна предотвратить появление фальсифицированных сервисов. Вот что автор писал в мае 1999 года:

«В большинстве сетей с архитектурой клиент-сервер можно найти сценарий входа в систему. Сценарий содержит набор команд, которые будут выполнены после ввода правильного имени пользователя и его пароля. Сценарий входа в систему представляет корпоративным системным администраторам средство централизованного управления группами клиентов. К сожалению, то, что представляется хорошим решением для бизнеса, оказалось настоящим бедствием для системы защиты университетской сети, к которой студенты подключаются из своих комнат в общежитиях. Благодаря возможности подключения студентов из своих комнат появилась единая точка получения доступа к любому числу ранее не скомпрометированных клиентов. Последствия этой ошибки очень серьезны, и ее следует немедленно устранить. Даже пользователям корпоративной сети следует принять во внимание этот недостаток и потребовать реализации ряда описанных здесь процедур безопасности, защищающих их сети».

Дэн Каминский (Dan Kaminsky)

«При проектировании сетей была допущена ошибка, уменьшающая их надежность: непредвиденные последствия сценариев входа в систему (Insecurity by Design: The Unforeseen Consequences of Login Scripts)».

www.doxpara.com/login.html

Способность доказывать знание разделяемого секрета: «Есть ли секретные данные, известные как мне, так и системе?»

Это первая потенциальная возможность проверки, в которой используются криптографические методы безопасной идентификации. Разделяемые секреты в значительной степени предполагают наличие лексем, которые два хоста совместно используют при общении друг с другом. Разделяемые секреты могут использоваться для установления соединения, которое характеризуется следующим:

• конфиденциальностью. Передаваемые по сети данные воспринимаются всеми хостами как шумовые помехи, за исключением одного хоста, которому они предназначены;

• установлением подлинности. Каждая сторона зашифрованного соединения уверена в подлинности идентификационных данных другой стороны;

• проверкой целостности. Любой поток данных, передаваемый по зашифрованному соединению, не может быть разделен на части, похищен или изменен путем добавления посторонних данных.

Простым примером разделяемого секрета является короткое слово или фраза, известное обоим участникам соединения, которое в общем случае не удовлетворяет трем перечисленным свойствам, но тем не менее позволяет обеспечить разумную безопасность используемым технологиям. Сказанное не означает существования подобных систем в прошлом. Используемый набор паролей во многом определяет успех применения систем, удостоверяющих подлинность своих пользователей. К сожалению, на многих сайтах Telnet занимает лидирующие позиции среди технологий обмена паролями. Вызывает сожаление, что для обмена паролями большинство сайтов не используют профиль сообщения (короткую цифровую строку фиксированной длины, формируемую из более длинного сообщения с использованием специального алгоритма), получаемый с помощью стандарта MD5.

Если пароль каждой компании был бы напечатан в специально выделенной для этой цели колонке газеты New York Times, то могло быть и хуже. Это несколько успокаивает. «Если работает межсетевой экран, то можно не ждать подвоха ни от одного из своих устройств. По крайней мере, хоть пароли не напечатаны в New York Times».

Шутки в сторону. Современные системы разделения секрета - это криптографические системы, которые защищают криптографическими методами охраняемые ими системы.

Почти всегда используются приличные протоколы с хорошими функциональными возможностями, но с очень плохой защитой. Пожалуй, следует отметить преимущества протоколов RIPv2 и TACACS+ по сравнению с оригинальными протоколами RIP и TACACS/XTACACS соответственно. Но и они страдают от двух главных проблем.

Во-первых, их криптография не очень хороша. Компания Solar Designer в документе «Анализ протокола TACACS+ и его реализации» приводит пример того, насколько идеально переговоры по поводу TACACS напомнили бы консультацию по вопросам безопасности. Этот документ размещен по адресу www.openwall.com/advisories/0W-001-tac_plus.txt. Фальсифицировать пакеты таким образом, чтобы они казались бы знающими разделяемый секрет, - не очень трудная задача для подкованного злоумышленника с возможностями активного спуфинга.

Второе, и гораздо более важное: пароли в значительной степени теряют свою криптостойкость, если их совместно используют два хоста/ И TACACS+, и RIPV2 зависят от единственного разделяемого пароля на протяжении всего использования инфраструктуры (на самом деле протокол TACACS+ можно было бы переписать, чтобы он не зависел от этого, но RIPV2, по мнению автора, вряд ли). Когда пароль только у двух машин, внимательно изучите последствия этого:

• пароль конфиденциальный? Все хосты, за исключением избранных, передаваемые по каналу связи данные воспринимают как шумовые помехи. Для посвященных хостов, владеющих разделяемым паролем, полученная абракадабра преобразуется в открытый осмысленный текст;

• пароль удостоверен? Каждая сторона зашифрованного канала связи уверена в подлинности идентификационных данных другой стороны. Основаниями для отклонения какого-либо хоста из десятков, сотен или тысяч других является либо кража им пароля, либо активный спуфинг, при помощи которого он самостоятельно установил соединение;

• пароль обеспечивает целостность? Любой передаваемый по зашифрованным каналам связи поток данных может быть разделен на части, разорван, похищен, или в него будут добавлены лишние данные, если была допущена утечка информации о пароле.

Хорошо зарекомендовало себя использование двумя хостами единственного пароля в виртуальных двухточечных соединениях. Даже когда соединения организованы по схеме клиент-сервер (как, например, в схеме TACACS+, где единственный клиентский маршрутизатор подтверждает подлинность пароля, предложенного CiscoSecure -вычислительной машиной базы данных сервера паролей Cisco). В любом случае одна из сторон соединения является или клиентом, запрашивающим пароль, или сервером, предлагающим его. Если она - сервер, то один-единственный хост с паролем является клиентом. Если она - клиент, то только единственный хост с паролем является сервером, которому она доверяет.

Но если схема передачи данных предусматривает существование нескольких клиентов одновременно, то любой из них, вероятно, может стать сервером. В этой ситуации трудно принять правильное решение. Разделение паролей прекрасно работает для двухточечных соединений, но дает сбои при подключении многих клиентов к одному серверу. В этом случае не следует всегда доверять противоположной стороне соединения.

Примечание

Несмотря на свои недостатки, ТАСАС8+ настолько гибок при назначении привилегий доступа и поддержки централизации управления, что реализация и развертывание сервера Т АС АС Б до сих пор остаются одним из лучших решений, которые компания может только придумать для повышения своей безопасности.

Это не означает, что если система использует в своей работе пароль, то она хорошо противодействует спуфингу. Для того чтобы предоставить инженеру безопасный способ передачи своего пароля маршрутизатору, маршрутизаторы Cisco используют обмен паролями по протоколу SSH. В этом случае пароль нужен только для подтверждения маршрутизатору подлинности пользователя. Вопросы конфиденциальности, целостности соединения (нельзя допустить передачу инженером своего пароля неверному устройству!) и аутентификации маршрутизатора решаются инженером на следующем уровне: уровне секретного ключа.

Способность подтвердить секретный ключ криптографической пары: «Я могу распознать ваш голос?»

Проверка способности подтвердить знание секретного ключа криптографической пары требует знания той части криптографии, которая известна под названием асимметричного шифрования, или асимметричных шифров. Симметричные шифры, как, например, алгоритмы тройного DES, Blowfish и Twofish, используют единственный ключ для зашифровки и расшифровки сообщения. Подробнее об этом уже говорилось в главе 6. Только в случае, когда два хоста совместно используют один и тот же ключ, гарантируется надежность аутентификации. Если одна из участвующих в соединении сторон не посылала сообщения, то это сделала другая сторона, у которой есть копия секретного ключа.

Даже в идеальном мире подобным системам присущи проблемы из-за того, что они не масштабируются. Это подразумевает не только то, что каждые два хоста, которым требуется разделяемый ключ, должны иметь по уникальному ключу для каждого хоста, с которым они намериваются обмениваться данными. С ростом числа участвующих в передаче ключей хостов сложность проблемы растет по экспоненциальному закону. Кроме того, данные ключи должны распространяться способом, который гарантировал бы безопасность их передачи через сеть, дискету или как-то еще. При передаче открытого текста обеспечить его конфиденциальность достаточно трудно. Поэтому обеспечить надежность передачи секретных ключей почти невозможно. Достаточно замаскироваться под одного из получателей секретного ключа, чтобы получить транзакцию ключа и участвовать в передаче данных под чужим именем.

Конечно, для защиты передачи ключей может использоваться большое количество уровней симметричных ключей (а в системах военного назначения используется). В конце концов, секретные данные тоже должны передаваться.

Асимметричные шифры, как, например, алгоритмы RSA, Диффи-Хеллмана (01Гйе-Не1шап)/Эль Гамаля (El Gamel), предлагают лучшее решение. Используя один ключ, асимметричные шифры одновременно обеспечивают возможность зашифровывать, расшифровывать данные, заверить данные уникальной подписью пользователя и удостоверить ее подлинность. Один ключ предоставляет много возможностей. В асимметричных шифрах ключ подразделяется на два: секретный и общедоступный. С помощью секретного ключа можно сохранить данные в тайне, расшифровать их или объективно подтвердить подлинность своих идентификационных данных, подписав их. Общедоступный ключ распространяется свободно. С его помощью можно зашифровать данные таким образом, чтобы их можно было расшифровать только секретным ключом или использовать для проверки своей подписи, не позволяя подделать ее.

Огромное преимущество систем с асимметричным шифрованием заключается в том, что при их использовании нет необходимости пересылать по сети секретные ключи с одного хоста на другой. И это очень важно. Два хоста могут подтвердить подлинность друга друга без какой-либо передачи чего-нибудь, что могло бы расшифровать передаваемые данные или подделать данные идентификации. На этих принципах работает система, использующая PGP.

Способность подтвердить подлинность криптографической пары: «Ключевая пара представляет идентичность системы независимым образом?»

Главная проблема, с которой сталкиваются программы типа PGP, состоит в следующем: «Что произойдет после того, как люди станут узнавать пользователя по его способности расшифровывать определенные данные?» Другими словами, что произойдет, когда пользователь не сможет поменять ключи, которые он ранее рассылал людям для шифровки пересылаемых ему данных, потому что замена этих ключей будет подразумевать смену пользователя?

Все очень просто. Британский парламент начал кампанию по принятию закона, запрещающего пользователю менять свои пароли и обязывающего его обнародовать все сообщения электронной почты, которые он когда-либо посылал, вне зависимости от того, были они им удалены (но сохранены в архиве) или нет. Объясняется это необходимостью расшифровки электронной почты. Ужасно, что после того, как будет обнародован идентифицирующий пользователя ключ, станет возможным расшифровать все его сообщения, зашифрованные криптографическими методами. Прикрываясь требованием предоставления возможности расшифровывать данные, сторонники закона получают полный контроль над подписью пользователя, а это не одно и то же.

Возможности шифрования должны быть отделены от возможностей обеспечения идентичности пользователя. По существу, идентификационный ключ является асимметричной криптографической парой, которая никогда не используется для шифрования обычных данных. Она используется только как ключ авторизации, удостоверяющий возможность использования зашифрованных данных. В варианте протокола SSH, в разработке которого принимал участие автор, и версии программы PGP, известной как DROP (Dynamically Rekeyed OpenPGP - вариант программы PGP с динамически повторно используемыми ключами) строго соблюдается принцип разделения данных идентификации и собственно шифруемых данных. В конечном итоге все сводится к единственной криптографической паре - вершине достижений человечества в его стремлении построить доверительные отношения. Основная идея проста. Сервер ключей регулярно обновляет свои данные с использованием недолговечных криптографических ключевых пар шифровки / расшифровки сообщений. Отправитель электронной почты знает о безопасности получения от сервера ключей новых данных. Несмотря на то что новые данные ему неизвестны, он им доверяет, потому что они заверены известной ему долгосрочной кодовой комбинацией: долгосрочным ключом. Таким способом разграничиваются требования наличия краткосрочных ключей шифровки и расшифровки почты от требования обладания долгосрочными ключами подтверждения данных идентификации. В результате уменьшается уязвимость защищаемых систем к атакам злоумышленника.

С технической точки зрения лучшими характеристиками обладает так называемая совершенная передовая секретность PFS (Perfect Forward Secrecy). Говоря кратко, этими словами обозначается свойство криптографических систем, которое означает, что если данные будут скомпрометированы, то уже отосланные данные останутся в безопасности. Для симметричной криптографии свойство PFS выполняется почти автоматически: используемый сегодня ключ никак не связан с ключом, который был использован вчера, поэтому при компрометации сегодняшнего ключа злоумышленник не сможет воспользоваться им для расшифровки ранее переданных данных. Конечно, данные, которые будут переданы после компрометации, подвергаются риску, но, по крайней мере, ранее переданные данные остались в безопасности. Асимметричные шифры решают эту проблему частично. Как уже упоминалось, сохранение одного и того же ключа расшифровки часто является необходимостью, потому что его достаточно долго используют для проверки данных, удостоверяющих пользователя. Следует помнить о недостатках этого способа.

Приоткрывая завесу

Установление идентичности в компьютерных сетях | Защита от хакеров корпоративных сетей | Совершенная передовая секретность: маленький секрет протокола ssl


Защита от хакеров корпоративных сетей



Новости за месяц

  • Август
    2019
  • Пн
  • Вт
  • Ср
  • Чт
  • Пт
  • Сб
  • Вс