- •Безопасность
- •Аппаратное обеспечение
- •Программное обеспечение
- •Линии связи и сети
- •15.2. Защита
- •Защита памяти
- •Контроль доступа, ориентированный на пользователя
- •Контроль доступа, ориентированный на данные
- •15.3. Взломщики
- •Методы вторжения
- •Защита паролей
- •Уязвимость паролей
- •Контроль доступа
- •Стратегии выбора паролей
- •Выявление вторжений
- •15.4. Зловредное программное обеспечение
- •Зловредные программы
- •Логические бомбы
- •Троянские кони
- •Природа вирусов
- •Виды вирусов
- •Макровирусы
- •Подходы к борьбе с вирусами
- •Обобщенное дешифрование
- •Цифровая иммунная система
- •15.5. Системы с доверительными отношениями
- •Защита от троянских коней
- •15.6. Безопасность операционной системы windows 2000
- •15.7. Резюме, ключевые термины и контрольные вопросы
- •Контрольные вопросы
- •15.8. Рекомендуемая литература
- •Приложение. Шифрование
- •Стандартное шифрование
- •Стандарт шифрования данных
- •Тройной алгоритм шифрования данных
- •Улучшенный стандарт шифрования
- •Шифрование с открытым ключом
- •А.2. Архитектура протоколов tcp/ip
- •Уровни протокола tcp/ip
- •Приложения tcp/ip
- •Б.1. Мотивация
- •Б.З. Преимущества объектно-ориентированного подхода
- •Б.2. Объектно-ориентированные концепции
- •Структура объектов
- •Классы объектов
- •Наследование
- •Полиморфизм
- •Включение
- •Список литературы
Защита паролей
Система паролей является передовой линией обороны против взломщиков. Почти во всех многопользовательских системах пользователю нужно вводить не только свое имя или идентификатор, но и пароль. Пароль служит для подтверждения идентификатора того человека, который входит в систему. Идентификатор, в свою очередь, обеспечивает безопасность следующим образом.
По идентификатору можно определить, имеет ли пользователь полномочия на доступ к системе.
С помощью идентификатора задаются привилегии данного пользователя. Лишь небольшое количество пользователей имеет статус суперпользователя, позволяющий им читать файлы и выполнять функции, которые находятся под особой защитой операционной системы. В некоторых системах имеются учетные записи гостя или анонимные учетные записи, пользователям которых предоставляется гораздо меньше привилегий, чем другим.
Идентификаторы используются для так называемого разграничительного контроля доступа (discretionary access control). Например, составив список идентификаторов пользователей, некий пользователь может дать им разрешение на чтение своих файлов.
Уязвимость паролей
Чтобы понять природу атак, рассмотрим часто применяющуюся в системах UNIX схему, в которой пароли никогда не хранятся в открытом виде. Вместо этого используется описанная ниже процедура (рис. 15.5,а). Каждый пользователь выбирает пароль длиной до восьми печатных знаков, который с помощью 7-битового кода ASCII преобразуется в 56-битовое значение. Это значение служит входным параметром для функции шифровки под названием crypt (3), которая основана на алгоритме DES. Алгоритм DES преобразуется с помощью 12-битового значения salt, которое обычно связано со временем выделения пароля пользователю. Модифицированный алгоритм DES выполняется с входными данными, состоящими из 64-битового блока нулей, в результате чего получается значение, которое используется в качестве входного значения для второго шифрования. Всего этот процесс повторяется 25 раз. Затем получившееся в результате 64-битовое выходное значение преобразуется в последовательность из 11 символов. После этого зашифрованный пароль сохраняется вместе с незашифрованным 12-битовым значением salt в файле с паролями для данного идентификатора пользователя.
Значение salt используется с тремя целями.
Благодаря ему в файле с паролями два одинаковых пароля выглядят по-разному. Даже если два пользователя выберут один и тот же пароль, назначение этих паролей произойдет в разное время. Поэтому "расширенные" одинаковые пароли двух разных пользователей будут отличаться.
Это значение эффективно увеличивает длину пароля, но при этом пользователю не нужно помнить еще два дополнительных символа. Таким образом, количество возможных паролей возрастает в 4096 раз, благодаря чему становится труднее отгадать пароль.
Это значение служит для предупреждения аппаратной реализации алгоритма DES, что могло бы облегчить проведение атаки с отгадыванием "в лоб".
При входе в систему UNIX пользователь вводит свой идентификатор и пароль. Операционная система использует идентификатор в качестве указателя для файла с паролями, извлекая из него незашифрованное значение salt и зашифрованный пароль. Введенный пользователем пароль используется в качестве входного значения шифровальной программы, после чего результат ее работы сравнивается с извлеченным зашифрованным паролем. Если эти два значения совпадают, пароль принимается.
Шифровальная программа устроена так, чтобы воспрепятствовать атакам с отгадыванием паролей. Программные реализации алгоритма DES работают медленнее, чем аппаратные версии; кроме того, необходимость 25 итераций увеличивает затрачиваемое время в 25 раз. Однако в этом алгоритме, по сравнению с его первоначальной реализацией, произошли две перемены. Во-первых, в новых реализациях была ускорена работа самого алгоритма. Например, вирус-червь, попавший в систему из Internet, был в состоянии производить отгадывание нескольких сот паролей в режиме реального времени за довольно короткий срок. Это достигалось за счет более эффективного алгоритма шифрования, чем стандартный, который хранился в системах UNIX. Во-вторых, производительность компьютерных систем продолжает возрастать благодаря новому аппаратному обеспечению, поэтому все программы работают быстрее.
Таким образом, для схемы паролей системы UNIX существуют две угрозы. Во-первых, пользователь может получить доступ к машине с помощью учетной записи гостя или каким-нибудь другим образом, а затем он на этой машине может запустить программу для отгадывания паролей, которая называется взломщиком паролей. Взломщику нужно суметь проверить сотни или тысячи возможных паролей, используя небольшие вычислительные ресурсы. Кроме того, если злоумышленник в состоянии получить копию файла с паролями, то программу-взломщик можно будет запустить в свободное время на другой машине. Это позволяет перепробовать в течение небольшого отрезка времени тысячи и тысячи вариантов паролей.
Пример взломщика паролей был опубликован в Internet в августе 1993 года [MADS93]. На параллельной вычислительной машине фирмы Thinking Machines Corporation достигнута производительность, равная 1560 шифрованиям в секунду в каждом векторном модуле. Если в каждом обрабатывающем узле установлено четыре векторных устройства (стандартная конфигурация), то всего на машине с 128 узлами (современный размер) получается 800000 шифрований в секунду, а на машине с 1024 узлами — 6.4 миллиона шифрований в секунду.
Однако даже такие огромные скорости перебора вариантов не позволяют взломщику отработать за разумное время все возможные варианты и отгадать пароль "в лоб". Поэтому взломщикам паролей остается надеяться, что некоторые пользователи выберут легко отгадываемые пароли.
Когда пользователям разрешено самим выбирать пароли, они стараются использовать пароли покороче. В табл. 15.2 приведены результаты одного из исследований, проведенных в университете Purdue. Изучались пароли на 54 машинах, на которых было представлено около 7000 учетных записей пользователей. Длина 3% паролей не превышала 3 символов. Взломщик мог начать атаку, настойчиво перебирая всевозможные комбинации из 3 или меньшего числа символов. Простейшим средством повышения безопасности в этом случае является настройка системы, при которой минимальное количество символов в пароле равно, например, шести. Можно даже потребовать, чтобы все пароли состояли ровно из восьми символов. Большинство пользователей не будут недовольны таким ограничением.
Таблица 15.2. Длина исследованных паролей
Длина |
Количество |
Относительное количество |
1 |
55 |
.004 |
2 |
87 |
.006 |
3 |
212 |
.02 |
4 |
449 |
.03 |
5 |
1260 |
.09 |
6 |
3035 |
.22 |
7 |
2917 |
.21 |
8 |
5772 |
.42 |
Итого |
13787 |
1.0 |
Слишком короткие пароли — это лишь часть проблемы. Многие из тех, кому разрешено выбирать пароли по собственному усмотрению, предпочитают легко запоминающиеся варианты, которые так же легко отгадать. Возможными вариантами могут быть имена пользователей, названия улиц, часто употребляемые слова из словаря и т.д. Нередко пароль оказывается таким же, как и идентификатор пользователя. Это значительно упрощает задачу тому, кто пытается отгадать пароль. Взломщику нужно просто проверить файл с паролями на наличие в нем наиболее вероятных паролей. Поскольку многие используют легко отгадываемые пароли, такая стратегия обеспечивает взломщикам успех почти на всех системах.
Одно из доказательств эффективности такого отгадывания представлено в [KLEI90]. Автор собрал из различных источников файлы с паролями, содержащие около 14000 зашифрованных паролей. Результат, который автор справедливо называет пугающим, показан в табл. 15.3, Ему удалось разгадать почти четверть всех паролей. При отгадывании использовались такие стратегии.
Перебор имен пользователей, их инициалов, регистрационных имен и дру гой подобной информации. На каждого пользователя приходилось по 130 вариантов, отличающихся перестановками символов.
Подбор слов из различных словарей. Автор составил словарь из 60000 слов, включая встроенный словарь самой системы и различные другие приведен ные списки.
Перебор возможных вариантов написания слов, испробованных в предыду щем пункте. Сюда вошли слова, написанные с прописной буквы или такие, в которых на первом месте стоит управляющий символ, все буквы являются прописными, порядок букв заменен обратным, буква "о" заменена нулем и т.д. В результате подобных комбинаций словарь пополнился еще одним миллионом слов.
Различные варианты написания слов из пункта 2 с использованием пропис ной буквы, которые не были рассмотрены в пункте 3. При этом список слов пополнился еще почти 2 миллионами вариантов.
Таблица 15.3. Количество взломанных паролей из пробного набора, состоящего из 13797 учетных записей [KLEI90]
Виды паролей |
Количество вариантов |
Количество совпадений |
Совпадение паролей, % |
Имя /регистрационное |
130 |
368 |
2.7 |
имя пользователя |
|
|
|
Последовательности |
866 |
22 |
0.2 |
символов |
|
|
|
Числа |
427 |
9 |
0.1 |
Китайские слова |
392 |
56 |
0.4 |
Названия мест |
628 |
82 |
0.6 |
Имена собственные |
2239 |
548 |
4.0 |
Женские имена |
4280 |
161 |
1.2 |
Мужские имена |
2866 |
140 |
1.0 |
Редко встречающиеся |
4955 |
130 |
0.9 |
названия |
|
|
|
Мифы и легенды |
1246 |
66 |
0.5 |
Творчество Шекспира |
473 |
11 |
0.1 |
Спортивные термины |
238 |
32 |
0.2 |
Окончание табл. 15.3
Виды паролей |
Количество вариантов |
Количество совпадений |
Совпадение паролей, % |
Научная фантастика |
691 |
59 |
0.4 |
Кино и актеры |
99 |
12 |
0.1 |
Мультфильмы |
92 |
9 |
0.1 |
Знаменитости |
290 |
55 |
0.4 |
Обороты и выражения |
933 |
253 |
1.8 |
Фамилии |
33 |
9 |
0.1 |
Биология |
58 |
1 |
0.0 |
Системный словарь |
19683 |
1027 |
7.4 |
Названия машин |
9018 |
132 |
1.0 |
Мнемонические схемы |
14 |
2 |
0.0 |
Библия короля Иакова |
7525 |
83 |
0.6 |
Смешанные слова |
3212 |
54 |
0.4 |
Слова из идиша |
56 |
0 |
0.0 |
Астероиды |
2407 |
19 |
0.1 |
Всего |
62727 |
3340 |
24.2 |
Таким образом, было протестировано около 3 миллионов слов. С помощью самой быстрой реализации на уже упоминавшейся системе Thinking Machines время шифрования всех этих слов с использованием всех значений salt заняло меньше часа. Нужно иметь в виду, что такая тщательная проверка приводит к отгадыванию почти 25% паролей, в то время как даже одной попытки может быть достаточно для получения широкого спектра привилегий в системе.