Оптимальная временная длина пароля для хэша SHA - PullRequest
2 голосов
/ 01 апреля 2009

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

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

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

Ответы [ 7 ]

1 голос
/ 01 апреля 2009

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

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

1 голос
/ 01 апреля 2009

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

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

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

0 голосов
/ 01 апреля 2009

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

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

0 голосов
/ 01 апреля 2009

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

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

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

0 голосов
/ 01 апреля 2009

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

0 голосов
/ 01 апреля 2009

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

0 голосов
/ 01 апреля 2009

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

...