Часть VII. Проблемы безопасности операционных систем.
"По-настоящему безопасной можно считать лишь систему, которая выключена, замурована в бетонный корпус, заперта в помещении со свинцовыми стенами и охраняется вооруженным караулом, - но и в этом случае сомнения не оставляют меня."
Юджин Х. Спаффоpд
Глава 15. Основные понятия информационной безопасности.
Предыдущая глава | Программа курса | Следующая глава
В октябре 1988 г. в США произошло событие, названное специалистами крупнейшим нарушением безопасности амеpиканских компьютеpных систем из когда-либо случавшихся. 23-летний студент выпускного куpса Коpнеллского унивеpситета Робеpт Таппан Моppис запустил в компьютеpной сети ARPANET пpогpамму; пpедставлявшую собой pедко встpечающуюся pазновидность компьютеpных виpусов - сетевых чеpвей. В pезультате атаки был полностью или частично заблокиpован pяд общенациональных компьютеpных сетей, в частности Internet, CSnet, NSFnet, BITnet, ARPANET и несекpетная военная сеть Milnet. В итоге виpус поpазил более 6200 компьютеpных систем по всей Амеpике, включая системы многих кpупнейших унивеpситетов, институтов, пpавительственных лабоpатоpий, частных фиpм, военных баз, клиник, агентства NASA. Общий ущеpб от этой атаки оценивается специалистами минимум в 100 миллионов доллаpов. Р. Моppис был исключен из унивеpситета с пpавом повтоpного поступления чеpез год, и пpиговоpен судом к штpафу в 270 тыс.долл. и тpем месяцам тюpемного заключения.
Важность решения проблемы информационной безопасности в настоящее время общепризнанна, свидетельством чему служат громкие процессы о нарушении целостности систем. Убытки ведущих компаний США в связи с нарушениями безопасности информации в период с 1997 по 1999 годы составили $360'720'555. Причем только 31% опрошенных компаний смог определить количественно размер потерь. Проблема обеспечения безопасности носит комплексный характер, для ее решения необходимо сочетание законодательных, организационных и программно-технических мер.
Таким образом, обеспечение информационной безопасности требует системного подхода и нужно использовать разные средства и приемы морально-этические, законодательные, административные и технические. Нас будут интересовать последние. Технические средства реализуются программным и аппаратным обеспечением и решают разные задачи по защите и могут быть встроены в операционные системы, либо могут быть реализованы в виде отдельных продуктов. Во многих случаях центр тяжести смещается в сторону защищенности операционных систем.
Говоря об информационной безопасности, иногда различают два термина protection и security. Термин security используется для рассмотрения проблемы в целом, а protection для рассмотрения специфичных механизмов ОС сохраняющих информацию в компьютере. Граница здесь не отчетлива.
Есть несколько причин для реализации защиты. Hаиболее очевидная - помешать внешним вредным попыткам нарушить доступ к конфоденциальной информации. Не менее важно, однако, гарантировать, что каждый программный компонент в системе использует системные ресурсы только способом, совместимым с установленной политикой использования этих ресурсов. Эти требования абсолютно необходимы для надежной системы.
Наличие защитных механизмов может увеличить надежность системы в целом за счет обнаружения скрытых ошибок интерфейса между компонентами системы. Ранее обнаружение ошибок может предотвратить влияние неисправной подсистемы на здоровую.
Политика в отношении ресурсов может меняться в зависимости от приложения и во времени. По этой причине защита не может быть исключительно предметом дизайна ОС. Она также должна давать инструменты прикладным программистам для создания и поддержки защищенных ресурсов. Важный принцип - отделение политики от механизмов. Механизмы определяют то, как что-то может быть сделано, тогда, как политика решает, что должно быть сделано. Отделение политики от механизмов важно для гибкости системы. Политика может меняться в зависимости от места и времени. Желательно по возможности наличие общих механизмов, тогда как изменение политики требует лишь модификации системных параметров или таблиц.
Введем еще несколько понятий (см. также [30]).
Безопасная система обладает свойствами конфиденциальности, доступности и целостности.
Конфиденциальность(confidentiality) уверенность в том, что секретные данные будут доступны только тем пользователям, которым этот доступ разрешен (такие пользователи называются авторизованными).
Доступность (availability) гарантия того, что авторизованные пользователи всегда получат доступ к данным.
Целостность (integrity) уверенность в том, что данные сохраняют правильные значения. Это требует средств проверки целостности и обеспечивается запретом для неавторизованных пользователей, каким либо образом модифицировать данные.
Любое действие, которое направлено на нарушение конфиденциальности, целостности и доступности информации называется угрозой. Реализованная угроза называется атакой.
Знание возможных угроз, а также уязвимых мест защиты, которые эти угрозы обычно эксплуатируют, необходимо для того, чтобы выбирать наиболее экономичные средства обеспечения безопасности.
Общей классификации угроз не существует. Имеет смысл различать неумышленные и умышленные угрозы.
Неумышленные угрозы связаны с:
Ошибками оборудования или матобеспечения: сбои процессора, питания, нечитаемые дискеты, ошибки в коммуникациях, ошибки в программах.
Ошибками человека: некорректный ввод, неправильная монтировка дисков или лент, запуск неправильных программ, потеря дисков или лент.
Форс-мажорными обстоятельствами
Умышленные угрозы, в отличие от случайных, преследуют цель нанесения ущерба пользователям ОС и, в свою очередь, подразделяются на активные и пассивные. Пассивная угроза - несанкционированный доступ к информации без изменения состояния системы, активная - несанкционированное изменение системы. Можно выделить следующие типы угроз [30] :
Типизация угроз не слишком строгая.
А.Таненбаум [12] приводит свой список наиболее успешных атак на ОС:
Много говорят и пишут и о программных вирусах, червях, троянских конях. В этой связи обратим внимание на следующий факт, несмотря на экспоненциальный рост числа известных вирусов, аналогичного роста количества инцидентов, вызванных вирусами, не зарегистрировано. Соблюдение несложных правил компьютерной гигиены сводит риск заражения практически к нулю. Многопользовательские компьютеры меньше страдают от вирусов по сравнению с персональными компьютерами, поскольку там имеются системные средства защиты. Мы не будем останавливаться на уточнении понятий "зловредный код", "вирус", "червь", "Троянский конь", бомба (см., например, [15]).
Таковы основные угрозы, на долю которых приходится львиная доля урона, наносимого информационным системам.
15.3 Формализация подхода к обеспечению информационной безопасности. Классы безопасности
Существует ряд основополагающих документов, в которых регламентированы основные подходы к проблеме информационной безопасности:
оранжевая (по цвету обложки) книга МО США [2]
гармонизированные критерии европейских стран [3]
руководящие документы Гостехкомиссии при Президенте РФ [17-21]
рекомендации X.800 по защите распределенных систем [7]
федеральный закон Об информации, информатизации и защите информации.
и др.
Основополагающие документы открыли путь к ранжированию информационных систем по степени надежности. Так, в Оранжевой книге определяется четыре уровня безопасности - D , С , В и А. По мере перехода от уровня D до А к надежности систем предъявляются все более жесткие требования. Уровни С и В подразделяются на классы (C1, С2, В1, В2, ВЗ). Чтобы система в результате процедуры сертификации могла быть отнесена к некоторому классу, ее политика безопасности и гарантированность должны удовлетворять оговоренным требованиям.
В качестве примера рассмотрим требования класса C2, которому удовлетворяют некоторые популярные ОС (Windows NT, отдельные реализации Unix и др.):
Каждый пользователь должен быть идентифицирован уникальным входным именем и паролем для входа в систему. Система должна быть в состоянии использовать эти уникальные идентификаторы, чтобы следить за действиями пользователя.
Операционная система должна защищать объекты от повторного использования.
Владелец ресурса (например, такого как файл) должен иметь возможность контролировать доступ к этому ресурсу.
Системный администратор должен иметь возможность учета всех событий, относящихся к безопасности.
Система должна защищать себя от внешнего влияния или навязывания, такого как модификация загруженной системы или системных файлов, хранимых на диске.
Основополагающие документы содержат определения многих ключевых понятий связанных с информационной безопасностью. Так, например, важность и сложность проблемы обеспечения безопасности требует выработки политики информационной безопасности, которая подразумевает ответы на следующие вопросы [29]:
В дальнейшем мы будем оперировать понятиями субъект и объект безопасности. Субъект безопасности - активная, а объект - пассивная системные составляющие, к которым применяется политика безопасности. Примерами субъектов могут служить пользователи и группы пользователей, а объектов - файлы, системные таблицы, принтер и т.п. Политика безопасности состоит в присвоении субъектам и объектам идентификаторов и фиксации набора правил, используемых для определения, имеет ли данный субъект авторизацию, достаточную для получения к данному объекту данного типа доступа.
Формируя политику безопасности необходимо учитывать несколько базовых принципов. Так, Saltzer и Schroeder (1975) на основе своего опыта работы с MULTICS сформулировали следующие принципы разработки ОС:
Проектирование системы должно быть открытым. Hарушитель и так все знает. (криптографические алгоритмы открыты)
Не должно быть доступа по умолчанию. Ошибки с отклонением легитимного доступа могут быть выявлены скорее, чем ошибки, там, где разрешен неавторизованный доступ
В третьих. Тщательно проверять текущее авторство. Так, многие системе проверяют привилегии доступа при открытии файла и не делают этого после. В результате пользователь может открыть файл и держать его открытым в течение недели и иметь к нему доступ, хотя владелец уже сменил защиту.
Давать каждому процессу минимум возможных привилегий. ...
Защитные механизмы должны быть просты, постоянны и встроены в нижний слой системы, это не аддитивные добавки. (Известно много неудачных попыток улучшения защиты слабо приспособленной для этого ОС MS-DOS).
Физиологическая приемлемость. Если пользователь видит, что защита требует слишком много усилий, он от нее откажется.
Можно добавить еще ряд, например [30]:
Приведенные соображения показывают необходимость продумывания и встраивания защитных механизмов на ранних стадиях проектирования системы.
15.5 Криптография, как одна из базовых технологий безопасности ОС.
Многие службы информационной безопасности, такие как контроль входа в систему, разграничение доступа к ресурсам, обеспечение безопасного хранения данных и ряд других опираются на использование криптографических алгоритмов. Имеется обширная литература по этому актуальному для безопасности информационных систем вопросу.
Шифрование процесс изменения цифрового сообщения из открытого текста (plaintext) в шифротекст (ciphertext) таким образом, чтобы его могли прочитать только те стороны, для которых он предназначен, либо для проверки подлинности отправителя (аутентификация), либо для гарантии того, что отправитель действительно послал данное сообщение.
В алгоритмах шифрования предусматривается наличие секретного ключа и принято правило Кирхгофа: Стойкость шифра должна определяться только секретностью ключа.
В методе шифрования с секретным или симметричным ключом имеется один ключ, который используется как для шифрования, так и для расшифровки сообщения. Такой ключ нужно хранить в секрете. Это затрудняет использование системы шифрования, поскольку ключи должны регулярно меняться, для чего требуется их секретное распространение. Наиболее популярные алгоритмы шифрования с секретным ключом: DES, TripleDES, ГОСТ и др.
Часто используется также шифрование с помощью односторонней функции, называемой также хэш или дайджест функцией. Применение этой функции к шифруемым данным позволяет сформировать небольшой дайджест из нескольких байт, по которому невозможно восстановить исходный текст. Получатель сообщения может проверить целостность данных, сравнивая полученный вместе с сообщением дайджест с вычисленным вновь, при помощи той же односторонней функции. Эта техника активно используется для контроля входа в систему. Например, пароли пользователей хранятся на диске в зашифрованном односторонней функцией виде. Наиболее популярные хэш-функции: MD4, MD5 и др.
В системах шифрования с открытым или асимметричным ключом (public/ assymmetric key) используется два ключа. Один из ключей, называемый открытым, несекретным используется для шифрования сообщений, которые могут быть расшифрованы только с помощью секретного ключа, имеющегося у получателя, для которого предназначено сообщение. Либо для шифрования сообщения может использоваться секретный ключ и если сообщение можно расшифровать с помощью открытого ключа, то подлинность отправителя будет гарантирована (система электронной подписи). Этот принцип изобретен Уитфилдом Диффи (Whitfield Diffie) и Мартином Хеллманом (Martin Hellman) в 1976 г.
Рис. 15.1 Шифрование открытым ключом
Использование открытых ключей снимает проблему обмена и хранения ключей, свойственную системам с симметричными ключами. Открытые ключи могут храниться публично, и каждый может послать зашифрованное открытым ключом сообщение владельцу ключа. Тогда как расшифровать это сообщение может только владелец открытого ключа, и никто другой, при помощи своего секретного ключа. Однако алгоритмы с симметричным ключом более эффективны, поэтому во многих криптографических системах используются оба метода.
Среди несимметричных алгоритмов наиболее известен RSA, предложенный Роном Ривестом (Ron Rivest), Ади Шамиром (Adi Shamir) и Леонардом Эдлманом (Leonard Adleman). Рассмотрим его более подробно.
Шифрование с использованием алгоритма RSA
Задача, положенная в основу метода состоит в том, чтобы найти такую функцию y=f(x), чтобы получение обратной функции x=f-1(y) , было бы в общем случае очень сложной задачей (NP-полной задачей), однако, если знать некую секретную информацию, то сделать это существенно проще. Такие функции также называют односторонними функциями с лазейкой или потайным ходом. Например, получить произведение двух чисел n=p*q просто, а разложить n на множители, если p и q достаточно большие простые числа, сложно.
Первым шагом в использовании алгоритма RSA является генерация ключей. Для этого нужно:
Выбрать два очень больших простых числа p и q.
Вычислить произведение n= p*q.
Выбрать большое случайное число d, не имеющее общих сомножителей с числом (p-1)*(q-1).
Определить число e, чтобы выполнялось (e*d) mod ((p-1)*(q-1))=1.
Тогда открытым ключом будут числа e и n, а секретным ключом - числа d и n.
Теперь, чтобы зашифровать данные по известному ключу {e,n}, необходимо сделать следующее:
Разбить шифруемый текст на блоки, где i-й блок может быть представлен в виде числа m(i)=0,1,2..., n-1. Их должно быть не более n-1.
Зашифровать текст, рассматриваемый как последовательность чисел m(i) по формуле c(i)=(m(i)e)mod n.
Чтобы расшифровать эти данные, используя секретный ключ {d,n}, необходимо вычислить: m(i) = (c(i)d) mod n. В результате будет получено множество чисел m(i), которые представляют собой часть исходного текста.
Например, зашифруем и расшифруем сообщение AБВ, которое представим, как последовательность чисел 123 (в диапазоне 0-32)
Выбираем p=5 и q=11 (числа на самом деле должны быть большими).
Находим n=5*11=55
Определяем (p-1)*(q-1) = 40. Тогда d будет равно, например 7.
Выберем e, исходя из (e*7) mod 40=1. Например, e=3.
Теперь зашифруем сообщение, используя открытый ключ {3,55}
C1 = (13)mod 55 = 1
C2 = (23)mod 55 = 8
C3 = (33)mod 55 = 27
Теперь расшифруем эти данные, используя закрытый ключ {7,55}.
M1 = (17)mod 55 = 1
M2 = (87)mod 55 = 2097152mod 55 = 2
M3 = (277)mod 55 = 10460353203 mod 55 = 3
Таким образом, все, данные расшифрованы.
Итак, мы выяснили, что современная криптография включает в себя следующие крупные разделы:
Симметричные криптосистемы.
Криптосистемы с открытым ключом.
Системы электронной подписи.
Управление ключами,
а основные направления использования криптографических методов - передача конфиденциальной информации по каналам связи (например, электронная почта), установление подлинности передаваемых сообщений, хранение информации (документов, баз данных) на носителях в зашифрованном виде.