Аутентификационной триаде: «что я знаю», «что я имею» и «кто я есть» уже не одна тысяча лет и за это время ни один из этих принципов не вырвался вперед, более того эффект получается сильнее если их использовать вместе.
Но мне сегодня хочется поговорить именно о принципе «что я знаю», оставив в покое многофакторную аутентификацию.
В мире Информационной Безопасности, реализация данного принципа известна, как «пароль» («password»).
Проверка пароля это первый и часто единственный шаг подтверждения подлинности, запросившего авторизацию. Посему естественным желанием Владельца ценной информации – это что бы пользователи использовали безопасные пароли, а информационные системы обеспечивали требуемый уровень безопасности.
В связи с этим возникает вопрос: Какой пароль считать безопасным?
Наиболее распространённые советы, что я слышал, можно обобщить следующим образом:
- Пароль должен быть длинным и должен представлять собой смесь букв различных регистров, цифр и специальных символов (будем называть множество символов используемых в пароле – алфавитом) .
- Пароль в целом или его фрагменты не должны представлять собой слов, которых можно найти в словаре.
- Пароль должен периодически меняться.
- Для разных приложений/систем должны использоваться разные пароли. При этом различия должны присутствовать не только в «тексте» самого пароля (парольной фразы), но и в принципах построения парольной фразы.
- Нельзя использовать пароли установленные/предлагаемые "по умолчанию".
О чем все таки речь?
Что реально нужно злоумышленнику? Пароль? Нет.
В общем случае, ему необходимо получить авторизацию в информационной системе (или приложении) соответствующую вашему уровню. Для этого можно определить следующие стратегии поведения атакующего:
- обход/обман средств аутентификации, используя уязвимости ПО/системы аутентификации
- украсть пароль. Здесь надо выделять два главных момента:
- украсть на пути от владельца пароля до системы аутентификации, например, используя перехват/прослушку данных в момент их ввода при помощи клавиатуры или в момент их передачи каналами связи между человеком и системой аутентификации
- ввиду того, что мы находимся в парадигме «что я знаю», то здесь необходимо рассматривать уязвимости, присущие человеку, и которые могут быть использованы в результате, например, атак использующих методы социальной инженерии (например, фишинг).
- воспроизвести пароль путем его угадывания или подбора.
Противодействие угадыванию
Для уменьшения вероятности угадывания пароля необходимо отказаться от использования:
- паролей по умолчанию
- паролей состоящие из слов или фраз, что могут быть ассоциированы с владельцем пароля (его личностью, семьей, увлечением, работой, привычками и т.п.)
- паролей, которые могут быть найдены в словарях. Здесь следует отметить, что речь идет не только о словарях связанных с тем или иным языком, а и о словарях, которые хранят парольные фразы полученные из других баз данных паролей или собраны иным другим путем (например, при помощи сервиса подобного этому 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 атаки (перебор всех возможных комбинаций) и атаки с использование «радужных-таблиц».
Что необходимо учитывать при выборе длинны пароля и размера алфавита для эффективного противостояния атакующему?
- Период времени, на протяжении которого необходимо «cдерживать атаку». Особенно важно для архивов конфиденциальность которых нужно сохранять длительное время (десятки лет).
- Уровень развития производительности инструментов атаки, доступных атакующему. Уже сегодня используя одну систему на базе Tesla S1070, можно достичь скорости перебора производительности до 2000 миллионов паролей в секунду для подбора паролей хешированных при помощи MD5.
- Виды доступных радужных таблиц. Здесь пока не все так плохо для пользователя, потому как для полного ascii-32-95, я пока встречал таблицы предназначенные для подбора максимум 8 символьных паролей и то для MD5 и NTLM.
- Применяемые хеш-функции, вычислительная сложность которых может оказать существенное влияние на скорость атаки.
Думаю, что пора немного остановится.
Казалось бы такая простая штука – пароль…
Немає коментарів:
Дописати коментар