Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МУ_ЛР_БОС.doc
Скачиваний:
112
Добавлен:
08.05.2019
Размер:
1.15 Mб
Скачать

5. Оформление отчета

Отчет должен содержать:

  1. название и цель работы;

  2. вариант задания;

  3. краткие теоретические положения и алгоритм работы программы

  4. результаты работы созданного программного обеспечения;

  5. листинг программы, реализующей задание.

6 Контрольные вопросы

6.1. Каким образом может быть порожден новый процесс? Какова структура нового процесса?

6.2. Если процесс-предок открывает файл, а затем порождает процесс-потомок, а тот, в свою очередь, изменяет положение указателя чтения-записи файла, то изменится ли положение указателя чтения-записи файла процесса-отца?

6.3. Что произойдет, если процесс-потомок завершится раньше, чем процесс-предок осуществит системный вызов wait()?

6.4. Могут ли родственные процессы разделять общую память?

6.5. Каков алгоритм системного вызова fork()?

6.6. Какова структура таблиц открытых файлов, файлов и описателей файлов после создания процесса?

6.7. Каков алгоритм системного вызова exit()?

6.8. Каков алгоритм системного вызова wait()?

6.9. В чем разница между различными формами системных вызовов типа exec()?

6.10. Для чего используются сигналы в ОС UNIX?

6.11. Какие виды сигналов существуют в ОС UNIX?

6.12. Для чего используются каналы?

6.13. Какие требования предъявляются к процессам, чтобы они могли осуществлять обмен данными посредством каналов?

6.14. Каков максимальный размер программного канала и почему?

7. Библиографический список

1. Забродин Л.Д. UNIX. Введение в командный интерфейс. – М.: ДИАЛОГ-МИФИ, 1994. – 144 с.

2. Дансмур М., Дейвис Г. Операционная система UNIX и программирование на языке Си: Пер. с англ. – М.: Радио и связь, 1989. – 192 с.

3. Керниган Б.В., Пайк Р. UNIX – универсальная среда программирования: Пер. с англ. – М.: Финансы и статистика, 1992. – 304 с.

4. Робачевский А.М. Операционная система UNIX. – СПб.: BHV – Санкт-Петербург, 1997. – 528 с.

5. Т.Чан Системное программирование на C++ для UNIX. /Пер. с англ. -К.: Издательская группа BHV, 1997. - 592 с.

Лабораторная работа № 6. Базовые технологии безопасности операционных систем

1. Цель работы

Изучение принципов построения подсистем безопасности и защиты в операционных системах. Рассмотрение их составных частей и принципов взаимодействия. Изучение методов контроля целостности, идентификации и аутентификации на основе процедур хэширования. Изучение назначения и принципа работы электронной цифровой подписи (ЭЦП) и электронной сертификации.

2. Теоретические сведения

I. Хэш-функции

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

Рис. 1. Контроль целостности через хэширование

Во многих базовых технологиях безопасности используется — шифрование с помощью односторонней функции (one-way function), называемой также хэш-функцией (hash function), или дайджест-функцией (di­gest function). Хэш-функция — это преобразование, получающее из данных произвольной длины некое значение (свертку) фиксированной длины. Простейшими примерами являются контрольные суммы (например, crc32).

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

Существуют криптографические и программистские хэши. Криптографический хэш отличается от программистского следующими двумя свойствами: необратимостью и свободностью от коллизий.

Обозначим m — исходные данные, h(m) — хэш от них. Необратимость означает, что если известно число h0, то трудно подобрать m такое, что h(m)=h0. Свободность от коллизий означает, что трудно подобрать такие m1 и m2, что m1 != m2, но h(m1) = h(m2).

Криптографические хэш-функции разделяются на два класса:

  • хэш-функции без ключа (MDC (Modification (Manipulation) Detect Code) -коды),

  • хэш-функции c ключом (MАC (Message Authentication Code) - коды).

Хэш-функции без ключа разделяются на два подкласса:

  • слабые хэш-функции,

  • сильные хэш-функции.

Слабой хэш-функцией называется односторонняя функция H(x), удовлетворяющая следующим условиям:

  1. аргумент х может быть строкой бит произвольной длины;

  2. значение H(x) должно быть строкой бит фиксированной длины;

  3. значение H(x) легко вычислить;

  4. для любого фиксированного x вычислительно невозможно найти другой x' != x, такой что H(x')=H(x).

Пара x' != x, когда H(x')=H(x) называется коллизией хэш-функции.

Сильной хэш-функцией называется односторонняя функция H(x), удовлетворяющая условиям 1-3 для слабой хэш-функции и свойству 4':

4': вычислительно невозможно найти любую пару x' != x, такой что H(x')=H(x).

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

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

Для повышения стойкости дайджеста применяются секрет­ные ключи. Хэш-функцией с ключом (MAC) называется функция H(k,x) удовлетворяющая следующим свойствам:

  1. аргумент х функции H(k,x) может быть строкой бит произвольной длины;

  2. значение H(k,x) должно быть строкой бит фиксированной длины;

  3. при любых k и x легко вычислить H(k,x);

  4. для любого х должно быть трудно вычислить H(k,x) не зная k;

  5. должно быть трудно определить k даже при большом числе неизвестных пар {x, H(k,x)} при выбранном наборе х или вычислить по этой информации H(k,x') для x' != x.

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

Примером реализации такого алгоритма служит стандарт HMAC (hash message authentication codes). Он описан в RFC 2104. HMAC используется с любыми хэш функциями, такими как MD5, SHA-1 и т.д., совместно с секретным ключом. Длина подписи, вычисленной по этому алгоритму, определяется длиной дайджеста используемой хэш-функции.

Для реализации алгоритма необходима хэш-функция (H) и секретный ключ (K). В стандарте введены некоторые обозначения:

B – длина входного блока данных (В=64 для всех описанных выше хэш функций)

L – длина выходного блока хэш функции (L=16 для MD5 и L=20 для SHA-1)

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

Также определены две константы ipad и opad:

  • ipad = байт 0x36 повторяющийся В раз

  • opad = байт 0x5C повторяющийся В раз.

Для вычисления хэша HMAC над данными “text” производятся следующие действия:

H(K XOR opad, H(K XOR ipad, text)).

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

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

Наиболее популярной в системах безопасности в настоящее время является се­рия хэш-функций MD2, MD4, MD5. Все они генерируют дайджесты фиксиро­ванной длины 16 байт. Адаптированным вариантом MD4 является американским стандарт SHA, длина дайджеста в котором составляет 20 байт. Компания IBM поддерживает односторонние функции MDC2 и MDC4, основанные на алгорит­ме шифрования DES.

II. Электронная цифровая подпись

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

Алгоритм работы ЭЦП можно представить следующим образом: вначале автор документа (файла и т.п.) должен сгенерировать пару ключей, один секретный, один открытый. Секретный ключ он оставляет при себе, открытый — передает всем потенциальным читателям (под роспись, или по другому доверенному каналу). Теперь при необходимости послать документ автор вычисляет некоторое число (ЭЦП), которое зависит от самого файла и от секретного ключа. Без знания секретного ключа это число подобрать крайне сложно. Получатель вычисляет другое число на основе полученного файла, полученной ЭЦП и открытого ключа. Если получилась 1 — значит, документ не был искажен, и автор соответствует предполагаемому. Если получился 0 — значит, это подделка.

Несложно понять, что эту систему правильнее было бы назвать "Электронная цифровая печать", так как подпись — это нечто индивидуальное, а печать (как и секретный ключ) можно украсть, со всеми вытекающими.

На практике процесс электронной подписи документа осуществляется следующим образом:

Создается цифровая подпись.

  • Вычисляется дайджест сообщения.

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

Производится верификация цифровой подписи.

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

  • Значение дайджеста сообщения сравнивается со значением дайджеста сообщения вычисленного из исходного сообщения.

  • Если оба значения дайджеста сообщения совпадают, то подпись подлин­на. В противном случае или подпись, или сообщение были изменены.

Примером алгоритма цифровой подписи является DSA (Digital Signature Algo­rithm), разработанный Национальным институтом стандартов и технологий (NIST). Защищенность алгоритма DSA, как и алгоритма с открытым ключом Еl-Gamal, определяется сложностью вычисления дискретных логарифмов

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

III. Цифровые сертификаты

Для защиты открытого ключа, т.е. для того, чтобы однозначно удостоверить его принадлежность, используются не просто открытые ключи, а их сертификаты, формируемые Центром Сертификации Ключей (Центром Распределения Ключей, Certificate Authority). В качестве центра сертификации выбирается организация, которой доверяют все участники обмена и которой они лично предъявляют свои открытые ключи. Центр формирует из собранных ключей сертификаты путем подписания их своей электронной подписью. После этого каждый участник получает сертификат (собственный открытый ключ, подписанный центром) и открытый ключ центра. При установлении связи корреспонденты обмениваются не просто открытыми ключами, а сертификатами, что дает возможность однозначно идентифицировать второго участника обмена путем проведения процедуры проверки электронной подписи центра под его сертификатом.

Чтобы получить сертификат полномочного органа сертификации, обыч­но нужно представить в него документы, подтверждающие личность заявителя (частного лица или организации). Технология сертификации помогает, например, предотвратить возможность ведения неправомочными лицами деловых операций в Web под видом компании Microsoft или банка Bank of America. Рис. 2 иллю­стрирует процедуру получения сертификатов.

Рис. 2. Процедура получения сертификатов