Существуют ли веские причины для запрета символов и ограничения длины паролей?

39

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

Есть ли веские причины для установки верхней длины или исключения символов в паролях?

Крис
источник
26
Конечно! Это позволяет легко угадывать пароли людей! : P
РазочарованныйWithFormsDesigner
4
Мы говорим о действительных «технических» причинах или о «деловых» причинах?
Мартин Йорк,
1
@Martin: я думал технический, но я думаю, что либо.
Крис
11
@JYelton Почему тебя волнует исходная длина пароля? Хеш всегда будет одного размера. Я, конечно, надеюсь, что вы не храните их в открытом виде ...
Pewpewarrows

Ответы:

27

нет

Нет веских причин.

РЕДАКТИРОВАТЬ: Я не могу доказать, что нет веских причин, потому что нельзя доказать отрицательный. Я не могу придумать веских причин для этого - как указывали другие, хэш будет одинакового размера независимо от размера ввода, а удаление допустимых символов (из контекста вопроса) просто уменьшает пространство состояний. Ответ кажется очевидным: нет веских причин. Может быть много причин, которые звучат хорошо или кажутся хорошими, но это не так. Если бы они были, кто-то уже разместил бы их здесь, или если бы не здесь, то, конечно, на security.stackexchange.com, и этот ответ не был бы так сильно поддержан.

Стивен А. Лоу
источник
3
Я согласен, но комментарий Киссаки о кодировке действителен. Некоторые стеки / программисты просто не могут получить правильную кодировку, потому что ограничение ASCII - дешевый хак, чтобы заставить его работать.
edA-qa mort-ora-y
10
Не могли бы вы хотя бы попытаться уточнить? Либо вы не знаете этого по факту, либо у вас есть основания полагать, что общие / существующие причины не являются действительными. Чтобы дать вам преимущество сомнения и предположить последнее, вы должны объяснить, почему эти причины не обоснованы.
Aaronaught
8
-1 - Я могу придумать несколько веских причин для ограничения паролей заданным набором символов. Аналогичным образом, вам нужно помнить о необходимости поддерживать пароли тонального набора, а также пароли, которые вы вводите с клавиатуры.
rjzii
9
-1. Нет оправдания, только мнение. Если вы собираетесь сделать общее заявление, подкрепите его.
Майкл К
4
Сейчас это обсуждается на нашем мета-дискуссионном сайте : было бы полезно понять, почему ответ из одного слова так популярен, и что мы можем сделать, чтобы улучшить качество таких ответов.
25

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

Кто-то может сказать: «Люди легче забудут длинные пароли», но это действительно глупое утверждение, и оно не доходит до сути.

Что касается символов, если вы знаете о возможных проблемах кодирования с передачей и / или переносом данных в будущем (например, вы переключитесь с ASCII на UTF-8 через 2 года), позволяя использовать большее количество символов только для надежности паролей.

Kissaki
источник
4
Учитывая накладные расходы любой современной длины протокола, это не может быть хорошей причиной - кроме высокого предела, такого как 1 КБ, просто для предотвращения определенных атак / бессмысленности.
edA-qa mort-ora-y
3
Ограничение времени выполнения хеширования вообще плохо. Чем больше времени требуется для вычисления хэша, тем больше времени требуется для его перебора.
tdammers
Хотя это правильно, это всегда компромисс. Вы не хотите всегда вычислять лучший хэш, который занимает больше всего времени. Отсюда асимметричное рукопожатие против симметричного потока данных в VPN и т. Д.
Киссаки
17

Да , есть причина для специальных символов.

Запрещение специальных символов - это скорее вопрос удобства использования, нежели безопасность. Прежде всего, они могут быть изуродованы проблемами кодирования. Во-вторых, даже если вы гарантируете, что всегда будете использовать одну и ту же кодировку, все еще остается проблема устройства ввода. Вы будете зависеть от полной клавиатуры (что исключает большинство мобильных устройств), с той же раскладкой клавиатуры. В дальнейшем различия не только между языками, но и между операционными системами, макеты для Windows, Linux и OSX могут немного отличаться. Так что я вижу хороший повод , чтобы не допустить пароль , как: √Ω≈ç∫∞§…¬å∑±.

Vartec
источник
3
если вы не предоставляете пароль своим пользователям, то есть, если они сами вводят пароль, то если они решат использовать какой-то странный математический символ, это действительно их дело. теперь я согласен с проблемой кодирования, хотя считаю, что это скорее оправдание для того, чтобы пройти ниже некомпетентности радара, чем реальная веская причина для произвольного предотвращения определенных символов.
Ньютопия
2
@new: это не их дело. Если они выстрелят себе в ногу, они все равно будут воспринимать проблему с вашим приложением и позвонят в вашу поддержку.
Vartec
7
@Newtopian: я ненавижу, когда меня, как пользователя, ограничивают по причине невежества (например, невозможности указать «+» в моем адресе электронной почты). Однако иногда полезно не давать пользователям много веревки, с помощью которой они могут повеситься. Я думаю, что это такой случай. Речь идет не о «произвольном» предотвращении определенных символов.
Зано
1
То есть вы выступаете за то, что греки, арабы, китайцы и другие используют US-ASCII?
10
@ l0: нет, я выступаю за то, чтобы они использовали обычные, часто используемые символы на своих языках, а не некоторые специальные символы, которые могут отсутствовать в некоторых макетах.
vartec
13

Несколько лет назад в мире безопасности произошел спор, когда клиенты Chase обнаружили, что их пароли не чувствительны к регистру. Оказалось, что их веб-страница была всего лишь интерфейсом к какой-то 30-летней бэкэнд-системе OS / 400, которая имела техническое ограничение, которое игнорировало случай. Исправление этого, очевидно, обойдется в миллионы долларов.

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

BlueRaja - Дэнни Пфлугхофт
источник
1
поскольку это единственная веская причина для ограничения пароля каким-либо образом ... только в том случае, если базовая система будет поддерживать такие ограничения в первую очередь.
Ньютопия
8

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

Грег Джексон
источник
1
Я вижу сокращение количества обращений в службу поддержки как valid Business reason(лично я не верю, что есть корреляция)
Мартин Йорк,
2
Ну, есть и другие способы сброса паролей или обучения пользователей тому, как выбирать достаточно сложные пароли, которые легко запомнить. Мои последние несколько паролей на работе были> 25 символов, и у меня не было проблем с их запоминанием. Кроме того, по-видимому, люди, которые испытывают проблемы с запоминанием своих длинных паролей, все равно будут выбирать более короткие пароли, хотя я понятия не имею, как часто это действительно так. Сокращение количества обращений в службу поддержки на первый взгляд кажется действительной деловой причиной, но все же паршивая причина ограничивать длину пароля.
Грег Джексон,
1
Я думаю, что мои (и многие люди) сочтут, что точно набрать (а не просто запомнить) 25 символов, не видя результата, почти невозможно. Я до сих пор исправил 5 опечаток при наборе этого!
Джерри
Ну, помнить не то же самое, что печатать. Запоминать длинные пароли очень легко, если вы знаете, как их выбрать; просто выбирайте строки из историй или пьес, или частей стихов или текстов песен. Пока вы меняете одну или две вещи там (преднамеренные опечатки, меняете одно слово на другое, которое походит на это или означает то же самое, и т. Д.), Это довольно просто и чрезвычайно безопасно. Правда, печатать его может быть сложнее, но для банков нет оправдания заставлять вас печатать менее 8/10/12 символов.
Грег Джексон
попробуйте ввести этот 25-буквенный пароль на мобильном устройстве
Lie Ryan
7

Не все устройства ввода (в аппаратном плане) часто имеют все символы, которые есть на полноценной клавиатуре, или аналогично. Если вы не используете менеджер паролей, вы можете столкнуться с проблемами при вводе такого пароля, не так ли? И Unicode все еще далек (далеко) от стандарта.

ладья
источник
1
Обычно люди, вводящие пароли, будут использовать одно и то же оборудование (или класс оборудования) для их создания и аутентификации. Я не вижу, как это аргумент в ограничении наборов символов или длины. Что касается Unicode, при создании серверной части (часть аутентификации), почему вы бы ограничивали размер или набор символов? любая система, требующая ввода пароля, должна иметь возможность контролировать, как этот пароль вводится в систему, поэтому, если вам требуется Unicode для вашего клиента, пусть будет так!
Newtopian
@Newtopian Вы предполагаете, что вам не нужно взаимодействовать с устаревшими системами или системами вне вашего контроля.
grahamparks
1
они попросили хорошую причину, это не хорошая причина
2
@Jarrod - Неспособность ввести пароль - не веская причина ?! В любом случае, я не видел, чтобы ты придумал лучший вариант (или вообще какой-нибудь).
Ладья
3
@Rook вы не должны были использовать эти символы , если вы знали , что вы не могли бы забрать их из устройства, что не делает его хорошим оснований ограничивать их для всех, это делает его хорошим основанием для вас лично не использовать их.
7

Есть ли веские причины для установки верхней длины или исключения символов в паролях?

Я собираюсь сделать предположение и сказать, что некоторые из этих ограничений связаны с фильтрацией персонажей на их веб-сайте ( & < > #) для защиты от хакеров. В то время как другие являются идеями с головокружительными идеями, которые приходят из комитетов заостренных волосатых начальников.

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

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

При этом пришло время сменить пароль в офисе. У них такие сумасшедшие ограничения, что, как я полагаю, потребуется около полдня, чтобы найти пароль, приемлемый для системы: как минимум 2 буквы в верхнем регистре, как минимум 2 буквы в нижнем регистре, как минимум 2 цифры (которые не могут быть +/- 1 из предыдущего пароля), по крайней мере 2 не алфавитных / нецифровых символа, не может совпадать ни с одним из последних 24 паролей, не может содержать строку (вперед или назад), которая является словом (длиной 3 или более букв) в английском ( также пару других языков, которые я не имею разрешения знать). Я думаю, что минимальная длина составляет 10-11 символов.

Tangurena
источник
Да, я видел этих персонажей в списке нет.
Крис
5
Простая атака: найдите заметки под клавиатурой, потому что никто не может вспомнить их пароль.
Джеффо
@ Джефф, это правильно. Если я оставляю свою записную книжку дома, пароли слишком сложны для запоминания, поэтому я не могу войти в систему. А в системе начисления заработной платы я добавляю имя пользователя и пароль как часть закладки.
Tangurena
«не может содержать ни одной строки (вперед или назад), которая представляет собой слово (длиной 3 или более букв) в английском» Это было то, что меня достало. Атаки по словарю не эффективны, если пароль содержит целые слова, а скорее, если весь пароль состоит только из полных слов ... Ну, на самом деле одно полное слово или очень распространенные фразы. Наиболее надежные пароли, которые практично использовать без записи, - это парольные фразы из книг, стихов, текстов песен и т. Д. - измените несколько букв на цифры, напишите что-нибудь неправильно и используйте заглавные буквы непредсказуемо, и никто не собирается взламывать этот пароль.
Грег Джексон
1
Фильтрация символов - верный признак непроверенного мусорного кода на заднем плане. Разработчики должны научиться избегать строк.
10
5

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

Например, некоторые банки со своими веб-сайтами в интернет-банке запрашивают конкретные символы из пароля, и вы выбираете соответствующие символы в раскрывающемся списке.

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

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

Меган Уокер
источник
1
Неужели (технические) люди все равно просто введут письмо?
Джерри
@Gerry - это поведение, специфичное для браузера, а не абсолютный стандарт, и он также зависит от знаний пользователя, чтобы сделать его работоспособным.
Джон Хопкинс
Мой банк использовал всплывающий апплет клавиатуры по той же причине. Но это было слишком сложно для использования и получило много критики за то, что было недоступно (не работало для программ чтения с экрана, альтернативного ввода и т. Д.)
jqa
1
@Jon - я говорил техническим специалистам, и я не знаю ни одного браузера Windows, который бы не реализовывал хотя бы первое сопоставление символов, поскольку это стандартное поведение Windows - не могу говорить за Mac и * nix
Джерри,
1
@ Джерри Браузер на моем телефоне Android не позволяет этого. Я ожидаю, что это то же самое для многих мобильных устройств.
RoundTower
2

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

Кстати, длинные пароли - это не пароли, а парольные фразы. Ваш средний пользователь не может вспомнить 2Z8d!% G # x, но он может вспомнить «имя моего питомца - собака fido». Более длинный текст труднее взломать с помощью грубой силы, и гораздо менее вероятно, что он будет написан на примечании, прикрепленном к экрану.

JQA
источник
См. Также xkcd.com/936
сержут
0

Когда люди печатают, они делают ошибки, которые называются «опечатки». Обычно люди видят свои ошибки и исправляют их. Для ввода пароля обычно вы не видите, что набрали, и поэтому не можете исправить свои опечатки. Вы делаете ошибки, не осознавая этого, отправляя свой пароль, и он возвращается как «неверный пароль». Тогда ты попробуй еще раз. Тогда ты попробуй еще раз.

Вы можете думать об этом как о "3 небольших маленьких опечатках, и тогда вы неотличимы от атаки грубой силы". Как системы защищаются от атак методом перебора? Явный ответ « Слишком много попыток, уходите, вы не сможете войти, даже если вы все сделаете правильно »? Экспоненциально увеличивающиеся задержки при вводе пароля, приводящие к тайм-аутам браузера, когда задержка слишком велика, что делает невозможным повторный вход в систему? Подходы бывают разные, но в хорошо продуманной системе всегда есть следствие.

Вы можете думать об этом как «3 незначительных опечатки, и тогда вы получаете какой-то отказ в обслуживании».

Поскольку длина пароля увеличивает риск опечаток (и, следовательно, риск запрета доступа авторизованного лица) увеличивается. Все, что длиннее, чем около 20 символов, будет часто вводиться с ошибками (если пользователь не умен и не ленив и не хранит свой пароль где-то, чтобы они могли «копировать и вставлять», не беспокоясь о опечатках, как хороший текстовый файл на рабочем столе, называемый « пароли»). .txt ").

Brendan
источник