|
МУ_ЛР_БОС. А. С. Новиковым и обсуждены на заседании кафедры
1. Цель работы
Изучение принципов построения подсистем безопасности и защиты в операционных системах. Рассмотрение их составных частей и принципов взаимодействия. Изучение методов контроля целостности, идентификации и аутентификации на основе процедур хэширования. Изучение назначения и принципа работы электронной цифровой подписи (ЭЦП) и электронной сертификации. 2. Теоретические сведения
I. Хэш-функции
В различных программных и аппаратных продуктах, предназначенных для защиты информации, используются одинаковые подходы, приемы и технические решения называемые базовыми. В безопасности операционных систем базовыми технологиями безопасности являются аутентификация, авторизация, контроль целостности и шифрование данных. Аутентификация позволяет по вводимым имени пользователя и паролю идентифицировать легального пользователя системы. Авторизация устанавливает уровни доступа к различным ресурсам для каждого конкретного или некоторой группы пользователей системы. Контроль целостности данных обеспечивает обнаружение нелегального доступа к тем или иным ресурсам по дополнительной информации, которую трудно подделать. Шифрование гарантирует сохранение секретности данных даже в том случае, если злоумышленник получил к ним доступ.
Рис. 1. Контроль целостности через хэширование
Во многих базовых технологиях безопасности используется — шифрование с помощью односторонней функции (one-way function), называемой также хэш-функцией (hash function), или дайджест-функцией (digest 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), удовлетворяющая следующим условиям:
аргумент х может быть строкой бит произвольной длины; значение H(x) должно быть строкой бит фиксированной длины; значение H(x) легко вычислить; для любого фиксированного 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) удовлетворяющая следующим свойствам:
аргумент х функции H(k,x) может быть строкой бит произвольной длины; значение H(k,x) должно быть строкой бит фиксированной длины; при любых k и x легко вычислить H(k,x); для любого х должно быть трудно вычислить H(k,x) не зная k; должно быть трудно определить 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 Algorithm), разработанный Национальным институтом стандартов и технологий (NIST). Защищенность алгоритма DSA, как и алгоритма с открытым ключом Еl-Gamal, определяется сложностью вычисления дискретных логарифмов
Алгоритмы цифровой подписи получили широкое распространение не только в задачах проверки целостности данных, но и в области цифровой сертификации. III. Цифровые сертификаты
Для защиты открытого ключа, т.е. для того, чтобы однозначно удостоверить его принадлежность, используются не просто открытые ключи, а их сертификаты, формируемые Центром Сертификации Ключей (Центром Распределения Ключей, Certificate Authority). В качестве центра сертификации выбирается организация, которой доверяют все участники обмена и которой они лично предъявляют свои открытые ключи. Центр формирует из собранных ключей сертификаты путем подписания их своей электронной подписью. После этого каждый участник получает сертификат (собственный открытый ключ, подписанный центром) и открытый ключ центра. При установлении связи корреспонденты обмениваются не просто открытыми ключами, а сертификатами, что дает возможность однозначно идентифицировать второго участника обмена путем проведения процедуры проверки электронной подписи центра под его сертификатом.
Чтобы получить сертификат полномочного органа сертификации, обычно нужно представить в него документы, подтверждающие личность заявителя (частного лица или организации). Технология сертификации помогает, например, предотвратить возможность ведения неправомочными лицами деловых операций в Web под видом компании Microsoft или банка Bank of America. Рис. 2 иллюстрирует процедуру получения сертификатов.
Рис. 2. Процедура получения сертификатов 3. Оборудование
Персональный компьютер с установленной операционной системой MSWindows 2000 SP4, XPSP2, Vista или 7 и средами разработки ПО BorlandC++ Builder или MSVisualStudio 2005/2008/2010. 4. Задание на работу
1. Изучить теоретические положения по данной лабораторной работе.
2. Разработать программное обеспечение согласно заданию преподавателя. Вариантами заданий могут быть следующие:
№
| Задание
| 1
| Вычисление дайджеста по алгоритму MD5
| 2
| Вычисление дайджеста по алгоритму SHA-1
| 3
| Вычисление дайджеста по алгоритму HMAC-MD5
| 4
| Вычисление дайджеста по алгоритму HMAC- SHA-1
| 5
| Проверка подлинности хэша MD5
| 6
| Проверка подлинности хэша SHA-1
| 7
| Проверка подлинности хэша HMAC-MD5
| 8
| Проверка подлинности хэша HMAC- SHA-1
|
5. Оформление отчета
Отчет должен содержать:
название и цель работы; вариант задания; краткие теоретические положения и алгоритм работы программы результаты работы созданного программного обеспечения; листинг программы, реализующей задание.
6 Контрольные вопросы
6.1. Что такое хэш-функция?
6.2. В чем заключается принцип электронной цифровой подписи?
6.3. Чем отличается алгоритм SHA-1 от алгоритма SHA?
6.4. В чем отличие алгоритмов MD2, MD4 и MD5?
6.5. В чем заключается принцип алгоритма HMAC?
6.6. В чем заключается принцип электронной сертификации?
6.7. Где в операционных системах применяются электронные сертификаты? 7. Библиографический список
1. Олифер В.Г. Сетевые операционные системы: Учеб. пособие для вузов / В.Г. Олифер, Н.А. Олифер .— М.: Питер, 2003. — 544с.
2. Таненбаум Э. Современные операционные системы / Э. Таненбаум.— 2-е изд. — М.: Питер, 2006 .— 1038с.
3. Монадьеми П. Защита от хакеров в Windows XP/ П. Монадьеми, Б. Мюллер; пер. с нем. под ред. С.Н. Банникова.— М.: БИНОМ, 2005 .— 320с.
4. Немет Э. UNIX: Руководство системного администратора/ Э. Немет, Г. Снайдер, С. Сибасс, Т.Р. Хейн. 3-е изд. — М.: Питер, 2003 .— 925с.
|
|
|