370 likes | 666 Views
Системное программное обеспечение Лекция 1 4. Информационная безопасность. преподаватель кафедры ТМСИ Губин Максим Владимирович. Введение.
E N D
Системное программное обеспечениеЛекция 14 Информационная безопасность преподаватель кафедры ТМСИ Губин Максим Владимирович
Введение • В октябре 1988 г. в США произошло крупнейшее нарушение безопасности амеpиканскихкомпьютеpных систем. 23-летний студент выпускного куpсаКоpнельскогоунивеpситетаТ. Моppис запустил в компьютеpную сеть ARPANET сетевого чеpвя. • В результате атаки был полностью или частично заблокиpованpяд общенациональных компьютеpных сетей: Internet, CSnet, NSFnet, BITnet, ARPANET и несекретная военная сеть Milnet. • Вирус поразил более 6200 компьютерных систем по всей Амеpике. • Общий ущерб оценивается в 100 млн. долл. • Р. Моppис был исключен из унивеpситета, наложен штpаф270 тыс. долл. и тpем месяцам тюpемного заключения.
Проблема безопасности • Безопасность (security) – это защита от внешних атак. • В настоящее время наблюдается значительный рост числа самых разнообразных атак. • Для защиты от атак необходимы специальные меры безопасности, компьютерные технологии и инструменты. • Подсистема безопасности предполагает наличие механизмов по предотвращению: • Несанкционированного доступа, • Злонамеренной модификации или разрушения, • Случайного ввода неверной информации. • Практика показывает, что легче защитить от случайной, чем от злонамеренной порчи информации.
Аутентификация • Аутентификация (authentication) – идентификация пользователей при входе в систему. • Реализуется через логины и пароли . • Основные принципы использования паролей: • Частая смена паролей (например, не реже. чем раз в три месяца). • Использование "не угадываемых" паролей (используются автоматические генераторы). • Сохранение всех неверных попыток доступа (дается фиксированное число попыток, например, три). • Пароли также могут быть закриптованыили разрешены для доступа лишь один раз, после чего от пользователя требуется смена пароля.
Программные угрозы (атаки) • Троянская программа (TrojanHorse) – атакующая программа, которая "подделывается" под некоторую полезную программу, но при своем запуске злонамеренно использует свое окружение, например, получает и использует конфиденциальную информацию. • Вход в ловушку (TrapDoor) - использование логина и пароля, который позволяет избежать проверок, связанных с безопасностью. • Переполнение стека и буфера (StackandBufferOverflow) - использование ошибки в программе (переполнение стека или буферов в памяти) для обращения к памяти другого пользователя или процесса с целью нарушения ее целостности.
Системные угрозы (атаки) • Черви (Worms) – используют механизмы самовоспроизведения (размножения); отдельные программы • Internet - червь • Использует сетевые возможности UNIX (удаленный доступ) и ошибки в программах finger иsendmail. • Постоянно используемая в сети программа распространяет главную программу червя. • Вирусы – фрагменты кода, встраивающиеся в обычные программы. • В основном действуют на микрокомпьютерные системы. • Вирусы скачиваются из публично доступных BBS или с дискет, содержащих “инфекцию”. • Соблюдайте принципы безопасности при использовании компьютеров (Safe computing) – антивирусы, guards – программы, постоянно находящиеся в памяти и проверяющие на вирусы каждый открываемый файл - .exe, doc, и т.д. • Отказ в обслуживании (Denial of Service – DoS) • Создание искусственной перегрузки сервера с целью препятствовать его нормальной работе (например, искусственно сгенерировать миллион запросов “GET” для Web-сервера).
Типы сетевых атак • Phishing – попытка украсть конфиденциальную информацию пользователя путем ее обманного получения от самого пользователя. • Например, напугав в своем сообщении пользователя, что его логин и пароль, кредитная карта или банковский счет под угрозой, хакер пытается добиться от пользователя в ответ ввода и отправки некоторой конфиденциальной информации. • Pharming – перенаправление пользователя на злонамеренный Web-сайт (обычно с целью phishing). • В современные web-браузеры встроены программы антифишингового контроля, которые запускаются автоматически при обращении к сайту. Хотя это отнимает у пользователя некоторое время, подобные меры помогают предотвратить многие атаки. • Tamperingwithdata – злонамеренное искажение или порча данных. Действенной мерой по борьбе с подобными атаками является криптованиеинформации. • Spoofing – "подделка" под определенного пользователя. Логин и пароль при этом либо получены от пользователя обманным путем (например, в результате phishing), либо извлечены из "взломанного" хакерской программой системного файла. • Elevationofprivilege– попытка расширить полномочия (например, до полномочий системного администратора).
Trustworthy Computing (TWC) Initiative • Объявлена в 2002 г. (email Билла Гейтса) • Основные принципы: • Безопасность , Сохранение конфиденциальности информации , Надежность , Оперативность, законность и корректность бизнеса • Microsoft полностью реорганизовала бизнес-процессы разработки программного обеспечения • Принципы TWC воплощены во всех новых версиях продуктов Microsoft: Internet Explorer 7 и 8, WindowsVista и др. • Кроме аспектов IT, очень важны социальные аспекты и “человеческий фактор” (в частности, корректность бизнеса)
Схема жизненного цикла для разработки безопасных программ Разработана компанией Microsoft, носит название Security Development Life Cycle (SDLC). Основная идея SDLC – учитывать требования безопасности в течение всего жизненного цикла разработки программ, начиная с самых ранних этапов.
Основные принципы разработки безопасного программного обеспечения • SecureinDesign – применение принципов безопасного проектирования; учет возможных атак; реализация способов их отражения; • SecurebyDefault – включение установок безопасности по умолчанию; • SecureinDeployment – безопасное развертывание и инсталляция программного обеспечения; • Communication – постоянное взаимодействие группы сопровождения продукта с пользователями, быстрый выпуск новых версий продукта с исправленными ошибками безопасности; рекомендации по настройке безопасности.
Классификация угроз и атак • Spoofing– "подделка" под определенного пользователя; например, воспроизведение транзакции, выполняющей аутентификацию пользователя. • Tampering– несанкционированное изменение данных с целью атаки; например, модификация аутентификационных файлов с целью добавления нового пользователя. • Repudiation– отсутствие фиксации в системных журналах действий, которые могут привести к нарушению безопасности. В операционной системе драйвер может быть подвержен repudiation-угрозе, если он не выполняет журналирование (logging) действий. • Informationdisclosure– несанкционированный доступ к конфиденциальной информации; например: Получение списка номеров кредитных карт клиентов банка. • Denialofservice – отказ в обслуживании; например: сознательное достижение эффекта излишней загрузки процессора, используя недостатки хеш-алгоритма. • Elevationofprivilege – увеличение привилегий (несанкционированное присваивание прав системного администратора). Пример: запуск привилегированной программы для выполнения команд.
Оценка атак на программное обеспечение • Ущерб, нанесенный атакой. • Воспроизводимость атаки: как часто она происходит и может ли быть воспроизведена (смоделирована). • здесь: квалификация (уровень); опыт и квалификация (хакера), необходимые для атаки. • Против каких пользователей направлена атака. • Может ли атака быть обнаружена.
Борьба с атаками • Проверка на подозрительные примеры активности – например, несколько подряд попыток ввести неверный пароль могут означать попытку его угадать. • Ведение журнала аудита (auditlog) – в него записывается время, пользователь и тип каждой попытки доступа к объекту. Журнал используется для восстановления при нарушении защиты и для выработки более действенных мер безопасности. • Периодическое сканирование системы на предмет "дыр" в системе безопасности. Выполняется в моменты, когда компьютер практически не используется (пример - сканирование на вирусы).
Проверки на: • Короткие или простые для угадывания пароли • Несанкционированные программы, устанавливающие другие имена пользователей • Несанкционированные программы в системных директориях • Неожиданно долгие по времени процессы • Неверную защиту директорий • Неверную защиту системных файлов данных • Опасные элементы в путях для поиска программ (ведущие к троянским программам) • Изменения в системных программах: проверки контрольных сумм.
Брандмауэр • Брандмауэр (firewall) – системное программное обеспечение для защиты локальной сети от внешних атак. • Брандмауэр помещается между "доверенными" и "не доверенными" компьютерами, ограничивает сетевой доступ между двумя различными доменами безопасности. • Встроенный брандмауэр имеется во всех современных операционных системах и по умолчанию включен. • Настоятельно рекомендуется не отключать его, что особенно существенно при выходе в Интернет.
Обнаружение попыток взлома • Основной из мер безопасности является обнаружение попыток входа в компьютерные системы. • Методы обнаружения: • Аудит и ведение журнала; • Использование tripwire- программ для UNIX, которые проверяют, не изменялись ли некоторые файлы и директории, например, файлы, содержащие пароли; • Слежение за системными вызовами.
Криптография • Криптография – это преобразование понятного текста в зашифрованный текст. Широко используются для защиты конфиденциальной информации. • Свойства хороших методов криптования: • Относительно простой для авторизованных пользователей способ криптования и декриптования данных. • Схема криптования должна зависеть не от секретного алгоритма, а от секретного параметра алгоритма, называемого ключом криптования(encryptionkey). • Для несанкционированного пользователя должно быть крайне сложно определить ключ.
Криптование с открытом ключом • Криптование на основе открытого ключа –широко распространенный метод криптографии, основан на принципе, при котором пользователю известны два ключа: • publickey – открытый ключ для криптования данных. • privatekey – закрытый ключ, известный только пользователю и применяемый им для декриптования данных. • Метод открытого ключа воплощает еще одно важное требование к методам криптографии: • метод должен быть основан на схеме криптования, которая публично доступна, но это не будет облегчать разгадывание схемы декриптования.
SSL - шифрование • В Web-технологиях используется SSL (SecureSocketLayer) - семейство криптографических протоколов, предназначенное для обмена криптованными сообщениями через сокет. • SSL используется для защищенного взаимодействия между Web-серверами и браузерами (например, ввода номеров кредитных карт). • При обращении клиента к серверу последний проверяется с помощью сертификата. • Взаимодействие между компьютерами использует криптографию на основе симметричного ключа.
Уровни безопасности компьютеров • Министерство обороны США классифицирует безопасность компьютеров по уровням: A, B, C, D. • Уровень безопасности D соответствует минимальному уровню безопасности. • На уровене безопасности C обеспечиваются периодические проверки компьютера с помощью аудита. Уровень С подразделяется на уровни C1 и C2. Уровень C1 обозначает взаимодействие пользователей с одинаковым уровнем безопасности. Уровень C2 допускает управление доступом на уровне пользователей. • Уровень безопасности B имеет все свойства уровня C, однако каждый объект может иметь уникальные метки чувствительности (sensitivitylabels). Подразделяется на уровни B1, B2, B3. • На уровне безопасности A используются формальные методы спецификации и проектирования для обеспечения безопасности.
Алгоритм шифрования RSA • RSA – криптографический алгоритм с открытым ключом. • Криптографические системы с открытым ключом используют необратимые функции, которые обладают следующим свойством: • Если известно x, то f(x) вычислить относительно просто • Если известно y=f(x), то для вычисления x нет простого (эффективного) пути. • В основу криптографической системы с открытым ключом RSA положена задача умножения и разложения составных чисел на простые сомножители, которая является вычислительно однонаправленной задачей.
В криптографической системе с открытым ключом каждый участник располагает как открытым ключом, так и закрытым ключом. • Каждый ключ — это часть информации. В криптографической системе RSA каждый ключ состоит из пары целых чисел. • Каждый участник создаёт свой открытый и закрытый ключ самостоятельно. Закрытый ключ каждый из них держит в секрете, а открытые ключи можно сообщать кому угодно или даже публиковать их.
Алгоритм создания открытого и секретного ключей
Примечание к алгоритму • Вычислим (e*d) mod ((p-1)*(q-1)) = 1. • Результат операции i mod j остаток от целочисленного деления i на j, то есть, если имеем (d*3) mod 20 = 1, то d будет, например, 7 или 27. • Число d называется секретной экспонентой. • Пара P = (e,n) публикуется в качестве открытого ключа RSA . • Пара S = (d,n) играет роль секретного ключа RSAи держится в секрете.
Пример • Шифруем сообщение АБС (123) • 1. Выбираем p=3 и q=112. Определяем n=pq=333. Определяем φ(n)=(p-1)(q-1)=204. Определяем d и c (d*c) mod(20)=1,т.е. d=3 и e=7
Объект и субъект безопасности • Субъект безопасности – активная системная составляющая. • Объект безопасности – пассивная системная составляющая. • Пример субъектов: пользователи и группы пользователей. • Пример объектов: файлы, системные таблицы, принтер.
Домен безопасности • Домен определяет набор объектов и типов операций, которые могут производиться над каждым объектом. Возможность выполнять операции над объектом есть права доступа, каждое из которых есть упорядоченная пара<object-name, rights-set>.
Списки прав доступа • Каждая колонка в матрице может быть реализована как список доступа для одного объекта. • Для каждого объекта имеем список упорядоченных пар <domain, rights-set>, который определяет все домены с непустыми наборами прав для данного объекта. • Элементами списка могут быть процессы, пользователи или группы пользователей. • При реализации широко применяется предоставление доступа по умолчанию для пользователей, права которых не указаны.
Схема lock-key • Каждый объект имеет список уникальных битовых шаблонов (patterns), называемых locks. Каждый домен имеет список уникальных битовых шаблонов, называемых ключами (keys). • Процесс, выполняющийся в домене, может получить доступ к объекту, только если домен имеет ключ, который соответствует одному из шаблонов объекта. • Схема lock-key является компромиссом между списками прав доступа и перечнями возможностей.
Идентификатор безопасности SID • SID пользователя (и группы) является уникальным внутренним идентификатором и представляют собой структуру переменной длины с коротким заголовком, за которым следует длинное случайное число. • Это числовое значение формируется из ряда параметров, причем утверждается, что вероятность появления двух одинаковых SID равна нулю. • Если удалить пользователя в системе, а затем создать его под тем же именем, то SID вновь созданного пользователя будет уже другим. • Пример: > whoami /user /sid
Объекты и дескриптор защиты • С каждым объектом связан дескриптор защиты (securitydescriptor). • Связь объекта с дескриптором происходит в момент создания объекта. • Дескриптор защиты содержит SID владельца объекта, SID групп для данного объекта и два указателя на списки DACL (Discretionary ACL) и SACL (System ACL) контроля доступа. • DACL и SACL содержат разрешающие и запрещающие доступ списки пользователей и групп, а также списки пользователей, чьи попытки доступа к данному объекту подлежат аудиту. • Структура каждого ACL списка – это набор записей ACE (AccessControlEntry), каждая запись содержит SID и перечень прав, предоставленных субъекту с этим SID.
Проверка прав доступа • Если SID субъекта совпадает с SID владельца объекта и запрашиваются стандартные права доступа, то доступ предоставляется независимо от содержимого DACL. • Система последовательно сравнивает SID каждого ACE из DACL с SID маркера. • Если обнаруживается соответствие, выполняется сравнение маски доступа с проверяемыми правами. • Для запрещающих ACE даже при частичном совпадении прав доступ немедленно отклоняется. • Для успешной проверки разрешающих элементов необходимо совпадение всех прав.
Аудит системы защиты • Даже самая лучшая система защиты рано или поздно будет взломана. • Обнаружение попыток вторжения является важнейшей задачей системы защиты, поскольку ее решение позволяет минимизировать ущерб от взлома и собирать информацию о методах вторжения. • Аудит – регистрация специальных данных о различных типах событий, происходящих в системе, которые влияют на состояние безопасности системы.
События для аудита • вход или выход из системы; • операции с файлами (открыть, закрыть, переименовать, удалить); • обращение к удаленной системе; • смена привилегий или иных атрибутов безопасности (режима доступа, уровня благонадежности пользователя и т. п.). • Если фиксировать все события, объем регистрационной информации будет расти слишком быстро, а ее эффективный анализ станет невозможным.