Если пароли хранятся в хэше, как компьютер узнает, что ваш пароль похож на последний, если вы попытаетесь сбросить пароль?


11

Если пароли хранятся в хэше, как компьютер узнает, что ваш пароль похож на последний, если вы попытаетесь сбросить пароль? Разве два пароля не будут совершенно разными, поскольку один хешируется и не может быть восстановлен?


5
Компьютер не будет знать, если они похожи. Он будет знать только, если они были идентичны (путем хеширования нового пароля и сравнения его с сохраненным хешем исходного пароля).
— Роберт Харви

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

Если вам нужно сравнить пароли, вы не будете использовать хэши. Скорее всего, вы будете использовать AES или другие виды симметричного шифрования
— Laiv

Ответы:


15

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

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


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

3
@casablanca: существует множество систем, в которых вы «сбрасываете» свой пароль каждые X дней ....
— whatsisname

1
@casablanca: первая половина также точна, «сброс пароля» может иметь оба значения, терминология не такая уж жесткая. Нам нужно спросить у ОП, что именно они имели в виду.
— Док Браун

12

Ответ прост: безопасная система не знает, похожи ли они.

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

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

В целом, каждый из этих методов снижает безопасность паролей.

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

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

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


7

Если пароли хранятся в хэше, как компьютер узнает, что ваш пароль похож на последний, если вы попытаетесь сбросить пароль? Разве два пароля не будут совершенно разными, поскольку один хешируется и не может быть восстановлен?

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


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

Это очень быстро взорвется с точки зрения обработки, требующей только самых коротких паролей. Поэтому я не верю, что это настоящая практика.
— Мартин Маат

Я работал в одном месте довольно долго, и когда я оставил свой пароль, был supersecurepassword39. (Только последние две цифры верны). Очевидно, что пароль начинается или заканчивается цифрой, чтобы увидеть, использовался ли предыдущий номер.
— gnasher729

@MartinMaat Будет ли это хотя? Вы можете обнаружить, скажем, добавление или увеличение числа путем исключения символов один за другим из исходного пароля. Т.е. для «пароля» вы хэшируете «assword» (хи-хи), «pssword», «pasword» и т. Д. Вы можете даже избежать использования более слабых вариантов для них из-за дополнительной сложности, связанной с попыткой 256 перестановок каждого из них. если вам случится перебором второго хэша. (Более того, если вы храните их в случайном порядке, и вы не знаете, какой персонаж был выбран в каком-либо, тогда это 256 * N для каждого.)
— millimoose

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

2

Другим примером является то, что ваша система хеширует некоторые характерные подмножества вашего пароля и сохраняет эти хеш-коды, чтобы проверить, соответствует ли подмножества нового пароля любому из старых, а именно: пароль: «Admin2018» & subset: «Admin» = не может ввести «Admin2019» как новый.


1

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.