УП03. ГАПОУ ПК 8. Верещагин1 УП03. 33ОБАс. Отчет по учебной практике уп 03. Защита информации техническими средствами
Скачать 120.97 Kb.
|
Глава 2. Сфера применения функций хешированияБезопасное хранение паролей с помощью хеш-функций. Пусть есть у нас социальная сеть, база данных или прочее, где может быть вход по логину и паролю. Чтобы система проверила, правильно ли введён пароль, требуется где-то хранить пароли. Если они хранятся в "сыром" виде, то их можно отыскать... Проще всего порыться в чужих паролях будет администраторам. То есть если пароли в файле хранения никак не маскируются, то даже пользователь, не щёлкающий по подозрительным ссылкам и придумывающий сверхдлинные пароли, не будет в безопасности. Можно хранить пароли в зашифрованном виде. Это чуть лучше, чем в сыром, но бесполезно, если кто-то, способный найти файл хранения, знает алгоритм и ключ шифра. А вот если прибегнуть к хешированию - использовать хеш-функции с длинными хеш-значениями (скажем, 256, 512, 1024 бит), то завладеть чужим аккаунтом сложно любому, кто не знает всего одного - пароля. Предполагается, что пользователь не придумал тупой пароль вроде "111". Вместо паролей будем хранить их хеш-значения. Пользователь вводит при входе логин и пароль. В файле по логину ищется нужный хеш. Он сравнивается с хешем того, что введено в поле "пароль" пользователем. Если значения равны, то пользователя пропускают, иначе - нет. Может быть, что пароль неправильный, но хеш-значения совпали. Если хеш-значение длинное, то такой прокол маловероятен и может произойти только чудом. Если кто-то откроет файл с данными пользователей, вместо паролей он увидит хеш - значения. Чтобы злоумышленник не мог быстро придумать по какому-то из них подходящую строку-пароль, и введено требование стойкости к восстановлению прообраза. Наглядно эту схему защищённого хранения паролей с помощью хеширования можно нарисовать следующим образом: Таблица 1. Схема защищённого хранения паролей с помощью хеширования.
Эта схема неплохо усиливает безопасность пользователей, но она не всесильна. Если пользователь придумывает пароли вроде даты рождения, имени, слова password, "111" или клички домашнего животного, а также держит на виду у окружающих бумажку, где записан пароль, то создатели хеш-функций тут ни при чём. Хеш-функции в электронно-цифровой подписи. Хеш-функции обычно являются частью механизма электронно-цифровой подписи. Технология ЭЦП является современной заменой обычной бумажной подписи и часто удобнее её. Даже сложные закорючки обычной подписи при должном старании реально подделать. Изучив, что такое ЭЦП, легко понять, что её подделать крайне трудно. И вообще рост известности понятия ЭЦП вполне согласуется с явлением роста электронного документооборота. Другие применения хеш-функций. Также хеш-функции могут использоваться для обнаружения искажений при доставке сообщений по сетевым каналам, в качестве псевдослучайного генератора, для усовершенствования защиты от подмен и подделок документов. При этом первые два названных в этом абзаце применения скорее косвенные - для них криптографическое хеширование не создавалось, но оно тут вполне пригодно. Конкретные криптографические хеш-функции. Большинство хорошо известных хеш-функции разработана на западе. Особо известны семейства SHA и MD, из них самые знаменитые - SHA1 и MD5, хотя они уже не лучшие представители своих "семей". Об этих хеш-функциях часто говорят в статьях и на форумах. Из других зарубежных хеш-функций можно рассмотреть, например, RIPEMD-160, разработанную в Бельгии. Но не следует зацикливаться только на иностранных функциях хеширования. У нас есть ГОСТ Р34.11-2012 - российский стандарт хеширования с 256-битными хеш-значениями. Заметим: SHA1 даёт только 160-битный хеш. Принципиальная особенность ГОСТовского хеширования: оно базируется на ГОСТовском же алгоритме шифрования. Также заслуживает внимание семейство Skein, обеспечивающее хеширование с выходами 256, 512, 1024 бит. Заметим: самая "длинная" из хвалёных хеш-функций SHA2 даёт хеш в 512 бит. Безопасность и MySQL. Здесь будут рассмотрены многочисленные функции шифрования данных, которые входят в состав СУБД MySQL. Чаще всего шифрованию подвергаются пароли. В случае взлома базы данных злоумышленник получит доступ только к зашифрованным записям, на расшифровку которых потребуется время, за которое пароли могут стать не актуальными. Функции шифрования MySQL. Различают два вида шифрования: обратимое и необратимое. При обратимом шифровании зашифрованный текст может быть подвергнут дешифровке. При необратимом шифровании результатом является хэш, который невозможно восстановить в исходный текст. Примечание. Если функции передается в качестве одного из аргументов значение NULL, она также возвращает NULL. Таблица 2. Функции шифрования MySQL.
Обратимое шифрование. При обратимом шифровании, как правило, предоставляется две функции для шифровки и расшифровки данных. Рассмотрим примеры с использованием функций AES_ENCRYPT (str, key_str) и AES_DECRYPT(crypt_str, key_str), оисание которых дано в таблице. Функция AES_ENCRYPT(str, key_str). А теперь рассмотрим шифрование поля email, в таблице users базы данных wet. Шифрование данного поля позволит уберечь пользователей от спамеров в случае, если база данных попадет им в руки. Создадим таблицу users и заполним ее поля. Шифрование e-mail. Хеширование криптографический шифрование. Как видно из листинга, прямой просмотр поля email приводит к выводу "мусора". Для того чтобы узнать настоящие адреса email, необходимо воспользоваться функцией дешифровки AES_DECRYPT() и знать секретный ключ. Дешифровка данных. Необратимое шифрование. Функция MD5() осуществляет необратимое шифрование. Использование функции MD5(). Примечание. Алгоритм MD5() часто используется для создания уникального хэш-кода объемных файлов, которые передаются по сети. Загрузив файл, всегда можно проверить его целостность, вычислив код по алгоритму MD5() и сравнив полученный результат с хэш-кодом, представленным распространителем. Это позволяет отследить повреждения файла, вызванные передачей через сеть, а также предотвращает фальсификацию дистрибутива. Необратимое шифрование может применяться для шифрования паролей -- в базе данных хранятся не сами пароли, а их MD5-хэши. Во время аутентификации пароль, введенный пользователем, также подвергается обработке функцией MD5(), после чего MD5-хэши подвергаются сравнению. Такая схема позволяет хранить пароли в защищенном виде, и никто, даже администратор базы данных, не имеет возможности узнать пользовательские пароли. В последнее время такой вид аутентификации приобретает все большую популярность. Поскольку в следствии применения паузы после ввода некорректного пароля время, необходимое для подбора пароля, многократно возросло, средства подбора единичных паролей по сети практически вышли из употребления -- злоумышленники стараются получить всю базу с паролями. Если же в базе храняться только MD5-хэши, злоумышленнику придется восстанавливать методом перебора каждый из зашифрованных паролей. Функция PASSWORD() подвергает необратимому шифрованию данные и используется для шифрования паролей MySQL в столбце password в таблице привлегий user системной базы даны хmysql. Использование функции PASSWORD(). Функция PASSWORD() используется в системе аутентификации в сервер MySQL, поэтому ее не следует использовать в приложениях -- лучше пользоваться функциями MD5() и SHA1(). Арифметика остатков и теория сравнений. Немецкий математик Карл Фридрих Гаусс предложил запись для двух чисел a и b, если они имеют одинаковые остатки от деления на m (читается a сравнимо с b по модулю m). Например, Сравнения обнаруживают полезные для математиков и криптографов свойства, во многом похожие на свойства равенств. Эти свойства позволяют существенно упрощать арифметические вычисления, если нас интересует только остаток от деления на некоторое число m. Так, например, свойства сравнений полезны при расчетах в алгоритмах шифрования с открытым ключом. |