Сообщение дайджест (также известный как «хэш») является результатом дайджеста или cryptographic hash function, который представляет собой одностороннюю функцию сжатия с фиксированным размером, обладающую свойством, которое незначительно изменяет вход (сообщение) приводят к большим непредсказуемым изменениям в выходном дайджесте. Как использовать такую функцию во многом зависит от того, что вы пытаетесь сделать с ней.
Термин "salt" относится к небольшому случайному входу хеш-функции, который используется для изменения состояния функции до добавления дополнительного ввода, который может быть предсказуем каким-то образом. Это механизм безопасности, который был разработан для защиты паролей при использовании дайджеста сообщений в качестве функции проверки пароля. Если соль не используется, то у всех пользователей, имеющих один и тот же пароль, будет такой же хэш-код пароля, который хранится в пользовательской базе данных. Существуют уникальные эффективные таблицы отмены хэша ("rainbow tables"), которые используются таким образом (MD5, NTLM-хэш пароля и т. Д.), А злоумышленник, который получает базу данных, должен выполнять только поиск таблицы, чтобы получить пароль открытого текста каждого пользователя. Использование соли предотвращает образование этих таблиц, так как каждый байт результатов соли в 256x size increase of the lookup table.
Это очень важно отметить, что простое сообщением дайджеста с солью является недостаточной защитой для хранения паролей и проверки. Это сложная проблема, и уже существуют решения, способные должным образом противостоять атаке: PBKDF2, bcrypt, scrypt и другие.
Аналогично, для проверки правильной передачи сообщения требуется использование более совершенной криптографической конструкции, называемой кодом аутентификации хэшированного сообщения (Hesh).Он построен на функции дайджеста сообщений, но использует криптографический ключ, чтобы гарантировать не только целостность защищенного сообщения, но и подлинность самого дайджеста сообщения.