Соль (криптография)

Поделись знанием:
Перейти к: навигация, поиск

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

Используется для борьбы с восстановлением паролей за один проход полного перебора (брутфорс) или с помощью предварительно построенных радужных таблиц. Соль не может защитить от брутфорса каждого отдельного пароля.





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

Например, вы хешируете и храните свои пароли в 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 на базе MD5 создал новый алгоритм хеширования паролей, который позволял использовать пароли любой длины и использовал тысячу итераций MD5[2][3]. Результатом работы функции стала строка, содержащая метку алгоритма хеширования (версию), соль и собственно хеш.

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

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

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

Напишите отзыв о статье "Соль (криптография)"

Литература

  • Robert Morris, Ken Thompson [wolfram.schneider.org/bsd/7thEdManVol2/password/password.pdf Password security: a case history] (англ.) // Communications of the ACM : журнал. — ACM New York, NY, USA, 1979. — Vol. 22, no. 11. — P. 594—597.
  • B. Kaliski. [www.ietf.org/rfc/rfc2898.txt PKCS #5: Password-Based Cryptography Specification Version 2.0] (англ.) (September 2000). Проверено 13 июня 2012. [www.webcitation.org/68qt9EMt1 Архивировано из первоисточника 2 июля 2012].

Примечания

  1. [opennet.ru/man.shtml?topic=crypt&category=3&russian=0 Проект OpenNet: MAN crypt (3) Библиотечные вызовы (FreeBSD и Linux)]
  2. [www.freebsd.org/cgi/cvsweb.cgi/src/lib/libcrypt/crypt.c#rev1.2 FreeBSD CVS log for src/lib/libcrypt/crypt.c]
  3. Niels Provos, David Mazières. [static.usenix.org/event/usenix99/provos/provos_html/ A Future-Adaptable Password Scheme]. Paper - 1999 USENIX Annual Technical Conference, June 6-11, 1999, Monterey, California, USA (June 1999). [www.webcitation.org/69mY81Wxk Архивировано из первоисточника 9 августа 2012].
  4. [www.akkadia.org/drepper/sha-crypt.html Unix crypt with SHA-256/512]
  5. [man7.org/linux/man-pages/man3/crypt.3.html crypt(3) — Linux manual page]
  6. [phk.freebsd.dk/sagas/md5crypt_eol.html Md5crypt Password scrambler is no longer considered safe by author]

См. также


Отрывок, характеризующий Соль (криптография)

– Вот что, мой милый, – сказал граф вошедшему почтительному молодому человеку. – Принеси ты мне… – он задумался. – Да, 700 рублей, да. Да смотри, таких рваных и грязных, как тот раз, не приноси, а хороших, для графини.
– Да, Митенька, пожалуйста, чтоб чистенькие, – сказала графиня, грустно вздыхая.
– Ваше сиятельство, когда прикажете доставить? – сказал Митенька. – Изволите знать, что… Впрочем, не извольте беспокоиться, – прибавил он, заметив, как граф уже начал тяжело и часто дышать, что всегда было признаком начинавшегося гнева. – Я было и запамятовал… Сию минуту прикажете доставить?
– Да, да, то то, принеси. Вот графине отдай.
– Экое золото у меня этот Митенька, – прибавил граф улыбаясь, когда молодой человек вышел. – Нет того, чтобы нельзя. Я же этого терпеть не могу. Всё можно.
– Ах, деньги, граф, деньги, сколько от них горя на свете! – сказала графиня. – А эти деньги мне очень нужны.
– Вы, графинюшка, мотовка известная, – проговорил граф и, поцеловав у жены руку, ушел опять в кабинет.
Когда Анна Михайловна вернулась опять от Безухого, у графини лежали уже деньги, всё новенькими бумажками, под платком на столике, и Анна Михайловна заметила, что графиня чем то растревожена.
– Ну, что, мой друг? – спросила графиня.
– Ах, в каком он ужасном положении! Его узнать нельзя, он так плох, так плох; я минутку побыла и двух слов не сказала…
– Annette, ради Бога, не откажи мне, – сказала вдруг графиня, краснея, что так странно было при ее немолодом, худом и важном лице, доставая из под платка деньги.
Анна Михайловна мгновенно поняла, в чем дело, и уж нагнулась, чтобы в должную минуту ловко обнять графиню.
– Вот Борису от меня, на шитье мундира…
Анна Михайловна уж обнимала ее и плакала. Графиня плакала тоже. Плакали они о том, что они дружны; и о том, что они добры; и о том, что они, подруги молодости, заняты таким низким предметом – деньгами; и о том, что молодость их прошла… Но слезы обеих были приятны…


Графиня Ростова с дочерьми и уже с большим числом гостей сидела в гостиной. Граф провел гостей мужчин в кабинет, предлагая им свою охотницкую коллекцию турецких трубок. Изредка он выходил и спрашивал: не приехала ли? Ждали Марью Дмитриевну Ахросимову, прозванную в обществе le terrible dragon, [страшный дракон,] даму знаменитую не богатством, не почестями, но прямотой ума и откровенною простотой обращения. Марью Дмитриевну знала царская фамилия, знала вся Москва и весь Петербург, и оба города, удивляясь ей, втихомолку посмеивались над ее грубостью, рассказывали про нее анекдоты; тем не менее все без исключения уважали и боялись ее.
В кабинете, полном дыма, шел разговор о войне, которая была объявлена манифестом, о наборе. Манифеста еще никто не читал, но все знали о его появлении. Граф сидел на отоманке между двумя курившими и разговаривавшими соседями. Граф сам не курил и не говорил, а наклоняя голову, то на один бок, то на другой, с видимым удовольствием смотрел на куривших и слушал разговор двух соседей своих, которых он стравил между собой.
Один из говоривших был штатский, с морщинистым, желчным и бритым худым лицом, человек, уже приближавшийся к старости, хотя и одетый, как самый модный молодой человек; он сидел с ногами на отоманке с видом домашнего человека и, сбоку запустив себе далеко в рот янтарь, порывисто втягивал дым и жмурился. Это был старый холостяк Шиншин, двоюродный брат графини, злой язык, как про него говорили в московских гостиных. Он, казалось, снисходил до своего собеседника. Другой, свежий, розовый, гвардейский офицер, безупречно вымытый, застегнутый и причесанный, держал янтарь у середины рта и розовыми губами слегка вытягивал дымок, выпуская его колечками из красивого рта. Это был тот поручик Берг, офицер Семеновского полка, с которым Борис ехал вместе в полк и которым Наташа дразнила Веру, старшую графиню, называя Берга ее женихом. Граф сидел между ними и внимательно слушал. Самое приятное для графа занятие, за исключением игры в бостон, которую он очень любил, было положение слушающего, особенно когда ему удавалось стравить двух говорливых собеседников.
– Ну, как же, батюшка, mon tres honorable [почтеннейший] Альфонс Карлыч, – говорил Шиншин, посмеиваясь и соединяя (в чем и состояла особенность его речи) самые народные русские выражения с изысканными французскими фразами. – Vous comptez vous faire des rentes sur l'etat, [Вы рассчитываете иметь доход с казны,] с роты доходец получать хотите?
– Нет с, Петр Николаич, я только желаю показать, что в кавалерии выгод гораздо меньше против пехоты. Вот теперь сообразите, Петр Николаич, мое положение…
Берг говорил всегда очень точно, спокойно и учтиво. Разговор его всегда касался только его одного; он всегда спокойно молчал, пока говорили о чем нибудь, не имеющем прямого к нему отношения. И молчать таким образом он мог несколько часов, не испытывая и не производя в других ни малейшего замешательства. Но как скоро разговор касался его лично, он начинал говорить пространно и с видимым удовольствием.