Криптография как одна из базовых технологий безопасности ОС 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Криптография как одна из базовых технологий безопасности ОС



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

Шифрование – процесс преобразования сообщения из открытого текста (plaintext) в шифротекст (ciphertext) таким образом, чтобы:

· его могли прочитать только те стороны, для которых оно предназначено;

· проверить подлинность отправителя (аутентификация);

· гарантировать, что отправитель действительно послал данное сообщение.

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

В методе шифрования с секретным или симметричным ключом имеется один ключ, который используется как для шифрования, так и для расшифровки сообщения. Такой ключ нужно хранить в секрете. Это затрудняет использование системы шифрования, поскольку ключи должны регулярно меняться, для чего требуется их секретное распространение. Наиболее популярные алгоритмы шифрования с секретным ключом: DES, TripleDES, ГОСТ и ряд других.

Часто используется шифрование с помощью односторонней функции, называемой также хеш- или дайджест-функцией. Применение этой функции к шифруемым данным позволяет сформировать небольшой дайджест из нескольких байтов, по которому невозможно восстановить исходный текст. Получатель сообщения может проверить целостность данных, сравнивая полученный вместе с сообщением дайджест с вычисленным вновь при помощи той же односторонней функции. Эта техника активно используется для контроля входа в систему. Например, пароли пользователей хранятся на диске в зашифрованном односторонней функцией виде. Наиболее популярные хеш-функции: MD4, MD5 и др.

В системах шифрования с открытым или асимметричным ключом (public/ assymmetric key) используется два ключа (смотрите рис.1). Один из ключей, называемый открытым, несекретным, используется для шифрования сообщений, которые могут быть расшифрованы только с помощью секретного ключа, имеющегося у получателя, для которого предназначено сообщение. Иногда поступают по-другому. Для шифрования сообщения используется секретный ключ, и если сообщение можно расшифровать с помощью открытого ключа, подлинность отправителя будет гарантирована (система электронной подписи). Этот принцип изобретен Уитфилдом Диффи (Whitfield Diffie) и Мартином Хеллманом (Martin Hellman) в 1976 г.


Рис. 1. Шифрование открытым ключом

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

Среди несимметричных алгоритмов наиболее известен RSA, предложенный Роном Ривестом (Ron Rivest), Ади Шамиром (Adi Shamir) и Леонардом Эдлманом (Leonard Adleman). Рассмотрим его более подробно.

Хеш-функция

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

Изначально слово взято из английского языка: hash - мешанина, мусор, ненужная информация. На русском языке возможны два варианта транслитерации: хеш или хэш.

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

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

Простой пример:

Мы хотим сохранить строку test, как пароль для пользователя Admin. Для этого мы записываем в базу паролей:

Admin = 098f6bcd4621d373cade4e832627b4f6 (эта последовательность символов есть хеш-значение MD5 от строки test).

Теперь мы можем проверить любую строку на соответствие нашему паролю очень просто - посчитаем от нее хеш-значение, и сравним с тем, которое мы сохранили в базе.

Для примера, MD5 от строки rest - это 65e8800b5c6800aad896f888b2a62afc и оно не совпадает с тем, что мы сохранили. А значит, rest - не пароль для Admin.

В то же время, MD5 от строки test - это всегда 098f6bcd4621d373cade4e832627b4f6, что совпадает с сохраненным значением. А значит, test всегда подойдет как пароль к Admin.

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

А потому, сам процесс атаки делится на три этапа:

· Добыча хеш-значений.

· Определение, какая хеш-функция использовалась для их получения.

· Собственно, атака на хеш-значения, перебором возможных паролей.

А теперь немного подробнее.

Что касается первого этапа, то есть добычи хеш-значений, то здесь все сложно. Обычно для получения хеш-значений ("хешей", на жаргоне "хакеров") необходимы специальные приемы и техники. Они связанны с поиском уязвимостей в целевой системе, или обманом. Надо иметь в виду, что кража хеш-значений является противозаконной.

Тем не менее, в сети Интернет, существует немало сайтов, предоставляющих хеш-значения для восстановления. Например:

· http://securitylab.ru/

· http://antichat.ru/

· http://zloy.org/

· http://damagelab.org/

· http://web-hack.ru/

На этих же сайтах можно получить некоторую практическую информацию по добыче хеш-значений из целевой системы.

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

Единственное, что может дать определенную информацию - это длина хеш-значения в символах. Она должна соответствовать в точности разрядности хеш-функции.

Только вот одна проблема, для каждой длины хеш-значения есть несколько хеш-функций с такой же разрядностью, например:

· 8 символов - XOR32, CRC32, Adler,...

· 16 символов - DES, MySQL, ReducedMD5,...

· 32 символа - MD5, MD4, NTLM1,...

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

Вот самые простые соответствия хеш-функциям из UDC и реальным системам:

· MySQL - MySQL 3.23, популярная база данных.

· MD5 - большинство форумов, систем авторизации под Веб.

· NTLM1 - NT-функция для сохранения паролей в Windows.

· SHA1 - интернет-форумы.

· DES - "половинка" LM-функции, ранее популярной для сохранения паролей в Windows.

· MD5ofMD5 - MD5(MD5($pass)), встречается в некоторых форумных движках.

Почему нельзя находить пароли "умнее" чем перебором? Посмотрим выше, "по хеш-значению очень сложно получить какую-либо информацию об исходной строке-пароле" - так утверждают математики, и пока никаких опровержений этого тезиса не найдено. А значит, умнее, чем, попытавшись подставить в хеш-функцию различные строки, найти пароль просто не удастся.

Есть несколько методов, значительно ускоряющих перебор, например, Hybrid Rainbow атака, однако, для стойких хеш-функций, кроме перебора и его вариаций, у нас нет альтернатив. [2]



Поделиться:


Последнее изменение этой страницы: 2017-02-05; просмотров: 258; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.145.111.183 (0.007 с.)