Нужно ли вводить максимальную длину для паролей?

162

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

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

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

nickf
источник
16
Почти наверняка существует политика «три удара и ты вне игры», которая устраняет угрозу атаки грубой силой.
Стю Томпсон
23
Этому нет оправдания для устаревших систем, таких как современные веб-сайты.
Мераз
7
Я не думаю, что ответ - чисто ЭТО. Минимальный размер (6) и максимальный предел попытки «вероятно» устранят дикие догадки. Я предполагаю, что максимальный размер (8) должен ограничивать количество вызовов (и, следовательно, стоимость) поддержки для «Ой, я забыл свой код» или «Я быстро набираю код» или «Я неправильно набираю один символ» и т.д. В дополнение к бумаге, на которой вы пишете пароль, если не можете его вспомнить ..
позвоните мне Стиву
17
В университете, в который я зачислен, действуют безумно глупые правила для паролей: только 8 символов, как минимум 1 номер, но не в начале или конце пароля, нужны символы из более чем 2 верхних рядов клавиатуры и т. Д. И т. Д. В конце они облегчают брутфорс, имея эти правила. Я понимаю, что ты не такой глупый, но, пожалуйста, не делай глупых правил, как это! (Просто нужно было вытащить его из моей системы :))
cwap
17
@call Что ж, если вы введете максимальную длину по этой причине, то вы получите от меня звонки «Я забыл свой пароль» , потому что все мои уникальные пароли для сайта все длинные, и ограничение меня до 12 символов - верный способ гарантировать, что я буду не помню это.
Роман Старков

Ответы:

193

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

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

Обязательный XKCD

epochwolf
источник
6
Возможно, банк решит ограничить пароль, потому что в банкоматах вы не можете ввести более, скажем, 8 символов.
Андре Шалелла
11
ну, по крайней мере, в банкоматах, если вы попробуете грубую атаку, она съест вашу карту. Я имею в виду только пароль для входа в онлайн.
Nickf
39
К сожалению, это предполагает, что пароли всегда хешируются. Максимальная длина паролей является признаком паролей, хранящихся в открытом тексте.
Джевон
14
Вздох, даже в PayPal, «правильный скобы батареи лошади» на 8 символов выше их <censored> максимальной длины ... headdesk
Роман Старков
3
@kleinfreund, потому что, если он хэширован, длина пароля для них не будет иметь значения (хеш-функции преобразуют строку любой длины в фиксированную длину).
Вики Чижвани
75

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

В том, что это так:

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

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

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

tardate
источник
17
Я также отправляю таким веб-сайтам стандартное электронное письмо, в котором говорится, что они заставили меня использовать более короткий и менее безопасный пароль, который я также могу использовать на каждом веб-сайте, который налагает такие глупые ограничения. Это позволяет им понять, что это проблема, а также может дать Джо Кодеру некоторые рычаги воздействия, чтобы показать его руководителям: свидетельство того, что пользователи действительно плохо относятся к сайту в результате этого.
Роман Старков
3
Я не уверен, что вы должны предполагать, что максимальный пароль означает, что они хранят простые текстовые пароли. Иногда они обрезают входные данные и просто передают первые символы x в хэширование (). (Способ проверки состоит в том, чтобы установить пароль за предел, затем попытайтесь войти с изменением символов пароля сверх максимальной длины).
Бен
5
@benc, конечно, это возможно, но суть в том, что вы, как пользователь, не можете знать, чем они занимаются. Максимальная длина (особенно короткая) является предупреждающим знаком, и я думаю, что лучше предположить худшее (или связаться с провайдером, чтобы он подтвердил).
Поздравление с
1
Пожалуйста, дополните. Этот ответ - просто утверждение.
kleinfreund
1
Максимальный пароль не обязательно означает, что он хранится в виде простого текста; это может быть по техническим причинам, например, bcrypt допускает пароли длиной до 72 символов.
emorris
58

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

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

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

Джейсон Дагит
источник
35
Вы по-прежнему можете отправлять 1 ГБ данных с максимальным пределом. Программное обеспечение, делающее ограничение, почти всегда отстает от веб-сервера.
epochwolf
6
Вы все еще можете отбросить все, кроме первых 256 символов, прежде чем делать что-то интенсивное в вычислительном отношении. Выполнение шага sha на 1 ГБ данных займет намного больше времени, чем тот же хэш на 256 символов.
rcreswick
2
@Eyal: все, что происходит на стороне клиента веб-приложения, по своей сути не заслуживает доверия; таким образом, хеш становится эквивалентом пароля, что делает его бесполезным упражнением. (веб-браузер, вероятно, не примет ввод текста объемом 1 ГБ, а пользовательский клиент может отправить строку размером 1 ГБ в поле формы «thisisthehashedpassword»)
Писквор покинул здание
4
@Piskvor: Но все равно нет способа предотвратить строку размером 1 ГБ. Пользователь всегда может запросить example.com/?password=abcabcabcabc ... и сделать свой запрос настолько большим, насколько он хочет. Стандартный DoS.
Eyal
4
@Piskvor и Eyal, к счастью, Apache и IIS (и, вероятно, другие зрелые серверы) ограничивают длину полей, передаваемых через URL: boutell.com/newfaq/misc/urllength.html
sampablokuper
21

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

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

Sparr
источник
Согласовано! Посмотрите на эту серию ошибок безопасности онлайн-доступа британского банка за последние несколько лет ...
Стю Томпсон,
6
Я уже использую разные пароли на каждом сайте через схему, которая позволяет мне запомнить их все, но они все довольно длинные. Единственные веб-сайты, чьи пароли, которые я пишу на заметках, - это пароли, которые накладывают ограничения на максимальную длину и, таким образом, заставляют меня отказаться от моего предпочтительного, но уникального пароля ...
Роман Старков
@romkyns Я так понимаю, ваша схема не использует символы? Когда-то у меня была такая схема, которая производила короткие пароли, которые трудно переборить, но мне пришлось отказаться от нее, когда 10-20% сайтов, которые я использовал, запрещали использование общих специальных символов.
Спарр
никаких специальных символов, нет, но он всегда добавляет цифры и прописные буквы, потому что я знал, что некоторые сайты требуют этого. Жаль, что я не знал о максимальных пределах длины, когда придумал это ... Но (более простые) схемы, которые я придумал для близких родственников, до сих пор отлично работали!
Роман Старков
1
@romkyns другие проблемы с такими схемами: сайты, которые делятся паролями. Если ваша схема похожа на nameofwebsitefO0 (googlefO0 yahoofO0 и т. Д.), То как вы помните, что вы должны использовать «yahoofO0» на flickr.com или stackoverflowfO0 на askubuntu.com? сайты, срок действия паролей которых истекает. тогда вам нужно расширить схему, чтобы включить часть, которая может измениться. но это не сработает, если правило истечения проверяет наличие подстрок.
Спарр
13

Установка максимальной длины пароля менее 128 символов теперь не рекомендуется в OWASP Authentication Cheat Sheet

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

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

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

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

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

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

kravietz
источник
11
Этот источник не препятствует ограничениям максимальной длины пароля, он не поощряет низкие (менее 128 символов) ограничения максимальной длины пароля.
Матфея
9

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

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

mbac32768
источник
1
Хотя понятно, что устаревшие системы иногда должны диктовать дизайн. По возможности, они НЕ должны на это влиять. Последнее, что вам нужно в новой системе, - это политика безопасности, разработанная до того, как современные атаки безопасности стали обычным явлением. Или, что еще хуже, более новое программное обеспечение, но в первую очередь неправильно разработанное. Существующая корпоративная система может использовать HTTP, но это неоправданно, чтобы не использовать SSL в новой системе или расширении. Аналогичным образом, политики паролей не должны оставаться уязвимыми только потому, что парни из LAST сделали это неправильно. И если оставить их, лучше провести ОГРОМНОЕ исследование затрат и выгод.
Katastic Voyage
6

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

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

AardvarkSoup
источник
4

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

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

Лукас Оман
источник
3

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

DrStalker
источник
1
Да, должна быть максимальная длина ввода, но она определенно не должна быть <64. Максимальная длина 8 или 12 просто смешна.
Дэн Бешард
2

Не обращайте внимания на людей, говорящих не проверять длинные пароли. Овасп буквально говорит, что 128 символов должно быть достаточно. Просто чтобы дать достаточное пространство для дыхания, вы можете дать чуть больше, скажем, 300, 250, 500, если захотите.

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

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

...

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

CommonSenseCode
источник
Не имеет отношения к обсуждению. Вопрос в том, есть ли какая-то польза от ограничения длины, а не в том, что 128 достаточно.
Викки
1

Хранилище дешево, зачем ограничивать длину пароля. Даже если вы шифруете пароль, а не просто хешируете его, 64-символьная строка не займет намного больше, чем 6-символьная строка для шифрования.

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

LizB
источник
9
Если нет веских причин, пароли должны хэшироваться. Хэши приводят к строкам фиксированной длины. Здесь нет аргумента пробела, если только система не хранит действительный пароль, что, возможно, является ужасной идеей.
Стю Томпсон
8
Шифрование паролей - ужасная идея. Недобросовестный сотрудник - это все, что нужно для того, чтобы вы утекли тысячи паролей. Спасите неприятности, никогда не храня их во-первых.
Роман Старков
1

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

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

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

Винсент Макнабб
источник
Они вырезают важное пространство ключей, которое удлиняет время для атак грубой силы, когда (и я имею в виду, КОГДА) их база данных хэшей украдена (при условии, что они даже солят / хешируют / растягивают, что, я уверен, они не делают). Время менять банки.
Крис Гомес
1

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

пользователь
источник
1

Старайтесь не вводить никаких ограничений, если это необходимо. Имейте в виду: это может и понадобится во многих различных случаях. Работа с устаревшими системами является одной из этих причин. Убедитесь, что вы хорошо тестировали случай очень длинных паролей (может ли ваша система работать с 10 МБ длинных паролей?). Вы можете столкнуться с проблемами отказа в обслуживании (DoS), потому что используемые вами функции определения ключа (KDF) (обычно PBKDF2, bcrypt, scrypt) потребуют много времени и ресурсов. Пример из реальной жизни: http://arstechnica.com/security/2013/09/long-passwords-are-good-but-too-much-length-can-be-bad-for-security/

Марек Пучальский
источник
0

Должна ли быть максимальная длина? Это очень любопытная тема в ИТ, так как более длинные пароли, как правило, труднее запомнить, и, следовательно, они с большей вероятностью будут записаны (БОЛЬШОЕ нет-нет по очевидным причинам). Более длинные пароли также имеют тенденцию забываться больше, что, хотя и не обязательно представляет угрозу безопасности, может привести к административным трудностям, снижению производительности и т. Д. Администраторы, которые считают, что эти проблемы являются неотложными, могут навязать паролям максимальную длину.

Я лично верю в этом конкретном вопросе, каждому пользователю свое. Если вы думаете, что можете вспомнить 40-символьный пароль, то тем более силен для вас!

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

tekiegreg
источник
Люди могут легко вспомнить любимую песню, лирику, стих из Библии или другое высказывание. Они очень длинные по сравнению с обычным паролем. Я только что проверил один и получил 79 символов! (Конечно, вероятность ошибки возрастает, чем дольше парольная фраза. Еще хуже, когда на веб-сайте STUPID не отображается последний символ, введенный вами в поле пароля.)
Katastic Voyage
0

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

Вероятно, лучше всего пойти на довольно большую (10+) минимальную длину, ограничив бесполезную длину.

benPearce
источник
0

Устаревшие системы (уже упоминавшиеся) или взаимодействие с системами сторонних производителей могут потребовать ограничения в 8 символов. Это также может быть ошибочной попыткой спасти пользователей от самих себя. Такое ограничение приведет к слишком большому количеству паролей pssw0rd1, pssw0rd2 и т. Д. В системе.

цыпленок
источник
0

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

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

Дайджест-аутентификация предназначена для аутентификации по незашифрованным каналам. При использовании SSL или какого-либо другого полноканального шифрования нет необходимости использовать механизмы дайджест-аутентификации, а это означает, что пароли можно хранить хэшированными (так как пароли могут быть отправлены в незашифрованном виде по сети (для заданного значения safe).

Крис Дж
источник
-4

Просто 8 символов длинных паролей звучат просто неправильно. Если должен быть предел, то, по крайней мере, 20 символов лучше.

user17000
источник
3
Но в том-то и дело, что вообще не должно быть предела.
Люк Стивенсон
-4

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

Джош Хант
источник
9
Пароли должны быть хэшированы ... И размер базы данных не будет проблемой, если пароль будет хэширован.
epochwolf
4
@epochwolf - я могу вспомнить одну причину, по которой пароли не всегда должны хэшироваться (потому что я обнаружил это сам сегодня): пароль, который необходимо передать третьей стороне от имени пользователя, не может быть сохранен как хешированный стоимость. [Например, приложение, которое должно хранить учетные данные для отправки электронной почты через внешний домен.]
Кенни Эвитт,