Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
13_Курс лекций МиСЗИ.doc
Скачиваний:
66
Добавлен:
11.04.2015
Размер:
208.38 Кб
Скачать

Методы и средства защиты информации

Методы и средства защиты информации

Лекция 13

ПО и информационная безопасность

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

  1. Обзор современного ПО

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

Операционные системы

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

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

Операционная система MS-DOS является ОС реального режима микропроцессора Intel, а потому здесь не может идти речи о разделении оперативной памяти между процессами. Все резидентные программы и основная программа используют общее пространство ОЗУ. Защита файлов отсутствует, о сетевой безопасности трудно сказать что-либо определенное, поскольку на том этапе развития ПО драйверы для сетевого взаимодействия разрабатывались не фирмой MicroSoft, а сторонними разработчиками.

Семейство операционных систем Windows 95, 98, Millenium – это клоны, изначально ориентированные на работу в домашних ЭВМ. Эти операционные системы используют уровни привилегий защищенного режима, но не делают никаких дополнительных проверок и не поддерживают системы дескрипторов безопасности. В результате этого любое приложение может получить доступ ко всему объему доступной оперативной памяти как с правами чтения, так и с правами записи. Меры сетевой безопасности присутствуют, однако, их реализация не на высоте. Более того, в версии Windows 95 была допущена основательная ошибка, позволяющая удаленно буквально за несколько пакетов приводить к "зависанию" ЭВМ, что также значительно подорвало репутацию ОС, в последующих версиях было сделано много шагов по улучшению сетевой безопасности этого клона.

Поколение операционных систем Windows NT, 2000 уже значительно более надежная разработка компании MicroSoft. Они явялются действительно многопользовательскими системами, надежно защищающими файлы различных пользователей на жестком диске (правда, шифрование данных все же не производится и файлы можно без проблем прочитать, загрузившись с диска другой операционной системы – например, MS-DOS). Данные ОС активно используют возможности защищенного режима процессоров Intel, и могут надежно защитить данные и код процесса от других программ, если только он сам не захочет предоставлять к ним дополнительного доступа извне процесса.

За долгое время разработки было учтено множество различных сетевых атак и ошибок в системе безопасности. Исправления к ним выходили в виде блоков обновлений (англ. service pack). На сегодняшний день для Windows NT 4.0 самым последним является обновление "Service Pack 6", естественно все исправления, включенные в него были учтены и при разработке Windows 2000. Таким образом две эти операционные системы имеют примерно равную (и очень высокую) систему безопасности.

Другая ветвь клонов растет от операционной системы UNIX. Эта ОС изначально разрабатывалась как сетевая и многопользовательская, а потому сразу же содержала в себе средства информационной безопасности. Практически все широко распространенные клоны UNIX прошли долгий путь разработки и по мере модификации учли все открытые за это время способы атак. Достаточно себя зарекомендовали: LINUX (S.U.S.E.), OpenBSD, FreeBSD, Sun Solaris. Естественно все сказанное относится к последним версиям этих операционных систем. Основные ошибки в этих системах относятся уже не к ядру, которое работает безукоризненно, а к системным и прикладным утилитам. Наличие ошибок в них часто приводит к потере всего запаса прочности системы.

    1. Прикладные программы

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

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

Ошибки активно ищутся группами "хакеров" практически во всем более или менее распространенном ПО, однако, наибольшую известность приобретают, конечно, исследования программ, установленных почти у каждого пользователя. Так, например, в одной из недавних версий MicroSoft Internet Explorer'а была обнаружена ошибка, связанная с переполнением буфера, которая приводила к тому, что часть URL-адреса попадала на "исполнение" и трактовалась как последовательность команд процессора. При этом длины этого участка хватало, например, для того, чтобы загрузить на ЭВМ из сети троянскую программу и передать ей управление. В последующей версии ошибка была исправлена. Программа ICQ – самый популярный электронный пейджер в сети Интернет – в очередной своей версии была снабжена своими создателями возможностью поддерживать миниатюрный WWW-сервер. Однако, ошибка в его реализации позволяла при добавлении слева точек в имени первого каталога получать доступ ко всем файлам жесткого диска – открывался полный (!) сетевой доступ по чтению.

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

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

Моралью этого параграфа является правило "семь раз отмерь – один отрежь" на этапе разработки собственного программного обеспечения.

  1. Ошибки, приводящие к возможности атак на информацию

Двумя основными категориями ошибок в разработке программного обеспечения являются 1) непрогнозированное взаимодействие смежных программ, процессов, процедур и т.п. и 2) невыполнение набора соглашений, которые разработчик ПО считал "само собой разумеющимися".

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

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

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

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

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

  1. Основные положения по разработке ПО

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

Общие рекомендации по написанию устойчиво работающих алгоритмов (необходимое, но не достаточное условие их информационной безопасности):

  • не используйте экзотические и недокументированные возможности языка программирования: Вы не уверены в том, как они реализуются на самом деле

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

  • используйте скобки для явного указания порядка операций: компилятор может оптимизировать выполнение выражений и начать, скажем, сложение F(1)+F(2)+F(3) со второго знака "+", тем самым вызвав сначала функцию F от 2, затем от 3, а только затем от 1 – если в функции изменяются какие-либо глобальные переменные это может привести к непредсказумым последствиям

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

  • используйте структурное программирование: разбивайте сложные блоки кода на процедуры с ясной структурой и легко контролируемым набором параметров

  • никогда не программируйте недокументированные возможности: технология "reverse engineering" – дизассемблирование и обратная компиляция" – на сегодняшний день достигла огромных результатов, особенно в отношении высокоуровневых языков программирования

  • закрывайте файлы сразу же по окончании работы с ними, а если Вы записываете важную информацию в течение долгого времени – периодически вызывайте функции сброса файлового буфера на дисковый накопитель

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

  • блокируйте файлы и наборы данных, если Вы обращаетесь к ним по записи из нескольких параллельно работающих процессов или программ

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

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

  • при работе с внешними и сетевыми устройствами и дисками стройте циклы ожидания таким образом, чтобы из них был возможен выход по истечении определенного периода ожидания ответа – тайм-аута

  • очень тщательно разрабатывайте схему синхронизации параллельно работающих с одними и теми же данными процессов

  • тщательно проверяйте алгоритмы на синдром "мертвой петли" – это ситуация, когда процесс A, начав изменять объект 1 и заблокировав его в связи с этим, ожидает снятия блокирования с объекта 2, в то время как процесс B, в то же самое время начавший изменять объект 2 и, заблокировав его, ожидает снятия блокировки с объекта 1, – подобная проблема при такой схеме синхронизации теоретически неразрешима, единственный выход из нее – рассматривать объекты 1 и 2 как единое целое с возможностью только совместной блокировки

  • аккуратно выделяйте и очищайте объекты в динамической памяти

  • при необходимости используйте криптографию

  • никогда не передавайте пароль открытым текстом

  • используйте криптостойкие алгоритмы шифрования и хеширования

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

  • всегда проверяйте длины строк и массивов перед началом работы с ними

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

  • тщательно тестируйте Ваши приложения, в том числе на больших и неправильных входных данных

  1. Законы и стандарты в области информационной безопасности

В России принимаются меры для противодействия информационному оружию и компьютерной преступности. В Госдуме РФ действует депутатская группа "Электронная Россия", проводятся круглые столы по информационной безопасности для разработки соответствующих законов. Принят Закон РФ "О безопасности", Закон об электронной подписи и "Об информации, информатизации и защите информации", в котором определено, что информация подлежит защите так же, как материальное имущество собственника. Обеспечением безопасной передачи правительственной информации раньше занималось ФАПСИ, сейчас - ФСБ и ФСО, защитой передачи коммерческой информации - фирмы, имеющие лицензию ФСБ. Разработан Руководящий документ Гостехкомиссии РФ "Автоматизированные системы. Защита от несанкционированного доступа к информации. Классификация автоматизированных систем и требований по защите информации" и соответствующие Государственные стандарты:

  • ГОСТ 28147-89 "Системы обработки информации. Защита криптографическая. Алгоритм криптографического преобразования";

  • ГОСТ Р 34. 10 - 94 "Информационная технология. Криптографическая защита информации. Процедуры выработки и проверки электронной цифровой подписи на базе асимметричного криптографического алгоритма";

  • ГОСТ Р 34. 11 - 94 "Информационная технология. Криптографическая защита информации. Функция хэширования";

  • ГОСТ Р 50739-95 "Средства вычислительной техники. Защита от несанкционированного доступа к информации. Общие технические требования".

Аналогичные работы проведены и в других странах. В 1983 году Агентство компьютерной безопасности Министерства обороны США опубликовало отчет "Критерии оценки защищенности надежных систем (TSEC)", названный по цвету переплета "Оранжевая книга", где определены и описаны 7 уровней безопасности. На ее основе Национальный центр компьютерной безопасности МО США выпустил "Красную книгу", содержащую конкретные инструкции. Разработанный Европейским сообществом Европейский стандарт, определяю-щий критерии, требования и процедуры для создания безопасных информационных систем, называется "Критерии оценки защищенности информационных технологий ( ITSEC )" или "Белая книга".

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

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

Информация может составлять коммерческую тайну, если она отвечает следующим требованиям (критерии правовой охраны):

  • имеет действительную или потенциальную коммерческую ценность в силу ее неизвестности третьим лицам;

  • не попадает под перечень сведений, доступ к которым не может быть ограничен, и перечень сведений, отнесенных к государственной тайне;

  • к ней нет свободного доступа на законном основании;

  • обладатель информации принимает меры к охране ее конфиденциальности.

К коммерческой тайне не может быть отнесена информация:

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

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

  • содержащаяся в годовых отчетах фондов об использовании имущества;

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

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

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

  • наличии свободных рабочих мест;

  • реализации государственной программы приватизации и об условиях приватизации конкретных объектов; о размерах имущества и вложенных средствах при приватизации;

  • ликвидации юридического лица и порядке и сроке подачи заявлений или требований его кредиторами.

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

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

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

Законом установлена охрана персональных данных: о доходах, состоянии здоровья, личных характеристиках и т.д.

Руководящий документ Гостехкомисии РФ «Автоматизированные системы. Защита от несанкционированного доступа к информации. Классификация автоматизированных систем и требования по защите информации» от 1992 года.

Настоящий руководящий документ устанавливает классификацию автоматизированных систем (АС), подлежащих защите от несанкционированного доступа (НСД) к информации, и требования по защите информации в АС различных классов. Под АС в данном документе понимается ориентированная на конкретных пользователей система обработки данных. Руководящий документ разработан в дополнение ГОСТ 24.104-85. Документ может использоваться как нормативно-методический материал для заказчиков и разработчиков АС при формулировании и реализации требований по защите.

В 1992 году Гостехкомиссия России при Президенте РФ опубликовала пять Руководящих документов, посвященных вопросам защиты от несанкционированного доступа (НСД) к информации. В руководящих документах различают понятия средств вычислительной техники (СВТ) и автоматизированной системы (АС) и соответственно вводят два направления в проблеме защиты информации от НСД. Формулируются следующие основные принципы защиты информации от НСД:

  1. Защита СВТ обеспечивается комплексом программно-технических средств.

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

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

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

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

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

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

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

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

В качестве главного средства защиты от НСД рассматривается система разграничения доступа (СРД) субъектов к объектам доступа.

Руководящие документы предлагают две группы критериев безопасности:

- показатели защищенности средств вычислительной техники (СВТ) от НСД:

- критерии защищенности автоматизированных систем (АС) обработки данных.

Показатели защищенности свт от нсд.

Данные показатели содержат требования защищенности и применяются к общесистемным программным средствам и операционным системам. Установлено семь классов защищенности СВТ от НСД: самые низкие требования предъявляются к системам, соответствующим седьмому классу, самые высокие - к первому. Классы делятся на 4 группы, отличающиеся качественным уровнем защиты:

1-я группа содержит только один седьмой класс;

2-я группа характеризуется произвольной защитой и содержит 6-й и 5-й классы;

3-я группа характеризуется мандатной защитой и содержит классы 4,3,2;

4-я группа характеризуется мандатной защитой и содержит только первый класс.

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

Распределение показателей защищенности по классам свт

Наименование показателя

Класс защищенности

6

5

4

3

2

1

Дискреционный принцип контроля доступа

+

+

+

=

+

=

Мандатный принцип контроля доступа

-

-

+

=

=

=

Очистка памяти

-

+

+

+

=

=

Изоляция модулей

-

-

+

=

+

=

Маркировка документов

-

-

+

=

=

=

Защита ввода и вывода на отчужденный физический носитель

+

Сопоставление пользователя с устройством

-

-

+

=

=

=

Идентификация и аутентификация

+

=

+

=

=

=

Гарантии проектирования

-

+

+

+

+

+

Регистрация

-

+

+

+

=

=

Взаимодействие пользователя с КСЗ

-

-

-

+

=

=

Надежное восстановление

-

-

-

+

=

=

Целостность КСЗ

-

+

+

+

=

=

Контроль модификации

-

-

-

-

+

=

Контроль дистрибуции

-

-

-

-

+

=

Гарантии архитектуры

-

-

-

-

-

+

Тестирование

+

+

+

+

+

=

Руководство пользователя

+

=

=

=

=

=

Руководство по КСЗ

+

+

=

+

+

=

Текстовая документация

+

+

+

+

+

=

Конструкторская(проектная)до­кументация

+

+

+

+

+

+

Обозначения:

«-» - нет требований к данному классу

«+» - новые или дополнительные требования

«=» - требования совпадают с требованиями к СВТ предыдущего класса

КСЗ - комплекс средств защиты

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]