Что такое хеш? MD5, SHA-256 и когда вам действительно нужен HMAC
Хэш-функции превращают любые входные данные в отпечаток пальца фиксированной длины, но не все хеши одинаковы. Выбор между MD5, SHA-256 и HMAC означает разницу между работающей проверкой безопасности и той, которая не работает молча. В этом руководстве объясняется, что каждый из них делает, когда его использовать и как проверить свои собственные хэши прямо в браузере.
Что такое хеш-функция?
Хэш-функция принимает любое количество данных — текст, файл, пароль — и создает строку символов фиксированной длины. Один и тот же вход всегда дает один и тот же результат, что делает хэши полезными для проверки. Измените хотя бы один символ во входных данных, и хеш изменится полностью. Это одностороннее свойство (вы не можете инвертировать хеш, чтобы вернуть исходные данные) делает его полезным для безопасности.
MD5: быстрый, но сломанный
MD5 создает 128-битный хэш и когда-то был стандартом для контрольных сумм и проверки файлов. Сегодня он криптографически взломан — коллизии (два разных входа, генерирующие один и тот же хэш) обнаруживаются быстро. MD5 по-прежнему используется в устаревших системах и для контрольных сумм, не связанных с безопасностью, но никогда не используется для аутентификации или паролей. Используйте Хэш-генератор чтобы увидеть выходные данные MD5, но для всего, что важно, используйте SHA-256.
SHA-256: текущий стандарт
SHA-256 (часть семейства SHA-2) создает 256-битный хэш и является современным выбором для криптографической работы. Он достаточно быстр для большинства приложений, устойчив к известным атакам и широко поддерживается. Вы увидите SHA-256 используется в системах блокчейна, отпечатках сертификатов и хешировании паролей. Хэш-генератор поддерживает SHA-256 в качестве алгоритма по умолчанию.
HMAC: когда нужен секрет
Простая хэш-функция является детерминированной — любой может проверить хэш. Ан HMAC (Код аутентификации сообщения на основе хэша) смешивается с секретным ключом, поэтому только тот, кто знает ключ, может создать правильный хэш. Это важно для API: сервер и клиент разделяют секрет, каждый подписывает им свои сообщения, а получатель проверяет совпадение подписи. Это доказывает, что сообщение пришло от заявленного отправителя и не было подделано. HMAC-генератор позволяет вам проверить это с помощью вашего собственного секретного ключа.
Когда использовать каждый подход
- Используйте простой
SHA-256для проверки целостности файлов, хеширования паролей (с солью и медленной функцией, такой как bcrypt) и публичного снятия отпечатков пальцев. - Использовать
HMACдля подписи запросов API, проверки веб-перехватчика и любого сценария, в котором обе стороны делятся секретом. - Пропускать
MD5для всего, что связано с безопасностью. Используйте его только при взаимодействии с устаревшими системами, которые этого требуют.
Ваши данные остаются на вашем устройстве
Оба Хэш-генератор и HMAC-генератор работать полностью в вашем браузере. Ваш текст никогда не отправляется на сервер — он хешируется локально на вашем устройстве, работает в автономном режиме после загрузки страницы и не требует учетной записи или входа в систему. Это означает, что вы можете безопасно хэшировать конфиденциальную информацию, например ключи API, для тестирования, не раскрывая ее в Интернете.
Бонус: измерьте энтропию
Если вы генерируете секреты или пароли, Энтропия Шеннона Калькулятор показывает, сколько случайности (и, следовательно, безопасности) содержится в строке. Более высокая энтропия означает, что сложнее угадать. Используйте его, чтобы убедиться, что сгенерированные вами секреты действительно случайны, прежде чем их развертывать.