Главная страница

УП03. ГАПОУ ПК 8. Верещагин1 УП03. 33ОБАс. Отчет по учебной практике уп 03. Защита информации техническими средствами


Скачать 120.97 Kb.
НазваниеОтчет по учебной практике уп 03. Защита информации техническими средствами
АнкорУП03. ГАПОУ ПК 8
Дата06.12.2022
Размер120.97 Kb.
Формат файлаdocx
Имя файлаВерещагин1 УП03. 33ОБАс.docx
ТипОтчет
#831753
страница3 из 4
1   2   3   4





Глава 2. Сфера применения функций хеширования


Безопасное хранение паролей с помощью хеш-функций. Пусть есть у нас социальная сеть, база данных или прочее, где может быть вход по логину и паролю. Чтобы система проверила, правильно ли введён пароль, требуется где-то хранить пароли. Если они хранятся в "сыром" виде, то их можно отыскать... Проще всего порыться в чужих паролях будет администраторам. То есть если пароли в файле хранения никак не маскируются, то даже пользователь, не щёлкающий по подозрительным ссылкам и придумывающий сверхдлинные пароли, не будет в безопасности.

Можно хранить пароли в зашифрованном виде. Это чуть лучше, чем в сыром, но бесполезно, если кто-то, способный найти файл хранения, знает алгоритм и ключ шифра. А вот если прибегнуть к хешированию - использовать хеш-функции с длинными хеш-значениями (скажем, 256, 512, 1024 бит), то завладеть чужим аккаунтом сложно любому, кто не знает всего одного - пароля. Предполагается, что пользователь не придумал тупой пароль вроде "111".

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

Если кто-то откроет файл с данными пользователей, вместо паролей он увидит хеш - значения. Чтобы злоумышленник не мог быстро придумать по какому-то из них подходящую строку-пароль, и введено требование стойкости к восстановлению прообраза.

Наглядно эту схему защищённого хранения паролей с помощью хеширования можно нарисовать следующим образом:
Таблица 1.

 Схема защищённого хранения паролей с помощью хеширования.

Список пользователей




Логин

Хеш

Ivan

101011001111

Petr

1111000010120

Введите логин и пароль




Petr

password


Эта схема неплохо усиливает безопасность пользователей, но она не всесильна. Если пользователь придумывает пароли вроде даты рождения, имени, слова 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)

Принимает в качестве аргумента str строку, которую необходимо подвергнуть шифрованию, и секретный ключ key_str. Входные аргументы могут быть любой длины ;

AES_DECRYPT(crypt_str, key_str)

Принимает в качестве первого аргумента зашифрованную при помощи AES_ENCRYPT() строку. Ключ key_str при этом должен совпадать как в первой так и во второй строках. Если функция AES_DECRYPT() обнаруживает некорректные данные или некорректное заполнение строки, должно возвращаться значение NULL. Однако AES_DECRYPT() вполне может вернуть величину отличную от NULL, или просто "мусор"

ENCODE(str, pass_str)

Шифрует строку str, используя аргумент pass_str как секретный ключ

DECODE(crypt_str, pass_str)

Дешифрует строку crypt_str, зашифрованную функцией AES_DECRYPT(). Аргумент pass_str используется как секретный ключ

DES_ENCRYPT(str [,(key_number|key_string)])

Шифрует строку str, используя аргумент pass_str как секретный ключ. В качестве второго необязательного параметра может выступать строка key_string, задающая секретрый ключ. В случае использования секретного ключа необходимо приводить его в качестве второго параметра и в функции дешифровки DES_DECRYPT(). Вместо секретного ключа можно указать номер key_number, принимающий значение от 0 до 9. Номер указывает на запись в ключевом DES-файле сервера, местоположение которого можно задать при старте сервера MySQL в параметре --des-key-file

DES_DECRYPT(str [, key_string])

Дешифрует строку str, зашифрованную при помощи функции DES_ENCRYPT(). Если при шифровании в качестве второго параметра функции DES_ENCRYPT() было передано число или второй параметр был опущен, то параметр key_string функции DES_DECRYPT() указывать уже не требуется, так как он прописывается в зашифрованную строку. Такой подход, когда секретный ключ хранится на сервере и не передается через сетевое соединение, значительно безопаснее, поскольку значение ключа невозможно извлечь из сетевого трафика. Если второй параметр не указывается, то предполагается, что используется первая строка DES-файла

ENCRYPT(str [, salt])

Подвергает строку str необратимому шифрованию, используя вызов системной функции crypt() UNIX. Если второй необязательный параметр salt не указывается, то результат каждый раз получается новым.

MD5(str)

Принимает строковой параметр str и возвращает 128-битную контрольную сумму, вычисленную по алгоритму MD5. Возвращаемая величина представляет собой 32-разрядное шестнадцатеричное число, которое уникально для строки. Таким образом для строк, отличающихся хотя бы одним символом, результат функции MD5 будет разный. В тоже время для двух одинаковых строк всегда возвращается одинаковый результат

PASSWORD(str)

Подвергает необратимому шифрованию данные str. Именно эта функция используется для шифрования паролей в MySQL


OLD_PASSWORD(str)


Эмулирует работу функции PASSWORD() версий MySQL, предшествующих MySQL 4.1

SHA1(str)

Вычисляет 160-битную контрольную сумму по алгоритму SHA1(Secure Hach Algorithm) для строки str


Обратимое шифрование. При обратимом шифровании, как правило, предоставляется две функции для шифровки и расшифровки данных.

Рассмотрим примеры с использованием функций 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. Так, например, свойства сравнений полезны при расчетах в алгоритмах шифрования с открытым ключом.

1   2   3   4


написать администратору сайта