Как проверить стойкость пароля?

Как безопасно и по возможности точно можно оценить стойкость придуманного пароля?


Комментарии
— SATtva (15/12/2013 10:48)   
Спросить Microsoft.[link1] :)
Гость (15/12/2013 11:24)   
:)
Неее... эту ссылку я знаю.
Может программы какие есть?
Гость (15/12/2013 12:11)   
Некоторые программы-генераторы могут показывать стойкость. Какая система?
Гость (15/12/2013 12:58)   
WindowsXP.
Гость (15/12/2013 13:53)   
KeePass 1.26
Генерация случайного пароля – Инструменты – Генератор паролей.
В окне – Генерация. Смотрим под "Сгенерированный пароль".

PWGen 2.3.1

Генерация. Ниже смотрим характеристики пароля.
Гость (15/12/2013 13:56)   
ЗЫ: Секндочку. А в каком смысле "оценить стойкость"?
Гость (15/12/2013 18:00)   
Оценить стойкость...

нужно понять, сколько времени понадобится для его подбора;

сам пароль должен остаться в тайте, поэтому ссылки
https://www.microsoft.com/ru-r.....assword-checker.aspx[link2]
или
http://howsecureismypassword.net/
не подходит.

KeePass 1.26 и PWGen 2.3.1 – изучаю, спасибо.
— SATtva (15/12/2013 18:06)   
нужно понять, сколько времени понадобится для его подбора

Для этого необходимо моделирование доступных противнику ресурсов и точная оценка энтропии пароля. Ни то, ни другое названные программы и сервисы не производят.
— unknown (15/12/2013 18:30)   
Осилить понимание одной формулы[link3].
Гость (15/12/2013 18:39)   
- Ни то, ни другое названные программы и сервисы не производят.
Да не проводят, жаль.

Тогда очень хочется занать, если есть такая информация: где (у кого), в каком году (дата), какой пароль (хорошо-бы посмотреть на реальный), какими средствами (мащьность вычислительной техники или скорость перебора), какие способы взлома были задействованы и за какое время был взломан (подобран) реальный пароль?
— SATtva (15/12/2013 18:43, исправлен 15/12/2013 18:43)   

Это если пароль истинно случаен, а не получен, например, набором естественных или синтетических слов.

Гость (15/12/2013 18:44)   


А возможно ли это сделать (оценить стойкость) готовыми программными средствами? Да и существуют ли они вообще в природе? Имхо, вопрос как-бы ни о чем..

ТС, Вы обладаете знаниями, какими средствами обладает Ваш потенциальный противник?
Гость (15/12/2013 18:45)   


Как проверить уникальность пароля?
— SATtva (15/12/2013 18:51)   
Как проверить уникальность пароля?

Проверить, есть ли он в наборе образцов. Если нет, то уникален. Вы уверены, что хотели спросить именно это?
Гость (15/12/2013 19:28)   
Сисадмин желал подобрать себе стойкий пароль для централизованной авторизации через radius-сервер. Он обратился за советом к Инь Фу Во.

– Как вы думаете, Учитель, пароль «史達林格勒戰役» стойкий?

Нет, – ответил мастер Инь, – это словарный пароль.

– Но такого слова нет в словарях...

– "Словарный" означает, что это сочетание символов есть в wordlists, то есть "словарях" для перебора, которые подключаются к программам криптоанализа. Эти словари составляются из всех сочетаний символов, которые когда-либо встречались в Сети.

– А пароль «Pft,bcm» подойдёт?

– Вряд ли. Он тоже словарный.

– Но как же? Это же...

– Введи это сочетание в Гугле – и сам увидишь.

Сисадмин защёлкал клавишами.

– О, да. Вы правы, Учитель.

Через некоторое время Сисадмин воскликнул:

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

Инь Фу Во кивнул.

– Я ввёл его в Гугле, – продолжал Сисадмин, – и убедился, что в Сети такого сочетания нет.

– Теперь есть.
Гость (15/12/2013 19:29)   
Вы уверены, что хотели спросить именно это?

мысль в этом направлении:
где (у кого), в каком году (дата), какой пароль
Уникальный с позиции генерации (создания руками) и дальнейшего его использования.
— SATtva (15/12/2013 19:37)   
Инь Фу Во не одобрит нас за ответ на этот вопрос.
Гость (22/12/2013 16:24)   

Невозможно. Если использовать правильную математическую терминологию, то «случайность пароля» (ну, или «энтропия пароля») — абсурдный термин, не имеющий смысла. Случайность (энтропия) есть у источника случайности, т.е. это характеристика случайной величины, а конкретный пароль — это просто «конкретная выборка», полученная из источника. В частности, у ГСЧ случайность/энтропия есть, у бесконечного набора выборок паролей, сгенерированных с помощью этого ГСЧ, энтропия тоже есть, но у конкретного пароля энтропии нет.

По конкретной конечной выборке нельзя достоверно определить свойства источника (ГСЧ), из которого она была получена. Оценка случайности даже реальных ГСЧ (не говоря уже о коненчных выборках) — большая проблема. Для любого набора «тестов случайности» можно придумать детерминистичную неслучайную функцию, которая их обойдёт, но верно и обратное: для любой конкретной детерминистичной функции можно придумать текст, который продемонстрирует её неслучайность. В общем, об этом тут уже не раз писалось[link5]:

Если дан чёрный ящик, без каких либо гарантий, то никакие апостериорные тесты не позволят доказать, что выход этого ящика действительно рандомный. Не трудно написать ГПСЧ, подобный Mersenne twister, но им не являющийся, который будет выдавать любое, наперёд заданное распределение, включая нарушение неравенств Белла, а так же идеально проходящий все статтесты (а значит несжимаемый). Все слова про постфактумную верификацию случайности — блажь и провокация.

И ещё[link6]:

Что такое "идеально случайное" число? Есть ли вообще такое понятие в математике? Я могу взять любую последовательность нулей и единиц, записать её в десятичном формате и спросить что-то вроде: 56384 – это случайное число? Для любого набора тестов "идеальной случайности" можно построить такой ГПСЧ, что все тесты будут пройдены. Обратное тоже верно – для любого ГПСЧ можно придумать такой набор тестов, что тот его не пройдёт. Все статистические тесты принципиально конечны, поэтому их можно обмануть.

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


Можно проверять не реальный пароль, а другой, созданный по этому же вашему алгоритму (считаем, что алгоритм несекретен, иначе это безопасность через неясность с одной точкой отказа), но это не отменяет вышесказанного. Вопрос о случайности пароля изначально ламерский. Правильный вопрос — как сгенерировать пароль с заданной случайностью (unknown уже привёл ссылку с ответом), а не как проверить случайность уже откуда-то взявшегося пароля. Консервативно считайте, что все придуманные человеком пароли существенно неслучайны и потому не обеспечивают должного уровня безопасности.


Есть /comment29143[link8] и /comment40392[link9] на эту тему, но это всё равно не показательно и ни о чём не говорит. Там смысл такой: есть статистика, накопленная по тому, как обычно люли создают пароли: какие пароли более вероятны, какие менее. Оптимальные переборщики паролей идут от более частых случаев к более редким. Но если противник знает какие-то особенности вашего пароля, он может оптимизировать эту методику под конкретно ваш случай так, что она будет ломать конкретно ваши пароли быстрее, чем все другие.
Гость (29/12/2013 10:32)   

Прям по Фрейду.
Гость (29/12/2013 14:12)   
так, что она будет ломать конкретно ваши пароли быстрее, чем все другие
Противник знает, что пользователь генерирует пароли конкретной программой. Как это знание поможет ему (противнику)?
Гость (29/12/2013 14:54)   
ТСу надо было дать стандартные рекомендации по выбору парольных фраз. Сильный пароль или слабый – сразу же видно с одного взгляда.
Гость (29/12/2013 15:08)   

ТС спрашивал, как я понимаю, про придуманные человеком пароли, а не про машинносгенерённые.


Так и было сделано[link10].


С одного взгляда видна слабость только некоторых (запредельно слабых) паролей. Слабость других слабых паролей с одного взгляда не видна.
Гость (29/12/2013 21:39)   
«Верно лошадь батарея скрепка»
habrahabr.ru/post/207378/

Это так?
Гость (30/12/2013 03:56)   

В красках обсуждалось в этих комментариях[link11]. Если коротко — то не совсем так. Если хочется использовать этот метод, надо сгенерировать случайный пароль с требуемой энтропией, а потом к нему подобрать такой тип его словарного представления*. Если вы будете сразу начинать с легкзапоминаемого представления, то пароль не будет стойким, т.к. вы — не RNG, у вас в голове свои внутренние частоты употребления слов, и то, что вам первое придёт в голову, не будет столь случайным, как вам кажется.

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

*Вроде для этого есть как ручные методики, так и какие-то программы.
**128 бит при 20 символах супротив 40-50 бит энтропии при 30 символах.
— unknown (30/12/2013 09:50)   
У вас тип памяти специфический. Многие люди мыслят образно-ассоциативно и могут подогнать картинку или сценку для связывания абсурдных сочетаний слов. А рэндомный набор символов запомнить не в состоянии. Ну и напечатать длинную фразу не так уж и сложно. Это уже вопрос индивидуальных предпочтений.
Гость (05/01/2014 19:29)   

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


Я тоже так мыслю, и зрительная память лучше слуховой.


Мне тоже нелегко запомнить, но одно время назад создались условия для естественного эксперимента. Я сгенерировал пароль (ни для чего серьёзного он не использовался) и время от времени должен был его с бумажки вводить. Я не делал никаких усилий над собой по его запоминанию и не так часто его вводил (может, пару раз в день, максимум? не помню). Через неделю я заметил, что помню его «в целом», и вынужден подглядывать в бумажку только для уточнения деталей. А через две недели я понял, что бумажка мне не нужна вообще. Попробуйте и вы. 20 символов (128 бит) — это совсем немного. В школе, выучивая стихи наизусть, вы были вынуждены заучить намного больше энтропии, поверьте. ☺


Есть разные случаи. Если, например, фраза одна на всё FDE, а ноутбук лочится лёгким паролем на своп при том, что полного ребута почти никогда не бывает (а только выходы в hibernate/suspend) — это одно. Раз-два в день можно ввести пассфразу любой разумной длины.

Другой случай — работа в недоверенном окружении, когда единственное, на что можно полагаться для защиты от cold boot атак и внезапных бандитских налётов — это не держать подключенными те разделы, которые вам в данный момент не нужны. А если нужны? Значит, подключать, а при необходимости на 5 мин. отлучиться отключать, вернулись — подключать снова; подключать/отключать при смене рода деятельности за ноутбуком и т.д. Это требует ввода пассфразы минимум десятки раз в день. Можете не верить, но попробовать и убедиться самостоятельно, что частый ввод длинных пассфраз в таком случае очень сильно напрягает, а одним из самых узких мест в удобстве и производительности такого режима работы — это время, затрачиваемое на ввод паролей.

Правда, помимо этой проблемы у частого ввода пароля есть и другая: чем чаще его вводишь, тем легче ему утечь через подобные каналы (кто-то подсмотрел через плечо, угадал на слух по звучанию клавиш, подслушал через телефон[link12] и т.п.). Не знаю, какие пароли более резистентны от такой атаки: интуитивно кажется, что более длинные (тяжелей угадать все нажатия), но, с другой стороны, у более длинных паролей более чёткий паттерн, позволяющий атакующему легче определять, когда вы печатаете свой супер-пупер-длинный пароль, а когда что-то нейтральное.
Гость (06/01/2014 00:14)   
но, с другой стороны, у более длинных паролей более чёткий паттерн, позволяющий атакующему легче определять, когда вы печатаете свой супер-пупер-длинный пароль, а когда что-то нейтральное.

Да атакующий может понять на слух, когда я открываю дверь в квартиру, а когда гремлю в кормане чем-то нейтральным... Ну и что?
Гость (06/01/2014 00:26)   
То, что он запишет звук набора пароля, причём не один раз, а потом скормит образцы программе-анализатору, которая применит коррекцию ошибок и выудит пароль. Незначительные ошибки в пароле будут исправлены брутфорсом.
Гость (06/01/2014 00:31)   
Или вот ещё: пришёл в гости с хорошим микрофоном в кармане, записал. Потом попросил на компьютере поработать, постучал по клавишам в нужном порядке (или просто постучал по клавиатуре, когда хозяин отошёл куда-то) — это для записи их звучания тем же микрофоном. Потом пришёл домой, проанализировал, нашёл пароль. Внешне процедура выглядит вполне безобидно, а хозяин даже не будет знать, что пас уже утёк. И ладно, если это гости у вас дома, а если неконтроллируемый поток людей в рабочем кабинете? Заметьте, что атака доступна даже любителю, мало-мальски разбирающемуся в электронике и обработке сигналов, никакого АНБ тут не нужно.
Гость (06/01/2014 02:33)   
а потом скормит образцы программе-анализатору
Да.. а можно еще проанализировать клавиатуру на часто используемые кнопки. Разные асоциальные типы так проникают в подъезды с кодовыми дверями.
Гость (06/01/2014 03:59)   

Это классика[link13] народного жанра:

— в 12 лет йа взламывала пароли BIOS с помощью шерстяного носка и ножниц!!!
— мне даже страшно спрашивать алгоритм… ><
— дергаешь ворсинки из носка, режешь их на части по 4 мм и раскладываешь по всей клаве. если не присматриваццо — не заметишь. дожидаешься, когда батя включит комп и наберет пароль, и под любым предлогом вызываешь его из комнаты. находишь клавиши, на которых ворсинок не осталось. йа так на взломанном компе 2 года по ночам гамала, а предки не знали

В отсутствие родителей я разбирал клавиатуру и подкладывал под каждую кнопку кусочек пластилина. Позже, когда меня допускали к компьютеру, отец вводил пароль, и я запускал какие-нибудь гонки типа Test Drive, пользуясь только стрелочками, чтобы не помять пластилин. Как только оставался один, снова разбирал клавиатуру, выяснял, какие кнопки были нажаты, и пытался из их комбинации составить пароль. Глубокие дыры в пластилине означали, что кнопка была нажата несколько раз, так что проблем с подбором обычно не возникало.
— тестерТьюринга (10/05/2014 07:57)   
При установке linux-дистрибутива(Fedora) инсталлятор может предупредить о слабом пароле. Если такой пароль был установлен, означает ли это, что его возможно восстановить штатными средствами(библиотека cracklib, например)? Или предупреждение формируется по каким-то формальным признакам(не достаточно длинный, отсутствуют разнообразные символы и т.д.)?
— SATtva (10/05/2014 10:48)   
В PAM для оценки стойкости паролей обычно и используется cracklib. Оценка может производиться как по формальным параметрам (длина, наборы символов), так и по базе распространённых паролей.
— тестерТьюринга (12/05/2014 13:31)   
Да, я проверил – парольная фраза имеется в словарях cracklib, т.е. восстановление пароля не займет много времени. И что дальше – какими штатными средствами восстановить пароль в читабельном виде имея права root?
— SATtva (12/05/2014 13:49)   
JtR[link14], например.
— тестерТьюринга (12/05/2014 15:47)   
О, а не мало в репозитории ломалок паролей. Запретил их использование.
— unknown (12/05/2014 16:29, исправлен 12/05/2014 16:30)   

Запретили использование слабых паролей, которые могут быть сломаны ломалками, имеющимися в репозитории? ;)

— SATtva (12/05/2014 16:37)   
[йумор]
Если тестерТьюринга является субъектом законодательной инициативы, то может внести Думу законопроект о запрете использования ломалок из репозитория для взлома паролей.
[/йумор]
— тестерТьюринга (13/05/2014 07:04)   
Когда SATtva будет наделять или лишать тестерТьюринга свойствами законодательной инициативы, я рассмотрю Ваши предложения, соблюдая все юридические формальности. А т.к. даже таких формальностей никогда не будет, то [йумор] – самокритика, требующая фрейдистских анализов.
Гость (13/05/2014 14:07)   
Средства взлома паролей (и не только) нужно не запрещать, а пропагандировать, изучать в школах. Когда народ дремуч, заводятся паразиты обещающие "защищить" от плохих людей. Устанавливают монополию на право оказания защиты. Препятствуют развитию навыков и средств самообороны, объявляя всех потенциальными злодеями (кроме самих себя). Чем больше уровень дремучести, тем благоприятней среда для паразитов. Поэтому пусть лучше вломает кто-нибудь и послужит уроком, чем этим будут систематически заниматься банды "защитников" под легендой о всеобщей безопасности.
— ZAS (13/05/2014 20:21)   
Как безопасно и по возможности точно можно оценить стойкость придуманного пароля?


1. Вычислить пик/среднее автокорелляционной функции от пароля как последовательности битов.
2. Проверить что соседние символы не идут подряд по рус/лат алфавиту и не находятся рядом на клавиатуре.

Результат легко представить в виде количественной оценки.
Получается легкая и несложная функция, отсекающая большинство тривиальных паролей.
Гость (13/05/2014 21:01)   
Не слушайте ZAS, он как всегда врёт. Случайность можно приписать выбору элемента из множества, или, если проще, методу генерации. Приписать случайность непонятно откуда взявшемуся паролю нельзя. Он может выглядеть сколь угодно случайно, но при этом быть неслучайным и легко подбираться, если противник догадается до метода генерации. Все сколь-нибудь распространённые методы генерации паролей в уме, которые легко запомнить, уже давно используются в ломалках паролей.

Гость (13/05/2014 14:07) |sed 's/паразит/патриот/g' |less
И смысл сохраняется.
— ZAS (14/05/2014 01:06)   
Есть конкретные предложения, как написать функцию, которая бы количественно оценивала стойкость пароля? Нет?
"Лечите собственную импотенцию повторением чужих манр" ©

Случайность можно приписать выбору элемента из множества, или, если проще, методу генерации.


Cлучайность можно приписать только случаю. Труднопредсказуемость != cлучайность.

ZAS Communicator Project
http://www.zas-comm.ru
— тестерТьюринга (14/05/2014 06:49)   
Дума := Гость;
— тестерТьюринга (15/05/2014 08:20)   
тестерТьюринга:
[type_checking]
Дума <smiley> Гость<smiley>
[/type_checking]

— Паролефил (17/05/2014 19:47)   
На тему "верно лошадь скрепка батарейка", хочу заметить, что это более чем годный метод для не требующих частого ввода случаев. Только вот составлять пароли и рассчитывать энтропию надо несколько более хитроумным методом. Берем только описываемые слова из толковых словарей. Энтропию рассчитываем по формуле =COMBIN(число слов в словаре;число слов в пароле). Приводим к двоичному виду формулой =LOG(рассчитанное ранее значение;2). Формулы приведены для опенофиса. Это наиболее реалистичный вариант. Мало кто допустит повторения случайно вылезших слов. Для осмысленности, скорее всего, слова будут меняться местами. Указанная формула это учитывает. Приемлемая энтропия начинается с семи-восьми слов из Ожегова.
Гость (17/05/2014 20:04)   

Как совершенно случайным образом выбрать четыре слова из словаря?
— unknown (17/05/2014 21:05)   
Начиная с /comment75226[link15] была отсылка к /comment40354[link16].
— Паролефил (18/05/2014 00:49)   

Лично я доверяю встроенному в мозг генератору псевдослучайных значений, ознакомленному с тем, что надо не равномерно искать слова, а случайно (повторения участков и страниц допустимы). Если надо просто и гарантированно случайно получить некоторые значения, кидаем, допустим, четыре игральных кости. Это даст 1296 значений для поиска нужной страницы. Можно легко ввести поправочный коэффициент, учитывая реальное число страниц. Формула предельно примитивна: (полученное значение)*(число страниц/1296). При четко заданном принципе округления, выпадение любой страницы равновероятно. Для страниц достаточно бросить три кости. Одна делит страницу пополам, две другие дают номер слова на полустранице (у меня в бумажном словаре слова идут в два столбца на странице). Для четырех слов придется бросать кости восемь раз, для десяти слов, соответственно, двадцать. Но случайность можно считать абсолютной. Однако, посчитайте энтропию для четырех слов (формулы я давал прошлым постом). Маловато будет 57 бит энтропии (при словаре 50000 слов). Восемь слов дадут уже 109 бит энтропии.
Метод, разумеется, несколько геморройный. Но вполне позволит быстро запомнить сложный пароль тем, кто очень долго запоминает пароли из случайных символов.
Гость (18/05/2014 00:54)   

Я хотел, чтобы Гость (17/05/2014 19:47) сам ответил и сам себя закопал, потому что это:

На тему "верно лошадь скрепка батарейка", хочу заметить, что это более чем годный метод

есть БСК. Если так хочется произносимого, то случайный пароль сначала генерят, а потом ищут метод его лёгкого запоминания (или конвертирования в легче запоминаемую форму с сохранением энтропии), но никак не наоборот (сначала извлекают слова из словаря непонятно каким методом [открыл книгу на случайной странице?], а потом оценивают энтропию таким образом созданного пароля).
— Паролефил (18/05/2014 01:27)   

Вы не правы. Язык – точно такой же набор знаков, как символы на клавиатуре. При этом, скорость брутфосра слова гораздо меньше скорости перебора по словарю. Есть составленные словари, допустим, словарь Ожегова. В нем более 50000 слов. Считайте, что у нас есть большая клавиатура на 50000 символов, каждый из которых состоит из определенной последовательности символов обычной клавиатуры, подобно тому, как сами клавиатурные символы отображаются последовательностью нулей и единиц. И сложность случайного подбора знаков (слов) из языка и знаков с клавиатуры абсолютно одинакова. В одном случае нам надо случайно выбрать один из, примерно, ста символов. (кстати, опишите, как можно подобрать двадцать случайных символов с клавиатуры и почему это неприменимо к языку) И повторить это двадцать раз. В другом случае надо случайно выбрать один из 50000 символов (слов) и повторить это десять раз. Метод расчета энтропии строится из того, что составитель пароля не допустит повторения слов и позволит себе упорядочить их на свое усмотрение. Для этого в опенофисе есть функция COMBIN, которая определяет число возможных комбинаций независимо от их последовательности и с условием их неповторяемости. Расчитывается то значение, меньше которого энтропия не может опуститься, как бы ни упорядочивал составитель слова. Все возможные последовательности определенных слов считаются одной единственной комбинацией.
Гость (18/05/2014 02:10)   

Никак. Их не подбирают. Их генерируют, а потом конвертируют в это представление. Источник случайности — /dev/random, он сидирует /dev/urandom, потом вывод /dev/urandom (байты/биты) кодируется в виде печатных символов.


Теоретически можно сделать и со словами в словаре, но придётся писать свою прогу-костыль, которая с учётом накопленной случайности будет выбирать слова из словаря случайным образом и т.д. Зачем это нужно, когда уже есть pwgen — непонятно, и, если кому-то хочется удобства, вывод pwgen (или того же /dev/urandom) можно переконвертировать в любой словарь.


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

Если хочется генерировать пароль оффлайново без использования ПК, есть специальные методы[link17], но им надо аккуратно следовать, аккуратно оценивать энтропию, там не всё так просто.
Гость (18/05/2014 02:12)   

Имелось в виду: генерируются случайные последовательности нулей и единиц, которые потом конвертируются в представление печатных символов (кодирование).
— Паролефил (18/05/2014 02:56)   

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

Объясняю. Допустим, я подчистую зашифровал весь винт с системой. Первое время у меня будет бумажка, на которой записан пароль. Случайный 20-ти символьный пароль я буду запоминать две-три недели, прежде чем буду вводить его безошибочно по памяти. Потратив не меньшее время на придумывание алгоритма легкого запоминания, чем на игры с игральными кубиками и словарем, я запомню его за неделю. Пароль из десяти слов я запомню за один-два дня. После этого листочек будет уничтожен (огнем или унитазом). Разница в длительности наличия во вселенной листочка с паролем.

Для десятисимвольного пароля потеря энтропии из-за недопущения повтора слов и недопущения перестановки компенсируется одним словом (+ один бит случайных данных). Лично мне легче запомнить последовательность, составленную по правилам языка и являющую собой лулзовый, абсурдный шизофренический бред, чем запоминать просто последовательность слов, лишенную даже абсурдности. Лучше запомнить легкую фразу, соответствующую правилам языка. Потеря энтропии более чем оправдана возможностью сортировать слова.
Гость (18/05/2014 02:58)   

Речь идет о пароле, в котором символ=слово из словаря
— Паролефил (18/05/2014 03:59)   

Речь шла о том, что любые комбинации из конкретных слов воспринимаются как одна комбинация. Т.е. речь шла о допущении для пользователя перестановок и недопущении учета перестановок в рассчетах.
— SATtva (18/05/2014 09:10)   
Вот вам небольшая программа, составляющая из словарных слов случайную последовательность, эквивалентную 256-битной.



К примеру, со словарём Ушакова (35 тыс. слов):

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

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

Чем объёмнее словарь, тем короче будет вывод.
— тестерТьюринга (18/05/2014 14:20, исправлен 18/05/2014 19:46)   
[user@localhost ~]$ cracklib-<Tab><Tab>
cracklib-check cracklib-format cracklib-packer cracklib-unpacker  
[user@localhost ~]$ cracklib-check 
1qaz2wsx
1qaz2wsx: основан на слове из словаря
-pl,0okm
-pl,0okm: основан на слове из словаря
7ujm6yhn
7ujm6yhn: OK
4rfv5tgb
4rfv5tgb: основан на слове из словаря

Чем "7ujm6yhn" отличается от словарных слов?

Гость (19/05/2014 00:43)   

Во-первых, не надо писать весь пароль на бумажку. Вы можете установить в качестве пароля для LUKS пароль = старый + новый, где новый — тот, что на бумажке. В случае, если бумажку найдут, это не так фатально — старый пароль на ней не записан, поэтому противник не восстановит полный пароль. Когда пароль выучили, меняете его в слоте на новый, а старый, длинный (=старый+новый) стираете.

Я не очень давно имел возможность поменять пароли, поэтому могу рассказать, как обстоят дела с их запоминанием. Первое — я специально их не учил, но по мере ввода они сами собой запоминаются. Для паролей, которые надо вводить 2-3 раза в день, срок надёжного запоминания не превышает недели. Для паролей, которые вводятся раз 10 и более в день, нужно 1-2 дня для запоминания. Для пароля, который вводится раз в 3-4 дня, бывает, нужно 2 недели.

На самом деле, случайные пароли только кажутся случайными. Я думаю, что компьютеры нас обманывают. Давайте посмотрим нормальными человеческими глазами на образцы таких паролей:
$ pwgen -s -y 20 1
hH-vV<@m7IqGPw|^P#Qb
$ pwgen -s -y 20 1
_7Uka+{XMcfq.`Qv<LZ_
Честно говорю, что не сочинял, не подбирал. Выглядит случайно? Теперь смотрим внимательнее. Ничего не замечаете? Давайте их переконвертируем в то, с чем они у любого человека ассоциируются (записываю в столбик):

hH-vV<@m7IqGPw|^P#Qb
ℏHU < @m 7Iq G P[ass]w[ord] |#P Qb
Итак, мы имеем:
  • hH — это типа ℏH, т.е. постоянная Планки на гамильтониан. Явно одно к другому имеет отношение.
  • -vV — это типа -U, т.е. из гамильтониана вычли потенциальную энергию (H=E+U), т.е. появление модифицированного -U явно должно на что-то намекать. Т.е. ℏHU — член типа кинетической энергии.
  • ℏHU < @m — это, конечно же, кусок какой-то анонимной функции на MatLabe:
    f = @x x + y;
    — именно на анонимную функцию указывает знак «@», просто тут не «=», а «<».
  • 7Iq — что это? Конечно же, семь интергральных инвариантов из термеха! Я думаю, у многих Iq ассоциируется именно с ними.
  • G — гравитационная постоянная. Тут и так всё ясно. Заметьте, что мы разбираем уже 12-ый символ, а речь пока идёт лишь про механику, что очень легко запомнить.
  • Pw — сокращение от password.
  • | — надо запомнить.
  • ^P# = #P практически, только пермутацию в знаке степени надо сделать. То, что это в степени, как раз логично — это обозначение класса сложности #P[link18].
  • Qb = Qb — это надо просто запомнить. Что-то типа теплоты Q с индексом b (когда индексов два, часто один обозначают a, а другой b).

Теперь разберём второй пароль:
_7Uka+{XMcfq.`Qv<LZ_
Перобразуем его к человеческому виду:
_СУка+ { XM(L) cfg. `Qv < LZ_
  • _7Uka+ = _СУка+. Без комментриев. Только не обычная сука, а сука+. Типа есть C, а есть C++, тут так же.
  • { — просто надо запомнить.
  • XM = XML, только без последней буквы.
  • cfg. — это расширение .cfg, только точка стоит не в начале, а в конце.
  • ` — надо запомнить.
  • Qv — обе буквы имеют отношение к термодинамике[link19]: первая — теплота, вторая — объём вроде.
  • Вся хрень, которая написана слева, менее чем LZ_ — < LZ_. Здесь LZ — это, конечно же, алгоритм сжатия данных Лемпель-Зива[link20].

Итак, каким образом мы сжали данные пароли? Мы обнаружили, что они состоят из словарных слов, ранее уже имевшихся в памяти. Случайный пароль — это такая своеобразная формула, в которой много смыслов, и из-за этого она неслучайна, её легко запомнить. Т.е. настоящие случайные пароли с точки зрения человека вполне могут оказаться совсем неслучайными.

Обычно я не придумываю все эти смыслы к паролям — они сами непроизвольно в голову лезут как ассоциации. Вообще, если вы когда-нибудь работали с формулами и пытались увидеть за ними суть, т.е. «что они означают», то вам эта методика будет проста и понятна.


Аналогично, но только правилам математического языка.
Гость (19/05/2014 00:47)   

Лучше совмещать. Я сначала сжигаю, потом радиоактивный[link21] пепел смываю в раковину и захораниваю в горах.
— Паролефил (19/05/2014 09:48)   

За хитрость спасибо! Действительно, так надежнее выйдет. Но скомпрометированный пароль я поостерегся бы использовать таким образом.
Я тоже, 17-го, кажется, составил пароль для жесткого доска. Уже помню. Вводил всего два раза. Доставляет иногда повторять его в голове. Фраза лулзова и абсурдна. Хочу заметить, что словарь Ожегова не дает все варианты педежей или множественное и единственное число. Там есть, допустим, слово "скрепка", но нету слов "скрепками" или "скрепкой". Соответственно, можно без потери энтропии несколько видоизменять слово. Допустим, у нас есть слова "вопиющий" "рык" "натурный" "паранджа" "кроить" "гармония" "электробус" "щель" "засечь" "троеборье". Мы не потеряем в энтропии, если чуть изменим фразу: "Вопиющий рык натурной паранджи кроил гармонию, электробус-щель засек троеборье". Энтропия не потеряется из-за специфики словаря. С потерей энтропии можно попробовать поменять слова местами для большей лулзовости. Не факт, что получится, но попробуем: "Вопиющая гармония троеборья, кроившая рык натурной паранджи, засекла щель электробуса, ". В любом случае, энтропия будет больше 128бит, если слова отобраны достаточно случайно. В словаре Ожегова напечатано не менее 40000 слов (исходя из числа слов на странице и количества страниц). При десяти словах, меняемых местами произвольно, достаточно превысить 35000 слов в словаре, чтобы получить более 128 бит энтропии. По поводу потери энтропии при условии неповторения слов и произвольной замены, малость ошибся. Все-таки "полтора" лишних слова компенсируют потерю энтропии (одного слишком мало, двух слишком много). Был сонный и по сонности посчитал COMBINA для десяти слов(в добавок к уже имеющемуся количеству комбинаций), вместо прямого сравнения 50000^10 и COMBIN(50000;10).
Несомненно, таким образом можно научиться запоминать пароли. Лично мне это гораздо сложнее, чем запомнить абсурдофразу. Только вот набивать абсурдофразу сложнее и дольше. Думаю, что метод "верно лошадь скрепка батарея" тоже имеет место быть и вполне может обеспечить достаточную стойкость пароля при правильном применении, обладая лишь одним заметным минусом – длительностью ввода пароля.
— unknown (19/05/2014 10:30, исправлен 19/05/2014 10:32)   

2 /comment79707[link22]:
Я уже выдвигал альтернативные аргументы[link23]. После того как вы изложили подробнее свои, я считаю, что всё упирается в индивидуальные особенности памяти. Они у всех разные. Сложно равнять всех по себе и своему окружению.


Вариантов м.б. масса:


  1. Кто-то может вообще не переваривать формулы и однобуквенные сокращения. У него м.б. гуманитарное образное мышление. Возможно, таких большинство даже среди программистов, которые не занимаются фундаментальной математикой. Им проще из ряда слов составить сценку, ассоциативный ряд, рассказ, стихотворение, из которых эти слова можно обратно вытащить в правильном порядке.
  2. Кто-то может профессионально работать с формулами и запоминать их, но только если у них существует естественный, а не придуманный смысл. Т.е., например инженер, который пользуется почти всегда только готовыми формулами, а свои выводит редко. Т.е., он запоминает формулу целиком, а если в ней просто переставить символы, она будет вылетать из памяти и вызывать путаницу.

Мем «лошадь-батарея-скрепка» взят из diceware[link24]. И придуман он не для специфических гуманитариев, а на основе методик, использовавшихся военными/шпионами. Diceware использует специально подобранный короткий словарь, из коротких запоминающихся слов, в котором на каждое слово приходится примерно 12.8 бит энтропии. Как равномерно выбрать слово из словаря с помощью подручных средств (принципиально без компьютера) — в методике также описано[link25].


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


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

Гость (19/05/2014 13:06)   

На мой взгляд, к минусам метода относится невозможность коррекции под естественный порядок слов. В идеале, словарь должен быть подобен словарю Ожегова (толковым, без перебора всех возможных падежей, родов и чисел), а энтропия должна рассчитываться с учетом возможности замены порядка слов под естественный язык. Большая длина компенсируется запоминаемостью. Программу для подбора слов по словарю уже выкладывали. Осталось только словарь составить.
— unknown (19/05/2014 14:03, исправлен 19/05/2014 14:03)   

Запоминаемость, ассоциативные связи, короткие многозначные слова, отсутствие падежей и прочих сложных грамматических форм, сочетаемость почти всех слов между собой — всё это хорошо работает только для английского словаря и соответствующей аудитории. Само по себе это не плюсы английского языка, это его особенности, которые удачно подошли для выбранной задачи. Это как в песнях — на английском любой бред из примитивных базовых слов может казаться осмысленным, если его спеть. Поэтому, аналоги diceware-словаря на других языках оказываются менее удачными.

— Паролефил (19/05/2014 14:44)   

Выше был приведен пример со словами из словаря Ожегова. Суть не в том, чтобы в языке обязательно отсутствовали сложные грамматические формы. Суть в том, чтобы был словарь "слов-смыслов". А грамматические формы могли добавляться составителем пароля на основе правил языка. Допустим, в словаре есть слово-смысл "скрепка", но нету слов "скрепку", "скрепок", "скрепками", "скрепки", "скрепках", "скрепкой" и т.д. которые являются подмножеством слова-смысла "скрепка", присутствующего в словаре. Тогда составитель пароля может сам изменять слово "скрепка" на любое из перечисленных выше слов, делая яркий и запоминаемый образ. В этом случае русский язык будет работать не хуже английского. Единственный минус – более длинные, в среднем, слова.
— unknown (19/05/2014 15:14, исправлен 19/05/2014 15:19)   

В принципе, такой подход тоже может быть перспективным: сделать словарь с запасом по энтропии, чтобы допускать неслучайность фразы за счёт грамматической и синтаксической склейки предложений самим пользователем, как ему удобнее запоминать. Только будет сложно формализовать: одним способом можно склеивать, а вот какой-то другой способ — это уже перебор и выход за пределы допустимого. Но думаю, идея реалистичная и вполне жизнеспособная.



А не Ушакова[link26]? Там много устаревших, трудновыговариваемых и труднозапоминаемых слов.

— SATtva (19/05/2014 15:47)   
Словарь может быть вообще любой, хоть нецензурной лексики фразеологический. Можно конкатенировать несколько, в том числе иностранные. Правда, даже если скомпилировать словарь на полмиллиона слов, для 256-битной стойкости всё равно потребуется набор из 14 слов (т.е. всего на 3 слова меньше, чем при словаре на 35 тыс. слов).
— Паролефил (19/05/2014 15:49)   

Думаю, в качестве образца, приемлем вариант словаря Ожегова. В нем есть слова, но не приведены все варианты, образованные от этого слова. В итоге мы можем достаточно свободно менять падеж, число и род слова. При этом категорически нельзя менять саму разновидность части речи. И даже возможность менять слова местами обходится не так дорого. Для 128 бит пароля хватит десяти слов, вместо восьми, при словаре в 35000 слов. При этом четко и легко просчитывается минимальная, гарантированная энтропия. По сути, очень трудно просчитать реальный запас энтропии, который получится за счет различных вариаций "слов-производных" от слов из словаря и манипуляцией ими по правилам языка. Энтропия будет выше, но для её оценки надо иметь очень точную математическую модель языка, адаптированную под среднего пользователя. Так что для применения подхода правила уже готовы, гарантированная энтропия просчитывается. Надо только составить словарь с достаточным набором слов, которые будут проверены на "взаимные пересечения" слов, полученных из слов-смыслов словаря. Тогда можно использовать такой метод для автоматической генерации набора слов-смыслов, из которых будет составлен пароль, в сколь угодно ответственных случаях. Для надежного, "промышленного" решения надо составить свой словарь в удобной для автоматической генерации форме, прошедший необходимую проверку.
— Паролефил (19/05/2014 15:53)   

Надо полистать словарь Ушакова. Вполне может подойти. У меня только Ожегова лежит на полке. С ним много экспериментировал. Главное требование к словарю – отсутствие вариаций одного слова по родам, числам и падежам.
Гость (19/05/2014 18:17)   

Менять пароли надо до их компрометации. :-) Могу подсказать ещё пару хитростей: кому-то проще выучить не сразу весь 39-40-символьный пароль (256 бит), а по частям: сначала первые 20 символов, потом вторые. В этом случае сначала меняем старый пароль на стырый+новые_20_символов, а потом, когда выучили, на новые_20_символов+ещё_20_символов. Если беспокоитесь, что забудете — держите 2 слота в LUKS: один со старыми паролями, другой с новыми. Когда новые надёжно выучите, старые слоты можно будет убить.


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


А если делать пароль со всеми печатными символами, то будет всего 20. 20 или 160 — разница есть?


Наверное, по diceware и я запомню быстрее, так что моя память — не исключение. Разница в том, что я готов немного поплатиться лёгкостью запоминания в пользу краткости пароля, в то время как другие — нет.

Ранее здесь уже обсуждались методики сопоставления осмысленных слов случайно сгенерированным паролям («фонетический пароль»?) — типа как легче их запомнить. Мой метод по сути такой же. Может быть, можно даже иметь публичную таблицу, по которой из запомненных слов легко восстановить исходный компактный пароль, или даже реализовать это в виде программы. В этом случае, если вы боитесь забыть пароли, фонетический метод будет всегда работать, но, возможно, позже вы выучите и короткую форму того же самого пароля.
— Паролефил (19/05/2014 21:32)   

Есть задачи, где это критично, а есть задачи, где не критично. Набрать пароль один раз при каждом включении домашнего компьютера – совсем не трудно. Постоянно (много раз в день) использовать такие пароли в работе – затруднительно.

У меня при пересчете символов методом перестановки курсора мышки и устного пересчета насчиталось 85 символов. Подумайте, какая средняя длина слова, если в сумме символов 160. И найдите хоть одно слово, которое больше или равно этой длине. А сам пароль можно делать и без пробелов. Пробелы просто для читабельности были добавлены, иначе люди сломали бы глаза.
Оба метода заслуживают внимания. И решение надо принимать исходя из частоты ввода пароля и личного выбора между легким запоминанием и легким вводом.
Гость (20/05/2014 18:56)   

$ echo Вопиющая гармония троеборья, кроившая рык натурной паранджи, засекла щель электробуса |sed 's/[[:space:]]//g' |wc -c
151
Гость (20/05/2014 20:14)   
По-моему, словари diceware имеет смысл сократить в несколько раз. Английский вариант содержит в основном редкоупотребительные слова, и свободно пользоваться им может только носитель языка. В русском варианте тоже слишком много редких или просто корявых слов со смутным смыслом. Ведь замена одиночных символов на слова делается для более ясного образа каждого элемента случайной последовательности, при одновременном увеличении его битности. Уменьшение размера словаря с 8 до 2 тысяч равнозначано уменьшению с 13 бит/слово до 11 бит/слово. 128 битам будет соответствовать не 10 слов, а 12, но при этом все слова будут иметь ясные ассоциации. Это аналогично исключению спецсимволов из последовательности одиночных знаков. sh7nMj4hxT по битности практически эквивалентно fh^Vh$ycs9, но вводится и запоминается намного легче.

На сайте про diceware подчёркивается что для генерации фразы нужен игральный кубик, поэтому программами лучше не пользоваться.
— Паролефил (21/05/2014 17:30)   

Неправильно считает. У нас десять слов, в самом длинном из них (слове "электробуса") 11 символов. Если все слова удлинить до 11 символов, то в сумме выйдет 110 символов. Но у нас 9 слов короче. Более того, очень интересный результат дает подсчет символов для слова "хук" (вид удара в боксе):
$ echo 'хук' |wc -c
7
Мне тоже верить, что трехсимвольное слово "хук" состоит из семи символов?

На мой взгляд, не стоит слишком сокращать словарь. Даже малый словарь даст рассчитываемую энтропию. Но, его излишнее сокращение даст низкую энтропию, если мы даем возможность составителю пароля произвольно менять местами слова. Для 128 бит и 35000 слов достаточно 10 слов с возможностью менять их порядок произвольно. Для 2000 слов потребуется уже 16 слов с возможностью изменять порядок следования слов. В добавок, наличие только обычных, частоупотребимых слов может сократить лулзовость фраз. Но и такой, короткий словарь должен быть. Если мы не меняем порядок слов, то всё нормально. Чем больше методов, дающих заданную энтропию, тем лучше. Значит, больше людей смогут подобрать метод под себя.
— unknown (21/05/2014 17:36)   
Сейчас дойдём до того, что проще подбрасывать монетку и запоминать последовательность из 128 результатов. Надо только правильную мнемоническую методику придумать.
— sentaus (21/05/2014 17:44)   
$ echo 'хук' |wc -c
7
Мне тоже верить, что трехсимвольное слово "хук" состоит из семи символов?

Вы ж у него число байт спросили, а не символов.
Гость (21/05/2014 18:03)   

Спасибо, sentaus. Теперь понятно, в чем ошибка моего оппонента. И мне надо будет почитать маны по wc.
— Паролефил (21/05/2014 18:11)   
Итого, выходит:
$ echo Вопиющая гармония троеборья, кроившая рык натурной паранджи, засекла щель электробуса |sed 's/:space://g' |wc -m
77
Что весьма отличается от 160.

Ссылки
[link1] https://telepathwords.research.microsoft.com/

[link2] https://www.microsoft.com/ru-ru/security/pc-security/password-checker.aspx

[link3] http://www.pgpru.com/comment59119

[link4] http://www.pgpru.com/comment74554

[link5] http://www.pgpru.com/comment46842

[link6] http://www.pgpru.com/comment38758

[link7] http://www.pgpru.com/comment74544

[link8] http://www.pgpru.com/comment29143

[link9] http://www.pgpru.com/comment40392

[link10] http://www.pgpru.com/comment74547

[link11] http://www.pgpru.com/chernowiki/rukovodstva/voprosykandidatyvfaq/kriptografijapraktika

[link12] http://www.pgpru.com/novosti/2013/uluchshennyemetodyizvlechenijakljuchejjpoakusticheskomuidrugimpobochnymkanalam

[link13] http://habrahabr.ru/post/174773/#comment_6071989

[link14] http://www.openwall.com/john/

[link15] http://www.pgpru.com/comment75226

[link16] http://www.pgpru.com/comment40354

[link17] http://www.pgpru.com/comment75856

[link18] https://complexityzoo.uwaterloo.ca/Complexity_Zoo:P#psharpp

[link19] https://ru.wikipedia.org/wiki/Термодинамические_потенциалы

[link20] https://en.wikipedia.org/wiki/Lempel-Ziv

[link21] http://www.pgpru.com/biblioteka/osnovy/fondzamechateljnyhcitat#fpts2

[link22] http://www.pgpru.com/comment79707

[link23] http://www.pgpru.com/comment75251

[link24] http://www.pgpru.com/comment40391

[link25] http://world.std.com/~reinhold/diceware.html

[link26] http://www.pgpru.com/comment79677