Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
У. Столлингс ГЛАВА 15 Безопасность.doc
Скачиваний:
66
Добавлен:
11.05.2015
Размер:
795.14 Кб
Скачать

Защита паролей

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

  • По идентификатору можно определить, имеет ли пользователь полномочия на доступ к системе.

  • С помощью идентификатора задаются привилегии данного пользователя. Лишь небольшое количество пользователей имеет статус суперпользователя, позволяющий им читать файлы и выполнять функции, которые находятся под особой защитой операционной системы. В некоторых системах имеются учетные записи гостя или анонимные учетные записи, пользователям кото­рых предоставляется гораздо меньше привилегий, чем другим.

  • Идентификаторы используются для так называемого разграничительного контроля доступа (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, Ему удалось разгадать почти четверть всех паролей. При отгадывании использовались такие стратегии.

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

  2. Подбор слов из различных словарей. Автор составил словарь из 60000 слов, включая встроенный словарь самой системы и различные другие приведен­ ные списки.

  3. Перебор возможных вариантов написания слов, испробованных в предыду­ щем пункте. Сюда вошли слова, написанные с прописной буквы или такие, в которых на первом месте стоит управляющий символ, все буквы являются прописными, порядок букв заменен обратным, буква "о" заменена нулем и т.д. В результате подобных комбинаций словарь пополнился еще одним миллионом слов.

  4. Различные варианты написания слов из пункта 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% паролей, в то время как даже одной попытки может быть достаточно для получения широкого спектра привилегий в системе.