Минимальная длина пароля для максимальной энтропии - PullRequest
4 голосов
/ 19 февраля 2011

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

Спасибо.

Ответы [ 4 ]

4 голосов
/ 19 февраля 2011

Хэш не увеличивает энтропию, он просто, так сказать, перегоняет его. Поскольку SHA256 выдает 256 битов вывода, если вы предоставите ему абсолютно непредсказуемый пароль (т. Е. Каждый бит ввода представляет один бит энтропии), то все, что за 256 бит ввода, будет более или менее потрачено впустую.

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

3 голосов
/ 20 февраля 2011

Я пришел примерно к тому же выводу, что и другие, но с другим обоснованием.

Вообще говоря, атака прообраз (грубая сила) на SHA-256 требует 2 ^ 256 оценок, независимо от длины пароля .Другими словами, хэш «пароля», длина которого составляет тысячи символов, все равно потребует в среднем 2 ^ 256 попыток дублирования.2 ^ 256 составляет около 1,2 х 10 ^ 77.Однако очень короткий пароль, где число возможностей меньше 2 ^ 256, даже легче взломать.

Порог проходит, когда число возможностей больше 2 ^ 256.

Если вы используете ISO 8859-1, который имеет 191 символ, существует 191 ^ n возможных случайных паролей длины n, где n - длина пароля.191 ^ 33 составляет около 1,9 x 10 ^ 75, а 191 ^ 34 - около 3,6 x 10 ^ 77, поэтому порог будет равен 33 символа .

Если вы используете простой ASCII,с 128 символами было бы 128 ^ n возможных случайных паролей длины n, где n - длина пароля.128 ^ 36 составляет около 7,2 x 10 ^ 75, а 128 ^ 37 - около 9,3 x 10 ^ 77, поэтому порог будет равен 36 символов .

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

Фактически, предположим, что вы использовали только символы az и 0-9, вы продолжите увеличивать надежность пароля до тех пор, пока ваш пароль не станет длиной 49 символов !(36 ^ 49 составляет примерно 1,8 x 10 ^ 76)

Надеюсь, этот ответ даст вам математическую основу для ответа на вопрос.

В качестве дополнительного примечания, если атака на день рождения (столкновение) былавозможно на SHA-256, теоретически это потребует только 2 ^ 128 оценок (в среднем), что составляет около 3,4 х 10 ^ 38.В этом случае пороговое значение для ISO 8859-1 будет составлять всего 16 символов (191 ^ 16 составляет около 3,1 x 10 ^ 36).К счастью, такая атака еще не была публично продемонстрирована.

Пожалуйста, смотрите статьи в Википедии о SHA-2 , атаках прообразом и атаках на день рождения .

3 голосов
/ 19 февраля 2011

SHA-256 имеет 256 бит, очевидно.Минимальная длина символа UTF-8 составляет один байт, т.е. 8 бит.Таким образом, любой пароль длиннее 256/8 = 32 символа гарантированно гарантированно с высокой вероятностью столкнется с более коротким.

Это то, что вы имели в виду?

1 голос
/ 19 февраля 2011

Я не думаю, что есть «эффективный» лимит. Пароль любой длины будет действителен, если он будет эффективно создан (обычные правила, без слов, смешанные цифры, буквы, регистры и символы). Лучше всего заставить пользователя следовать этим правилам, а не ограничивать длину. Но минимальная длина должна быть равна 8-10 символам, чтобы уберечь пользователей от самих себя.

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