О каналах скрытых, потайных, побочных. И не только
В.А. Галатенко (Доктор физико-математических наук)
Информационный бюллетень JET INFO
О побочных каналах
Побочные каналы можно считать частным случаем скрытых. В роли (невольных) передатчиков в подобных каналах выступают штатные компоненты информационных систем, а в роли приемников — внешние наблюдатели, применяющие соответствующее оборудование. Чаще всего с помощью побочных каналов измеряется время видимых операций (временные атаки на RSA стали общим местом), их энергопотребление и/или побочные электромагнитные излучения и наводки (ПЭМИН), но для атак могут применяться и акустические каналы, идет ли речь о цифровом замке сейфа или процессоре персонального компьютера, обрабатывающего секретный ключ (см. ).
Побочные каналы представляют собой, вероятно, наиболее наглядное проявление многоаспектности современной информационной безопасности. В роли атакующих на информационные системы (информационное наполнение, банковские карты, SIM-карты сотовых телефонов и т.п.), как правило, выступают их владельцы, располагающие значительным временем и соответствующим инструментарием. В сочетании с принципиальной невозможностью управления физическим доступом, перечисленные факторы делают атаки с использованием побочных каналов особенно опасными.
Объектами атак с использованием побочных каналов чаще всего становятся криптографические компоненты информационных систем, точнее, их секретные ключи. Например, в статье описана атака разбиением на SIM-карты сотовых телефонов (точнее, на алгоритм COMP128, применяемый для аутентификации пользователей и выработки сеансовых ключей), проводимая путем измерения энергопотребления с целью клонирования этих карт. Атаку удалось отточить до такой степени, что для определения секретного 128-битного ключа оказывается достаточно всего восьми измерений с адаптивно выбираемыми входными данными! То есть злоумышленнику достаточно получить SIM-карту буквально на минуту.
Весьма наглядно опасность атак, основанных на дифференциальном анализе энергопотребления, проиллюстрирована в статье . В 1998 году Брюс Шнейер писал, что в галактике не хватит кремния, а у Солнца — времени жизни для реализации атаки методом грубой силы на секретный ключ (112 бит) алгоритма 3DES.
Минимальная длина ключа в алгоритме AES — 128 бит, но успешная атака методом дифференциального анализа энергопотребления на незащищенную микросхему, реализующую AES, может быть проведена менее чем за три минуты — от начала измерений до завершения анализа.
Кардинальное решение проблемы побочных каналов возможно при соблюдении следующего основополагающего принципа: данные об операциях, которые можно получить из побочных каналов, должны быть статистически независимы от входных и выходных данных и информации ограниченного доступа. Поскольку защищать от атак с использованием побочных каналов чаще всего приходится системы с весьма ограниченными ресурсами, корректная, полная реализация кардинального принципа — задача весьма непростая. Время операций нормализовать относительно просто, энергопотребление — сложнее, но также возможно (см., например, ), ПЭМИН — еще сложнее. На практике системы укрепляются "по мере сил" (что характерно для современной информационной безопасности вообще), а у мотивированных злоумышленников остается масса возможностей для результативных атак.
О потайных ходах и ремонтных агентах
Если из каких-либо соображений требуется постоянно отслеживать состояние удаленной системы и при необходимости воздействовать на него, конструируют и используют потайные ходы (backdoors). Обычно подобные ходы ассоциируются с вредоносной активностью, но, как показывает проект, развиваемый в университете Rutgers (см. ), для них имеются и вполне добропорядочные применения, такие как удаленный мониторинг и восстановление работоспособности (удаленное лечение). В таком контексте потайные ходы уместно называть техническими интерфейсами. В статье описан прототип реализации технических интерфейсов для FreeBSD.
Поскольку конечной целью является починка пришедшей в неработоспособное состояние удаленной целевой системы, последняя должна рассматриваться как пассивный объект. Предлагаемый интерфейс с ней сводится к удаленному доступу к памяти, реализуемому при посредничестве программируемой сетевой карты. Целевая система должна поддерживать области сенсоров и внешнего представления, считывание которых позволяет выявлять и диагностировать аномальные ситуации (такие, например, как отсутствие прогресса в выполнении приложений, перерасход или исчерпание ресурсов), а также "ремонтные захваты" — области памяти, запись в которые способна поправить ситуацию (например, таблица процессов или находящаяся в памяти копия суперблока файловой системы). В принципе, при наличии доступа к памяти целевой системы, возможен перенос реализуемого ею сервиса на другой узел сети (например, в рамках кластерной конфигурации), если ремонт на месте не может быть осуществлен (см. ).
Конечно, с точки зрения информационной безопасности, потайные ходы — средство с очень серьезными побочными эффектами. Если система, осуществляющая мониторинг, окажется скомпрометированной, злоумышленник может получить полный контроль над целевой системой. Столь же опасно вмешательство в работу программируемой сетевой карты. В качестве меры противодействия подобные сетевые карты могут быть реализованы в защищенном исполнении, аналогично криптомодулям, а удаленное управление может осуществляться с нескольких машин и только при условии полного согласия в их действиях.
Описанный подход хорош, прежде всего, для восстановления работоспособности системы после непреднамеренных или умышленных атак на доступность (например, при срабатывании fork-бомбы, исчерпания оперативной памяти или порчи файловой системы). Если же система взломана злоумышленниками и поставлена под контроль путем внедрения в нее вредоносного ПО, такого как руткиты, то здравый смысл вроде бы подсказывает, что единственный способ восстановить доверие к ней — полная переустановка с гарантированно безопасных носителей и последующее наложение всех доступных корректирующих заплат, а также восстановление неиспорченных пользовательских данных. Однако в развитой корпоративной сети подобная деятельность может потребовать длительной ручной работы высококвалифицированных специалистов и оказаться экономически нецелесообразной или практически невозможной. Вместо этого можно попытаться реализовать идею автоматического самолечения систем (то есть удаления всего вредоносного без потери доброкачественной информации), встроив в них ремонтных агентов и защитив последних посредством технологии виртуальных машин (см. ).
Ремонтные агенты, как и другие средства информационной безопасности, должны удовлетворять следующим проектным принципам:
простота;обособление (агент должен быть защищен от несанкционированного изменения или обхода);доверие;обозримость (агенту должна быть видна вся система);приспособляемость (работа агента и количество потребляемых им ресурсов должны зависеть от состояния контролируемой системы и не мешать ее нормальному функционированию).
Общая схема работы ремонтного агента проста. Он запоминает заведомо безопасное состояние производственной системы, контролирует все вносимые изменения, периодически проверяет наличие признаков аномального поведения и несанкционированных изменений и при необходимости возвращает систему в безопасное состояние. Поскольку производственная система функционирует в рамках виртуальной машины, она не может вмешаться в работу агента, который является доверенным неизменяемым расширением ядра.
Разумеется, на практике все гораздо сложнее. Во-первых, если злоумышленник получит физический доступ к системе, он сможет обойти ремонтного агента; защититься от физических угроз можно только с помощью аппаратной поддержки. Во-вторых, подозрительная активность обнаруживается с некоторым запаздыванием, поэтому критичные данные рискуют оказаться скомпрометированными. В-третьих, "заведомо безопасный" образ системы может оказаться неполным (системный администратор или пользователь могут что-то добавить или изменить в обход агента), и тогда несанкционированные изменения не удастся обнаружить и ликвидировать. Безопасность системы не может быть выше уровня дисциплины, существующей в организации и зафиксированной в ее политике.
Автоматическое восстановление после компрометации должно стать одной из основных целей при проектировании и реализации перспективных информационных систем. С одной стороны, следует смириться с неизбежностью успешных атак или, по крайней мере, отказов аппаратуры и ошибок администрирования. С другой стороны, стоимость аппаратуры, в том числе, и носителей данных, быстро падает, поэтому имеется техническая и экономическая возможность организовать детальное протоколирование функционирования систем и, в частности, фиксировать все изменения в файловой системе, сохраняя возможность откатки вредоносной или ошибочной деятельности.
Основная проблема состоит в том, чтобы откатить все несанкционированные изменения, не затронув легальных модификаций. В статье описаны возможные подходы к решению этой задачи и прототипная реализация — система восстановления после вторжений Taser. Идея состоит в том, чтобы ассоциировать изменения с процессами, которые их осуществляют, и задать правила, разделяющие процессы на "чистых" и "нечистых". Утверждается, что результаты получаются удовлетворительными и по уровню автоматизации, и по накладным расходам на протоколирование, и по времени восстановления.
О потайных ходах и руткитах
Руткиты, как известно, служат для того, чтобы злоумышленник, взломавший систему и получивший привилегии суперпользователя, мог и в дальнейшем осуществлять к ней скрытный, несанкционированный, суперпользовательский доступ. То есть, руткит — это и потайной ход, и средство маскировки злоумышленной активности.
Руткиты являются разновидностью троянских программ и подразделяются на бинарные и руткиты уровня ядра. Первые подменяют системные утилиты, вторые — функции ядра, реализующие системные вызовы. Методологию классификации руткитов и детальные сведения о механизмах их функционирования можно найти, например, в статье .
Для выявления бинарных руткитов достаточно средств контроля целостности (таких, например, как Tripwire) ключевых системных файлов.
С руткитами уровня ядра ситуация существенно сложнее. Сигнатурный подход, разумеется, неэффективен и в этом случае. Если, например, изменен адрес таблицы системных вызовов в обработчике соответствующего прерывания, то какую сигнатуру и где следует искать? Дополнительную техническую проблему при реализации сканирования и проверки целостности файлов составляет отсутствие доверия к результатам системных сервисов.
Если руткит реализован с помощью механизма загружаемых модулей ядра (а это самый распространенный метод применительно к Linux-системам), можно попытаться, как рекомендуют авторы работы , перед загрузкой проводить бинарный статический анализ модулей с элементами символьного выполнения на предмет выявления признаков вредоносного поведения, таких как запись в управляющие структуры ядра. Но, по сути, это обобщенный антивирусный подход, сочетающий поиск сигнатур и эвристики, а его ограниченность известна. Правда, руткиты необходимо выявлять не среди произвольных программ, а среди модулей, тяготеющих к определенной внутренней структуре, характерной, например, для драйверов устройств, но методы обфускации программ и здесь оказываются достаточными для сокрытия признаков вредоносности. Точнее, можно прогнозировать "гонку вооружений" между средствами выявления признаков вредоносного поведения и их сокрытия.
Согласно опубликованным в статье результатам, предложенные и реализованные ее авторами методы позволили выявить все проверявшиеся руткиты (их было восемь) и не дали ни одного ложного срабатывания на почти пятистах легальных модулях. Время анализа, как правило, не превышало 10 мс, максимум составлял 420 мс (Pentium IV, 2 ГГц, 1 ГБ ОЗУ). Так что, несмотря на теоретические проблемы, наличие и серьезность которых авторы, разумеется, осознают, первые практические результаты оказались обнадеживающими, хотя пока не решались технические проблемы интеграции с ядром и обеспечения невозможности обхода контролирующего загрузчика модулей.
Загружаемые модули — серьезная угроза безопасности монолитных операционных систем, поскольку они имеют неограниченный доступ к коду и структурам данных ядра. На долю подобных модулей приходится до 70% кода ядра и от 70% до 90% ошибок, среднее время жизни которых составляет около 20 месяцев (см. ). Даже если отвлечься от злоумышленных руткитов, остаются угрозы, существующие благодаря уязвимостям в поспешно написанных драйверах устройств. Желательно каким-то образом организовать разграничение доступа в ядре, чтобы не допустить эксплуатации уязвимостей.
Работа развивает направление, намеченное в статье . Она предусматривает спецификацию допустимого и недопустимого поведения ("белые" и "черные" списки — адреса, по которым можно или нельзя выполнять переходы, данные, к которым разрешается или запрещается обращаться, области, где нельзя выполнять машинные инструкции, и т.п.). Частично выполнение спецификаций можно проверить статически, остальное контролируется динамически, за счет вставки проверочного кода. Утверждается, что накладные расходы при этом не превышают 23%. Отметим, однако, что будущее не за такими, явно временными, решениями, а за модульными операционными системами, полноценными моделями безопасности для их компонентов и аппаратной поддержкой при проведении политики безопасности в жизнь.
Руткиты можно считать одной из разновидностей скрытного программного обеспечения, включающего, например, средства протоколирования пользовательских сеансов.
Скрываться может как исполняемый код, так и используемые им ресурсы и ассоциированная информация. Например, вредоносный код можно поместить во флэш-память видеокарты, а для выполнения "впрыснуть" в существующий процесс. Ресурсы, такие как файлы и процессы, можно скрыть от пользователя, перехватывая системные вызовы по технологии руткитов. Пробовать выявить скрытное ПО можно по крайней мере двумя способами:
пытаться обнаружить скрывающие механизмы (рассмотренные выше подходы — из этой категории);пытаться получить информацию о системе несколькими способами и отыскать различия в выдаваемых результатах (например, сравнить выдачи команд ls и echo * или информацию от ps и из таблицы процессов в ядре, естественно, предварительно приведя результаты к единому формату).
Раз скрытными ресурсами манипулируют, то можно надеяться, что в каком-нибудь (низкоуровневом) представлении они видны. В этом состоит основная идея подхода, предлагаемого в работе . Может показаться, что искать симптомы вместо первопричины болезни — неправильно, но если симптомы выявить проще, то почему бы этого не сделать? "Сканеры сравнения" можно регулярно запускать на всех компьютерах корпоративной сети, на сканирование одного гигабайта дискового пространства, согласно приведенным в данным, уходит порядка полуминуты, так что подобный подход представляется вполне практичным.
(Напомним, что в статье рассматривается применение "дифференциального" метода для выявления потайных каналов.)
Разумеется, желательно не только не допускать установки руткитов или оперативно выявлять таковые, но и проводить самолечение скомпрометированных систем. Последнее — тема статьи . Идея состоит в том, чтобы отслеживать изменения в таблице системных вызовов, появление скрытых файлов, процессов и сетевых взаимодействий, а по выявлении вредоносной активности — ликвидировать ее, восстанавливая корректное состояние таблицы системных вызовов, удаляя скрытые файлы, терминируя скрытые процессы, блокируя скрытые сетевые соединения.
По иронии судьбы, прототип данного защитного средства реализован в виде загружаемого модуля ядра и, следовательно, сам может стать объектом атак руткитов, не говоря уже о проблеме полноты диагностики и лечения систем.
Вопрос о том, кто будет охранять охранников, принадлежит к числу вечных и трудноразрешимых. Если защищаемая и защищающая системы совпадают, нет никаких гарантий, что после компрометации защитные средства будут работать корректно, а осуществляемое ими лечение окажется эффективным и полным. Одним из способов изоляции средств защиты является упоминавшаяся выше технология виртуальных машин. Ее применение в контексте выявления подозрительной активности рассмотрено в работе . К сожалению, в сетевой среде эта технология оказывается, с одной стороны, недостаточной, а с другой — накладной (и авторы работы , разумеется, осознают серьезность отмеченных проблем). Недостаточность состоит в том, что, несмотря на виртуализацию, система остается одним узлом сети, подверженным атакам на доступность и удаленной эксплуатации уязвимостей сетевых сервисов. Неэффективность объясняется необходимостью частых переключений между контекстами виртуальных машин и контролирующим их монитором.
(Заметим в скобках, что технология виртуальных машин — замечательное средство эффективной, экономически оправданной реализации приманок и ловушек, исчисляемых десятками тысяч, на нескольких аппаратных серверах, см. .)
(Также в скобках как курьез упомянем предложение авторов работы учиться методам обфускации у разработчиков руткитов, однако в этой статье есть прекрасная обзорная врезка с изложением основных фактов и положений, относящихся к руткитам.)
Только аппаратная поддержка сулит прорыв в информационной безопасности, реализацию систем, устойчивых к атакам, способных оперативно, автоматически самовосстанавливаться. К сожалению, системы, подобные той, что описана в работе , — дело будущего, причем не очень близкого.
О потайных каналах
Как отмечено в работе , в настоящее время происходит становление так называемой многоаспектной информационной безопасности, когда делаются попытки учесть весь спектр интересов (порой конфликтующих между собой) всех субъектов информационных отношений, а также все виды конфигураций информационных систем, в том числе децентрализованные, не имеющие единого центра управления.
Безопасность зависит от субъекта. У пользователя своя безопасность, у поставщика информационного наполнения — своя (и пользователь здесь может считаться врагом). Появляются новые аспекты безопасности, такие как управление цифровыми правами. Эта тенденция особенно наглядно проявляется в применении потайных каналов.
Напомним (см. ), что скрытыми считаются нестандартные каналы передачи информации. Нестандартные способы передачи информации по легальным каналам (именуемыми в данном контексте обертывающими) получили название потайных (subliminal channels) или стеганографических (stego channels) каналов. Общие сведения о них приведены в статье . Потайные каналы используют тогда, когда имеется легальный коммуникационный канал, но что-либо (например, политика безопасности) запрещает передавать по нему определенную информацию.
Отметим, что между скрытыми и потайными каналами имеется два важных отличия. Во-первых, вопреки названию, никто не пытается скрыть существование скрытых каналов, просто для передачи информации используют сущности, для этого изначально не предназначенные, созданные для других целей. Напротив, потайной канал существует только до тех пор, пока о нем не узнал противник. Во-вторых, считается, что время передачи информации по скрытому каналу не ограничено. В противоположность этому, время передачи по потайному каналу определяется характеристиками обертывающего канала. Например, если для тайной передачи информации применяется графический образ, то передать можно только то, что удается поместить в этот образ, не нарушая скрытности.
В целом, потайные каналы гораздо практичнее скрытых, поскольку у них есть легальная основа — обертывающий канал.
Потайные (а не скрытые) каналы — наиболее подходящее средство для управления враждебной многоагентной системой. Но в них нуждаются не только злоумышленники. Потайные каналы могут эффективно применяться поставщиками информационного наполнения, встраивающими в него скрытые "цифровые водяные знаки" и желающими контролировать его распространение, соблюдение потребителями цифровых прав. Еще один пример, ставший классическим, — применение потайного канала премьер-министром Великобритании Маргарет Тэтчер, которая, чтобы выяснить кто из ее министров виновен в утечках информации, раздала им варианты одного документа с разными межсловными промежутками.
Разумеется, при весьма общих предположениях потайные каналы нельзя не только устранить, но даже обнаружить (например, в сжатом JPEG-образе всегда найдется место для скрытой информации). По отношению и к скрытым, и к потайным каналам справедливо приведенное в статье положение "Вы всегда можете послать бит".
Содержательным является вопрос о емкости и устойчивости подобных каналов, которые определяются не только полосой пропускания обертывающего канала и характеристиками шума в нем, но и максимальным размером полезной (скрываемой) нагрузки, а также функцией-детектором допустимости передаваемой информации (см., например, статью и цитированные в ней источники, среди которых мы выделим работу ).
Проблематика потайных каналов давно и плодотворно исследуется с позиций теории информации, получено много интересных теоретически и важных практически результатов. Обратим внимание на возможность и эффективность совместного использования скрытых и потайных каналов в сетевой среде. Так, в работе описана реализация сети анонимизаторов (см. ) с помощью HTTP-серверов и клиентов. Web-серфинг служит обертывающим каналом. В роли узлов сети анонимизаторов выступают HTTP-серверы, а взаимодействие между ними осуществляется по скрытым каналам в HTTP/HTML при посредничестве ничего не подозревающих клиентов (в первую очередь — с помощью средств перенаправления запросов и активного содержимого, встроенных, например, в рекламные баннеры, присутствующие на посещаемой Web-странице).
В результате можно достичь не только невозможности ассоциации между отправителем и получателем сообщений, но и реализовать более сильное свойство — скрытность (даже в присутствии глобального наблюдателя). Оказывающиеся невольными посредниками Web-серферы пополняют подлежащее анализу множество анонимности, затрудняя тем самым получение наблюдателем полезной информации.
(Разумеется, и злоумышленники, и разработчики защитных средств осознают возможности и проблемы, связанные с использованием HTTP в качестве обертывающего канала. Например, в статье описана обучаемая система Web Tap, выявляющая аномалии в исходящих HTTP-транзакциях.)
Отметим также очевидную связь между интеллектом встроенных агентов (или элементов многоагентной системы) и требуемой пропускной способностью потайных или скрытых каналов для взаимодействия с ними. В заметке приведен пример высокоинтеллектуальной троянской программы, являющейся экспертной системой, встроенной в доверенную (с многоуровневой политикой безопасности) стратегическую систему управления военными поставками и перемещением войск и способной определять по поставкам и перемещениям, возможно ли на следующей неделе начало наступательных военных действий. Если подобная программа будет каждый день передавать всего один бит информации (возможно/невозможно), это окажется весьма ценным для стратегического планирования. В то же время, согласно формальным требованиям "Оранжевой книги", скрытые каналы с полосой пропускания менее одного бита в десять секунд при аудите доверенных систем могут вообще не рассматриваться. (Редкий случай, когда "Оранжевая книга" делает послабление и, как оказывается, напрасно.)
Мораль состоит в том, что при анализе потайных и скрытых каналов вообще и их пропускной способности в частности нужно учитывать специфику информационных систем, ценность информации и семантику взаимодействия. В противном случае результаты анализа рискуют оказаться бессодержательными.
О скрытых каналах
Jet Info не первый раз обращается к теме скрытых каналов. В 2002 году ей был посвящен отдельный номер (см. , ), так что в данной работе предполагается, что читатель знаком с основами этой области знания; в противном случается рекомендуется перечесть статью (например, - прим. ред. CITForum.ru). Тем не менее, автор с самого начала хотел бы заметить, что тематика скрытых каналов в ее традиционной трактовке представляется ему несколько надуманной, формальной. Пик исследований в области скрытых каналов приходится на середину 1980-х годов, когда была опубликована "Оранжевая книга" Министерства обороны США, в которой, начиная с класса безопасности B2, было введено требование анализа скрытых каналов. В результате бороться со скрытыми каналами стали, в основном, не ради реальной безопасности, а ради успешной сертификации. Кроме того, скрытые каналы из-за, в общем-то, случайной ассоциации с классами B2 и выше исследовались почти исключительно в контексте многоуровневой политики безопасности, с обязательным упоминанием субъектов HIGH и LOW, моделями невлияния и прочими премудростями. Все это бесконечно далеко от реальных проблем типичных современных информационных систем, да и публикуемые результаты по большей части носят очевидный характер и не представляют ни теоретического, ни, тем более, практического интереса. В статье объяснены концептуальные причины подобного положения дел.
В частности, едва ли целесообразно задаваться вопросом возможности организации скрытых каналов для управления враждебной многоагентной системой (ВМАС). Если ВМАС удалось построить, взломав множество удаленных систем и внедрив в них вредоносное программное обеспечение (ВПО), то, очевидно, для этого нашлись коммуникационные ресурсы подходящей скрытности, более чем достаточные и для последующего управления.
В середине 1980-х годов была предложена систематическая методология выявления скрытых каналов по памяти (см. ), ключевым элементом которой является матрица разделяемых ресурсов. В сетевой среде, в Интернет, легальных разделяемых ресурсов сколько угодно — например, выделяемое пользователям пространство на общедоступных сайтах.
Можно воспользоваться и полями заголовков IP-пакетов (скажем, контрольная сумма — превосходный кандидат на эту роль), и начальными порядковыми номерами при установке TCP-взаимодействия (см. ). Можно организовать и практичные скрытые каналы по времени, например, кодируя единицу отправкой пакета в определенный интервал времени, составляющий миллисекунды (см. ).
С появлением мощных многопроцессорных систем с общей памятью полоса пропускания скрытых каналов подскочила до мегабит в секунду и продолжает увеличиваться с ростом быстродействия аппаратуры (см. ). Это, конечно, серьезная проблема, однако для ее решения достаточно отказаться от разделения подобных систем между субъектами с различным уровнем допуска.
Проблема скрытых каналов — это проявление более общей проблемы сложности современных информационных систем. В сложных системах скрытые каналы были, есть и будут, так что бороться нужно с причиной, а не со следствием. В самом общем виде метод борьбы со сложностью систем можно сформулировать как "проведение объектного подхода с физическими границами между объектами". Процессоры не должны разделяться не только между субъектами, но и между потоками управления. Пользовательская сеть должна быть физически отделена от административной. Вообще говоря, компоненты системы не должны доверять друг другу: процессор может не доверять памяти, сетевая карта — процессору и т.п. При выявлении подозрительной активности компоненты должны поднимать тревогу и применять другие защитные меры (например, дисковый контроллер может зашифровать файлы, сетевой контроллер — блокировать коммуникации и т.п.). В общем, на войне как на войне. Если организовать физические границы невозможно, следует воспользоваться виртуальными, формируемыми в первую очередь криптографическими средствами. Более подробное изложение этих вопросов можно найти в работе .
Скрытые каналы можно не только выявлять, но и ликвидировать или зашумлять "не глядя". Как пояснено в , для этого служат разного рода нормализаторы, сглаживающие нагрузку на процессор, энергопотребление, время вычисления определенных функций, сетевой трафик и т.п.
Например, ядро операционной системы Asbestos в ответ на запрос о создании порта возвращает новый порт с непредсказуемым именем, поскольку возможность создания портов с заданными именами может служить скрытым каналом.
Накладные расходы на нормализацию могут быть велики, отчего функционирование легальных субъектов может существенно замедляться, так что следует искать и находить разумный компромисс между информационной безопасностью и функциональной полезностью систем. С точки зрения борьбы со сложностью скрытые каналы имеют следующее неприятное свойство. Разделяемые ресурсы, присутствующие на любом уровне информационной системы, начиная с самого нижнего, аппаратного, могут быть использованы на всех вышележащих уровнях, вплоть до прикладного, для организации утечки информации. Централизованный арбитр доступа к памяти в многопроцессорной системе, разделяемый несколькими процессорами кэш второго уровня, устройство управления памятью — все это может служить каналом утечки. Таким образом, при анализе скрытых каналов необходимо рассматривать систему в целом. Попытка проведения так называемой составной сертификации, когда система оценивается на основе ранее проведенных испытаний отдельных модулей или уровней, ведет к пропуску скрытых каналов. Проблема усугубляется тем, что в описании отдельных модулей или уровней необходимые детали могут быть опущены как несущественные. Казалось бы, какая разница, как устроена очередь инструкций, выбранных микропроцессором для исполнения? Однако и это может быть важно для безопасной работы приложения (см. ). Операционная система, успешно прошедшая сертификацию при испытаниях на "голой" аппаратуре, содержит скрытые каналы заметной пропускной способности, если выполняется под управлением монитора виртуальных машин. В общем, разделяемый ресурс — это та самая горошина, которую настоящая принцесса почувствует через любое количество перин. И об этом необходимо помнить.
Подход на основе скрытых каналов активно используется для оценки степени несовершенства реализации таких защитных сервисов, как анонимизаторы и их сети, а также пополнение трафика.
Это представляется естественным, так как анонимизация и пополнение трафика — разновидности нормализации, предназначенной для ликвидации скрытых каналов. Если нормализация оказалась несовершенной, значит, скрытые каналы остались. Насколько несовершенной? Настолько, насколько велика утечка информации. Несовершенство анонимизаторов можно оценивать как пропускную способность скрытых каналов утечки информации об отправителе и/или получателе (см. ). Для отдельных анонимизаторов удается получить точное значение, для сетей анонимизаторов — оценку сверху.
Согласно текущим тенденциям, все большая часть Интернет-трафика шифруется (см. ). Шифрование защищает содержимое и заголовки пакетов, дополнение пакетов препятствует получению информации путем анализа их размеров. Однако криптография сама по себе не защищает от анализа поведения пакетов, то есть их распределения во времени, в результате чего может пострадать приватность пользователей. Кроме того, временной анализ SSH-трафика существенно упрощает несанкционированный доступ к пользовательским паролям. Пополнение трафика на канальном уровне — эффективная защитная мера против подобного анализа. Поток данных в канале приобретает заранее заданный характер. Некоторые пакеты задерживаются, а в канал, когда нужно, отправляются фиктивные данные. Это в принципе. На практике же весьма непросто реализовать пополнение так, чтобы наблюдаемый трафик в точности следовал заранее заданному распределению, так что у злоумышленника остается возможность скоррелировать пополненный полезный трафик. Несовершенство реализации пополнения можно оценить как пропускную способность скрытого канала, основанного на варьировании межпакетных интервалов. Оказывается, что в идеальных условиях этот скрытый канал допускает практическое использование. К счастью, в реальной загруженной сети с множеством потоков данных высокий уровень шума в канале затрудняет действия злоумышленника.
Применение аппарата скрытых каналов для оценки степени несовершенства архитектуры и/или реализации сервисов безопасности представляется весьма перспективным направлением исследований.
Красивое применение методов передачи данных, характерных для скрытых каналов по времени, в беспроводных сенсорных сетях удалось найти авторам работы . Одна из главных проблем сенсорных сетей — снижение энергопотребления. Если двоичные значения передаются по беспроводной сети обычным образом, то можно считать, что на это тратится энергия, пропорциональная их логарифму. Однако значения можно передавать и молчанием: послать стартовый бит, заставляющий получателя включить счетчик, выждать время, соответствующее значению, и послать стоп-бит. В результате экономится энергия, но тратится время (пропорциональное значению), однако передачу можно оптимизировать — молчание отлично мультиплексируется, каскадируется и быстро переадресуется.
Конечно, описанный метод передачи данных относится к разряду забавных диковинок. В целом, в настоящее время скрытые каналы являются почти исключительно академически-сертификационной областью. В этом контексте интересна работа , в которой исследуется проблема полноты анализа скрытых каналов. Вводится понятие полного набора скрытых каналов, элементы которого в совокупности порождают максимально возможную скрытую утечку информации (аналогом полного набора может служить базис в векторном пространстве). По мере выявления скрытых каналов их совокупность можно проверять на полноту (с помощью сформулированных в критериев) и получать в результате оценку потенциально возможной утечки информации. Еще один очень важный аспект работы — описание архитектурного подхода к построению систем, облегчающего анализ скрытых каналов. Выявлять по одному скрытые каналы в произвольной информационной системе — задача бесперспективная; целесообразно строить системы неким регулярным образом и затем подвергать их систематическому анализу с учетом их специфики.
На практике ни злоумышленники, ни производители средств информационной безопасности не уделяют скрытым каналам сколько-нибудь заметного внимания. Причина в том, что в современных информационных системах более чем достаточно "грубых" уязвимостей, допускающих несложное использование, поэтому и атакующие, и защищающиеся предпочитают пути наименьшего сопротивления, что вполне естественно.
Первые эксплуатируют очевидные "дыры", вторые пытаются их прикрыть.
Потребителям тоже не до скрытых каналов — им бы от червей и вирусов врукопашную отбиться, да найти деньги на прошлогодний снег в упаковке с надписью "системы предотвращения вторжений с известными сигнатурами". И еще терпеливо выслушать поучения производителей дырявого ПО за отсутствие дисциплины управления многочисленными корректирующими заплатами для этого самого ПО.
По поводу уязвимостей есть две новости, и обе хорошие. Первая — проблем с безопасностью базового ПО становится меньше, поэтому злоумышленники более активно эксплуатируют уязвимости приложений. Новость вторая — приложений много. А ведь есть еще фишинг и другие методы морально-психологического воздействия... Поэтому время скрытых каналов, если и придет, то не очень скоро.
Чтобы осознать, сколь скромное место занимают скрытые каналы среди других проблем информационной безопасности, даже если ограничиться только дефектами программного обеспечения, целесообразно рассмотреть классификацию подобных дефектов, предложенную в статье в контексте разработки средств статического анализа исходных текстов с целью выявления ошибок, чреватых возникновением уязвимостей.
Дефекты в ПО могут быть внесены намеренно или по небрежности. Первые подразделяются на злоумышленные и незлоумышленные. Злоумышленные дефекты — это лазейки, логические и временные бомбы; незлоумышленные — скрытые каналы (по памяти или по времени) и несогласованные пути доступа.
Дефекты, внесенные непреднамеренно, делятся на:
ошибки проверки правильности данных (ошибки адресации, в том числе переполнение буферов, некачественные проверки значений параметров, неверное размещение проверок, неадекватная идентификация/аутентификация);ошибки абстракции (повторное использование объектов, раскрытие внутреннего представления);асинхронные дефекты (проблемы параллельного выполнения, включая ситуации опережения, активные и пассивные тупики, разрывы между временами проверки и использования, а также наличие нескольких ссылок на один объект);ненадлежащее использование подкомпонентов (утечка ресурсов, непонимание распределения ответственности);ошибки функциональности (дефекты обработки исключительных ситуаций, прочие дефекты безопасности).
Чтобы понять, как дефекты безопасности могут быть внесены в программное обеспечение намеренно, но не злоумышленно, рассмотрим скрытый канал, образующийся в дисковом контроллере при оптимизации обслуживания запросов по алгоритму лифта (обращения к диску обрабатываются не в порядке поступления, а по мере того, как штанга с головками достигает запрошенных блоков, см. статью , в которой представлен систематический подход к выявлению скрытых каналов по времени). Злоумышленный отправитель информации может влиять на порядок и, следовательно, время обработки обращений, контролируя направление перемещения штанги с головками путем выдачи собственных запросов к диску в определенном порядке. Здесь в роли разделяемого ресурса, допускающего (злоумышленное) целенаправленное воздействие, выступает общая очередь запросов к дисковым блокам, а также текущая позиция и направление движения штанги. Данный дефект естественно считать внесенным преднамеренно, но не злоумышленно, поскольку скрытый канал образовался не из-за ошибки реализации, а вследствие принятого проектного решения, направленного на оптимизацию функционирования системы.
Самую большую и практически важную группу дефектов, внесенных по небрежности, составляют ошибки проверки правильности данных, точнее, недостаточный контроль входных данных перед их использованием. Разработка методов недопущения или выявления подобных ошибок — задача первостепенной практической важности. А скрытые каналы могут подождать...
Об агентах — хороших и ... разных
Агенты и многоагентные системы (МАС) — одно из активно развиваемых направлений современной технологии программирования. Агенты доставляют на удаленные системы код, расширяющий функциональность последних, а многоагентные комплексы позволяют естественным образом распараллелить решение сложных задач. Оба свойства важны, например, для эффективной индексации мультимедийных ресурсов (см. ). Файлы мультимедиа велики, и загружать их на центральный сервер для индексации накладно. Проще доставить на целевую систему индексирующий код, а затем получить оттуда лишь результаты индексации, имеющие существенно меньший размер. Подобный подход хорош и с точки зрения информационной безопасности, если подходить к ней с позиций поставщиков информационного наполнения и управления цифровыми правами, поскольку он исключает выгрузку платных ресурсов и, в то же время, способствует распространению сведений о них.
Мобильные агенты опираются на интерфейсы и возможности, присутствующие на большинстве платформ. Кроме того, они способны перемещаться с одной системы на другую, двигаясь по намеченному маршруту, что делает их автономными, не требующими постоянного управления, за счет чего экономятся вычислительные и коммуникационные ресурсы. В контексте информационной безопасности мобильные агенты могут взять на себя роль странствующих рыцарей, контролирующих удаленные системы на предмет своевременного наложения корректирующих заплат и отсутствия признаков вредоносной активности (см. ), выявляющих и отражающих вместе с "братьями по оружию" распределенные, скоординированные атаки (см. ), внося в защиту элементы динамичности и самоорганизации (см. ).
Инкрементальность — важное достоинство мобильных агентов и многоагентных систем. Каждый отдельный агент может решать свою, частную задачу (выделение определенных свойств мультимедийного наполнения, проверка установки определенных программных коррекций, выявление определенных разновидностей вредоносного ПО, реализация определенных положений политики безопасности), но их пополняемая совокупность оказывается адекватным, актуальным отражением и средством проведения в жизнь текущей политики безопасности, меняющейся под влиянием изменений в окружении, при появлении новых рисков и угроз.
Технология мобильных агентов и многоагентных систем — средство сильнодействующее, пользоваться которым следует с осторожностью, осознавая ассоциированные риски. Уязвимость коммуникаций МАС — лишь одна и, вероятно, не самая сложная из проблем. Нужно учитывать (см., например, ), что:
агенты могут атаковать целевые платформы (проблема безопасности платформ);агенты сами могут быть атакованы платформами, другими агентами и внешними сущностями, такими как вирусы (проблема безопасности агентов).
Надежная защита и платформ, и агентов может быть построена только с учетом семантики программ (см. ), но некоторые частные решения можно получить формальными, криптографическими методами, проводя аутентификацию агентов и их источников, контролируя целостность и обеспечивая конфиденциальность кода и данных агентов (см. , , ).
Особую сложность проблемам безопасности мобильных агентов и целевых платформ придает их взаимное влияние. Предположим, что мобильный агент содержит конфиденциальные данные, лишь часть из которых предназначена для каждой посещаемой им платформы. Эти части шифруют открытыми ключами соответствующих платформ.
В принципе, расшифрование может производиться как агентами, так и платформами, но у обоих подходов есть недостатки (см. ). Если расшифрование осуществляет агент, платформа должна передать ему свой закрытый ключ, что (слишком) рискованно. При расшифровании средствами платформы последняя должна знать структуру агента, что противоречит мобильности. Кроме того, следует предупредить попытки расшифрования данных, украденных у агентов. Предложенное в компромиссное решение основано на предоставлении платформой некоторого базового криптографического сервиса, пользоваться которым могут только аутентифицированные агенты.
В агентах выделяется ядро "раскрутки", имеющее простую структуру, расшифровывающее тело на конкретной платформе и контролирующее целостность результата.
Согласованность действий МАС — еще одна сложная проблема. Если агенты проводят в жизнь политику безопасности в рамках большой корпоративной сети, то при изменении положений этой политики необходимо отозвать одну совокупность агентов и запустить вместо нее другую.
Теоретически все просто, но этому могут помешать асинхронность перемещений мобильных агентов, временное отсутствие связи с удаленными сетевыми сегментами и т.п. В общем, добропорядочное использование МАС — дело непростое, зато для вредоносных агентов открывается масса возможностей.
Как и со скрытыми и потайными каналами, с вредоносным ПО нужно бороться — выявлять и ликвидировать и/или ограничивать. В статье обоснованы преимущества подхода, основанного на ограничении с учетом семантики программ и протоколов. Относительно выявления можно сказать, что для скрытых и потайных каналов оно в общем случае безнадежно, а для вредоносного ПО — еще безнадежнее. Как показывают результаты работы , даже лучшие коммерческие антивирусные средства пасуют перед несложными методами обфускации программ, такими, например, как переупорядочение кода, с точки зрения теории информации, факт абсолютно очевидный и естественный. Ситуацию до некоторой степени можно улучшить за счет более изощренного сопоставления с образцами вредоносного поведения, как предлагается в , но это "продвижение" никак нельзя назвать решающим.
В таких условиях остается надеяться разве что на детские психологические трюки и пытаться отвлечь хакеров от Интернет, предоставив им отдельный уголок для развлечений и демонстрации своей мощи (см. ), или снижать вероятность ненамеренного запуска пользователями вредоносного ПО, распространив на системный загрузчик подход "все, что не разрешено, запрещено" и защитив выполнимые файлы криптографическими контрольными суммами (см. ).
В статье совершенно справедливо подчеркивается,
В статье совершенно справедливо подчеркивается, как важно правильно поставить задачу и рассматривать ее не изолированно, а в реальном окружении. Правильная постановка, связанная с контролируемым выполнением (ограничением) программ с учетом их семантики, важна для всех разновидностей скрытых и потайных каналов.
В то же время, проблему скрытых и потайных каналов с практической точки зрения никак нельзя отнести к числу самых острых. Побочные каналы — гораздо более реальная угроза для встроенных систем. Безопасность мобильных агентов — болевая точка технологии Интернет/Интранет. Наконец, руткиты и вообще скрытное программное обеспечение, — это опасная угроза, противостоять которой обычные пользователи и многие системные администраторы не в состоянии.
Только программными средствами проблем информационной безопасности не решить. На наш взгляд, в настоящее время наметилась тенденция к расширению аппаратной поддержки защитных средств. Когда подобная поддержка обретет реальные очертания — вопрос не одного года. Чтобы он получил реальное решение, нужны экономические и правовые предпосылки, а не только устрашающая статистика злоумышленной активности и оценки потерь от нее.
Первопричину проблем информационной безопасности следует искать в сложности современных систем. Бороться со сложностью — значит делать системы более безопасными. К сожалению, стремление опередить конкурентов, предложить систему с более богатой функциональностью заставляют производителей двигаться в противоположном направлении. В настоящее время не видно причин, способных эту тенденцию изменить. Системным интеграторам и потребителям остается надеяться только на себя, на свое умение выбирать максимально простую, продуманную архитектуру и поддерживать производственные системы в безопасном состоянии техническими и организационными мерами, тратя силы и средства на отражение реальных, а не надуманных угроз.