2015-03-09 1 views
1

Я с помощью дайджеста сообщения, я видел, как это используется иногда с saltКогда использовать соль с Message Digest

 synchronized (hasher) { 
      hasher.update(salt);   // "Updates" the digest using the specified byte. 
      salt++; 
      digest = hasher.digest(data); // Final "updates" on the digest using the specified array of bytes, then "completes" the digest computation. 
     } 

и несколько раз без соли:

md.update(data); 
byte[] toChapter1Digest = md.digest(); 

Теперь, когда может должно Я использую дайджест с salt и не должен ли я? Краткий обзор, я пришел к выводу, что всякий раз, когда используется элемент пароля, используется соль.

ответ

1

Ваш вывод относительно его использования с MessageDigest является правильным, соль (nonce), между прочим, используется для защиты от использования радужных таблиц для взлома паролей.

Радужный стол представляет собой предварительно вычисленную таблицу для реверсирования криптографических хеш-функций, как правило, для взлома хэшей паролей. Таблицы обычно используются для восстановления пароля открытого текста до определенной длины, состоящего из ограниченного набора символов. Это практический пример компромисса между пространством и временем, использующим меньше времени обработки и хранения компьютера, чем атака грубой силы, которая вычисляет хэш при каждой попытке, но больше времени обработки и меньше памяти, чем простая таблица поиска с одним запись на хэш. Использование ключевой функции деривации, использующей соль, делает эту атаку неосуществимой.

См wikipedia

1

Используйте соль, чтобы избежать атак грубой силы против всех паролей сразу с радужными таблицами. Добавляя соль (и сохраняя ее с паролем), вы замедляете атаки радужного стола, заставляя злоумышленника вычислять хэш для каждого сохраненного пароля, а не сравнивать со всеми из них одновременно.

3

Сообщение дайджест (также известный как «хэш») является результатом дайджеста или cryptographic hash function, который представляет собой одностороннюю функцию сжатия с фиксированным размером, обладающую свойством, которое незначительно изменяет вход (сообщение) приводят к большим непредсказуемым изменениям в выходном дайджесте. Как использовать такую ​​функцию во многом зависит от того, что вы пытаетесь сделать с ней.

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

Это очень важно отметить, что простое сообщением дайджеста с солью является недостаточной защитой для хранения паролей и проверки. Это сложная проблема, и уже существуют решения, способные должным образом противостоять атаке: PBKDF2, bcrypt, scrypt и другие.

Аналогично, для проверки правильной передачи сообщения требуется использование более совершенной криптографической конструкции, называемой кодом аутентификации хэшированного сообщения (Hesh).Он построен на функции дайджеста сообщений, но использует криптографический ключ, чтобы гарантировать не только целостность защищенного сообщения, но и подлинность самого дайджеста сообщения.