Нужно ли вводить максимальную длину для паролей? - PullRequest
143 голосов
/ 19 сентября 2008

Я могу понять, что наложение минимальной длины на пароли имеет большой смысл (чтобы спасти пользователей от себя), но мой банк требует, чтобы пароли были длиной от 6 до 8 символов, и я начал задаваться вопросом ...

  • Разве это не облегчит атаки грубой силы? (Плохо)
  • Означает ли это, что мой пароль хранится в незашифрованном виде? (Плохо)

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

Ответы [ 20 ]

179 голосов
/ 19 сентября 2008

Пароли хэшируются до 32, 40, 128 любой длины. Единственная причина минимальной длины состоит в том, чтобы предотвратить легкое угадывание паролей. Для максимальной длины нет цели.

Обязательное XKCD , объясняющее, почему вы оказываете медвежью услугу своему пользователю, если вы устанавливаете максимальную длину:

The obligatory XKCD

69 голосов
/ 19 сентября 2008

Максимальная длина, указанная в поле пароля, должна читаться как ПРЕДУПРЕЖДЕНИЕ О БЕЗОПАСНОСТИ : Любой здравомыслящий, заботящийся о безопасности пользователь должен предполагать худшее и ожидать, что этот сайт хранит ваш пароль буквально (т.е. не хэшируется, как объяснил epochwolf).

В таком случае: (а) по возможности избегайте использования этого сайта как чумы [они, очевидно, знают о безопасности чокнутые] (б) если вы должны использовать сайт, убедитесь, что ваш пароль уникален - в отличие от любого пароля, который вы используете в другом месте.

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

[Внутренне, конечно, ваш код может обрабатывать только первые 256/1028 / 2k / 4k (независимо от) байтов как «значимые», чтобы избежать взлома гигантских паролей.]

47 голосов
/ 19 сентября 2008

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

Отправитель может попытаться дать вам такой длинный пароль, что это приведет к отказу в обслуживании для других людей. Например, если пароль составляет 1 ГБ данных, и вы тратите все свое время на его принятие, пока не закончится память. Теперь предположим, что этот человек посылает вам этот пароль столько раз, сколько вы готовы принять. Если вы не будете осторожны с другими параметрами, это может привести к DoS-атаке.

Установление верхней границы для чего-то вроде 256 символов кажется слишком щедрым по сегодняшним стандартам.

21 голосов
/ 19 сентября 2008

Во-первых, не думайте, что в банках работают хорошие специалисты по ИТ-безопасности. Много не .

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

11 голосов
/ 13 мая 2013

Максимальная длина пароля в настоящее время не поддерживается в OWASP Authentication Cheat Sheet

https://www.owasp.org/index.php/Authentication_Cheat_Sheet

Ссылаясь на весь абзац:

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

Минимальная длина паролей должна применяться приложением. Пароли короче 10 символов считаются слабыми ([1]). Хотя применение минимальной длины может вызывать проблемы с запоминанием паролей у некоторых пользователей, приложения должны побуждать их устанавливать парольные фразы (предложения или комбинации слов), которые могут быть намного длиннее, чем типичные пароли, и при этом намного легче запомнить.

Максимальная длина пароля не должна быть установлена ​​слишком низкой, так как это помешает пользователям создавать парольные фразы. Типичная максимальная длина составляет 128 символов. Парольные фразы длиной менее 20 символов обычно считаются слабыми, если они состоят только из строчных латинских символов. Каждый персонаж считается !!

Убедитесь, что каждый символ, который вводит пользователь, действительно включен в пароль. Мы видели системы, которые усекают пароль на длину, меньшую, чем та, которую предоставил пользователь (например, усекают до 15 символов, когда они вводят 20). Обычно это делается путем установки длины ВСЕХ полей ввода пароля равной длине максимальной длины пароля. Это особенно важно, если максимальная длина пароля короткая, например, 20-30 символов.

9 голосов
/ 19 сентября 2008

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

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

4 голосов
/ 08 сентября 2012

Одна потенциально допустимая причина для наложения некоторой максимальной длины пароля состоит в том, что процесс хеширования (из-за использования функции медленного хеширования, такой как bcrypt) занимает слишком много времени; что-то, что может быть использовано для выполнения атаки DOS на сервер.

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

3 голосов
/ 19 сентября 2008

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

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

2 голосов
/ 19 сентября 2008

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

1 голос
/ 19 сентября 2008

Мой банк тоже это делает. Раньше было разрешено использовать любой пароль, а у меня был 20-значный. Однажды я изменил его, и вот, это дало мне максимум 8, и я вырезал не алфавитно-цифровые символы, которые были в моем старом пароле. Не имеет никакого смысла для меня.

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

Решение для смарт-карт не подошло бы мне. У меня уже слишком много карт, как есть ... Мне не нужен другой трюк.

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