Конспект лекцій до дисципліни Безпека програм та даних
Вид материала | Конспект |
- Конспект лекцій з дисципліни „Радіоекологія для студентів спеціальності 040106 „Екологія,, 1393.76kb.
- Конспект лекцій Хмельницький, 2005 Снозик О. В. Безпека життєдіяльності, 909.72kb.
- Конспект лекцій Удвох частинах Частина 2 Суми, 1998.47kb.
- Конспект лекцій Удвох частинах Частина 1 Суми, 2323.63kb.
- Конспект лекцій Суми Видавництво Сумду 2010, 2423.29kb.
- Конспект лекцій з дисципліни „ Управління інноваційним розвитком" для студентів факультету, 2082.69kb.
- Конспект лекцій з дисципліни «Оподаткування підприємств», 2062.58kb.
- Конспект лекцій з дисципліни "Дослідна робота", 768.49kb.
- Конспект лекцій з дисципліни Правознавство Харків − хнамг − 2006 Міністерство освіти, 3534.27kb.
- Як конспект лекцій Дніпропетровськ Нметау 2008, 735.01kb.
МІНІСТЕРСТВО ОСВІТИ І НАУКИ, МОЛОДІ ТА СПОРТУ УКРАЇНИ
ЛУГАНСЬКИЙ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ
ІМЕНІ ТАРАСА ШЕВЧЕНКА
ІНСТИТУТ ІНФОРМАЦІЙНИХ ТЕХНОЛОГІЙ
КАФЕДРА ІНФОРМАЦІЙНИХ ТЕХНОЛОГІЙ І СИСТЕМ
КОНСПЕКТ ЛЕКЦІЙ
до дисципліни
Безпека програм та даних
Спеціальність: Програмна інженерія
2011
Лекция 1. Введение. Категории информационной безопасности. Защита программ.
От чего защищают программы
Коммерческие программы обычно защищают от несанкционированного ти-
ражирования.
Наличие доступа только к носителю информации с дистрибутивом (набором
инсталляционных файлов) программного продукта не должно давать воз-
можности установить работоспособную копию программы. То есть данных
дистрибутива, который можно скопировать или незаметно взять на несколь-
ко дней, не должно хватать для создания работоспособной копии програм-
мы. Подобные ограничения могут быть реализованы разными способами.
Например, очень многие коммерческие программы при инсталляции требу-
ют ввести серийный номер, напечатанный на коробке или указанный в од-
ном из прилагаемых к программному продукту документов (у Microsoft —
в сертификате аутентичности). |
Также часто возникает потребность ограничить число пользователей, одновре-
менно работающих с программой. То есть человек, который приобрел лицен-
зию на одно рабочее место, не должен иметь возможности создать 2 рабочих
места, функционирующих одновременно. Это достигается за счет использова-
ния аппаратных ключей, менеджеров лицензий и процедуры активации.
Для некоторых программных продуктов (в частности игр) часто использует-
ся привязка к носителю информации, например компакт-диску. То есть для
запуска игры требуется наличие в приводе оригинального компакт-диска,
который защищен от копирования стандартными средствами.
Для оценочных версий, ограниченных по времени или числу запусков, не-
обходимо правильно реализовать хранение счетчиков, чтобы злоумышлен-
ник не смог заставить работать программу, просто переведя часы или удалив
файл, в который записывается количество запусков программы или число
файлов.
Условно бесплатные продукты, в отличие от ограниченных по функ-
циональности оценочных версий коммерческих программ, после ввода
регистрационного кода должны предоставлять доступ ко всем функциям,
предусмотренным в полной версии программы. То есть в бесплатно распро-
страняемой версии программы должны быть реализованы все функции полной
версии. Следовательно, желательно так организовать защиту, чтобы зло-
умышленник не смог добраться до функций, присущих только полной
сии, пока в его распоряжении не будет правильного регистрационного
Процедуры проверки правильности серийных номеров, а также
кодов и кодов активации должны строиться таким образом, чтобы
злоумышленник не мог самостоятельно генерировать правильные коды и,
в то же время, длина кодовой строки не была очень большой.Глава 9. Актуальные задачи защиты программ 105
Также может возникнуть потребность защищать любые исполняемые файлы от
внесения изменений, дизассемблирования, исследования под отладчиком и т. д.
Категории информационной безопасности
Информация с точки зрения информационной безопасности обладает следующими категориями:
- конфиденциальность – гарантия того, что конкретная информация доступна только тому кругу лиц, для кого она предназначена; нарушение этой категории называется хищением либо раскрытием информации
- целостность – гарантия того, что информация сейчас существует в ее исходном виде, то есть при ее хранении или передаче не было произведено несанкционированных изменений; нарушение этой категории называется фальсификацией сообщения
- аутентичность – гарантия того, что источником информации является именно то лицо, которое заявлено как ее автор; нарушение этой категории также называется фальсификацией, но уже автора сообщения
- апеллируемость – довольно сложная категория, но часто применяемая в электронной коммерции – гарантия того, что при необходимости можно будет доказать, что автором сообщения является именно заявленный человек, и не может являться никто другой; отличие этой категории от предыдущей в том, что при подмене автора, кто-то другой пытается заявить, что он автор сообщения, а при нарушении апеллируемости – сам автор пытается "откреститься" от своих слов, подписанных им однажды.
В отношении информационных систем применяются иные категории :
- надежность – гарантия того, что система ведет себя в нормальном и внештатном режимах так, как запланировано
- точность – гарантия точного и полного выполнения всех команд
- контроль доступа – гарантия того, что различные группы лиц имеют различный доступ к информационным объектам, и эти ограничения доступа постоянно выполняются
- контролируемость – гарантия того, что в любой момент может быть произведена полноценная проверка любого компонента программного комплекса
- контроль идентификации – гарантия того, что клиент, подключенный в данный момент к системе, является именно тем, за кого себя выдает
- устойчивость к умышленным сбоям – гарантия того, что при умышленном внесении ошибок в пределах заранее оговоренных норм система будет вести себя так, как оговорено заранее.
Абстрактные модели защиты информации
Одной из первых моделей была опубликованная в 1977 модель Биба (Biba). Согласно ей все субъекты и объекты предварительно разделяются по нескольким уровням доступа, а затем на их взаимодействия накладываются следующие ограничения: 1) субъект не может вызывать на исполнение субъекты с более низким уровнем доступа; 2) субъект не может модифицировать объекты с более высоким уровнем доступа. Как видим, эта модель очень напоминает ограничения, введенные в защищенном режиме микропроцессоров Intel 80386+ относительно уровней привилегий.
Модель Гогена-Мезигера (Goguen-Meseguer), представленная ими в 1982 году, основана на теории автоматов. Согласно ей система может при каждом действии переходить из одного разрешенного состояния только в несколько других. Субъекты и объекты в данной модели защиты разбиваются на группы – домены, и переход системы из одного состояния в другое выполняется только в соответствии с так называемой таблицей разрешений, в которой указано какие операции может выполнять субъект, скажем, из домена C над объектом из домена D. В данной модели при переходе системы из одного разрешенного состояния в другое используются транзакции, что обеспечивает общую целостность системы.
Сазерлендская (от англ. Sutherland) модель защиты, опубликованная в 1986 году, делает акцент на взаимодействии субъектов и потоков информации. Так же как и в предыдущей модели, здесь используется машина состояний со множеством разрешенных комбинаций состояний и некоторым набором начальных позиций. В данной модели исследуется поведение множественных композиций функций перехода из одного состояния в другое.
Важную роль в теории защиты информации играет модель защиты Кларка-Вильсона (Clark-Wilson), опубликованная в 1987 году и модифицированная в 1989. Основана данная модель на повсеместном использовании транзакций и тщательном оформлении прав доступа субъектов к объектам. Но в данной модели впервые исследована защищенность третьей стороны в данной проблеме – стороны, поддерживающей всю систему безопасности. Эту роль в информационных системах обычно играет программа-супервизор. Кроме того, в модели Кларка-Вильсона транзакции впервые были построены по методу верификации, то есть идентификация субъекта производилась не только перед выполнением команды от него, но и повторно после выполнения. Это позволило снять проблему подмены автора в момент между его идентификацией и собственно командой. Модель Кларка-Вильсона считается одной из самых совершенных в отношении поддержания целостности информационных систем.
Основные положения по разработке ПО
Общие рекомендации по написанию устойчиво работающих алгоритмов (необходимое, но не достаточное условие их информационной безопасности):
- не используйте экзотические и недокументированные возможности языка программирования : Вы не уверены в том, как они реализуются на самом деле
- оформляйте исходный текст ясно и четко, используйте необходимые комментарии
- используйте скобки для явного указания порядка операций : компилятор может оптимизировать выполнение выражений и начать, скажем, сложение F(1)+F(2)+F(3) со второго знака "+", тем самым вызвав сначала функцию F от 2, затем от 3, а только затем от 1 – если в функции изменяются какие-либо глобальные переменные это может привести к непредсказумым последствиям
- при всех удобных случаях используйте передачу параметров функции в качестве аргументов, а не в глобальных переменных
- используйте структурное программирование : разбивайте сложные блоки кода на процедуры с ясной структурой и легко контролируемым набором параметров
- никогда не программируйте недокументированные возможнности : технология "reverse engineering" – дизассемблирование и обратная компиляция" – на сегодняшний день достигла огромных результатов, особенно в отношении высокоуровневых языков программирования
- закрывайте файлы сразу же по окончании работы с ними, а если Вы записываете важную информацию в течение долгого времени – периодически вызывайте функции сброса файлового буфера на дисковый накопитель
- проверяйте свободное место на диске перед записью в файл : некоторые операционные выдают ошибки при записи на переполненный диск нестандартным образом, результат этого может быть плачевным
- блокируйте файлы и наборы данных, если Вы обращаетесь к ним по записи из нескольких параллельно работающих процессов или программ
- старайтесь как можно сильнее сократить время записи в совместно используемые файлы, а, следовательно, и время их блокирования
- не будьте заранее уверенными, что программа запущена из той директории, где расположен ее исполнимый файл, – одной из первых команд после запуска программы явно смените каталог на желаемый
- при работе с внешними и сетевыми устройствами и дисками стройте циклы ожидания таким образом, чтобы из них был возможен выход по истечении определенного периода ожидания ответа – тайм-аута
- очень тщательно разрабатывайте схему синхронизации паралелльно работающих с одними и теми же данными процессов
- тщательно проверяйте алгоритмы на синдром "мертвой петли" – это ситуация, когда процесс A, начав изменять объект 1 и заблокировав его в связи с этим, ожидает снятия блокирования с объекта 2, в то время как процесс B, в то же самое время начавший изменять объект 2 и заблокировав его, ожидает снятия блокировки с объекта 1 – подобная проблема при такой схеме синхронизации теоретически неразрешима, единственный выход из нее – рассматривать объекты 1 и 2 как единое целое с возможностью только совместной блокировки
- аккуратно выделяйте и очищайте объекты в динамической памяти
- при необходимости используйте криптографию
- никогда не передавайте пароль открытым текстом
- используйте криптостойкие алгоритмы шифрования и хеширования
- вычищайте блоки оперативной памяти после того как информация (пароли, ключи, конфиденциальные данные), находившаяся в них, стала ненужной
- всегда проверяйте длины строк и массивов перед началом работы с ними
- встрайвайте в Ваши системы требование регистрации каждого оператора с уникальным паролем и записью как можно большего количества информации о сеансе в лог-файл, недоступный для изменения операторам
- тщательно тестируйте Ваши приложения, в том числе на больших и неправильных входных данных
Ошибки, приводящие к возможности атак на информацию
Двумя основными классами ошибок при разработке программного обеспечения, приводящими к потенциальной возможности проведения атак на информацию, являются интерференция данных и нарушение неявных ограничений.
Интерференция (то есть непредусмотренное взаимодействие) данных между собой и данных с кодом является менее распространеным, но более опасным синдромом, чем описываемая ниже проблема ограничений по умолчанию. Практически единственным способом вызвать наслоение данных друг на друга либо данных на код программы является попытка дойти при операции записи до границы области памяти, отведенной под данный блок информации, и преодолеть ее – то есть умышленное переполнение буфера. Естественно, что это возможно только в тех ситуациях, когда программный код не производит проверки длины записываемого значения.
Для целых и дробных чисел, значений времени и тому подобных типов данных запись производится всегда в фиксированном объеме (2 байта, 4 байта, 10 байт). А вот для строк и массивов данных проверки длины перед операциями записи необходимы. Для того, чтобы заставить ЭВМ выполнить код или записать данные туда, куда у него нет прав записи, злоумышленник специально заставляет систему обрабатывать строки очень большой длины, либо помещать в массив количество элементов большее, чем его объем. В случае успеха возможно либо попадание части строки в сегмент кода или стека с последующим исполнением, либо модификация каких-либо служебных данных, что позволит затем злоумышленнику войти в систему в обход системы защиты. Естественно, что содержимое конца строки (оказывающееся после переполнения буфера в ненадлежащей области памяти) подбирается специальным образом. Сами данные или строки можуг быть абсолютно бессмысленными.
Проблема ограничений, которые разработчик программы считает само собо разумеющимися, но которые на самом деле могут не выполняться, встречается гораздо чаще, но реже приводит к каким-либо серьезным последствиям. Чаще всего результатом обработки подобных данных становится прерывание работы программы с сообщением об ошибке или просто "зависание". То есть данный класс атак используется с целью проведения атаки "отказ в сервисе".
Спектр возможных ограничений, не продуманных на этапе разработке ПО, чрезвычайно широк. Это могут быть и отрицательное время или сумма платежа, и текстовое значение на месте ожидаемого числа, и строки, созданные целиком из управляющих символов, и, конечно же, пустые строки. Все это приводит к одному из главных правил разработки ПО : тщательно и полностью проверяйте те входные данные программы, которые поступают в нее от человека, либо передаются по каналу связи, незащищенному от модификации.
Лекция 2. Методы дублирования
Для блокирования (парирования) случайных угроз безопасности информации в компьютерных системах должен быть решен комплекс задач. Дублирование информации является одним из самых эффективных способов обеспечения целостности информации. Оно обеспечивает защиту информации как от случайных угроз, так и от преднамеренных воздействий. В зависимости от ценности информации, особенностей построения и режимов функционирования КС могут использоваться различные методы дублирования, которые классифицируются по различным признакам.
По времени восстановления информации методы дублирования могут быть разделены на:
оперативные;
неоперативные. К оперативным методам относятся методы дублирования информации, которые позволяют использовать дублирующую информацию в реальном масштабе времени. Это означает, что переход к использованию дублирующей информации осуществляется за время, которое позволяет выполнить запрос на использование информации в режиме реального времени для данной КС. Все методы, не обеспечивающие выполнения этого условия, относят к неоперативным методам дублирования. По используемым для целей дублирования средствам методы дублирования можно разделить на методы, использующие:
дополнительные внешние запоминающие устройства (блоки);
специально выделенные области памяти на несъемных машинных носителях;
съемные носители информации. По числу копий методы дублирования делятся на:
одноуровневые;
многоуровневые. Как правило, число уровней не превышает трех. По степени пространственной удаленности носителей основной и дублирующей информации методы дублирования могут быть разделены на следующие методы:
сосредоточенного дублирования;
рассредоточенного дублирования
Для определенности целесообразно считать методами сосредоточенного дублирования такие методы, для которых носители с основной и дублирующей информацией находятся в одном помещении. Все другие методы относятся к рассредоточенным.
В соответствии с процедурой дублирования различают методы:
полного копирования;
зеркального копирования;
частичного копирования;
комбинированного копирования. При полном копировании дублируются все файлы. При зеркальном копировании любые изменения основной информации сопровождаются такими же изменениями дублирующей информации. При таком дублировании основная информация и дубль всегда идентичны. Частичное копирование предполагает создание дублей определенных файлов, например, файлов пользователя. Одним из видов частичного копирования, получившим название инкрементного копирования, является метод создания дублей файлов, измененных со времени последнего копирования. Комбинированное копирование допускает комбинации, например, полного и частичного копирования с различной периодичностью их проведения. Наконец, по виду дублирующей информации методы дублирования разделяются на:
методы со сжатием информации;
методы без сжатия информации.
В качестве внешних запоминающих устройств для хранения дублирующей информации используются накопители на жестких магнитных дисках и магнитных лентах. Накопители на жестких магнитных дисках применяются обычно для оперативного дублирования информации. Наиболее простым методом дублирования данных в КС является использование выделенных областей памяти на рабочем диске. В этих областях дублируется наиболее важная системная информация. Например, таблицы каталогов и таблицы файлов дублируются таким образом, чтобы они были размещены на цилиндрах и поверхностях жесткого диска (пакета дисков), отличных от тех, на которых находятся рабочие таблицы. Такое дублирование защищает от полной потери информации при повреждении отдельных участков поверхности дисков.
Очень надежным методом оперативного дублирования является использование зеркальных дисков. Зеркальным называют жесткий магнитный диск отдельного накопителя, на котором хранится информация, полностью идентичная информации на рабочем диске. Достигается это за счет параллельного выполнения всех операций записи на оба диска. При отказе рабочего накопителя осуществляется автоматический переход на работу с зеркальным диском в режиме реального времени. Информация при этом сохраняется в полном объеме.
В компьютерных системах, к которым предъявляются высокие требования по сохранности информации (военные системы, АСУ технологическими процессами, серверы сетей, коммуникационные модули сетей и другие), как правило, используются два и более резервных диска, подключенных к отдельным контроллерам и блокам питания. Зеркальное дублирование обеспечивает надежное оперативное дублирование, но требует, как минимум, вдвое больших аппаратных затрат.
Идеология надежного и эффективного хранения информации на жестких дисках нашла свое отражение в так называемой технологии RAID (Redundant Array of Independent Disks) [42]. Эта технология реализует концепцию создания блочного устройства хранения данных с возможностями параллельного выполнения запросов и восстановления информации при отказах отдельных блоков накопителей на жестких магнитных дисках. Устройства, реализующие эту технологию, называют подсистемами RAID или дисковыми массивами RAID.
В технологии RAID выделяется 6 основных уровней: с 0-го по 5-й. С учетом различных модификаций их может быть больше. Уровни RAID определяют порядок записи на независимые диски и порядок восстановления информации. Различные уровни RAID обеспечивают различное быстродействие подсистемы и различную эффективность восстановления информации. Нулевой уровень RAID предполагает поочередное использования
сосредоточенного дублирования;
рассредоточенного дублирования
Для определенности целесообразно считать методами сосредоточенного дублирования такие методы, для которых носители с основной и дублирующей информацией находятся в одном помещении. Все другие методы относятся к рассредоточенным. В соответствии с процедурой дублирования различают ме- тоды:
полного копирования;
зеркального копирования;
частичного копирования;
комбинированного копирования.
При полном копировании дублируются все файлы. При зеркальном копировании любые изменения основной информации сопровождаются такими же изменениями дублирующей информации. При таком дублировании основная информация и дубль всегда идентичны.
Частичное копирование предполагает создание дублей определенных файлов, например, файлов пользователя. Одним из видов частичного копирования, получившим название инкрементного копирования, является метод создания дублей файлов, измененных со времени последнего копирования. Комбинированное копирование допускает комбинации, например, полного и частичного копирования с различной периодичностью их проведения. Наконец, по виду дублирующей информации методы дублирования разделяются на:
методы со сжатием информации;
методы без сжатия информации. В качестве внешних запоминающих устройств для хранения дублирующей информации используются накопители на жестких магнитных дисках и магнитных лентах. Накопители на жестких магнитных дисках применяются обычно для оперативного дублирования информации.
Наиболее простым методом дублирования данных в КС является использование выделенных областей памяти на рабочем диске. В этих областях дублируется наиболее важная системная информация. Например, таблицы каталогов и таблицы файлов дублируются таким образом, чтобы они были размещены на цилинд- рах и поверхностях жесткого диска (пакета дисков), отличных от тех, на которых находятся рабочие таблицы. Такое дублирование защищает от полной потери информации при повреждении отдельных участков поверхности дисков.
Очень надежным методом оперативного дублирования является использование зеркальных дисков. Зеркальным называют жесткий магнитный диск отдельного накопителя, на котором хранится информация, полностью идентичная информации на рабочем диске. Достигается это за счет параллельного выполнения всех операций записи на оба диска. При отказе рабочего накопителя осуществляется автоматический переход на работу с зеркальным диском в режиме реального времени. Информация при этом сохраняется в полном объеме. В компьютерных системах, к которым предъявляются высокие требования по сохранности информации (военные системы, АСУ технологическими процессами, серверы сетей, коммуникационные модули сетей и другие), как правило, используются два и более резервных диска, подключенных к отдельным контроллерам и блокам питания. Зеркальное дублирование обеспечивает надежное оперативное дублирование, но требует, как минимум, вдвое больших аппаратных затрат.
Идеология надежного и эффективного хранения информации на жестких дисках нашла свое отражение в так называемой технологии RAID (Redundant Array of Independent Disks) [42]. Эта технология реализует концепцию создания блочного устройства хранения данных с возможностями параллельного выполнения запросов и восстановления информации при отказах отдельных блоков накопителей на жестких магнитных дисках. Устройства, реализующие эту технологию, называют подсистемами RAID или дисковыми массивами RAID.
В технологии RAID выделяется 6 основных уровней: с 0-го по 5-й. С учетом различных модификаций их может быть больше. Уровни RAID определяют порядок записи на независимые диски и порядок восстановления информации. Различные уровни RAID обеспечивают различное быстродействие подсистемы и различную эффективность восстановления информации.
Наряду с этими, так сказать, традиционными местами резервного копирования информации, сейчас получили распространение онлайн сервисы, предназначенные для хранения вашей информации. Естественно, что самые популярные онлайн сервисы *blog.chlja*hsoft.net* не российские. Вот некоторые из них iDrive, IBackup, BackupOnline , XDrive , FirstBackup , Data Deposit Box. Найдется сервис и в Чехии. Именно ссылка скрыта не уменьшается, не зависимо от происходящих кризисов.
Онлайн сервисы предоставляют место для хранения информации, полученной в процессе резервного копирования на платных и бесплатных условиях. *blog.ch*lja*hsoft.net Обычно, бесплатно предоставляется ограниченный объем от 1Гб до 5Гб.
Сервис для хранения паролей
ссылка скрыта