Целостность и изменчивость в решении задачи обеспечения безопасности данных
Процесс организации и поддержания системы безопасности невозможно качественно реализовать, опираясь исключительно на нормативно-методические материалы, договоренности или соглашения. Даже такой детерминированный алгоритм, как «утром деньги — вечером стулья», там, где речь идет о безопасности информационных систем, может дать сбой: деньги будут уплачены, а вместо стула вам дадут табуретку или вообще ничего не дадут. При этом наличие у пользователя сертификата на продукт, выданного самой уважаемой организацией, нисколько не сделает злоумышленника добрее. Однако, понимая это, каждый в глубине души надеется на то, что «бумажка с печатью» уменьшит степень риска. И это действительно так. Но как определить эту величину, если никто не может измерить степень риска с достаточной точностью? Может быть, это уменьшение будет на две десятых или пять сотых? Единой шкалы нет, и в ближайшее время ее появления не предвидится в силу ряда объективных причин. Главная из причин отсутствия единой шкалы состоит в том, что процесс организации и поддержания системы безопасности на должном уровне — это всегда творческий процесс. Он чем-то напоминает игру в шахматы с жестко лимитированным временем и с неограниченным числом различных фигур. Безусловно, изучив тысячу партий, проще сыграть тысяча первую, но даже по тысяче партий невозможно создать постоянно выигрывающий алгоритм. Можно даже допустить обратное: если злоумышленник знает, что алгоритм построения и технология поддержания системы защиты строго соответствуют установленным требованиям, у него появятся дополнительные возможности при выборе направления обходного маневра для нанесения удара.
Как известно, в общем виде проблема обеспечения гарантированной защиты относится к алгоритмически неразрешимым. Это означает, что не может существовать единого алгоритма, способного защитить любой информационный объект. Отсюда следует, что технологии обеспечения безопасности и сами системы защиты не должны быть типовыми, хотя могут состоять из типовых элементов. К сожалению, любая система, даже состоящая из конечного числа элементов и функционирующая конечное время, не застрахована от бесконечного множества угроз. Чтобы убедиться в отсутствии «хвоста», необходимо контролировать этот самый «хвост». Но лицо, осуществляющее контроль, само может быть злоумышленником, а это значит, что необходим контроль контроля и т. д. Процедура активизации контролирующих механизмов создает бесконечную очередь с целью добиться гарантированного отсутствия «хвоста». Но разве можно надеяться на что-то гарантированное там, где наш проявленный мир сталкивается с миром не проявленной бесконечности? Точно так же обстоит дело и в мире программного обеспечения: антивирусная система защиты должна убедиться, что вирус ее не контролирует, а кроме того, что он не контролирует блок контроля за контролем и т. д., и т. п. В свете сказанного еще раз вернемся к рассмотрению классических принципы организации информационной безопасности и подвергнем их небольшой ревизии: - авторизация доступа: идентификация пользователей и процессов; - доступность; - целостность программ и данных. В чем их практическая ценность? В первую очередь, названные принципы фиксируют высоту забора, через который не каждый злоумышленник рискнет перелезть. Но их исполнение не является панацей от всех бед – забор с бесконечной высотой все равно построить нельзя. Не замахиваясь пока на все принципы сразу, остановимся только на одном из них — на целостности. Обеспечение целостности подразумевает периодическую проверку состояния системы на соответствие некоторому установленному эталону. Механизмы для различных областей человеческой деятельности могут быть самыми разными: проверка по книгам учета в случае бухгалтерских ревизий; просчет контрольных сумм в случае работы «компьютерных ревизоров» и т. п.
Предполагается, что периодическая проверка целостности среды позволяет выявлять сбои программно-аппаратного обеспечения или факты несанкционированного вирусного внедрения. Но если бы это было так, компьютерные вирусы уже давно были бы уничтожены. Тем не менее этого не происходит, наоборот, появляются вирусы, способные заражать текстовые файлы под Word. Более того, для заражения используются даже расширяющиеся возможности по написанию имен файлов, как-то: возможность использовать в имени файла несколько точек. Например. Как известно, графический файл, содержащий рисунок, не включает в себя исполнительные команды, т.е. там вируса быть не должно по определению. Значит, подобного рода файл пользователь будет открывать ничего не опасаясь. Злоумышленник создает исполняемый файл, включает в него программную закладку, организует вызов из этого исполняемого модуля соответствующего графического файла и дает ему примерно следующее имя: самолет начала двадцатого века.jpg.exe. Имя длинное, на экране полностью не отображается, пользователь, просматривая имя, встречает расширение.jpg и успокаивается. Любые новые, в том числе сервисные, возможности несут в себе и новые угрозы. Для того чтобы принцип целостности работал, среда вычислительных процессов или наиболее значимая ее часть не должна модифицироваться в процессе работы. А много ли можно насчитать подобных не модифицируемых объектов? Данные изменяются, пополняются и удаляются, программы модифицируются и обновляются. Безусловно, можно выделить в «дышащем океане» несколько «тихих островков»: загрузочный сектор, область, занятая файлами операционной системы, некоторые базовые наборы данных, модификация которых запрещена, исполняемые модули — и пытаться удержать эти «островки» в их девственной чистоте. При этом не надо забывать, что система, которая будет заниматься контролем целостности, сама нуждается в контроле. Не тупиковый ли это путь?
Безусловно, порой владелец информации считает достаточным, если есть замок на двери, охрана, караулящая этот замок, и начальник, проверяющий охрану. Ситуация, когда «не спит собака — дачу охраняет, и я не сплю — собаку стерегу», — классический пример доведения принципа целостности до абсурда, не дающий при этом стопроцентной гарантии сохранности защищаемого объекта. А следует ли сама природа этому принципу, реализуя средства защиты для биологических информационных самообучающихся систем — животных и человека? Оказывается, что в результате метаболического круговорота в мозге человека в течение нескольких месяцев почти все атомы оказываются замененными. В клетках и тканях любого живого существа происходит процесс роста и старения. Клетки постоянно рождаются и умирают, а нервные клетки только умирают. Хотя и здесь есть механизмы, пытающиеся поддерживать хоть какую-то целостность среды, например, иммунная система делает все, чтобы уничтожить «чужаков». Но по одной из гипотез старения именно иммунная система и убивает своего изменившегося со временем хозяина[19]. Получается, что природа использует еще и другие принципы информационной безопасности, и одним из них является принцип постоянной изменчивости. В чем может выразиться применение этого принципа при организации защиты информации, обрабатываемой средствами вычислительной техники? Оказывается, что постоянная модификация языка взаимодействия элементов системы — это единственное, что способно гарантированно защитить компьютерную систему от программных вирусов[20]. Любопытно, но даже способы лечения человека от биологических вирусов подтверждают эту мысль. Резкий скачок температуры организма приводит к изменению взаимодействия его элементов даже на клеточном уровне; в результате организм перестает считать вирус за своего, а тот, в свою очередь, перестает узнавать организм и выпадает из системы.
В приложении к программному продукту сказанное означает регулярную модификацию и самомодификацию кода и алгоритма всей системы в целом — это один путь. Второй - заключается в усилении «неопределенности» документов и процессов. То, что смена языка взаимодействия элементов позволяет системе «стряхнуть» вирус, использовалось и используется во всех системах защиты — национальных, военных, социальных, биологических, психологических, программных и т. п. Что же касается светлого будущего для такого принципа организации защиты, как изменчивость, есть резон прислушаться к словам представителей фантастического жанра, например Роберта Шекли. В двух его произведениях: рассказе «Может, поговорим?» и романе «Хождение Джоэниса» очень образно показаны преимущества рассматриваемого принципа защиты. Особенно характерен первый рассказ, суть которого в следующем. Земляне в далеком будущем осваивают Вселенную, но стараются сделать это так, чтобы избежать войн с местными жителями. Поэтому используется испытанная веками схема колонизации, когда посланец за бесценок скупает землю аборигенов. Главное условие — наличие взаимосогласованного и безукоризненного с точки зрения местных законов договора. Посланец высаживается на планете, изучает язык и законодательство, покупает недвижимость, оформляя соответствующие договоры, и начинает вытеснять местную публику. Обратите внимание — перед вами классическая схема работы вируса. Но вот на одной из далеких планет происходит осечка. Местный язык изменяется с такой скоростью, что внешний по отношению к системе субъект, человек по имени Джексон, не в состоянии его освоить. «Язык планеты На был подобен реке Гераклита, в которую нельзя войти дважды, ибо там постоянно сменяется вода... Дело само по себе скверное, но еще хуже то, что сторонний наблюдатель вроде Джексона вообще не имел ни малейших надежд на фиксацию или обособление хотя бы одного-единственного термина из динамически меняющейся сети терминов, составляющих язык планеты На. Влезть в систему — значит непредсказуемо изменить ее, а если вычленить отдельный термин, то его связь с системой нарушится, и сам термин будет пониматься ошибочно. А посему, согласуясь с фактом постоянного изменения, язык не поддается идентификации и контролю и через неопределенность сопротивляется всем попыткам им овладеть». В романе «Хождение Джоэниса» как бы между прочим рассматривается схема защиты руководства в здании от убийц и шпионов. Суть в том, что в здании постоянно происходят изменения; независимые проектировщики регулярно проектируют, а строители регулярно перестраивают отдельные части здания. В результате здание постоянно изменяется и найти в нем что-то человеку с улицы (вирусу) не представляется возможным.
«— Мне думается, что рабочие, выполняя приказ высокого начальства, постоянно перестраивают отдельные части здания. Вдумайтесь. Начальство озабочено соображениями безопасности, а лучшая из возможных мер безопасности — это держать здание в постоянном тонусе перемен. Далее, если бы здание пребывало в статике, достаточно было бы одной-единственной картографической съемки, между тем мы только и делаем, что чертим да перечерчиваем... Как же вы отыскиваете дорогу в собственный кабинет? — удивился Джоэнис. Увы, стыдно признаться, но в данной ситуации опыт картографа мне не помощник. Я нахожу свой кабинет таким же образом, каким все здесь отыскивают свои кабинеты — руководствуясь особым чутьем, которое сродни инстинкту...» Попробуем применить схему, предложенную Р. Шекли, для защиты программного обеспечения. Взаимодействие операционной системы с пользовательской задачей должно приводить к обоюдной взаимозависимой модификации, позволяющей оптимизировать выполнение программы по памяти или по времени. Попутно взаимозависимая модификация привнесет в систему изменения, о которых ничего не будет знать компьютерный вирус или программная закладка, а их корректная работа невозможна без строгого соблюдения изложенных в документации к операционной системе правил. Таким образом, разрешив самомодификацию системы, можно получить более защищенный код. Кстати, подобный путь — это классический путь для такого направления программирования, как функциональное. А. Филд и П. Харрисон отмечают[21]: «Цель создания программы, корректной и легко понимаемой, часто вступает в конфликт с одновременно выдвигаемым требованием эффективности ее выполнения, то есть за короткое время и с использованием возможно меньшего объема памяти. Таким образом, идеально было бы получить начальное решение, концентрируясь на ясности и корректности и практически не обращая внимания на его эффективность, а затем преобразовать это решение в эффективную форму, используя манипуляции, гарантирующие сохранение смысла программы». Функциональное программирование готово предоставить для этого необходимую теоретическую базу, а именно: - трансформационную методологию Берсталла и Дарлингтона со своими сохраняющими смысл правилами порождения новых рекурсивных уравнений; - алгебраические преобразования, основанные на применении аксиом и теорем, устанавливающих равенство между выражениями.
На основании сказанного предлагается алгоритм работы резидентной программы, своего рода метапрограммы, задача которого — оптимизировать и модифицировать вычислительную среду в соответствии с таким видом оптимизации, как «запоминание», который не требует классического преобразования программ, однако может быть реализован практически на любой программно-аппаратной платформе. Метапрограмма может работать по следующему алгоритму: 1) в режиме эмуляции определить адреса вызова основных подпрограмм; 2) перенаправить вызов всех найденных подпрограмм (например, операторы CALL, INT — их легко определить в режиме эмуляции) на резидентную метапрограмму; 3) по зафиксированным вызовам подпрограмм постоянно вести мемо-таблицу вида: <адрес>, <входные значения>, <результат>, <частота вызова>; 4) при повторном вызове той или иной подпрограммы результат брать из мемо-таблицы без обращения к соответствующей подпрограмме; 5) периодически осуществлять в мемо-таблице чистку «мусора», что бы не допустить ее переполнения; 6) наиболее часто вызываемые и связанные друг с другом подпрограммы согласно мемо-таблице размещать в рамках одного сегмента памяти, изъяв их из прикладных задач и операционной системы, внеся туда соответствующие изменения; 7) все сказанное имеет отношение и к подпрограммам самой мета-программы.
Понятно, что пользователь, как правило, работает с небольшим набором программ, решая поставленные перед ним задачи, и ему будет приятно, что компьютер все быстрее и быстрее откликается на его запросы. Трансформация операционной системы может дойти до того, что в ней пропадут участки кода, ответственные за обработку ряда функций важнейших прерываний операционной системы, и переместятся в метапрограмму. Программно-аппаратная система перестанет быть универсальной, то есть перестанет соответствовать информационно-логическим протоколам взаимодействия прикладных программ с операционной системой, и превратится в защищенную систему, ориентированную на достижение только конкретных целей и способную работать лишь с конкретными прикладными пакетами. Компьютерный вирус может поразить систему тогда и только тогда, когда его разработчик понимает логику работы заражаемой системы, то есть для заражения системы первоначально необходимо изучить хотя бы документацию о правилах написания для нее программ. В случае применения метапрограммы этого сделать нельзя по причине принципиального отсутствия документации. Иногда это является преимуществом, а иногда серьезным недостатком, поскольку даже владелец программы не сможет модифицировать собственное автоматизированное рабочее место, не разрушив его при этом. В отдельных областях человеческой деятельности, где программное обеспечение обновляется редко, а основное количество фактов НСД исходит от собственных сотрудников (например, в банковской сфере), подобный подход, основанный на принципе «изменчивости» программного обеспечения, возможно, даст положительный моральный и материальный эффект. Столь же критически можно посмотреть и на остальные основополагающие принципы организации информационной безопасности. Например, всем ли компьютерным системам нужна парольная защита, эквивалентом которой в обычной социально-бытовой сфере является классический замок на дверях? Иногда вред из-за невозможности доступа к данным в силу потери пароля много превышает потери от возможного НСД. Все изложенное выше преследует цель напомнить: там, где речь идет о творческом процессе, догматические принципы, требования и нормативы никогда не являлись панацеей от всех бед. А главным принципом обеспечения «гарантированной» безопасности является принцип творческого подхода. Что же касается остальных, то эффективность их применения в первую очередь определяется конкретной ситуацией: решаемыми задачами, значимостью информации, работающими людьми и т. п. Где-то имеет смысл считать контрольные суммы, а где-то постоянно держать программное обеспечение «в тонусе перемен», где-то необходимо установить программно-аппаратные парольные системы, а где-то разрешить доступ всем, но закамуфлировать самое ценное под «пенёк в лесу» или под камень, напротив скамейки.
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|