Вычислительная сложность
- 1 year ago
- 0
- 0
Сло́жность (или сила , стойкость ) паро́ля — мера оценки времени, которое необходимо затратить на угадывание пароля или его подбор каким-либо методом, например, методом полного перебора . Оценка того, как много попыток (времени) в среднем потребуется взломщику для угадывания пароля. Другое определение термина — функция от длины пароля, его запутанности и непредсказуемости.
Слабый пароль — пароль, который может быть легко угадан или подобран методом полного перебора. Сильный пароль — пароль, который трудно угадать и долго подбирать методом полного перебора.
Использование сложных паролей увеличивает время, необходимое взломщику для подбора пароля, не отменяет необходимости использования других мер безопасности. Эффективность пароля заданной силы зависит от проектирования и реализации программного обеспечения систем аутентификации , в частности, от того, насколько быстро система аутентификации будет отвечать атакующему при его попытках подобрать пароль, и как надёжно хранится и передаётся информация о пароле. Риски также представлены некоторыми способами взлома безопасности компьютера , не относящимися к сложности пароля. Это такие методы как фишинг , кейлоггинг , телефонная прослушка, социальная инженерия , поиск полезной информации в мусоре, атака по сторонним каналам , уязвимости в программном обеспечении , бэкдоры , эксплойты .
Существуют два фактора, определяющих сложность пароля:
Первый фактор определяется тем, как пароль хранится, и тем, для чего он используется. Второй фактор определяется длиной пароля, набором используемых символов и тем, как пароль был создан.
Самый очевидный способ проверить догадку — попытаться использовать угадываемый пароль для получения допуска к защищённому паролем ресурсу. Однако этот способ может быть медленным или вообще невозможным, поскольку достаточно часто системы задерживают или блокируют доступ к аккаунту после нескольких попыток ввода неверных паролей. Системы, использующие пароли для аутентификации, должны хранить их в каком-либо виде для сверки с паролями, вводимыми пользователями. Обычно, вместо пароля хранят значение криптографической хеш-функции от пароля. Если хеш-функция достаточно сложная, вычислить пароль по хешу пароля сложно, то есть атакующий, возможно, не сможет восстановить пароль из украденного хеша. Однако знание хеша пароля и хеш-функции позволяет атакующему быстро проверять предположительные пароли, не обращаясь к атакуемой системе.
Если пароль используется для формирования криптографического ключа, используемого для шифрования данных, атакующий может быстро проверить правильность угадываемого пароля, судя по тому, успешно ли расшифровываются зашифрованные данные.
Если в системе хранения паролей не используется криптографическая соль , то атакующий может заранее вычислить значения хеш-функции для распространённых паролей и для паролей, длина которых меньше определённой длины. Используя полученные хеши, злоумышленник может быстро восстанавливать пароли по их кешу. Заранее рассчитанные хеши паролей можно эффективно хранить, используя радужную таблицу . Такие таблицы доступны в интернете для некоторых публичных систем аутентификации паролей.
Пароли создаются или автоматически (с использованием генераторов случайных чисел ), или человеком. Стойкость пароля к атаке методом полного перебора может быть вычислена точно. В большинстве случаев пароли создаются людьми, например, во время создания аккаунтов для компьютерных систем или веб-сайтов. Люди создают пароли, руководствуясь советами или набором правил, но при этом склонны следовать шаблонам, что играют на руку атакующему. Списки часто выбираемых паролей распространены для использования в программах угадывания паролей. Словарь любого языка является таким списком, поэтому словарные слова считаются слабыми паролями. Несколько десятилетий анализа паролей в многопользовательских компьютерных системах показали , что больше 40 % паролей легко отгадать, используя только компьютерные программы, и ещё больше можно отгадать, когда во время нападения учитывается информация о конкретном пользователе.
Автоматическая генерация паролей, если она выполнена должным образом, помогает избежать всякой связи между паролем и его пользователем. Например, имя домашнего питомца пользователя вряд ли сгенерируется такой системой. Для пароля, выбранного из достаточно большого пространства возможностей, полный перебор может стать практически невозможным. Однако действительно случайные пароли может быть сложно сгенерировать и, как правило, пользователю их сложно запомнить.
Сложность пароля в компьютерной индустрии обычно оценивают в терминах информационной энтропии (понятие из теории информации ), измеряемой в битах. Вместо количества попыток, которые необходимо предпринять для угадывания пароля, вычисляется логарифм по основанию 2 от этого числа, и полученное число называется количеством «битов энтропии» в пароле. Пароль со, скажем, 42-битной сложностью, посчитанной таким способом, будет соответствовать случайно сгенерированному паролю длиной в 42 бита . Другими словами, чтобы методом полного перебора найти пароль с 42-битной сложностью, необходимо создать 2 42 паролей и попытаться использовать их; один из 2 42 паролей окажется правильным. Согласно формуле при увеличении длины пароля на один бит количество возможных паролей удвоится, что сделает задачу атакующего в два раза сложнее. В среднем атакующий должен будет проверить половину из всех возможных паролей до того, как найдет правильный. См. закон больших чисел .
Случайные пароли создаются путём выбора случайным образом какого-либо количества символов из какого-либо набора таким образом, что выбор любого символа из набора равновероятен. Сложность случайного пароля зависит от энтропии используемого генератора случайных чисел; зачастую используются генераторы псевдослучайных чисел . Множество публично-доступных генераторов паролей используют генераторы случайных чисел, находящихся в программных библиотеках, которые предлагают ограниченную энтропию. Однако, большинство современных операционных систем имеют криптографически сильные генераторы случайных чисел, которые пригодны для генерации пароля. Для создания случайного пароля также можно использовать обычные игральные кости . Программы, предназначенные для создания случайных паролей, часто имеют свойство гарантировать, что результат будет удовлетворять местной политике паролей; например, всегда создавая пароль из смеси букв, чисел и специальных символов. Сложность случайного пароля, измеренная в терминах информационной энтропии, будет равна
где N — это количество возможных символов, а L — количество символов в пароле. H измеряется в битах.
Набор символов | Количество символов, N | Энтропия на один символ, H , биты |
---|---|---|
Арабские цифры (0-9) | 10 | 3,3219 |
Цифры шестнадцатеричной системы счисления (0-9, A-F) | 16 | 4,0000 |
Строчные буквы латинского алфавита (a-z) | 26 | 4,7004 |
Арабские цифры и строчные буквы латинского алфавита (a-z, 0-9) | 36 | 5,1699 |
Строчные и заглавные буквы латинского алфавита (a-z, A-Z) | 52 | 5,7004 |
Арабские цифры, строчные и заглавные буквы латинского алфавита (a-z, A-Z, 0-9) | 62 | 5,9542 |
Все печатные символы ASCII | 95 | 6,5699 |
Люди обычно создают пароли с недостаточно высокой энтропией. Некоторые фокусники используют эту человеческую особенность для развлечения и увеселения зрителей, угадывая предположительно случайные числа, загаданные зрителями.
Так, например, один анализ трёх миллионов созданных людьми восьмизначных паролей показал, что буква «e» была использована в паролях 1,5 миллиона раз, в то время как буква «f» — только 250 000 раз . При равномерном распределении каждый символ встречался бы 900 000 раз . Самая распространенная цифра — «1», тогда как наиболее популярные буквы — «a», «e», «o» и «r» .
Национальный институт стандартов и технологий (США) (NIST) для оценки энтропии пароля, созданного человеком и не включающего символы из неанглийских алфавитов, предлагает использовать следующий алгоритм:
По этому алгоритму энтропия придуманного человеком пароля, составленного из 8 символов, не содержащего заглавных букв и не содержащего неалфавитных символов, составит около 4+7*2=18 бит . Алгоритм основан на том предположении, что люди выбирают пароли с той же энтропией, что и обычный английский текст.
Для практических целей пароли должны быть одновременно обоснованной сложности и функциональными для конечного пользователя, но и достаточно сложными, чтобы защитить от умышленной атаки. Сложные пароли можно легко забыть, и их с большей вероятностью будут записывать на бумаге, что подразумевает собой некоторый риск. С другой стороны, если требовать от пользователей запоминать пароли наизусть, то они будут придумывать более лёгкие пароли, что серьёзно увеличит риск взлома.
Некоторые критерии надёжности были найдены при поиске ключа, используемого для шифрования данных, методом полного перебора . Эта проблема не та же самая, так как эти методы включают в себя астрономическое количество попыток, но результаты могут помочь определиться с выбором пароля. В 1999 году участники проекта Electronic Frontier Foundation взломали 56-битный шифр DES меньше чем за сутки, используя специально спроектированное аппаратное оборудование . В 2002 году участники сообщества distributed.net окончили взлом 64-битного ключа, затратив 4 года, 9 месяцев и 23 дня . А 12 октября 2011 года сообщество distributed.net оценило, что для взлома 72-битного ключа с использованием тогдашних возможностей потребуется 124,8 года . Ввиду огромной сложности и из-за ограничений, связанных с нашим пониманием законов физики, нельзя ожидать, что какой-либо цифровой компьютер (или их комбинация) был способен взломать 256-битный шифр с помощью метода полного перебора . Так или иначе, в теории существует возможность ( алгоритм Шора ), что квантовые компьютеры смогут решать такие задачи, однако возможно ли это будет на практике — неизвестно.
Как результат — нельзя дать точный ответ на в некоторой степени другую проблему, проблему оптимальной сложности пароля. Национальный институт стандартов и технологий (США) (NIST) рекомендует использовать пароль с 80-битной энтропией для наилучшей защиты, который может быть достигнут с помощью 95-символьного алфавита (то есть, набор символов из ASCII ) 12-символьным паролем (12 * 6,5 бита = 78).
Рекомендации по выбору хорошего пароля составлены для того, чтобы сделать пароль более стойким к разнообразным ухищрениям взломщиков .
Некоторые рекомендации советуют никуда не записывать пароль, в то время как другие, отмечая существование большого количества защищённых паролем систем, к которым пользователь должен иметь доступ, одобряют идею записывания паролей, если, конечно, список паролей будет находиться в надёжном месте.
Некоторые похожие пароли оказываются слабее, чем другие. Например, разница между паролем, состоящим из словарного слова, и паролем, состоящим из слова спутанного (то есть слова, буквы в котором заменены на, скажем, цифры сходного начертания, например: «о» на «0», «ч» на «4»), может стоить прибору для взлома паролей несколько лишних секунд — это добавляет к паролю немного сложности. В приведённых ниже примерах показаны разнообразные способы создания слабых паролей. В способах используются простые шаблоны, чем и объясняется низкая энтропия получаемых паролей — лёгкость их угадывания.
У пароля существует много других возможностей оказаться слабым, судя по сложности некоторых схем атак; главный принцип в том, чтобы пароль обладал высокой энтропией, а не определялся каким-либо умным шаблоном или личной информацией. Онлайн-сервисы часто предоставляют возможность восстановить пароль, которой может воспользоваться хакер и узнать таким образом пароль. Выбор сложного для угадывания ответа на вопрос поможет защитить пароль.
Политика создания паролей — набор правил, призванных:
Некоторые политики требуют, чтобы:
Установка интервала времени, в течение которого пароль может использоваться, служит для предоставления гаратий того, что:
Труднее всего взломать пароль, состоящий из случайных символов, даже если известны длина пароля и набор допустимых символов. Случайный пароль благодаря высокой энтропии не только трудно запомнить, но и долго подбирать методом полного перебора. Требование сочинять сложные пароли может способствовать тому, что забывчивые пользователи станут записывать пароли на бумажках, в мобильных телефонах, на КПК , будут делиться ими с другими пользователями. Брюс Шнайер рекомендует записывать свои пароли.
Люди больше не могут запоминать пароли, достаточно хорошие, чтобы надёжно защититься от словарных атак, и будет гораздо безопасней, если они выберут себе пароль слишком сложный, чтобы запомнить, и запишут его. Нам всем довольно просто обеспечить безопасность маленького куска бумаги. Я рекомендую людям записывать их пароли на маленький кусочек бумаги и хранить его вместе с остальными ценными бумажками в кошельке.
Оригинальный текст (англ.)Simply, people can no longer remember passwords good enough to reliably defend against dictionary attacks, and are much more secure if they choose a password too complicated to remember and then write it down. We're all good at securing small pieces of paper. I recommend that people write their passwords down on a small piece of paper, and keep it with their other valuable small pieces of paper: in their wallet.— Брюс Шнайер 2005
Политики паролей иногда предлагают техники, помогающие людям запоминать пароли:
Людям обычно советуют никогда и нигде не записывать свои пароли и никогда не использовать один пароль для разных аккаунтов. Несмотря на это обычные пользователи могут иметь десятки аккаунтов и могут использовать один и тот же пароль для всех аккаунтов. Чтобы не запоминать множество паролей, можно использовать специальное программное обеспечение — менеджер паролей, которое позволяет хранить пароли в зашифрованной форме. Также можно зашифровать пароль вручную и записать шифрограмму на бумаге, при этом запомнив метод расшифровки и ключ. Ещё можно слегка менять пароли для обычных аккаунтов и выбирать сложные и отличающиеся друг от друга пароли для высокоценных аккаунтов, таких как, например, интернет-банкинг .
Менеджер паролей — компьютерная программа , позволяющая пользователю использовать множество паролей и, возможно, требующая ввода одного пароля для доступа к хранимым паролям. Пароль к менеджеру паролей, естественно, должен быть как можно более сложным и не должен быть нигде записан.