Зачем нужна соль при хешировании

Очень часто можно встретить различного рода соль при хешировании паролей.

Как она выглядит?

Соль это набор случайно подобранных символов, который конкатенируется с паролем при хешировании. Обычно конструкция выглядит где-то так:

$salt = '&WsW{P*q27@5AbY';
$hash = md5($password . $salt);

Зачем она все таки нужна?

Криптографическая соль нужна только для одной цели: защита от радужных таблиц. Дублируя википедию, скажу что радужная таблица — это набор готовых (предрассчитанных) хешей и их оригинальных значений. Такие таблицы генерируются обычным брут форсом, часто по словарю (Пример: http://md5decrypt.net). Быстрота определения оригинальной фразы по хешу осуществляется индексированным поиском по всей базе.

Зачастую пароли пользователей очень просты — словарь очень узок и часто пользуются шаблонные слова и словосочетания. В случае, если соль не была добавлена к оргинальному паролю, есть большая вероятность что такой хеш уже скомпрометирован (например хеш от «mypassword» 34819D7BEEABB9260A5C854BC85B3E44 уже есть в базе данных md5decrypt.net).

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

Какие к ней требования?

Требования к соли следующие:

  1. приватную соль не ставить соль в начало фразы, поскольку в таком случае возможна атака удлиннением сообщения
  2. соль должна иметь достаточную длину, хотя бы 10 символов, больше — лучше.
  3. алфавит лучше использовать из всех возможных символов.

&<WsW{P*q27@5AbY — хорошая соль

2030039 — не очень хорошая соль

Всем добра 🙂

Click to rate this post!
[Total: 1 Average: 5]

Вам также может понравиться

About the Author: deniskoronets

1 комментарий

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *