#3 Криптография. Применение алгоритмов хеширования.
Здравствуйте, дорогие друзья.
В этой статье мы поговорим об алгоритмах хеширования. Вы найдете хеш во многих областях наук, потому что это критически важная часть цифровых подписей, системы паролей, сертификатов безопасности blockchain, или даже банкоматов Вашего банка, который проверяет PIN-код кредитной карты, когда Вы хотите снять наличные.
Давайте посмотрим на наиболее полезные варианты использования криптографической хеш-функции. Очень часто они используются при проверке пароля, по соображениям безопасности. Пароли не хранятся в виде открытого текста. Если злоумышленник взломает систему, и украдет файл или базу данных, где хранятся пароли, то атакующий может получить доступ к каждому пользователю. В этом случае необходимо хранить пароль более безопасным способом, чтобы преобразовать его в данные, и это именно то, что делает хеширование. Вместо сохранения пароля в виде открытого текста система вычислит его хеш и сохранит его. Именно так работают базы данных Linux, Windows, а также все другие веб- приложения.
Давайте посмотрим содержимое /etc/shadow, с помощью команды «cat»:
Выделенный прямоугольником, на скриншоте выше, сохраненный хеш пароля пользователя kali никто не может узнать.
Когда пользователь захочет пройти аутентификацию, он введет свой пароль в виде открытого текста, система немедленно вычислит хеш всего пароля и сравнит его с хешем, сохраненным в файле паролей. Если хеши равны, это означает, что пользователь ввел правильный пароль.
Помните, что каждый ввод, в этом случае пароль, имеет свой собственный уникальный хеш, который является детерминированным. Неправильный пароль дал бы другой хеш. Иногда пароль бывает в сочетании с другим фрагментом случайных данных, называемым солью. В этом примере — это соль:
И все вместе хешируется из-за того, что одного хеширования с радужными таблицами недостаточно для защиты паролей.
Хеширование также используется для проверки целостности файла, после его переноса из одного места в другое.
Когда, загружая важный документ, новое программное обеспечение или обновляя существующее, Вы хотите убедиться, что Ваша установка безопасна без изменений, и из авторитетного источника.
Теперь представьте, что Вы хотите установить новый дистрибутив Linux на свой компьютер, и, как правило, Вы идете и загружаете его с зеркала, и если – это http-сервер, то злоумышленнику будет легко изменить установочный файл, чтобы он содержал эксплойты или вредоносное ПО. Чтобы предотвратить эту проблему, Вы сгенерируете хеш или контрольную сумму, загруженного файла iso, и подтвердите, что он соответствует хешу, опубликованному на официальном сайте.
В примере с kali linux есть хеш, который нужно сравнить, и он подтверждает файл iso:
Если хеши не равны, это означает, что целостность загруженных изображений нарушена. Возможно, он был поврежден во время процесса загрузки. Помните, что, если в загруженном файле один бит отличается, файл имеет другой хеш, нежели оригинальный, который рассчитан командой разработчиков, и опубликован в сети.
Другое применение хешей — это процесс цифровой подписи. Хеширование является важным компонентом процесса цифровой подписи. На самом деле цифровая подпись является хешем файла, который шифруется с использованием секретного ключа.
Последнее применение хешей, о котором я собираюсь поговорить в этой лекции, связано со структурами данных языков программирования, словарями Python. Мы не будем углубляться в это, Вы должны знать только, что они предоставляют константу времени поиска.
Домашнее задание: скачать и сравнить хеши Kali Linux. Важно, чтобы на официальном сайте было значение хеша, например, sha256sum, как в Kali Linux.
На этом все. Всем хорошего дня!