СЕРГЕЙ ЯРЕМЧУК, фрилансер. Автор более 800 статей и шести книг. С «СА» с первого номера. Интересы: сетевые технологии, защита информации, свободные ОС
Иммунная система для компьютера
Появление компьютеров послужило импульсом к развитию многих наук, но сразу стало понятно, что созданные искусственные алгоритмы не всегда в состоянии рационально решить задачу. Там, где человек сразу видит решение, компьютер лишь может перебирать варианты ответа. Между тем природа терпеливо оттачивает свои алгоритмы уже не один миллион лет, человечеству не сравниться с такими сроками. Именно поэтому в последнее время наметился большой интерес к «натуральным» алгоритмам. Нейронные сети и генетические алгоритмы уже нашли свое применение во многих сферах, в том числе применяют их и в деле защиты информации.
Если посмотреть на сегодняшние решения по защите компьютерных систем, их можно сравнить с превентивными мерами по недопущению заболевания, вроде правил общей гигиены, либо с лекарствами, помогающими укрепить организм, как правило, только от определенной болезни. Но природа дала человеку более совершенное средство, помогающее справиться с неизвестными болезнями – иммунитет. Именно это свойство пытаются сейчас выработать у компьютерных систем специалисты. Такие системы, заимствующие у природы принцип иммунитета, называют искусственными иммунными системами (AIS – Artificial Immune System).
Для понимания общего принципа работы такой системы необходимо вкратце напомнить, как работает естественная иммунная система, предохраняющая человека от опасных инородных тел. Их роль в организме аналогична таковой в компьютерных системах. Хотя имеется достаточно много различий между живыми организмами и компьютерными системами, но цель – обозначить подобия, переносимые в компьютерную защиту. Защита организма многослойна, здесь и кожа, второй барьер – pH, температура, делающая невозможной существование инородных организмов и, наконец, наиболее сложная из них, иммунная система человека. Иммунологи описывают проблему определения заразы внутри организма как сравнение неких шаблонов с попадающими внутрь организма телами (или антигенами) и выявления между ними различий. В роли шаблонов выступают лимфоциты, которые вырабатываются В- и Т-клетками спинного мозга и тимуса. Причем генные библиотеки эволюционируют постоянно, поэтому изменяется и содержащаяся в них информация. В этом процессе имеется несколько интересных моментов. Так, лимфоциты обнаруживают только некоторое ограниченное подмножество патологий, и поэтому для гарантированного обнаружения всех возможных вариантов во всем организме их должно быть достаточное количество (не говоря уже о том, что около 100 миллионов замещаются каждые 2-3 дня в процессе, называемом apoptosis).
Иммунная система обладает двумя типами реакции: первичная и вторичная. Первичная реакция происходит, когда иммунная система сталкивается с антигеном впервые, при этом он изучается, и на основании составленного шаблона вырабатываются антитела, уничтожающие антиген. Это длительный процесс, занимающий около 3 недель.
Но так как выработать одинаковые антитела довольно тяжело (телесная гипермутация), некоторые из них не вполне соответствуют антигену. Для устранения таких не соответствующих шаблону антител запускается механизм клональной селекции, позволяющий отобрать максимально соответствующие антигену антитела. Учитывая короткий срок жизни, и во избежание повторения всей процедуры с самого начала, информация запоминается. Процесс запоминания – тема больших дебатов, хотя многие сходятся в том, что некоторые B-ячейки выступают как ячейки памяти, но для нашего случая это, впрочем, и не важно. Теперь при повторном заражении запускается механизм вторичной реакции, быстро реагирующий на вторжение. И еще один интересный (но редкий) процесс происходит в организме, называется clonal deletion и напоминает тестирование систем обнаружения атак. На стадии выработки лимфоцитов некоторые из них мутируют до такой степени, что начинают нападать на сам организм. Естественно, такие лимфоциты убиваются, но в результате в организме заранее создаются шаблоны, соответствие с которыми сразу же выдает чужеродность.
Итак, иммунная система человека обладает некоторыми свойствами:
- индивидуальный подход к уникальным событиям;
- система является распределенной;
- без централизованного контроля;
- самообучаемая, обладающая памятью, ошибкоустойчивая и самотестирующаяся;
- относительно проста и легковесна.
А как раз именно этими свойствами, по мнению специалистов, должна обладать эффективная система обнаружения атак.
Даже такую упрощенную систему очень трудно полностью перенести в компьютерный мир, да и заниматься этим, очевидно, никто не будет, слишком большие различия. Компьютерные системы, моделирующие T-ячейки, используются для детектирования аномалий, например, при обнаружении компьютерных вирусов, в то время как системы, моделирующие поведение B-ячеек, ориентируются главным образом на проблемы распознавания образов и оптимизации. Отличий компьютерной реализации от биологической довольно много. Так, вместо многих видов датчиков, отвечающих за свой участок и обнаружение своего антигена, используется, как правило, один тип, совмещающий в себе сразу несколько функций. AIS строится, как правило, только на двух центральных положениях: антиген – антитело. Исходя из особенностей сервиса или протокола, выбираются исходные данные для формирования генной библиотеки, которая затем пополняется в процессе обнаружения аномальной активности (т.е. эволюции генной библиотеки). Кроме того, механизмы негативной селекции оперируют вероятностными характеристиками и вместо полного соответствия параметров довольствуются частичным. Изменение коэффициента соответствия изменяет количество ложных срабатываний системы. В качестве замены белку антигенов выступают системные вызовы или сетевые пакеты. Для уменьшения количества антител детекторы конкурируют между собой, подобно тому, как лимфоциты конкурируют при связывании инородного антигена, и такая система оставляет соответствующие только наиболее часто проявляющимся явлениям. Кроме того, такая система имитирует механизм негативной селекции, в результате которой генерируются ранее неизвестные сигнатуры, которые в свою очередь сравниваются с нормальным профилем. В итоге всего такая система создает минимально возможный набор детекторов, способных обнаруживать максимальное число аномалий. Один из компьютеров может играть роль тимуса, и при наличии вторичных IDS весь набор рассылается и на остальные узлы. Хотя в принципе такая централизация необязательна и лимфоциты при обнаружении аномалии могут самостоятельно копироваться на остальные узлы. При обнаружении проблем возможна разная реакция. Например, проблемная машина или сервис может быть просто изолирован (перестройкой firewall, маршрутизатора, перезагрузкой, остановкой и пр.), или IDS пытается перестроиться на параметры атакующего. Сетевые реализации AIS имеют еще один компонент, называемый коммуникатором, оперирующий таким параметром, как уровень риска. При обнаружении аномалий коммуникатор поднимает свой уровень риска и отсылает значение на другие системы, которые также поднимают свой уровень. Поэтому при появлении аномалий сразу на нескольких системах общий уровень быстро растет, и администратор будет оповещен об опасности.
Рисунок 1
После прочтения всего вышеизложенного у многих может возникнуть вопрос, в чем же отличие и преимущество искусственных иммунных систем от искусственных нейронных сетей. Работы по изучению искусственных нейронных сетей (Artificial Neural Networks – ANN) ведутся сравнительно давно и отнюдь небезуспешно, основной пик работ приходится где-то на семидесятые-восьмидесятые. В результате разработано множество теорий и алгоритмов, теория Дарвинизма привела к появлению эволюционных алгоритмов (evolutionary algorithms – EA). Обе эти сети способны обучаться, ведя наблюдение за изменением параметров системы, и как результат достигать максимально возможной эффективности, имеют ассоциативную память, но в любом случае необходима первоначальная настройка и подгонка параметров. Однако отличие нервной и иммунной систем человека накладывает и свои отпечатки на алгоритмы работы. Для AIS характерны самоорганизация и эволюция, для ANN поведение во многом зависит от алгоритма. Количество ячеек AIS не является строго фиксированным, их положение изменяется динамически, происходит постоянное производство и отмирание ячеек, нейроны же имеют конкретное местоположение, и количество их фиксировано. Более того, для первой не характерно длительное взаимодействие между элементами, концентрация и характер их динамически изменяется, для второй оно постоянно и задается при подключении. Далее, для AIS, как правило, нехарактерно централизованное управление и даже более того, оно противоречит самой природе вопроса, в ANN всем заправляет мозг, настраивающий веса. Одна из проблем для изучающих ANN состоит в том, что иногда трудно выделить, что именно сеть сейчас «знает».
Более подробно этот вопрос освещен в документах «Immune and Neural Network Models:
Первые разработки по иммунным системам были известны еще в середине 70-х, но все же масштабные исследования начались совсем недавно, в конце 90-х годов. Поэтому стоит отметить, что практических реализаций в больших количествах ждать пока не приходится. Но алгоритмы AIS уже находят применение при распознавании образов, в некоторых оптимизационных задачах, поиске и устранении неисправностей, в том числе и аппаратных (http://www.osp.ru/cw/2001/47/000_35.htm), обнаружении вирусов, биоинформатике и многих других задачах. Поиск информации о применении AIS в системах защиты при помощи поисковиков несколько затруднен, так как по запросам выводится большое количество ссылок, не всегда соответствующих искомому. Большая часть проектов сегодня предоставляет только теоретическую информацию, которая будет интересна в первую очередь математикам и программистам. В любом случае свои исследования стоит начинать с сайта проекта ARTIST – ARTificial Immune SysTems (http://www.artificial-immune-systems.org), где вы найдете ссылки на проводимые конференции, новости и некоторую другую информацию. Задачей проекта ISYS (http://www.aber.ac.uk/~dcswww/ISYS) является разработка теории AIS, исследование возможности ее применения в конкретных областях и предоставление инструмента, позволяющего самому собрать и испытать такую систему. Самая большая коллекция ссылок по теме AIS расположена по адресу: http://www.dca.fee.unicamp.br/~lnunes/immune.html, плюс здесь вы найдете руководство, и несколько алгоритмов, демонстрирующих работу AIS в Matlab.
Единственным русскоязычным материалом по защите компьютеров при помощи AIS, является статья Алексея Гвозденко «Искусственные иммунные системы как средство сетевой самозащиты» (http://itc.ua/article.phtml?ID=4270).
Computer Immune Systems (http://www.cs.unm.edu/~immsec) – единственный найденный проект по применению AIS для защиты компьютеров. Интересен он еще и потому, что предоставляет не только теоретические наработки, но и код.
Идеи от иммунологии применительно к сегодняшним проблемам компьютерной безопасности нашли здесь реализацию в четырех методах детектирования, которые не только способны обнаружить аномалии, запоминают их и позволяют автоматически среагировать на вторжение.
Сетевая система обнаружения атак Lisys для обнаружения сетевых аномалий контролирует проходящие TCP SYN-пакеты. В случае обнаружения необычных TCP-связей, программа посылает предупреждение по e-mail. Далее решение принимает администратор. Если администратор ничего не предпринимает, то детектор, пометивший подключение как аномальное, исчезнет и не будет больше беспокоить. Если аномалия подтверждена, то детектор станет частью набора и будет предупреждать пользователя всякий раз при обнаружении подобного подключения. Состоит Lisys из распределенных детекторов размером 49 байт, контролирующих «data-path triple», т.е. IP-адресов источника и назначения, а также порт. Сначала детекторы генерируются случайно и в процессе работы соответствующие нормальному трафику постепенно убираются, кроме того, детекторы имеют время жизни, и в итоге весь набор, кроме записанных в память, через некоторое время регенерируется. При таком подходе возможно появление незаполненных мест в наборе, которое устраняется использованием масок перестановки, позволяющих повторно отобразить «data-path triple», замеченное различными детекторами. Для уменьшения количества ложных тревог используется порог активации, превышение которого приводит к срабатыванию датчика. Этот порог активации, как говорилось выше, общий на всю сеть.
Process Homeostasis (pH) (рис. 2) представляет собой расширение к ядру Linux, позволяющее обнаруживать и при необходимости замедлять необычное поведение программы. Для обнаружения необычного поведения вначале автоматически создаются профили системных вызовов, сделанных различными программами. На создание такого профиля уходит некоторое время, после чего программа может действовать самостоятельно, вначале включая экспоненциальную задержку по времени для аномальных вызовов, а затем и вовсе уничтожая процесс. Так как контролировать все вызовы накладно и нерационально, то система работает только с системными вызовами, имеющими полный доступ к ресурсам компьютера.
Рисунок 2
STIDE (Sequence Time-Delay Embedding) – также был призван помочь в обнаружении внедрений, распознавая необычные эпизоды системных вызовов. В процессе обучения stide формирует базу данных из всех уникальных, непрерывных системных вызовов и затем делит их на части предопределенной фиксированной длины. Во время работы stide сравнивает эпизоды, полученные при новых трассировках с уже имеющимися в базе данных, и сообщает о критерии аномалии, указывающем, сколько новых вызовов отличаются от нормы.
RISE (Randomized Instruction Set Emulation Building) – эта разработка, основанная на документе «Diverse Computer Systems» (http://www.cs.unm.edu/~immsec/publications/hotos-97.pdf) являет собой попытку решения еще одной из проблем – однородности компьютерных систем. Как и в природе, если какой-то вид становится доминирующим, то он становится подвержен болезням, заражению и пр. В компьютерном мире ситуация аналогична. Сегодня стараются делать компьютерные системы более совместимыми и более легкими для использования, и как результат, сейчас можно встретить в одной сети несколько сотен компьютеров практически одинаковой конфигурации, и когда уязвимость найдена, получается весьма благодатная почва для размножения компьютерных вирусов и для вторжения. Эффекта рандомизации можно достигнуть, изменяя исходные коды программы, при трансляции, в момент загрузки, комбинируя эти и другие способы. Все они имеют как положительные, так и отрицательные стороны. В RISE рандомизируются некоторые инструкции исполняемого двоичного файла в момент загрузки, для этого они складываются XOR с неким случайным числом. Этот способ имеет ряд преимуществ, так, не надо хранить измененные программы, возможно использование нового ключа при каждом исполнении, не требуется исходный код, не требуется настройка. Такой компьютер с «индивидуализированной» системой команд будет иметь большую устойчивость к уязвимостям, вроде переполнения буфера. Так как изменить системы команд процессора довольно проблематично, то для реализации этой идеи используется x86 эмулятор Valgrind (http://valgrind.kde.org), первоначально предназначенный для отладки памяти. На нынешнем этапе RISE представляет собой скорее концепцию, так как Valgrind сильно замедляет процесс, и для нормальной работы эмулятору требуется большая оптимизация. Работает RISE (как и остальные утилиты, кроме lisys ) пока только с ядрами 2.2 и 2.4, поэтому при попытке собрать с ядром серии 2.6, скорее всего, получите такое сообщение.
checking for the kernel version... unsupported (2.6.4-52-default)
configure: error: Valgrind works on kernels 2.2 and 2.4
|
Еще один проект Computational Immunology for Fraud Detection (CIFD) (http://www.icsa.ac.uk/CIFD) занимается разработкой системы защиты на базе технологии AIS, которую затем планируется использовать в почтовой службе Англии, но на момент написания статьи проект предоставлял только общую информацию о разработках.
AIS – относительно новая область исследований. Изучая и подражая механизмам естественной иммунной системы, можно получить довольно эффективные решения. Так, новый подход к обнаружению атак, примененный в компонентах Computer Immune Systems, позволяет выявить и остановить широкое разнообразие атак, при этом такие системы не требуют модификаций и минимальной администрации, так как способны самостоятельно адаптироваться к новым угрозам, при этом потребляют незначительное количество системных ресурсов. Остается надеяться, что подобные разработки в скором времени выберутся из концептуального состояния и станут доступны для широкого использования.