id: Гость   вход   регистрация
текущее время 12:08 28/03/2024
Владелец: unknown (создано 01/02/2010 15:55), редакция от 01/07/2010 16:09 (автор: unknown) Печать
Категории: криптография, сайт проекта, faq
создать
просмотр
редакции
ссылки

Криптография: практика


Вычеркнутые вопросы перенесены в FAQ


Оглавление документа:

Парольную фразу какой длины имеет смысл использовать в программах шифрования?

Многие программы используют стандарт PBKDF2, который обеспечивает замедление атак словарного перебора, за счёт многократного хэшированию с солью. Многократное хэширование даёт замедление проверки каждого пароля. Т.н. "соль" (случайно сгенерированная открытая строка) используется для предотвращения использования заранее просчитанных таблиц ключей из паролей.


Если даже не рассматривать эти меры противодействия словарным атакам, то для самых консервативных оценок нужно исходить из 128-битной стойкости пароля.


Т. е. pn должно быть примерно равно 2128, где p — количество символов во множестве для случайного выбора, из которого составлен пароль, n — длина пароля.
Например 2727 ≈ 2128 — если можно запомнить абсолютно случайный набор из двадцати шести букв с клавиатуры + пробел, длиной также из 27 символов.


Энтропию одного символа можно посчитать, решив уравнение 2x=N, где N это количество символов в алфавите:
x = log2(N) = ln(N)/ln(2)
Умножив эту величину на количество символов в пароле, легко рассчитать его общую энтропию.


На практике проще всего запомнить 10 случайно выбранных слов из специально подготовленных словарей коротких слов Diceware, что даст 128-битный уровень. Слова можно связать во фразу для лёгкого запоминания, главное не использовать известные фразы, не подгонять порядок слов под естественный.


Для оптимизации простоты запоминания можно уменьшать число слов, но увеличивать число дополнительных символов, сверяя получаемое значение энтропии пароля с формулой.


См. также Современная техника взлома паролей, Выбор и защита паролей, Фонетический пароль

Следующий вопрос?



 
На страницу: 1, 2, 3, 4, 5, 6 След.
Комментарии [скрыть комментарии/форму]
— Гость (02/07/2010 11:41)   <#>
Т. е. pn должно быть примерно равно 2128, где p — количество символов во множестве для случайного выбора, из которого составлен пароль, n — длина пароля.
Например 2727 ≈ 2128 — если можно запомнить абсолютно случайный набор из двадцати шести букв с клавиатуры + пробел, длиной также из 27 символов.

Это непонятный, запутанный пассаж, предлагаю его удалить совсем. Нормальные люди не представляют себе что такое 2128.

Попробую написать действительно простое и понятное любому человеку объяснение эффективной длины ключа (возможно требует редактуры):

<...>

Если даже не рассматривать эти меры противодействия словарным атакам, то для самых консервативных оценок нужно исходить из 128-битной стойкости пароля.

Самый очевидный способ сделать пароль 128-битным — это записать его в виде буквальной последовательности ста двадцати восьми нулей и единиц. Каждый символ такого пароля будет соответствовать одному биту ключевого материала. Но вводить (не говоря уже о запоминании) 128 символов пароля совершенно непрактично.

Оказывается, если использовать для записи пароля три символа вместо двух, сохраняя объем информации в 128 бит, потребуется на целых 47 символов меньше. Если использовать десять чисел от 0 до 9, то 128 бит информации умещается всего в 39 символов (70% экономии). К сожалению, распространённая форма эффективной записи двоичной информации применяемая в компьютерах, использует алфавит из 256 символов, что уже слишком много для людей и средств ввода. Поэтому, для записи паролей чаще всего выбирают удобное подмножество из латинских букв и иногда чисел.

Пароль составленный из 26 букв от a до z, содержащий примерно 128 бит ключевого материала, имеет длину 28 символов. Если добавить в алфавит пароля заглавные буквы и цифры, длина может быть сокращена до 22 символов.

Можно отметить, что случайно сгенерированную последовательность всего из 28 маленьких букв крайне трудно запомнить. Человек никогда не практиковался в запоминании такой информации. Однако, если опереться на то, что человек может запомнить сравнительно легко, можно добиться надёжного сохранения 128-битного пароля в голове, а значит и в безопасности. Для этого используются так называемые парольные фразы, где вместо одиночных букв и цифр используются целые слова. В этом случае, размер алфавита символов–слов, из которого совершается рандомизированный выбор, может быть очень большим, что драматически сокращает общую необходимую длину пароля, выраженную в количестве слов (но не индивидуальных букв).

В популярной системе генерации парольных фраз Diceware, алфавит содержит 7776 символов (слов), что делает возможной запись 128-битного пароля всего десятью короткими словами. Слова можно связать во фразу для лёгкого запоминания, главное не использовать известные фразы и не подгонять порядок слов под естественный.

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



В общем случае, для алфавита из N символов, количество бит ключевого материала, содержащееся в одном символе можно вычислить, решив уравнение 2x = N :

x = log2(N) = ln(N) / ln(2)

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

Например, для алфавита из строчных и заглавных букв a-Z, чисел 0-9 и знаков !@#$%^&-+, количество символов равно 71.
Количество энтропии в одном символе ln(71)/ln(2) = 6.15 бит.
Для 128-битного пароля, требуется 128 / 6.15 = 21 символ.

Очевидной становится ошибочность распространённого представления о том, что добавление дополнительных знаков препинания и тому подобного в пароль делает его сильнее. Как выяснилось, по сравнению с паролем сопоставимой силы, не использующим специальных знаков, экономия составила всего один символ, при том что специальные знаки затрудняют ввод и чтение пароля.
— unknown (02/07/2010 12:16, исправлен 02/07/2010 12:18)   профиль/связь   <#>
комментариев: 9796   документов: 488   редакций: 5664
Это непонятный, запутанный пассаж, предлагаю его удалить совсем. Нормальные люди не представляют себе что такое 2128.

Ну это с прицелом на то, что "нормальные" люди этот абзац пропустят, а им можно будет отстреливаться от студентов с вопросами по криптографии.


В вашем варианте написано красиво и как нарочно несжимаемо для FAQ (жалко выкидывать любую строчку), ещё одна хорошая обучающая (и дающая представление об основах) статья/минилекция получается. Вот и не знаю как в таких ситуациях поступать — раздувать FAQ или откладывать в надежде переработать в статью или поделить вопрос на части.

— Гость (02/07/2010 12:18)   <#>
Очевидной становится ошибочность распространённого представления о том, что добавление дополнительных знаков препинания и тому подобного в пароль делает его сильнее
При подсчёте энтропиии вы не учитываете частоту употребления, и поэтому очевидной становится ошибочность этого утверждения. Затруднение ввода и чтения как раз и приводят к тому, что эти символы встречаются в паролях существенно реже, а подбор паролей начинается с наиболее употребляемых вариантов, и до спецсимволов может и не дойти.
— unknown (02/07/2010 12:29)   профиль/связь   <#>
комментариев: 9796   документов: 488   редакций: 5664
При подсчёте энтропиии вы не учитываете частоту употребления, и поэтому очевидной становится ошибочность этого утверждения. <...> подбор паролей начинается с наиболее употребляемых вариантов, и до спецсимволов может и не дойти.

А если противнику открыто заявить, что пароль 128-битный и сгенерирован в соответствии с самыми правильными рекомендациями, то утверждение опять становится верным :)
— Гость (02/07/2010 12:32)   <#>
Если добавить в алфавит пароля заглавные буквы и цифры, длина может быть сокращена до 22 символов.
Это пример с base64 – там ещё есть + и /
— Гость (02/07/2010 12:50)   <#>
При подсчёте энтропиии вы не учитываете частоту употребления, и поэтому очевидной становится ошибочность этого утверждения. Затруднение ввода и чтения как раз и приводят к тому, что эти символы встречаются в паролях существенно реже, а подбор паролей начинается с наиболее употребляемых вариантов, и до спецсимволов может и не дойти.

Суть моего утверждения как раз в том, что если пароль кажется недостаточно сложным для перебора, проще увеличить его один символ, чем добавлять необычные значки.
— Гость (02/07/2010 13:16)   <#>
Да и вообще делать какие-то предположения о действиях противника это профанация криптографии. Что если твой пароль окажется в начале пространства ключей в одной из подзадач брутфорсера, и она будет удачно случайно выбрана для проверки первой? Тогда стойкость пароля будет ничтожной.
Предполагать нужно только одно, брутфорс должен быть таким сложным, что никакие ухищрения и удача противника не помогут.
— Гость (02/07/2010 13:23)   <#>
В статье "Современная техника взлома паролей" (да и просто уже неоднократно обсуждалось на форуме) говорится о способах, которыми брутфорсится пароль – они там совсем "не энтропийные", а основаны на том, что "проще запомнить" (приставки, суффиксы), произносимые слова (опять "проще запомнить"), и т.д. Именно вся эта интеллектуальная кухня намекает на то, что советовать всякие псевдозапоминалки для паролей – профанация криптографии. Настоящий стойкий пас должен генериться машинно и выучиваться наизусть (таких паролей на машине совсем не много) – только в этом случае у противника надёжно нет надежды.
— Гость (02/07/2010 13:42)   <#>
А если противнику открыто заявить
А если он не поверит? :)

только в этом случае у противника надёжно нет надежды.
Но и не будет надёжной уверенности, что пароль удасться вспомнить. Дилемма...
— Гость (02/07/2010 13:45)   <#>
Именно вся эта интеллектуальная кухня намекает на то, что советовать всякие псевдозапоминалки для паролей – профанация криптографии. Настоящий стойкий пас должен генериться машинно и выучиваться наизусть (таких паролей на машине совсем не много) – только в этом случае у противника надёжно нет надежды.


То что вы написали и есть криптографическая профанация.

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







Очевидно, что криптографическому профану легче выучить кашу из символов, чем немного подумать головой.
— Гость (02/07/2010 13:53)   <#>
если пароль кажется недостаточно сложным для перебора, проще увеличить его один символ
, на один специальный символ, желательно в середине (посмотрите, как устроены программы подбора паролей).
— Гость (02/07/2010 14:01)   <#>
на один специальный символ, желательно в середине (посмотрите, как устроены программы подбора паролей).

Я разбиваю лицо ладонью. Специальный символ в середине, ага.
— Гость (02/07/2010 14:04)   <#>
А если в вашу программу добавят галочку для проверки специальных символов в середине, что будете делать? Глотать пилюлю с ядом?
— Гость (02/07/2010 14:35)   <#>
"А если бы у бабушки росла бы борода, её бы звали дедушкой". :)
Порядок перебора – от более частых к более редким. Тот, кто при подборе пароля сразу включает галочку, в среднем тратит времени больше. Поэтому так и не делают. А если... а если вам метеорит на голову упадёт? :)
— unknown (02/07/2010 14:41, исправлен 02/07/2010 14:42)   профиль/связь   <#>
комментариев: 9796   документов: 488   редакций: 5664
А если противнику открыто заявить
А если он не поверит? :)

... то всё равно верно.
Главное по факту,

что пароль 128-битный

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

На страницу: 1, 2, 3, 4, 5, 6 След.
Ваша оценка документа [показать результаты]
-3-2-1 0+1+2+3