Comments 62
ЗЫ. я умею в менеджеры паролей, но не всегда хочу.
- генераторы случайных парольных фраз вполне себе существуют.
- есть понятие "разумной безопасности", зачем мне защищать профиль хабра каким-нибудь pgp ключем?
- не сервиса забота решать насколько он мне дорог и чем мне его паролить.
- слабый рандом человека актуален только если у вас есть набор моих паролей или схема их генерации, иначе он не особо отличается от "слабого" рандома который возникает без использования истинного генератора случайных чисел. Типа да, вы можете в точности воспроизвести условия и получить тот же случайный пароль, но стоимость информации должна быть выше стоимости воспроизведения.
2. а причем тут профиль хабра? вы приводите пример парольной фразы, где даже на глаз видны проблемы с энтропией и утверждаете, что она надёжнее, чем пароль из 9 символов с разным регистром и спецсимволами.
3. это верно.
4. ага. люди почему-то верят что хорошо придумывают уникальные схемы придумывания паролей. в john the ripper из коробки идёт 68 схем мутаций паролей. ещё несколько сотен можно найти в интернете. много ли людей способны придумать это из головы? Попробовать пол сотни схем равносильно перебору ещё одного случайного символа в обычном случайном пароле из pwgen -s с точки зрения вычислительных ресурсов.
вот этого всего в исходном комменте не было, а было крайне спорное утверждение что данная конкретная фраза надёжнее чем данный конкретный пароль.
43BA08D9E85B328C5BE4244E0C98D1B22F571E3CA76D90F3205EDFD247FC141D — надёжный пароль?
А строка «azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz» из которой он был получен надёжна?
А атом «az» этой строки?
Я не особо понимаю как вы на глаз определяете энтропию.
Энтропию фразы я определяю на глаз
ну ок, это сильный навык.
qaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqa?
Да я не буду на глаз определять энтропию любой строки, ибо без привязки к алгоритму генерации оно не имеет смысл.
какой-нибудь алгоритм типа «строка длинной 1-100 символов из любых символов юникод» раз в тысячу лет выдаст вам ваше кваква. И что? Как это характеризует алгоритм генерации?
Почему вы не рассмотрели факторы, ограничивающие подбор? Например, сколько времени потребуется для подбора пароля из шести цифр с прогрессивным баном по времени? А если там ещё бан по IP и добавление факторов авторизации? А если там всегда молчаливо выдаётся false после третьего неверного ввода?
Ограничения подбора на боевом сервисе не избавляют от необходимости хранить пароли в виде непригодном для перебора за разумное время.
Тем не менее вопрос того, что исспользуемые метрики, в принципе, ничего не говорят о безопасности сервисов остаётся вполне актуальным.
Для подбора рандомых 6 цифр уйдет довольно много времени, а вот для «123456» ровно секунда, если не меньше.
Они говорят что пароль должен быть запоминаемым, а спецсимволы этому мешают по этому заставлять пользователей их использовать — плохо.
Что второй фактор это очень важно — а у вас всего +0.5 балла.
Ну и требования по подержке юникода (вплоть до эмодзи) и максимальная длина в минимум 64 символа.
Только это должна быть по-настоящему двухфакторная аутентификация, а не пародия на нее — двухэтапная, типа SMS.
Мы в своём сервисе попытались внедрить нормальную проверку стойкости пароля — через проверку энтропии пароля библиотекой zxcvbn (она есть на гитхабе для разных языков). Суровая правда жизни в том, что при требовании минимальной энтропии на уровне соответствующем 5 месяцам на брутфорс пароля (а это как раз чуть лучше рекомендаций этой статьи 8 случайных символов включая заглавные, цифры и спец.символы) — юзеры уже не в состоянии зарегистрироваться и жалуются в саппорт на "сломанную" регистрацию. Поэтому требования к энтропии пришлось понизить до уровня, на котором юзеры справлялись с установкой "сложного" пароля — а это 5 минут на брутфорс одним компом пароля, который не возьмёт словарная атака… такая "защита паролей" что есть, что её нет, разницы не видно. И это не смотря на то, что для хеширования паролей мы использовали современный Argon2, со скоростью менее 100/сек на одном сервере (ещё сильнее замедлять его нельзя, иначе мы создадим слишком лёгкую цель для DoS-атаки).
Беру к примеру 2 пароля:
AEZAKME#DoNoTPar5eThis#Zi1
A|9gqNih|KRS|V$Xd{T?@Dwdxs
По длине они одинаковые, но сложность того что со словарными словами он определяет как
24.42727 = 10 брутфорс + 1.69897 словарь + 4.95015 словарь + 1.69897 словарь + 4 брутфорс
а второго как
26 — брутфорс, тупо по количеству букв.
Если моя память мне не с кем не изменяет по хешу нельзя определить длину пароля и уж тем более его состав и места в которых начинаются словарные слова. Т.е. условный хакер подбирая этот пароль будет начинать с паролей длиной min, допустим 8 символов, и безыдейно перебирать их до длины max. Допустим для оптимизации мы сначала переберём все словарные пароли, после чего начнём перебор по алгоритму:
пробуем 1 символ в начале пароля + добиваем до длины словарными -> пробуем 2 символа в начале пароля + добиваем до длины словарными -> .(тут цикл перебирающий все варианты перестановок символов и слов для длины n). -> пробуем все пароли состоящие из спецсимволов -> увеличиваем проверяемую длину на 1 и начинаем сначала.
Т.е. уменьшение энтропии они получают из предположения что атакующему известен состав пароля? Или я чего-то не понимаю?
Упс. Написал -> перечитал -> дошло. В первом случае на оптимизированном алгоритме перебор закончится при параметрах (12 символов + 4 словарных слова) что быстрее чем тупой перебор 26 символов.
Простите, вопросов больше нет.
Вопрос скорее к авторам алгоритма. На мой взгляд у этой либы лучшее соотношение цена/качество для задачи оценки энтропии пароля — её достаточно просто использовать, и она учитывает достаточно много факторов, включая и словари, и совпадение с username/email, и разные комбинированные техники словарной атаки и брутфорса. Даже если она, на Ваш взгляд, неоправданно занизила энтропию первого пароля из нереалистичных предположений о том, что его брутфорс удачно угадает части для атаки по словарю, это не принципиально. Дело в том, что на пароле такой сложности брутфорс в любом случае невозможен, а вот в случае более коротких паролей сложность угадывания места в пароле где стоит атаковать по словарю намного ниже, и многие утилиты для брутфорса используют такие комбинированные атаки — что делает оценку zxcvbn для таких паролей не такой уж и заниженной, если вообще заниженной.
Генерировать пароли самостоятельно из соображений безопасности имеет смысл только при наличии возможности отправить их пользователю по безопасному каналу. При регистрации по email это ограничит регистрацию только теми пользователями, у которых настроена поддержка PGP. :)
И да, Вы правы — требование определённого уровня энтропии усложняет придумывание пароля пользователем до практически непреодолимого уровня. Но нет, это связано не с отсутствием чётких правил, а с тем, что придумать запоминающийся пароль с нужной энтропией очень сложно, практически невозможно. Если не брать парольные фразы, то в случае пароля символов на 8-10 требование энтропии прямо противоположно требованию запоминаемости пароля — случайные наборы символов сложно запомнить, а легко запоминаемые обычно не очень случайны, и хорошая библиотека обнаружит такую "не случайность" и учтёт её при расчёте энтропии.
По сути требование надёжного пароля с достаточной энтропией практически эквивалентно требованию либо использовать менеджер паролей либо сгенерировать и запомнить один-два хороших пароля и использовать их на всех сайтах. И оба варианта являются серьёзным препятствием при регистрации обычных юзеров.
По сути требование надёжного пароля с достаточной энтропией практически эквивалентно требованию либо использовать менеджер паролей либо сгенерировать и запомнить один-два хороших пароля и использовать их на всех сайтах.
Но как же парольные фразы? Для человека, который по какой-то причине не хочет или не может использовать менеджер паролей — это наилучший выход по критериям безопасности и запоминаемости. И получить нужную энтропию с ними просто, и дать рекомендации по выбору пароля — тоже.
По парольным фразам уже всё сказано в другой ветке.
Есть ещё конечно ваш довод что «есть сильное (хотя и ничем кроме интуиции не обоснованное) сомнение » — но против такого довода по определению нечего возразить.
Так я не спорю, что выбор парольной фразы для менеджера паролей — вполне неплохой вариант. Я лично предпочитаю для этого случайный пароль, но не потому, что стойкость парольной фразы может оказаться хуже, а просто потому, что этот пароль приходится набирать достаточно часто, и набрать 10 символов намного быстрее, чем парольную фразу — и не только потому, что фраза значительно длиннее, но и потому, что в фразе чаще будут допускаться опечатки, что ещё более затянет ввод из-за необходимости повторять его.
А вот без менеджера паролей фразы использовать вообще нет смысла, потому что не получится иметь уникальные пароли ко всем ресурсам (так, чтобы утечка моего пароля с одного-двух ресурсов не позволила выяснить пароли ко всем остальным).
А вот на счёт «А вот без менеджера паролей фразы использовать вообще нет смысла, потому что не получится иметь уникальные пароли ко всем ресурсам» — полный бред. Потому что это равнозначно «А вот без менеджера паролей паролями пользоваться вообще нет смысла, потому что не получится иметь уникальные пароли ко всем ресурсам». Ну чем, чем отличается запоминание нескольких парольных фраз от запоминания нескольких рандомных паролей? Ну, кроме того факта что фразы будет легче запомнить и они дадут большую защиту? Почему «не получится»? Какая непреодолимая сила помешает? Или наоборот — какая непреодолимая сила заставит пользователя иметь разные рандомные пароли если он не хочет их выдумывать и запоминать? И наконец, как вам удаётся не моргнув глазом утверждать что достоинства — это недостатки?
Ничем не отличается, в этом и суть. Несколько фраз можно запомнить, как и несколько паролей. Возможно, фраз можно запомнить немного больше, чем паролей. Но запомнить столько фраз, сколько нужно уникальных паролей — невозможно. Без менеджера паролей невозможно иметь действительно уникальные пароли ко всем ресурсам. А когда все пароли (кроме одного мастер-пароля) генерирует менеджер паролей — нет смысла в том, чтобы он генерировал парольные фразы, у них в этом случае нет никакого преимущества перед паролями, но, потенциально, есть недостатки.
Дальше не читал. Глупые и необоснованные правила, значит оценка полностью отфонарная, в лучшем случае она отображает «насколько неудобно пользоваться сервисом».
Ну нельзя, нельзя заставить человека сделать безопасный пароль. Если человеку пофигу — он при любом наборе правил создаст пароль, который легко подберётся, да ещё и на стикере запишет, и повесит на монитор. Я это видел много раз. «November$1» — больше 8 символов, большие и маленькие буквы, цифра, символ, не похож на логин, сервис строго придерживается требований, они заданы в явном виде, согласно haveibeenpwned.com/Passwords — не словарный. Итого, на сервисе с оценкой 11,5 по вашей шкале мы ввели пароль, который не просто слабый — он элементарный.
Элементарный, надо сказать, он только если известна схема генерации пароля.
Если в требованиях сайтах сказано «минимум один символ» — то у большинства пользователей он и будет ровно один. И да, обычно люди используют либо цифры + всё что попросил сайт, либо слово + всё что просит сайт. Итого, на данном сайте брутфорс чрезывачайно эффективен, если использовать подобные сочетания. А вот словарная фраза, если она не распространённая (типа «correct horse battery staple»), гораздо более эффективна. Вон выше привели библиотеку для рассчёта энтропии. Возьмём упомянутый «November$1» — согласно этой библиотеке получаем:
guess times:
100 / hour: 1 month (throttled online attack)
10 / second: 2 hours (unthrottled online attack)
10k / second: 8 seconds (offline attack, slow hash, many cores)
10B / second: less than a second (offline attack, fast hash, many cores)
То есть офлайн взлом возможен менее чем за секунду.
А теперь возьмём ужасный пароль «thisphraseisfromthelamp» — ни символов, ни цифр, ни больших букв — и внезапно
100 / hour: centuries (throttled online attack)
10 / second: centuries (unthrottled online attack)
10k / second: centuries (offline attack, slow hash, many cores)
10B / second: 1 year (offline attack, fast hash, many cores)
Даже при быстром оффлайн подборе — займёт около года.
Вот и выходит, что политика, получившая наивысший балл по критериям в статье не обеспечивает надёжных паролей, но при этом раздражает пользователей (а практика показывает, что зачастую раздражённый пользователь будет использовать как раз небезопасный пароль, лишь бы соответствовал требованиям). ¯\_(ツ)_/¯
Честно говоря, у меня есть сильное (хотя и ничем кроме интуиции не обоснованное) сомнение в эффективности парольных фраз. На мой взгляд, пока использование фраз не станет достаточно популярным сложно оценить их надёжность. Мне лично кажется, что люди будут выбирать на удивление однообразные фразы, и мы ещё увидим TOP 100 и TOP 10000 парольных фраз, аналогичные текущим топам паролей, которые будут покрывать значительный процент придуманных юзерами фраз. И, скорее всего, увидим и достаточно эффективные алгоритмы для брутфорса парольных фраз, покрывающие ещё больший процент.
Кроме этого, парольные фразы заметно дольше набирать (плюс выше шанс опечататься), что отрицательно скажется на юзабилити и желании юзеров использовать достаточно длинные и надёжные фразы. И, в качестве финального гвоздя в гроб этой идеи, парольные фразы не решают проблему использования разных паролей в разных сервисах — а это намного критичнее для безопасности, чем всё остальное… что возвращает нас к необходимости использования менеджера паролей, что, в свою очередь, делает очень простым использование длинных случайных паролей.
Я думаю, что решение проблемы паролей лежит в области улучшения юзабилити и доступности менеджеров паролей. Нужны стандартные протоколы взаимодействия локальных приложений и удалённых сервисов с менеджером паролей юзера, нужны удобные реализации менеджеров паролей (в т.ч. в виде USB-девайса выдающего пароль по нажатию кнопки/отпечатку пальца/etc.) — что-то в таком духе. Текущий прогресс в этой области — YubiKey, FIDO U2F, FIDO2 WebAuthn, etc.
Да, использование распространённых фраз — проблема. Но в этом парольные фразы не лучше и не хуже обычных паролей.
Что касается того, что их долго набирать — согласен, это проблема. К сожалению, даже несмотря на распространение вычислительной техники во все сферы жизни человека, большинство всё так же очень слабы в быстром наборе. Но возможно это решится если ввести это в школьную программу? Не вместо письма, а параллельно.
Да, проблема использования одного пароля в разных сервисах — проблема, согласен. Но это вряд ли гвоздь в гроб парольных фраз — потому что, опять же, это не лучше и не хуже ситуации с обычными паролями.
Ну и конечно же, я согласен что менеджеры паролей — хорошая и нужная вещь. Но ведь у менеджера паролей тоже должен быть пароль, и это возвращает нас к вопросу выбора пароля (а значит к актуальности парольных фраз).
На счёт универсальности взаимодействия с менеджерами паролей… не уверен что это хорошая идея. Мне кажется, это даёт простор для перехвата паролей. Но возможно я просто параноик.
Либо перебором по словам — это долго, потому что слов много.
Слов не так много, плюс между ними есть зависимости — зная одно-два предыдущих слова обычно можно сильно сократить список возможных следующих слов. По некоторым данным словарный запас среднего обывателя — 10000 слов. Средняя длина слова различается в разных языках, но можно ориентироваться на 5-6 для английского и русского. Даже если не учитывать регистр (хотя это сильно занизит разницу, потому что в паролях обычно используют буквы разного регистра на любой позиции, а в парольных фразах большая буква обычно может быть только в начале слова) то мы получим минимум 11881376 возможных комбинаций 5-ти букв для английского и 1291467969 комбинаций 6-ти букв для русского. Это разница в 3 порядка даже в самых смягчённых условиях (английский, без учёта регистра, без учёта зависимости между словами, без учёта частоты использования слов) между сложностью брутфорса парольной фразы и пароля одной длины. Думаю, в реальных условиях (с учётом всего что стоит учитывать) разница будет значительно больше, я бы предположил что порядков в 5-6. Т.е. подбор фразы на практике будет в миллион раз проще, чем пароля аналогичной длины.
Но это вряд ли гвоздь в гроб парольных фраз — потому что, опять же, это не лучше и не хуже ситуации с обычными паролями.
Гвоздь, гвоздь. Необходимость использовать разные пароли везде не отменяет необходимость использовать обычные пароли, но делает бессмысленным использование вместо них парольных фраз — т.к. запоминать их нет смысла, а по сложности взлома случайный пароль намного надёжнее, то смысл в использовании фраз полностью отпадает.
Конечно, на сам менеджер паролей вполне можно поставить и фразу, но и в этом нет смысла: один мастер-пароль вполне реально запомнить и случайный, символов на 10, и он будет надёжнее большинства парольных фраз.
Необходимость использовать разные пароли везде не отменяет необходимость использовать обычные пароли, но делает бессмысленным использование вместо них парольных фраз — т.к. запоминать их нет смысла, а по сложности взлома случайный пароль намного надёжнее, то смысл в использовании фраз полностью отпадает.
В идеальном мире, где все пользуются менеджерами паролей — да. В нашем, реальном мире, где подавляющее большинство пользователей пароли запоминает — однозначно лучше запомнить парольную фразу из 5 слов чем не-словарный пароль из 8 букв, а взлом такой парольной фразы будет гораздо сложнее, чем такого пароля. Так что гвозди пока приберегите до тех чудесных времён, когда все перейдут на менеджеры паролей. Вот тогда я с радостью помогу вам их забивать (хотя там тоже не всё так однозначно —
вполне реально запомнить и случайный, символов на 10, и он будет надёжнее большинства парольных фраз.
А вот нифига. Запомнить сложнее, подобрать — проще. Вот, я специально для вас сгенерировал в менеджере паролей 10-символьный пароль:
-!2>Br'cEf
(насколько его легко запомнить — оцените сами) и проверил в упомянутом выше сервисе по проверке энтропии, и результат:guess times:
100 / hour: centuries (throttled online attack)
10 / second: 31 years (unthrottled online attack)
10k / second: 12 days (offline attack, slow hash, many cores)
10B / second: 1 second (offline attack, fast hash, many cores)
Так что ваш прекрасный пароль на пару порядков (а если точнее — на семь) хуже плохонькой парольной фразы. ¯\_(ツ)_/¯
Change your password: тестирование парольных политик веб-сервисов