Вопрос

Мой первый вопрос заключается в том, что я слышал, что хэширование строки выполняется 2 раза (напримерsha1(sha1(пароль)) ), поскольку второй хэш имеет фиксированную длину, это правда??

Мой второй вопрос заключается в том, что безопаснее?(var1 и var2 - это 2 строки):

  1. sha1(var1 + sha1(var2))
  2. sha1 (var1 + var2)

Если это 1-й вариант, стоит ли он затрат на производительность?

Это было полезно?

Решение

Хешируя строку дважды, вы увеличиваете риск коллизий, что плохо с точки зрения безопасности.

Вместо того чтобы иметь бесконечное количество входов, ведущих к 2 128 возможным выходам, у вас будет 2 128 возможных входов, которые могут составлять менее 2 128 выходы.

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

Другие советы

  • sha1(var1 + sha1(var2))
  • sha1 (var1 + var2)

Ни то, ни другое не является очень безопасным.Не изобретайте велосипед заново. HMAC был разработан для этого;в частности, требуются шаги (заполнение и т.д.), Чтобы избежать проблем с определенными недостатками в определенных алгоритмах хэширования, плохо взаимодействующих с вышеупомянутыми "простыми" реализациями.

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

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

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

Я сомневаюсь, что это добавит безопасности. Это увеличит время выполнения вашего скрипта, но не увеличит безопасность хэша. Помните, что когда кто-то пытается сломать ваш хэш, ему не нужно находить точное значение var1 и var2, ему нужно только найти тот, который приводит к тому же хешу.

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

Использование только одной соли без соли позволяет легко ее решить.

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

Добавление второго хэша также мало поможет, потому что эти таблицы уже существуют с сохраненными значениями.

Динамическая соль, добавленная к паролю, выручит гораздо больше, чем несколько хешей. Несколько хешей не очень-то добавляют к нему.

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

Будет ли var1 + var2 таким же в ожидаемой ситуации? Я имею в виду, первое предложение в этом случае должно быть в порядке, так как вы избежите столкновения хэширования. О том, что стоит затрат, на этот вопрос вы должны ответить. Избегает столкновения стоит затрат.

Что касается алгоритма ша, предполагается, что он действительно скремблирует результаты. Поэтому многократное применение не должно иметь лучших результатов, равно как и применение к «более случайным». ввод должен привести к лучшим результатам.

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

Но важнее, чем множественный хеш, использование соли имеет важное значение для повышения безопасности.

Относительно вашего второго вопроса, я бы сказал, что не очень просто сказать, какой из 2 является самым безопасным, я думаю, что действительно достаточно использовать вариант 2.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top