Оптимальная длина временного пароля для хэша SHA

При создании механизма «забытого пароля» мы можем захотеть создать временный пароль для пользователя, который хранится с использованием SHA1 (не стесняйтесь предлагать другой механизм криптографии C#).

Как долго мы должны сделать временный пароль? Слишком коротко, это может быть грубая сила. Слишком длинная и ненужная длина является избыточной, поскольку строка все равно хэшируется? (Поскольку строка из 20 и 50 символов в любом случае приводит к хешу одинаковой длины)

Обновление
Извините, если ввел в заблуждение. Конечно, мы можем выбрать число из воздуха, но мне интересно, есть ли веская математическая причина выбрать 13, а не 12.


person Dead account    schedule 01.04.2009    source источник


Ответы (7)


Я думаю, что это хороший совет относительно временных паролей:

Полное руководство по аутентификации веб-сайтов на основе форм

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

person meandmycode    schedule 01.04.2009

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

Просто из-за того, что он генерируется случайным образом, он, вероятно, будет более безопасным и более сложным для грубой силы, чем что-либо, выбранное вашими пользователями. Люди выбирают глупые пароли, такие как myspace1, stackoverflow1, 12341234 и т. д.

person Macha    schedule 01.04.2009

Если пароль состоит из буквенно-цифровых символов, у вас есть только около 6 бит полезных данных на символ, и поэтому вы ошибаетесь, говоря, что нет смысла делать пароль длиннее 20 символов.

person sharptooth    schedule 01.04.2009

Похоже, вы беспокоитесь о том, чтобы сделать временный пароль более надежным, чем пароль пользователя ... когда на самом деле что-то вроде 10-символьного base-64 (или аналогичного - знаки препинания и т. д.) будет очень трудно взломать и намного сильнее чем пароль, который сгенерирует пользователь....

person Marc Gravell    schedule 01.04.2009

Сделайте его также переменного размера (скажем, 8-12 символов), что затруднит грубую силу ... если злоумышленник знает, что вы возвращаете пароль с символом X, все, что им нужно сделать, это попробовать все пароли с N ... предполагая N велико, это будет непрактично, но изменение размера N, по крайней мере, усложнит им задачу.

person TofuBeer    schedule 01.04.2009

Стив Гибсон создал генератор паролей сверхвысокого уровня безопасности.
На этой странице он генерирует 3 разных пароля при отображении каждой страницы:

  • 64 случайных шестнадцатеричных символа (0-9 и A-F)
  • 63 случайных печатных символа ASCII
  • 63 случайных буквенно-цифровых символа (a-z, A-Z, 0-9)

Он также объясняет причины этого. Приятно читать. Надеюсь это поможет.

person RuudKok    schedule 01.04.2009

Используйте любую длину, указанную на вашем сайте, как рекомендованную для пользователей. При создании случайной строки символов base64 я бы спокойно спал ночью с паролем из 8 символов. Но, конечно, я бы ограничил попытки входа в систему до одного раза в X секунд и временно отключил учетную запись после Y неудачных попыток.

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

person snemarch    schedule 01.04.2009