Как проверить стойкость пароля?
Как безопасно и по возможности точно можно оценить стойкость придуманного пароля?
|
||||||||||||||||||||||||||
|
||||||||||||||||||||||||||
Нормы пользования. Некоторые права на материалы сайта защищены по условиям лицензии CreativeCommons. Движок
openSpace 0.8.25a и дизайн сайта © 2006-2007 Vlad "SATtva" Miller.
|
||||||||||||||||||||||||||
мысль в этом направлении:
Уникальный с позиции генерации (создания руками) и дальнейшего его использования.
комментариев: 11558 документов: 1036 редакций: 4118
Невозможно. Если использовать правильную математическую терминологию, то «случайность пароля» (ну, или «энтропия пароля») — абсурдный термин, не имеющий смысла. Случайность (энтропия) есть у источника случайности, т.е. это характеристика случайной величины, а конкретный пароль — это просто «конкретная выборка», полученная из источника. В частности, у ГСЧ случайность/энтропия есть, у бесконечного набора выборок паролей, сгенерированных с помощью этого ГСЧ, энтропия тоже есть, но у конкретного пароля энтропии нет.
По конкретной конечной выборке нельзя достоверно определить свойства источника (ГСЧ), из которого она была получена. Оценка случайности даже реальных ГСЧ (не говоря уже о коненчных выборках) — большая проблема. Для любого набора «тестов случайности» можно придумать детерминистичную неслучайную функцию, которая их обойдёт, но верно и обратное: для любой конкретной детерминистичной функции можно придумать текст, который продемонстрирует её неслучайность. В общем, об этом тут уже не раз писалось:
И ещё:
Описанное выше — стойкость машинно-сгенерированных паролей. Пароли, сгенерированные человеком, оценивать ещё труднее, поскольку их стойкость опирается на нечёткие критерии, на обладание атакующим базами данных, на предпочтения атакующего при выборе алгоритма взлома и т.д. Например, зная какие-то особенности ваших паролей, противник может ускорить их подбор во много раз, а узнать эти особенности он может, взломав какие-то из самых слабых ваших паролей.
<...>
или
<...>
не подходят.
Можно проверять не реальный пароль, а другой, созданный по этому же вашему алгоритму (считаем, что алгоритм несекретен, иначе это безопасность через неясность с одной точкой отказа), но это не отменяет вышесказанного. Вопрос о случайности пароля изначально ламерский. Правильный вопрос — как сгенерировать пароль с заданной случайностью (unknown уже привёл ссылку с ответом), а не как проверить случайность уже откуда-то взявшегося пароля. Консервативно считайте, что все придуманные человеком пароли существенно неслучайны и потому не обеспечивают должного уровня безопасности.
Есть /comment29143 и /comment40392 на эту тему, но это всё равно не показательно и ни о чём не говорит. Там смысл такой: есть статистика, накопленная по тому, как обычно люли создают пароли: какие пароли более вероятны, какие менее. Оптимальные переборщики паролей идут от более частых случаев к более редким. Но если противник знает какие-то особенности вашего пароля, он может оптимизировать эту методику под конкретно ваш случай так, что она будет ломать конкретно ваши пароли быстрее, чем все другие.
Прям по Фрейду.
ТС спрашивал, как я понимаю, про придуманные человеком пароли, а не про машинносгенерённые.
Так и было сделано.
С одного взгляда видна слабость только некоторых (запредельно слабых) паролей. Слабость других слабых паролей с одного взгляда не видна.
habrahabr.ru/post/207378/
Это так?
В красках обсуждалось в этих комментариях. Если коротко — то не совсем так. Если хочется использовать этот метод, надо сгенерировать случайный пароль с требуемой энтропией, а потом к нему подобрать такой тип его словарного представления*. Если вы будете сразу начинать с легкзапоминаемого представления, то пароль не будет стойким, т.к. вы — не RNG, у вас в голове свои внутренние частоты употребления слов, и то, что вам первое придёт в голову, не будет столь случайным, как вам кажется.
Минус этой методики в том, что пароли становятся длинными. Получается, что запомнить их легко, а потом регулярно вводить — муторно. Случайный пароль из печатных символов будет на треть короче, чем «верно лошадь батарея скрепка», и при этом содержать в три раза больше энтропии.**
*Вроде для этого есть как ручные методики, так и какие-то программы.
**128 бит при 20 символах супротив 40-50 бит энтропии при 30 символах.
комментариев: 9796 документов: 488 редакций: 5664
У меня обычная память. Она не лучше среднего, необходимо требуемого для хоть сколь-нибудь интеллектуальных профессий.
Я тоже так мыслю, и зрительная память лучше слуховой.
Мне тоже нелегко запомнить, но одно время назад создались условия для естественного эксперимента. Я сгенерировал пароль (ни для чего серьёзного он не использовался) и время от времени должен был его с бумажки вводить. Я не делал никаких усилий над собой по его запоминанию и не так часто его вводил (может, пару раз в день, максимум? не помню). Через неделю я заметил, что помню его «в целом», и вынужден подглядывать в бумажку только для уточнения деталей. А через две недели я понял, что бумажка мне не нужна вообще. Попробуйте и вы. 20 символов (128 бит) — это совсем немного. В школе, выучивая стихи наизусть, вы были вынуждены заучить намного больше энтропии, поверьте. ☺
Есть разные случаи. Если, например, фраза одна на всё FDE, а ноутбук лочится лёгким паролем на своп при том, что полного ребута почти никогда не бывает (а только выходы в hibernate/suspend) — это одно. Раз-два в день можно ввести пассфразу любой разумной длины.
Другой случай — работа в недоверенном окружении, когда единственное, на что можно полагаться для защиты от cold boot атак и внезапных бандитских налётов — это не держать подключенными те разделы, которые вам в данный момент не нужны. А если нужны? Значит, подключать, а при необходимости на 5 мин. отлучиться отключать, вернулись — подключать снова; подключать/отключать при смене рода деятельности за ноутбуком и т.д. Это требует ввода пассфразы минимум десятки раз в день. Можете не верить, но попробовать и убедиться самостоятельно, что частый ввод длинных пассфраз в таком случае очень сильно напрягает, а одним из самых узких мест в удобстве и производительности такого режима работы — это время, затрачиваемое на ввод паролей.
Правда, помимо этой проблемы у частого ввода пароля есть и другая: чем чаще его вводишь, тем легче ему утечь через подобные каналы (кто-то подсмотрел через плечо, угадал на слух по звучанию клавиш, подслушал через телефон и т.п.). Не знаю, какие пароли более резистентны от такой атаки: интуитивно кажется, что более длинные (тяжелей угадать все нажатия), но, с другой стороны, у более длинных паролей более чёткий паттерн, позволяющий атакующему легче определять, когда вы печатаете свой супер-пупер-длинный пароль, а когда что-то нейтральное.
Да атакующий может понять на слух, когда я открываю дверь в квартиру, а когда гремлю в кормане чем-то нейтральным... Ну и что?