id: Гость   вход   регистрация
текущее время 14:00 29/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 17:37)   <#>
А проще ли запомнить 200 символов, чем 200 слов?
— Гость (02/07/2010 17:42)   <#>
Поправка, следует читать 100 слов.
— unknown (02/07/2010 21:29)   профиль/связь   <#>
комментариев: 9796   документов: 488   редакций: 5664
А проще ли запомнить 200 символов, чем 200 слов?

Поправка, следует читать 100 слов.

100 слов? По словарю Diceware (из 7776 слов)? Это же 960 бит энтропии.
А 100 символов из 71 печатных — 615 бит
А 100 символов из 27 (лат буквы и пробел) — 475 бит.

Может всё-таки 10 слов?
— unknown (02/07/2010 21:52)   профиль/связь   <#>
комментариев: 9796   документов: 488   редакций: 5664
Идея в том, чтобы донести до понимания максимально правильный метод создания пароля против любого вычислительно мощного противника. Нужно только для особо критичных паролей — криптоконтейнеры, ключи.

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

Или придумайте своё правило, как вам удобнее запоминать.

Только представьте, что само это правило известно противнику, можете его хоть опубликовать в своём бложике. Затем рассчитайте энтропию при заданном числе элементов и генерируйте пароли по этому правилу нужной стойкости (128 бит), но не отступая от принципа равновероятного случайного выбора.
— Гость (02/07/2010 23:37)   <#>
100 слов? По словарю Diceware (из 7776 слов)? Это же 960 бит энтропии.
А 100 символов из 71 печатных — 615 бит
А 100 символов из 27 (лат буквы и пробел) — 475 бит.

Может всё-таки 10 слов?

Здесь под символами имелись ввиду альфанумерики, которые оппоненту было проще запомнить визуальной памятью. 220-и таким символам соответствуют 100 Diceware слов.

unknown (02/07/2010 21:52)

Всё верно. В своей заметке я пытался продемонстрировать, что ключевой материал может иметь различные представления не утрачивая своей сути.
— Гость (03/07/2010 00:35)   <#>
Кстати, людям не очевидно даже то, что обязательное включение в пароль специального символа, может отсечь необходимость брутфорса огромного количества ключевого материала, не включающего хотя бы один спец. символ, если оппонент заранее знает о том, что в пароле есть >1 спец. символа.
— Гость (03/07/2010 03:33)   <#>
Ключевое слово – обязательное :) Спецсимволов больше чем 1, так что, тем не менее, не совсем малина взломщику будет. И отсекётся при этом только "словарная часть" брутфорса, а основная, энтропийная – останется (можно сказать, что группа слов, объединённых каким-то признаком, есть словарь).
— Гость (03/07/2010 08:39)   <#>
Спецсимволов больше чем 1, так что, тем не менее, не совсем малина взломщику будет.

Это никакого отношения к проблеме не имеет.
И отсекётся при этом только "словарная часть" брутфорса, а основная, энтропийная – останется (можно сказать, что группа слов, объединённых каким-то признаком, есть словарь).

Что?
— Гость (03/07/2010 21:43)   <#>
людям не очевидно даже то, что обязательное включение в пароль специального символа, может отсечь необходимость брутфорса огромного количества ключевого материала, не включающего хотя бы один спец. символ, если оппонент заранее знает о том, что в пароле есть >1 спец символа

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

Например, пусть длина пароля 8, обычных символов 64, а специальных 16, тогда
(64 + 16)8 – число паролей из обычных и спецсимволов
648 – число паролей только из обычных символов
( (64 + 16)8 – 648 ) – число паролей хотя-бы с одним спецсимволом

их отношение ( (64 + 16)8 – 648 ) / 648 равно 4.96046448
(если ссылка не сработает, вставьте в гугл ((64+16)^8-64^8)/64^8 или воспользуйтесь другим калькулятором)

Tо есть в данном случае ключевого материала хотя бы с одним спецсимволом будет почти в 5 раз больше, чем вообще без спецсимволов. Увеличение длины пароля или числа (даже относительного) спецсимволов только "усугубляет" ситуацию.
— Гость (03/07/2010 22:28)   <#>
По поводу того, что лучше, увеличить длину пароля на один обычный символ или использовать специальный при той же длине может быть любопытно взглянуть на эти равенства:

(32^(8 + 1)) / ((32 + 16)^8) = 1.24859015
(26^(8 + 1)) / ((26 + 16)^8) = 0.560745515

(26^(12 + 1)) / ((26 + 16)^12) = 0.0823497033
(32^(12 + 1)) / ((32 + 16)^12) = 0.246635092

(42^(11 + 1)) / ((42 + 16)^11) = 1.20582298
(42^(12 + 1)) / ((42 + 16)^12) = 0.873182157

(52^(12 + 1)) / ((52 + 16)^12) = 2.0793927

(62^(18 + 1)) / ((62 + 16)^18) = 0.994807961
(64^(18 + 1)) / ((64 + 16)^18) = 1.1529215

8, 11, 12, 18 – длины паролей
16 – число спецсимволов

26 – число строчных букв латинского алфавита
32 – то же для русского
42 = 32+10 – плюс цифры
52 = 26+26 – прописные и строчные латинские
62 = 52+10 – плюс цифры
64 = 32+32 – прописные и строчные русские

Желающие проверить могут вставит то что до знака равенства в гугл (он, оказывается, ещё и калькулятор! :)
— Гость (04/07/2010 12:54)   <#>
Эти циферки должны по вашему доказывать что?
То, что обязательное включение в пароль специального символа не сокращает область поиска, при условии знания противника об этом действии?
То, что вводить и читать специальный символ (а то и не один в 21 символьном пароле) проще, чем добавить к паролю один обычный альфанумерик?
Нет, ничего этого ваши рассуждения не опровергают. И для чего, спрашивается, вы их тут написали?
— Гость (04/07/2010 14:22)   <#>
Эти циферки должны по вашему доказывать что?
То, что обязательное включение в пароль специального символа не сокращает область поиска, при условии знания противника об этом действии?
Да. В большинстве практических случаев.
То, что вводить и читать специальный символ (а то и не один в 21 символьном пароле) проще, чем добавить к паролю один обычный альфанумерик?
Нет. Но иногда встречается ограничение на длину пароля.
Нет, ничего этого ваши рассуждения не опровергают. И для чего, спрашивается, вы их тут написали?
Чтобы большему числу людей стало понятно, что к чему.
— Гость (04/07/2010 16:56)   <#>
Да. В большинстве практических случаев.

Каким образом? Вопрос, напомню, поставлен так: злоумышленник пытается подобрать пароль с использованием специальных значков; если ему к тому же известно то, что хитрый защищающийся обязательно добавляет хотя бы один специальный значок, то все пароли без значков отсекаются ещё до проверки.
Что даёт хитроумное добавление значка? В худшем случае ослабление пароля, в лучшем затруднение при использовании.
Верный способ компенсировать "ослабление" пароля из-за отсутствия значков? Увеличить его длину на один символ.
Неверный способ? Заменить один из символов на специальный значок.
Но иногда встречается ограничение на длину пароля.

Ограничение на длину пароля это абсурд, ибо в системах аутентификации всё равно хранится хэш-сумма, а в системах шифрования, где пароль преобразовывается в ключ, ограничивать длину пароля нет причин. Если где-то установлено ограничение на длину пароля, это повод пересмотреть выбор провайдера услуг, а не прибегать к хитроумному обману самого себя.
— Гость (04/07/2010 19:19)   <#>
Вопрос, напомню, поставлен так
Вопрос, на который я отвечаю "Да. В большинстве практическмх случаев.", поставлен так:
Эти циферки должны по вашему доказывать что? То, что обязательное включение в пароль специального символа не сокращает область поиска, при условии знания противника об этом действии?

Каким образом?
По законам арифметики. Можете посчитать сами и убедиться.

В худшем случае ослабление пароля
Спецсимволов в действительности как минимум 30: ~!@#$%^&*()_+`-={}[]:";'<>?,./
Если брать любимые вами альфанумерики (большие и малые латинские + цифры) то это худший случай наступает только при длине пароля равном одному символу (поскольку да, 30 < 62)

Но если пароль будет длиною хотя-бы 2 символа, уже получится некоторый выигрыш:
( (62 + 30)^2 – 62^2 ) / 62 ^ 2 = 1.20187305

С увеличением длины пароля разница становится более заметной:
( (62 + 30)^6 – 62^6 ) / 62 ^ 6 = 9.67521983
( (62 + 30)^8 – 62^8 ) / 62 ^ 8 = 22.5054788
( (62 + 30)^10 – 62^10 ) / 62 ^ 10 = 50.7560804
( (62 + 30)^12 – 62^12 ) / 62 ^ 12 = 112.960318
( (62 + 30)^14 – 62^14 ) / 62 ^ 14 = 249.926154
...
( (62 + 30)^21 – 62^21 ) / 62 ^ 21 = 3 973.83307
...
Как видите, при реальных длинах пароля замедление перебора получается как минимум в десятки раз.

Да, (для кого-то) это будет счёт некоторого затруднения использования. Стоил ли – каждый пусть решает для себя. Кому-то трудно запоминать спецсимволы, а некоторые просто запоминают расположение клавиш и нажатие shift'а :)

Если где-то установлено ограничение на длину пароля, это повод пересмотреть выбор провайдера услуг, а не прибегать к хитроумному обману самого себя.
Услуги иногда бывают уникальны. А иногда человек бывает связан услугой много лет, получает за это существенные преимущества (игры, социальные сети) и переход на аналог обернётся весьма существенной потерей.
На страницу: 1, 2, 3, 4, 5, 6 След.
Ваша оценка документа [показать результаты]
-3-2-1 0+1+2+3