пʼятницю, 10 лютого 2012 р.

О сильных паролях замолвите слово: Введение

Данный пост не предполагает обсуждение техник придумывания и запоминания безопасных паролей, а направлен обозначить основные моменты которые должны помочь понять, чем определяется «безопасность пароля» и почему в одном случае достаточно 4 цифры, а в ином и 20 мало …

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


В мире Информационной Безопасности, реализация данного принципа известна, как «пароль» («password»).

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

В связи с этим возникает вопрос: Какой пароль считать безопасным?
Наиболее распространённые советы, что я слышал, можно обобщить следующим образом:
  1. Пароль должен быть длинным и должен представлять собой смесь букв различных регистров, цифр и специальных символов (будем называть множество символов используемых в пароле – алфавитом) .
  2. Пароль в целом или его фрагменты не должны представлять собой слов, которых можно найти в словаре.
  3. Пароль должен периодически меняться.
  4. Для разных приложений/систем должны использоваться разные пароли.  При этом различия должны присутствовать не только  в «тексте» самого пароля (парольной фразы), но и в принципах построения парольной фразы.
  5. Нельзя использовать пароли установленные/предлагаемые "по умолчанию".
Советы, честно говоря, правильные,  но если их переводить в практическую плоскость, то не совсем понятно, когда и как поступить: какую длину  и какой размер алфавита считать достаточным, что значит слова из «словаря»,  как часто нужно изменять пароль.

О чем все таки речь?
Что реально нужно злоумышленнику? Пароль? Нет.
В общем случае, ему необходимо получить авторизацию в информационной системе (или приложении) соответствующую  вашему уровню.  Для этого можно определить следующие стратегии поведения атакующего:
  1. обход/обман средств аутентификации, используя уязвимости ПО/системы аутентификации
  2. украсть пароль. Здесь надо выделять два главных момента:
    1. украсть на пути от владельца пароля до системы аутентификации, например, используя перехват/прослушку данных в момент их ввода при помощи клавиатуры или в момент их передачи каналами связи между человеком и системой аутентификации 
    2. ввиду того, что мы находимся в парадигме «что я знаю», то здесь необходимо рассматривать уязвимости, присущие человеку, и которые могут быть использованы в результате, например, атак использующих методы социальной инженерии (например, фишинг).
  3. воспроизвести пароль путем его угадывания или подбора.
Как мы видим, только третий сценарий нацелен на эксплуатацию уязвимости самого пароля. Остальные очень важны, но они связаны с уязвимостями других систем, поэтому здесь рассматриваться не будут.

Противодействие угадыванию
Для уменьшения вероятности угадывания пароля необходимо отказаться от использования:
  • паролей по умолчанию
  • паролей состоящие из слов или фраз, что могут быть ассоциированы с владельцем пароля (его личностью, семьей, увлечением, работой, привычками и т.п.)
  • паролей, которые могут быть найдены в словарях. Здесь следует отметить, что речь идет не только о словарях связанных с тем или иным языком, а и о словарях, которые хранят парольные фразы полученные из других баз данных паролей или собраны иным другим путем (например,  при помощи сервиса подобного этому http://howsecureismypassword.net/).

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

В поиске ответа на этот вопрос давайте определим, как связаны длина пароля и алфавит с множеством уникальных паролей:
Если L – это  длинна пароля (в символах), а N - размер алфавита, то количество уникальных паролей  M можно определить по формуле:
M = N^L
Интересный и важный момент о котором многие забывают: если скрыть от злоумышленника длину пароля и величину алфавита, то максимальное количество попыток (К),  которое может потребоваться злоумышленнику,  будет во много раз больше:
К = sum(i^j), где i=1, N ; j=1, L
Для иллюстрации, рассмотрим пример, пусть мы используем для создания пароля только цифры от 0 до 9  и длина нашего пароля 4 символа. 
Тогда получается, что на таком наборе мы можем выбрать
M = 10^4 = 10 000 уникальных паролей
При этом если всегда и везде заявлять, что для пароля мы используем цифры и первые три буквы латинского алфавита, и если это информации станет известна атакующему, то ему может потребоваться
K = 13^1+13^2+13^3+13^4 = 13 + 169 + 2 197 + 28 561 = 30 940 попыток
Приведенный пример достаточно примитивен, но я его привел, что бы проиллюстрировать в цифрах, что оберегая Самую страшную тайну, мы создаем дополните трудности атакующему, которые могут нас уберечь от неприятностей.

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

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

Я бы здесь обратил внимание на два вида характерных атак:
  • атаки на приложение – атаки когда перебор осуществляется непосредственно используя интерфейс приложения по вводу аутентификационных данных
  • off-line атаки на базу данных паролей – атаки непосредственно на базы данных хранящих информацию о паролях. Данный вид атак сопряжен с предварительным хищением такой базы данных (или ее копии).
Противостоять первому виду атак наиболее просто: ввод задержек и ограничений на время жизни пароля, применение различного рода блокировки, для фактов неудачных попыток ввода, позволяет значительно снизить требовния к сложности пароля с сохранением его безопасного уровня.
В качестве примера, хочется привести 3 символьные цифровые CAV2/CVC2/CVV2/CID коды, как варианты наверное самых коротких распространённых паролей или 4 символьные цифровые PIN-коды все тех же платежных карт…

Наиболее опасны  off-line атаки на базу данных паролей. Если существует вероятность осуществления таких атак


Категорически запрещено использовать системы/приложения, хранящие пароли в открытом виде!

При off-line атаках на базы данных хранящие хеши паролей, сегодня наиболее распространены brute-force атаки (перебор всех возможных комбинаций) и атаки с использование «радужных-таблиц».

Что необходимо учитывать при выборе длинны пароля и размера алфавита для эффективного противостояния атакующему?
  1. Период времени, на протяжении которого необходимо «cдерживать атаку». Особенно важно для архивов конфиденциальность которых нужно сохранять длительное время (десятки лет).
  2. Уровень развития производительности инструментов атаки, доступных атакующему. Уже сегодня используя одну систему на базе Tesla S1070, можно достичь скорости перебора производительности до 2000 миллионов паролей в секунду для подбора паролей хешированных при помощи MD5.
  3. Виды доступных радужных таблиц. Здесь пока не все так плохо для пользователя, потому как для полного ascii-32-95, я пока встречал таблицы предназначенные для подбора максимум 8 символьных паролей и то для MD5 и NTLM.
  4. Применяемые хеш-функции, вычислительная сложность которых может оказать существенное влияние на скорость атаки.

Думаю, что пора немного остановится.
Казалось бы такая простая штука – пароль…

Немає коментарів:

Дописати коментар