🧂 Хэширование vs Шифрование: Битва за ваши пароли
Кратко: Разница между хэшированием и шифрованием — вопрос жизни и смерти ваших паролей. Шифрование — это двусторонний процесс: зашифровали → можно расшифровать обратно, если есть ключ. Хэширование — это одностороннее превращение данных в «математический фарш», из которого исходник не достать никаким ключом. Для хранения паролей всегда используют хэширование, а шифрование — для передачи данных (HTTPS, VPN, файлы). Простой тест: если данные нужно получить обратно — шифруйте. Если только проверить совпадение (как пароль при входе) — хэшируйте.
🧐 Хэширование: Односторонний билет Хэширование — это как мясорубка. Вы загружаете кусок мяса (пароль), получаете фарш (хэш-код определённой длины). Обратно мясо не восстановить . Математически это односторонняя функция: из хэша невозможно вычислить исходные данные . Ключевые свойства хэшей: · Детерминированность: Один и тот же вход всегда даёт одинаковый хэш. Если вы ввели пароль «Qwerty123», хэш всегда будет одинаковым. Это позволяет системе проверить пароль без его хранения . · Фиксированная длина: Независимо от того, хэшируете вы «1» или войну и мир, хэш всегда будет одной длины (например, 256 бит для SHA-256) . · Чувствительность к изменениям: Измените в пароле одну букву — хэш полностью изменится. Это делает хэши идеальными для проверки целостности файлов .
🔐 Шифрование: Обратимый сейф Шифрование — это сейф с ключом. Вы кладёте данные (открытый текст) → закрываете на замок (шифруете) → получаете нечитаемый шифротекст. С правильным ключом можно открыть сейф и прочитать данные обратно . Два типа шифрования: · Симметричное: Один ключ и для шифрования, и для расшифровки. Быстро, но ключ нужно передавать по защищённому каналу . · Асимметричное: Пара ключей: публичный (шифрование) и приватный (расшифровка). Медленнее, но безопаснее для обмена данными. Шифрование используют для защиты данных в движении (HTTPS) и в покое (зашифрованные файлы на диске).
⚠️ Почему шифровать пароли — опасно Многие компании ошибочно шифруют пароли, а не хэшируют. Это фундаментальная ошибка. Если сервер скомпрометирован — хакер получает и зашифрованные пароли, и ключ для их расшифровки . Это как хранить ключ от сейфа внутри сейфа. В 2013 году Adobe использовала шифрование для паролей в устаревшей системе — это привело к массовой утечке . OWASP прямо рекомендует: пароли должны хэшироваться, а не шифроваться, за редкими исключениями, когда приложение вынуждено передавать пароль во внешнюю систему .
🧂 Соль и перец: Усиление хэшей Хэширование само по себе уязвимо к радужным таблицам — заранее вычисленным хэшам для популярных паролей. Чтобы защититься, используют соль — уникальную случайную строку, добавляемую к каждому паролю перед хэшированием . Даже если два пользователя используют одинаковый пароль, хэши будут совершенно разными благодаря разным солям . Это делает радужные таблицы бесполезными. Перец — секретная строка, общая для всех паролей, которая хранится отдельно от базы данных . Если хакер украл только базу данных, без перца он не сможет подобрать пароли .
🎯 Где применяется Хэширование: · Хранение паролей в БД (SHA-256, bcrypt, Argon2) · Проверка целостности файлов · Цифровые подписи · Поиск дубликатов файлов Шифрование: · HTTPS (защита трафика между браузером и сервером) · VPN, шифрование email · Защита файлов и баз данных · Платежные транзакции
💡 Главный вывод Шифрование — для защиты данных, которые кому-то нужно прочитать. Хэширование — для паролей, которые никто не должен знать. Если ваш разработчик хранит пароли в шифрованном виде — предложите ему почитать OWASP Password Storage Cheat Sheet. Если в открытом виде — меняйте пароль прямо сейчас.
#хэширование #шифрование #пароли #кибербезопасность #infosec #owasp