WikiSort.ru - Не сортированное

ПОИСК ПО САЙТУ | о проекте

Соль (также модификатор) — строка данных, которая передаётся хеш-функции вместе с паролем.

Главным образом используется для защиты от перебора по словарю и атак с использованием радужных таблиц, а также сокрытия одинаковых паролей. Однако, соль не может защитить от полного перебора каждого отдельного пароля.

Пример использования

Например, пароли хешируются и хранятся в MD5. В случае кражи базы исходные пароли могут быть восстановлены с помощью заранее подготовленных радужных таблиц. Если же пароль «посолить», то есть соединить строчку из 10—20 случайных символов с паролем и уже от этой строчки найти MD5, — стандартные таблицы не будут работать, так как они не рассчитаны на поиск такой длинной строки.

Пример создания хеша с солью на PHP:

  $password = 'password';            // Сам пароль
  $hash1 = md5($password);           // Хешируем первоначальный пароль
  $salt = 'sflprt49fhi2';            // Соль
  $saltedHash = md5($hash1 . $salt); // Складываем старый хеш с солью и пропускаем через функцию md5()

В данном примере соль является детерминированной строкой, в реальных проектах следует применять только динамическую соль.

Пример использования функции crypt на языке PHP:

$hash = crypt('password');              // crypt генерирует соль и хеширует, используя алгоритм по умолчанию

if (crypt($password, $hash) == $hash) { // crypt извлекает соль из существующего хеша и хеширует входящий пароль с её использованием
   // Пароль верен
}

Проблемы, связанные с солью и надёжностью паролей

При несанкционированном доступе к базе данных или удачной SQL-инъекции злоумышленник получит данные о доступе одного или нескольких пользователей. Если бы пароли хранились в изначальном виде, злоумышленник мог бы попробовать использовать их для доступа к другим ресурсам (таким образом происходит защита пользователя сайта от взлома профилей в других системах — у него будет время на смену паролей, пока злоумышленник занят подбором.)

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

Одна из важнейших миссий соли — сделать разными хеши паролей в том случае, если двое указали одинаковый пароль, тем самым усложнив перебор. Это же актуально при условии, что одному человеку позволено иметь несколько профилей.

Соль в системах UNIX

В большинстве UNIX-систем в качестве односторонней функции используется системная библиотека crypt(3). Изначально эта библиотека использовала хеш-функцию на базе алгоритма DES. При этом пароль был ограничен 8 символами (по 7 бит на символ, то есть 56 бит), и использовалась 12-битная соль[1].

В 1994 году Poul-Henning Kamp[en] на базе MD5 создал новый алгоритм хеширования паролей, который позволял использовать пароли любой длины и использовал тысячу итераций MD5[2][3]. Результатом работы функции стала строка, содержащая метку алгоритма хеширования (версию), соль и собственно хеш.

По тем временам время вычисления такого хеша выглядело достаточным для эффективного противостояния нахождению пароля полным перебором. Однако по мере роста вычислительных способностей время нахождения MD5 сильно упало. Это привело к появлению в crypt вычислительно более сложных алгоритмов и управления числом итераций[4].

Сейчас библиотека поддерживает несколько хеш-функций на базе алгоритмов: MD5, SHA-256, SHA-512, Blowfish (в некоторых дистрибутивах Linux, OpenBSD и некоторых других UNIX-подобных системах)[5]. Результатом работы функции является строка, содержащая метку алгоритма хеширования, соль, собственно хеш и, опционально, другие данные (например, число раундов хеш-функции).

В 2012 году Poul-Henning Kamp призвал полностью отказаться от созданного им алгоритма md5crypt, как не обеспечивающего в современных условиях ощутимого увеличения времени вычисления хеша, а значит, и не защищающего от полного перебора[6].

См. также

Примечания

Литература

Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".

Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.

Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .




Текст в блоке "Читать" взят с сайта "Википедия" и доступен по лицензии Creative Commons Attribution-ShareAlike; в отдельных случаях могут действовать дополнительные условия.

Другой контент может иметь иную лицензию. Перед использованием материалов сайта WikiSort.ru внимательно изучите правила лицензирования конкретных элементов наполнения сайта.

2019-2024
WikiSort.ru - проект по пересортировке и дополнению контента Википедии