Комментарии 48
... по-моему, любой не короткий и не предсказуемый пароль крадут не перебором или взломом хэша, а просто из слитых баз или другим методом, на который длина пароля никак не влияет. А вот вводить это реально запаришься, особенно если какая-нибудь корпоративная МФА требует этого ежедневно. А если сервисов несколько - впору повеситься от FljkmaTcn15LtntqPf28$LkzCneltynfRhtvfnjhbqGhjlf;b , и это не считая опечаток по спешке
согласен, но если у сервиса есть 2FA и он защищен от откровенного брута то небязательно делать такие длинные фразы, тут просто пример как даже длинная фраза может запомниться
В моей практике был случай, когда смогли зайти на staging сервер по паролю одного из важных сотрудников. И это смешно, потому что... на продакшне (адрес которого знает пол-мира) пароль у него был тот же. Но зашли на staging, про который никто не знал. Так что, у нас было время попаниковать и сменить пароли.
Полагаю, что утечка была из общения (почты, мессенджера), только там рядом в одном месте мог оказаться и логин и пароль и адрес сервера.
Отсюда правило - шарить пароли - зло. Не знаешь, от кого он утек, и стойкость парольной защиты равна стойкости слабейшего мессенджера, почтового ящика.
Если пароль 45+ символов, то даже если сольют его md5 хэш, то далеко не скоро получат сам пароль.
Вариант не самый лучший, но для себя я сделал Ардуино, который вводит пароль, который расшифровывается на лету, при активации определённых ног.
Вот только 1000guess/sec - это только для онлайна справедливо. Если у атакующих есть таблица утекших хэшей и перебор оффлановый - подберут моментально.
Радужные таблицы это называется (ну не совсем это, там хэши заранее генеренные, но суть одна)
Ну, ради справедливости, радужные таблицы померли уже довольно давно. Они не работают с солеными хешами (а кто сейчас хеши не солит?), их нужно иметь под каждый алгоритм, а мы уже давно отошли как от MD5/SHA1 как стандарт, генерятся офигеть как долго, весят дофига, и все это во время, когда после майнинга/в процессе ИИ бума GPU-шки стали на порядки быстрее и можно просто арендовать небольшой кластер. Который, правда, все равно, по хешу пароль вида " FljkmaTcn15LtntqPf28$LkzCneltynfRhtvfnjhbqGhjlf;b" подберет примерно ровно никогда.
Но да, про уровень "correcthorsebatterystaple", конечно, смешно говорить; утек хеш - утек и пароль. А вот с 2FA, в принципе, ну и так сойдет.
Который, правда, все равно, по хешу пароль вида " FljkmaTcn15LtntqPf28$LkzCneltynfRhtvfnjhbqGhjlf;b" подберет примерно ровно никогда.
Я вот совсем не уверен. Подбиральщики(и автоматические тоже) не тупые.
Паттерн '8 слов из top1000, в английской раскладке, слегка разбавленных цифрами и спец-символами' - будет просматриваться, конечно, не в первую очередь, но и далек не в последнюю.
Ну тут аккуратно надо, 8 слов из топ-1000 это тоже немало, конечно. log2(1000^8) ~= 79.7. Даже если хеширован пароль самым простым (и быстрым) алгоритмом, то даже для кластера из 1000 GPU перебор займет сотни лет. Или около месяца для миллиона GPU. Теоретически это уже не невозможно, но, что сказать, это реально невероятно дорого.
Но добавим хотя бы пару цифр/спецсимволов (буквально вот одну цифру и один спецсимвол) и это уже log2(1020^10) ~= 100. А это буквально в миллион раз больше предыдущей оценки. И вот это уже запредельно много, сотни (скорее тысячи) лет, даже если все цифровые устройства в мире будут ломать Ваш пароль.
то даже для кластера из 1000 GPU перебор займет сотни лет.
Я так понимаю, что начиная с какого-то момента совсем не GPU используют. А ASIC-и, приблизительно как для криптовалют (или, возможно, даже те же самые подходят). Что заметно убыстряет перебор.
Асики для криптовалют совсем не подходят, ну по меньшей мере я такую информацию не встречал. Да и чем они подойти могут, там все разное, несмотря на "что там sha256 что тут".
Такой момент должен был наступить после открытой и массовой продажи специализированных устройств для брутфорса, и, хоть и попытки были, у компании Bitmain в свое время, но "не взлетело". Энтузиасты что-то там делали, но совсем давно и для древних алгоритмов типа NTLM и SHA1. Фиг знает, что там у спецслужб, но у рядовых пользователей нет значимого числа этих ASIC-ов на руках. Но это про простые алгоритмы, которые в принципе уже мало распространены. Своевременно ставшие популярными bcrypt, scrypt, Argon2, PBKDF2 не очень-то и удобны для ASIC-имплементации. И они от сотен до миллионов раз медленнее, чем SHA1/SHA256 (их ошибочно применять уже годов эдак с 2010).
Те же самые не подходят. Даже если и хеш от пароля в SHA256 и устройство изначально было для того, чтобы биткоины майнить (тоже SHA256), тут смена прошивки не подойдет. У них именно на блоках интегрированной логики физически забито очень конкретно хеширование строки конкретного размера с конкретным местом nonce, которое можно перебирать. Не умеют они в строки произвольной длины, не умеют в словари, не умеют сравнивать хеш с заданным. И реализовать это все можно, только тогда такой девайс "двойного назначения", в свою очередь либо биткоины будет майнить значительно медленнее (переиспользуем общую логику, но появляются дополнительные условные операции), либо логики в нем будет значительно больше (в худшем случае, она даже по реализации самого алгоритма SHA256 не пересечется*) и стоит он будет значительно дороже.
* потому что вообще в майнерах считается конкретно SHA256(SHA256(x)), и поскольку выход первой итерации аккурат попадает ему же на вход можно оптимизировать шаг по заполнению padding (это просто часть алгоритма), конкретно прописав откуда мы берем этот байт входа из конкретного байта выхода без дополнительных реинициализаций, ну и там буквально десяток "лишних" операций становятся не нужными, но в контексте майнинга оно того стоит.
Паттерн '8 слов из top1000, в английской раскладке
1000^8 перебором никак не взять.
Да и "Адольф" не входит в топ-1000, а значит этот алгоритм его никогда не проверит.
Плюс, достаточно в любом слове сделать сознательную "экстравагантную" опечатку (запоминание даже улучшится), и сложность подбора ещё вырастает на порядки.
сделать сознательную "экстравагантную" опечатку (запоминание даже улучшится),
Работает только на одном - трех паролях (на парольный менеджер или похожее). Чуть больше - и начинаешь путаться, где какую опечатку сделать надо. Легче просто еще одно нормально написанное слово добавить.
Ну и по этой же причине вся схема со спецсимволами и числами мало смысла имеет - просто добавляем пару нормальных слов и не морочим себе голову.
Это то же самое, почему сказали 'да не надо их требовать, лучше длину увеличьте' для классических паролей.
Никуда не померли, используются, но другое дело чем ломать напрямую лучше немного по социалке поработать. Все не на стенку лезть тупо.
Да опять то же самое.
А можно наконец признать, что сервисов больше одного (и даже больше 20). А система восстановления пароля, или сохранения пароль - уязвимость значительно бОльшая, чем слабый пароль.
Поэтому при выборе стратегии защиты надо учитывать, что вы пароль будете вводить. Вводить иногда по 10 раз на дню. И от разных сервисов. Если вы хотя бы раз в месяц пользуетесь функцией восстановления пароля или функцией запоминания пароля - значит уже не важно, насколько сложный ваш пароль, всё уже потрачено.
Поэтому существует только одна стратегия, уменьшающая риски восстановления или сохранения паролей с сохранением более-менне надёжности этого пароля - шаблоны. Да, шаблон может быть взломан. Но взлом шаблона - неавтоматизируемая вещь, а единожды взломав систему сброса паролей, или хранения, атакующие могут автоматизировать присвоение ваших аккаунтов. Единственное, на что стоит обратить внимание - насколько сложным должен быть этот шаблон.
И, в плане шаблонов, есть ещё одна проблема. Плохие шаблоны можно легко критиковать в статьях. А вот хорошими шаблонами никто делиться не будет. Вот и выходит, что в публикациях вы врядли прочитаете деферамбы удачному шаблону.
В статье про Розовые Хеши я предложил простой способ (словарь и длину можно выбрать под себя):$ echo -n "мой секрет habr.ru" | pink -l rfc1751 -w 5
LAST BODY HIP RUBE THUDМы просто зная секрет и адрес сайта можем генерить (и генерить повторно) "correct horse battery staple" пароли, и их вообще не надо запоминать.
Следует различать пароли для онлайна и для оффлайна (когда злодей перебирает пароли не дергая сервис, а напрямую, пытаясь расшифровать файл или подобрать пароль к утекшим хэшам)
Использовать 3 независимых слова.Слова должны быть независимыми и не связанными, например limon_sneg_truba. 16 символов, резистентность к перебору и легкая запоминаемость.
Нет. 3 - чудовищно мало. Редкие слова потом не вспомнишь/не напишешь правильно.
Ваш пример - из top 1000 слова используют. Именно с которых перебор и начнут, те. всего 10^9 вариантов. меньше 30 бит энтропии.
Просто частых, где-то 5000 слов (это 95% по использованию ) - около 36 бит.
Даже словарь в 8192 слова, где всякая экзотика уже есть - это всего 13 бит на слово. Итого 3 слова - это 39 бит. Переберется и очень быстро.
Тут нужно использовать слов 8 (да, зубрить печально но более-менее выполнимо)
Длинная фраза на русском
Тут тоже не все просто. Согласование слов очень сильно энтропию съедает. Вот пример из моих попыток делать генератор
57 бит
Между (case@ADP|_)
ними (obl@PRON|Case=Ins|Number=Plur|Person=3)(3per ablt plur)
показывается (root@VERB|Aspect=Imp|Mood=Ind|Number=Sing|Person=3|Tense=Pres|VerbForm=Fin|Voice=Mid)(sing impf pres intr 3per indc)
группа (nsubj@NOUN|Animacy=Inan|Case=Nom|Gender=Fem|Number=Sing)(nomn femn sing inan)
, (punct@,|_)
исполняющая (acl@VERB|Animacy=Inan|Aspect=Imp|Case=Nom|Gender=Fem|Number=Sing|Tense=Pres|VerbForm=Part|Voice=Act)(sing femn impf nomn pres inan)
песню (obj@NOUN|Animacy=Inan|Case=Acc|Gender=Fem|Number=Sing)(sing accs femn inan)
на (case@ADP|_)
сцене (obl@NOUN|Animacy=Inan|Case=Loc|Gender=Fem|Number=Sing)(loct femn sing inan)
. (punct@.|_)
Между царицами(*9066) тоскует(*1277) пелена(*2677) , исполняющая опаску(*2678) на премии(*2677) .
=== Bits: 57.624536348194574Тут сначала предложнение-шаблон разобранное по разным лингвистическим штукам. В конце - сгенерированное. В нем в скобках - сколько кандидатов было на позицию.
"Между царицами тоскует пелена, исполняющая опаску на премии." - пригодно для запоминания, но бит энтропии мало.
Что-то нормальное получается в духе
102 бита
В (case@ADP|_)
трагедии (obl@NOUN|Animacy=Inan|Case=Loc|Gender=Fem|Number=Sing)(loct femn sing inan)
её (det@ее|_)
игра (nsubj@NOUN|Animacy=Inan|Case=Nom|Gender=Fem|Number=Sing)(nomn femn sing inan)
возвестила (root@VERB|Aspect=Perf|Gender=Fem|Mood=Ind|Number=Sing|Tense=Past|VerbForm=Fin|Voice=Act)(sing femn past perf intr indc)
новую (amod@ADJ|Case=Acc|Degree=Pos|Gender=Fem|Number=Sing)(sing accs femn NonSupr)
эру (obj@NOUN|Animacy=Inan|Case=Acc|Gender=Fem|Number=Sing)(sing accs femn inan)
в (case@ADP|_)
истории (obl@NOUN|Animacy=Inan|Case=Loc|Gender=Fem|Number=Sing)(loct femn sing inan)
немецкого (amod@ADJ|Case=Gen|Degree=Pos|Gender=Neut|Number=Sing)(sing gent neut NonSupr)
актерского (amod@ADJ|Case=Gen|Degree=Pos|Gender=Neut|Number=Sing)(sing gent neut NonSupr)
мастерства (nmod@NOUN|Animacy=Inan|Case=Gen|Gender=Neut|Number=Sing)(sing gent neut inan)
. (punct@.|_)
В дыре(*2677) её нива(*2677) пришла(*1193) монаршую(*5081) вольту(*2678) в вечере(*2677) колбасного(*5139) гнутого(*5139) сальдо(*806) .
=== Bits: 102.38659949487786"В дыре её нива пришла монаршую вольту в вечере колбасного гнутого сальдо" - ну так себе для запоминания.
Но давайте пойдем дальше
А дальнейшие примеры - тем более запомнить невозможно.
Поэтому - увы, либо новые способы вида Passkeys используем. Либо менеджер паролей с полностью случайными паролями внутри и 8 случайных(генератором! Не сами выбираем) слов в качестве пароля на базу.
Правильное решение тут: https://habr.com/ru/posts/899444/
Это на практике ничем не отличается от менеджера паролей. Точно так же вводишь какой-то главный пароль и получаешь пароль для сервиса.
Это однозначно лучше, чем то, что автор предлагает в статье, но нет, это не правильное решение. Правильное решение - многофакторка.
Это решение не применимо, когда пароли для различных сервисов приходится вводить на самых различных серверах, на которые зашел по ssh, vnc или rdp.
Хорошо, если есть возможность аутентификации по ключу или через локальный keytab. А если нет?
Когда говорим про подбор шаблона под ваши пароли, это уже целенаправленный взлом конкретного пользователя, а не про массовые пароли, а если есть "заказ" под человека, явно это высококлассный специалист, который скорее социальной инженерией воспользуется, чем подбором
Ну не знаю, если там настолько высококлассный специалист, ему проще соц. инженерией отработать так что ты и сам пароль введешь или продиктуешь.
Пароль который известен только тебе, на олбанском и на латинице вперемешку с "печатаем по русски на англ раскладке" даже высококлассный не подберет - профи пойдет другим путем. Например украв куки. Или установив троян. Или насыпет порошок на клавиатуру. Или тупо подсмотрит.
наверно в будущем, вообще не будет паролей на сайтах.
А потом заходишь такой умный на банк и тебе с порога - спец символы использовать нельзя, длина пароля от 5 до 7 символов. Разрешены только буквы латиницы и цифры.
И вот начинают накапливаться разные пароли в твоей голове или бумажке или программе хранения паролей.
История кстати из жизни.
Думаю если у этого банка уже с порога такой кринж, то и дальше ничего хорошего от него ждать не придётся.
Один из крупнейших банков Испании. Они упор делают на 2fa
На меня тут крупнейший оператор связи России - МТС оформил 2 доп симки и уже который месяц присылает уведомления "заплати должок" и "мы всё ещё усиленно расследуем инцидент". Это буквально 0FA.
nin-jin, нам жаль, что сложилась такая ситуация. Напишите нам, пожалуйста, на форму обратной связи: https://mts.ru/mentions ваш номер, полные ФИО владельца, а также опишите ситуацию. Проверим информацию и проконсультируем подробнее.
И вместо перевода на латиницу будем писать на русском с включенной английской раскладкой
Очень удобно со смартфона вводить!
К сожалению, все это не работает. За столько лет я натыкался на десяток сайтов с необъяснимо тупыми требованиями к паролям. Кто-то требует не больше 18 символов, кто-то не даёт две одинаковых цифры подряд, кто-то не считает знак восклицания за спецсимвол, кто-то требует спецсимволы, но разрешает только определенные...
Короче, какой-бы вы универсальный алгоритм себе ни придумали, найдется админ-мудак, который "лучше знает" какие пароли должны быть и ваш не пройдет. Единственное, что хоть как-то работает -- это менеджер паролей. Они обычно позволяют задать сколько угодно сложный пароль для доступа к базе, 2FA и все такое. И уже содержат генераторы паролей, которые можно настроить под конкретный сервис.
И вместо перевода на латиницу будем писать на русском с включенной английской раскладкой
Вот мне ну очень хочется посмотреть, как будет выглядеть процесс набора такого пароля на экране планшета или смартфона, когда под рукой нет двуязычной клавиатуры, и особо негде посмотреть, какая кириллическая буква какой латинской соответствует...
мне нравится генерить пароли в powershell 🙂
# подключаем сборку .NET
Add-Type -AssemblyName System.Web
[System.Web.Security.Membership]::GeneratePassword(20, 5)
# выведет что-то вроде kV-QDIT!!zKbZ1XJaI/^
# или guid как пароль
(New-Guid).Guid # 8912b1ee-4777-4d0b-9e02-95f2e67c4e2dСложый для перебора пароль. Пишешь его на бумажке, носишь её с собой, клеишь на монитор. Но держишь в уме что нужно например добавить ещё один спецсимвол. Или все 0 это на самом деле O.
и не забыть его
Как говорил в свое время мой начальник: "Голова нужна, чтобы думать, а для запоминания есть внешние хранилища информации". Считаю неплохим вариантом - блокнот с "язычками" по алфавиту и, желательно, плотной обложкой с застежкой.
Из плюсов:
- энергонезависимый;
- устойчивый ко взлому (доступ к данным возможен только при физическом завладении хранилищем);
- возможность хранить любые пароли и вспомогательную информацию;
Из недостатков:
- отсутствие быстрых функций доступа/редакторования (копировать/вставить/удалить);
- ограниченный объем хранилища без возможности его увеличения;
- сложности с организацией бэкапов;

Как придумать надежный пароль и не забыть его