Краткие теоретические и учебно-методические материалы по теме практической работы
Хеш-функции играют в информационной защите важную роль, создавая для электронного документа его «моментальный снимок» и тем самым защищая документ от дальнейшей модификации или подмены.
В широком смысле функцией хеширования называется функция H, удовлетворяющая следующим основным свойствам:
Термин вычислительно невозможно означает здесь, что в настоящее время решение этой задачи либо требует слишком большого интервала времени (например, более сотни лет), либо использования слишком больших вычислительных ресурсов, чтобы решение задачи имело смысл.
Первые три свойства требуют, чтобы хеш-функция создавала хеш-код для любого сообщения. Четвертое свойство определяет требование односторонности хеш-функции: легко создать хеш-код по данному сообщению, но невозможно восстановить сообщение по данному хеш-коду.
В этой схеме пользователь зарегистрировавшись на сервере, получает секретный ключ P, который сохраняется также на сервере. При выходе на связь пользователь посылает сначала свой идентификатор. Получив индентификатор, сервер проверяет наличии такого пользователя по своей базе данных и затем возвращает пользователю случайное большое число N (обычно длины 16 байт), называемое словом–вызовом. Пользователь, получив это число, формирует пару <N, P, ТS>, где P обозначает пароль пользователя, ТS – текущий момент времени (Time Stamp), подвергает ее хеш-преобразованию и отправляет полученное значение h=h(<N,P>) серверу. Сервер, получив свертку h, извлекает из базы данных пароль пользователя, выполняет то же преобразование h(<N,P) и сравнивает два полученных значения h. Если они совпали, то процедура аутентификация считается успешной.
Использование алгоритмов хеширования для подтверждения неизменности файла с применением (При работе можно использовать любой дистрибутив Linux, тем кто использует Linux сразу получат +1 балл и 2 оценки) OpenSSL
1. Изучите теоретическое руководство.
2. Подготовьте (создайте или выберите) текстовый файл с семантически понятным содержимым. Дайте ему имя 1.docx
3. С помощью OpenSSL вычислите значение хэш-функции MD5 от подготовленного текста. Измерьте время хеширования и запомните (запишите) его.
- openssl> dgst -md5 1.docx
4. Выполните действие 3 дляпу алгоритма SHA1.
- $ openssl> dgst –sha1 1.docx
5. Сравните время хеширования с применением двух алгоритмов.
6. Измените содержимое исхокдного файла.
7. Посчитайте хеш-суммы MD5 и SHA1 от измененного файла. Убедитесь, что значения сумм от исходного и измененного файлов не совпадают.
8. Выполните операции с хэш-функцией, используя закрытый и открытый ключ
1) Сгенерировать закрытый ключ длиной 2048 бит без парольной фразы для алгоритма RSA и записать их в файл keys.rsa:
- $ openssl> genpkey -out [путь] keys.rsa -algorithm RSA -pkeyopt rsa_keygen_bits:2048
2) Вывести информацию о закрытом ключе:
- $ openssl> rsa -in [путь]keys.rsa -text –noout
3) Извлечь открытый ключ в формате РЕМ из закрытого ключа:
- $ openssl> rsa -in [путь]keys.rsa -pubout -out [путь]pubkey.rsa -outform PEM
Откройте папку и убедитесь, что ключ pubkey.rsa создан.
4) Подписать хэш-сумму sha512 от файла file закрытым ключом алгоритма RSA, записать подпись в файл file.sig:
- $ openssl> dgst -sha512 -sign [путь]keys.rsa -out [путь]file.sig [путь]file
5) Проверить подпись хэш-суммы sha512 из файла file.sig для файла file по алгоритму RSA:
$ openssl >dgst -sha512 -verify [путь]pubrsa.pem -signature [путь]file.sig [путь]file
Данная команда выводит «Verification OK» при правильной подписи или «Verification Failure» в любом другом случае.
6) Снять защиту ключа парольной фразой:
$ openssl> rsa -in [путь]keys.rsa -passin pass:1234 -out keys_nopass.rsa
Контрольные вопросы.
1.Что такое аутентификация?
2.Перечислите основные методы аутентификации.
3.Что такое хеш-преобразование?
4. Перечислите основные свойства хеш-функций.