Что такое хеширование и почему важна «соль»?
1. Что такое хеширование?
Хеширование — это процесс преобразования любого объема данных (пароля, файла, текста) в уникальную строку символов фиксированной длины. Это «цифровой отпечаток». Важно помнить: хеширование — это односторонняя функция. Получить исходный пароль из хеша напрямую невозможно, поэтому проверка происходит через сравнение хеша введенного пользователем пароля с тем, что хранится в базе данных.
2. В чем разница между «соленым» и «обычным» хешем?
Обычный хеш: Всегда дает одинаковый результат для одинаковых входных данных. Уязвим для атак по «радужным таблицам» (заранее вычисленным базам хешей).
Соленый хеш (Salted Hash): К паролю добавляется случайная последовательность символов («соль») перед хешированием. Это гарантирует, что даже если два пользователя выберут одинаковый пароль, их хеши в базе будут абсолютно разными, что делает взлом крайне сложным.
3. Почему у одного типа (например, MD5) так много разных ID?
В контексте таких инструментов, как Hashcat, разные ID обозначают не только сам алгоритм, но и метод обработки данных. Например, наличие или отсутствие «соли», порядок расположения «соли» и пароля (salt+pass или pass+salt), а также кодировку (UTF-16LE, которая часто используется в Windows). Каждый ID указывает системе, какой именно «рецепт» нужно использовать для подбора.
4. Что такое «итеративные» хеши?
Это многократное хеширование одного и того же значения. Например, md5(md5($pass)) означает, что пароль сначала превращается в MD5, а затем полученный результат снова хешируется тем же алгоритмом. Это делается для замедления процесса перебора, чтобы злоумышленнику требовалось больше времени на вычисление одного варианта.
5. Какие алгоритмы считаются наиболее безопасными сегодня?
Сегодня стандартным выбором для хранения паролей является bcrypt, scrypt или Argon2 (через механизмы PBKDF2). Старые алгоритмы, такие как MD5 и SHA1, считаются небезопасными для хранения паролей, так как современные компьютеры могут перебирать миллиарды их вариантов в секунду.