Страница:
Создавать тайные каналы просто и забавно. Опасность представляют не те пользователи, которые копируют с экрана данные с грифом «Совершенно секретно» и переправляют их в Китай, а те, кто пишет программы, которые могут тайно собирать данные, оставаясь в тени.
Разработчики систем тратят много времени на то, чтобы закрыть определенные тайные каналы или, по крайней мере, свести к минимуму количество информации, которую можно было бы по ним переслать. Циклы ЦПУ могут иметь фиксированные такты специально для того, чтобы сделать невозможной утечку по отдельным тайным каналам. К программам пакетной передачи может быть добавлена система случайного шума, чтобы существенно снизить использование этого тайного канала. Но фактически невозможно перекрыть все тайные каналы, и часто пытаются выйти из положения, жестко ограничивая пропускную способность. Тем не менее, если интересующая вас информация – это всего-навсего крошечный 128-битовый криптографический ключ, вы найдете тайный канал, по которому ее можно отправить.
Есть два основных способа получить такую гарантию. Первый – это IVV, что означает «независимые верификация и проверка достоверности» (independent verification and validation). Основная его идея в том, что один коллектив разрабатывает и создает систему, а другой – оценивает эту разработку, вплоть до того, что иногда создает идентичную систему, чтобы сравнивать с ней оцениваемую. Это дорогой путь, его применяют в таких важных случаях, как создание системы управления ядерным оружием или компьютеров космических кораблей многоразового использования.
Более дешевый путь – оценивать систему по какому-то независимому набору критериев и присваивать ей определенный рейтинг безопасности.
Первым набором критериев оценки систем была «Оранжевая книга». В какой-то мере она уже устарела, но все же оказала большое влияние на компьютерную безопасность в 80-х годах, и до сих пор можно услышать, как перебрасываются терминами из «Оранжевой книги» – вроде «уровня безопасности С2».
На самом деле «Оранжевая книга» называется так: «Критерии оценки надежности компьютерных систем Министерства обороны США» (U.S. Department of Defense Trusted Computer System Evaluation Criteria), но это название трудно выговорить, а обложка у книги оранжевая. Она была опубликована в 1985 году Национальным центром компьютерной безопасности, который в некоторой степени можно считать подразделением Агентства национальной безопасности. Задачей «Оранжевой книги» было определить требования безопасности и стандартизировать правительственные требования поставок. Она дала фирмам-изготовителям вычислительных машин возможность измерить безопасность своих систем и подсказала им, что они должны ввести в свои защищенные программы. Кроме того, она предложила систему классификации различных уровней компьютерной безопасности и способы проверить, удовлетворяет ли определенная система заданному уровню.
Эта классификация выглядит так: D (минимальная секретность), С (защита по усмотрению), В (обязательная защита) и А (подтвержденный доступ). Внутри некоторых этих уровней существуют подуровни. Есть, например, С1 и С2 – защита по усмотрению и защита с контролируемым доступом, последняя более эффективная. С1 не является защищенным уровнем; это, по сути, то, что вы получаете с новеньким с иголочки UNIX'OM. (Вы ведь не замечали большого количества систем, которые гордились бы своим рейтингом безопасности C1.) C2 лучше; это, наверное, наиболее подходящий уровень безопасности для коммерческих продуктов[25]. В основе большинства процедур контроля доступа лежит модель Белла-Лападулы, которая берет начало с уровня B1 – уровни Bl, B2, B3 и А, как считали, больше подходят для военных систем.
Основная проблема такого подхода – с уровнями безопасности – была в том, что они не означали, что система защищена. Приобретение системы уровня В1, например, не давало гарантированной безопасности компьютера. Это всего лишь означало, что изготовители установили в систему обязательный контроль доступа и имели необходимую документацию, чтобы получить рейтинг безопасности В1. Безусловно, обязательный контроль доступа делает систему уровня В1 намного более защищенной, чем система уровня С2, но ошибки защиты одинаково вероятны в любой системе. Единственное, что было доподлинно известно, – в первом случае разработчики больше старались.
Кроме того, «Оранжевая книга» применима только к автономным системам и полностью игнорирует возможное подсоединение компьютера к сети. Несколько лет назад фирма Microsoft предпринимала большие усилия, чтобы присвоить Windows NT рейтинг безопасности С2. Усилия пошли на убыль, когда стало известно, что об этом рейтинге можно говорить, только если компьютер не подсоединен к сети, у него вовсе нет сетевой карты, дисковод заклеен эпоксидной смолой, а процессор – Compaq 386. Рейтинг С2 системы Solaris столь же необоснован. В недавних модификациях «Оранжевой книги» с переменным успехом делались попытки иметь дело с компьютерами, соединенными с сетью.
Кроме того, как известно, рейтинг имеет узкое значение. Рейтинг системы относится только к определенной конфигурации и определенному типу установленного программного обеспечения. Если версия 1.0 операционной системы имела определенный уровень безопасности, нет никакой гарантии, что версия 1.1 имеет такой же уровень. Если рейтинг компьютерной безопасности относится к определенной конфигурации – с определенным набором установленного программного обеспечения, – то нельзя ничего сказать о безопасности компьютеров других конфигураций.
В сегодняшнем мире, где всегда все взаимосвязано, «Оранжевая книга» вышла из употребления. Некоторые национальные и международные организации делали попытки модернизировать ее. Канадцы создали свои «Канадские критерии оценки надежности компьютерных продуктов» (Canadian Trusted Computer Products Evaluation Criteria). EC ответил «Критериями оценки безопасности информационных технологий» (Information Technology Security Evaluation Criteria, ITSEC), предварительно одобренными в 1995 году. Еще одно предложение США было названо «Федеральными критериями».
Недавно все собрались вместе, чтобы прекратить это сумасшествие. Были разработаны «Общие критерии» с целью удовлетворить всех и объединить хорошие идеи из всех остальных документов. Появился стандарт ISO (International Organization for Standardization, Международная организация по стандартизации) (15408, версия 2.1). Основная его мысль в том, что «Общие критерии» предоставляют свод концепций безопасности, которые пользователи могут включать в профиль защиты, представляющий собой, по сути, формализованные потребности пользователя в отношении безопасности. Кроме того, каждый отдельный продукт можно проверить соответственно профилю защиты. Предполагается, что правительство станет следить за тем, чтобы методология «Общих критериев» выполнялась как надо, а коммерческие лаборатории будут осуществлять фактическое тестирование и сертификацию.
«Общие критерии» основаны на соглашении о взаимном признании сертификатов качества, то есть различные страны договорились признавать проведенную друг другом сертификацию. В соглашении участвуют Австралия, Канада, Франция, Германия, Новая Зеландия, Великобритания и Соединенные Штаты.
Это огромный шаг в правильном направлении. «Общие критерии» разработаны, чтобы дать общую оценку безопасности (не работы) программ, которые можно приобрести, по ряду различных требований. Индустрия смарт-карт тратит много времени на разработку своего профиля безопасности в рамках «Общих критериев». Я связываю с этой программой большие надежды.
Из тех систем, которые сейчас находятся в употреблении, практически ни одна не создана по формальной модели безопасности. Системы используют некоторые формальные идеи безопасности – так, все операционные системы имеют надежную вычислительную базу, – но для того, чтобы системы оставались полезными и пригодными, приходится искать компромисс. Только это и имеет смысл.
Безопасность операционной системы, а значит, и защита компьютера имеет несколько ключевых компонентов. Один из них – это жесткий мандатный механизм безопасности более общего типа, чем в формальных моделях. Этот мандатный механизм безопасности реализует политику администратора, который не обязательно является пользователем. Более того, стратегия политики безопасности заключается также в контроле доступа и шифрования. То есть политика должна устанавливать, кто (человек или процесс) и к каким данным (или другим процессам) может иметь доступ и какие средства управления шифрованием должны быть применены к этим данным. Такого рода стратегия (как и ничто другое) не может перекрыть тайные каналы, но полезна для прекращения тех злоупотреблений, с которыми мы имеем дело сегодня.
Вторым ключевым компонентом безопасной операционной системы является выверенный канал. Это механизм, с помощью которого пользователь (или процесс) напрямую взаимодействует с надежной вычислительной базой, который может быть задействован пользователем или проверенными программами и который не может быть подменен посторонним программным обеспечением. Например, разве это не здорово, если пользователь видит экран входа в систему и уверен, что это настоящий экран входа, а не троянский конь, пытающийся выудить его пароль? Механизмы реализации выверенного канала также будут иметь большое значение для снижения ущерба, ожидаемого от программ злоумышленников.
На рынке существуют надежные операционные системы, которые снабжены этими компонентами, но они все еще мало известны потребителям. Мне хотелось бы увидеть, как большинство этих идей реализуются в основных операционных системах, таких как Microsoft Windows. Но не похоже, что это случится в ближайшее время.
Глава 9
Разработчики систем тратят много времени на то, чтобы закрыть определенные тайные каналы или, по крайней мере, свести к минимуму количество информации, которую можно было бы по ним переслать. Циклы ЦПУ могут иметь фиксированные такты специально для того, чтобы сделать невозможной утечку по отдельным тайным каналам. К программам пакетной передачи может быть добавлена система случайного шума, чтобы существенно снизить использование этого тайного канала. Но фактически невозможно перекрыть все тайные каналы, и часто пытаются выйти из положения, жестко ограничивая пропускную способность. Тем не менее, если интересующая вас информация – это всего-навсего крошечный 128-битовый криптографический ключ, вы найдете тайный канал, по которому ее можно отправить.
Критерии оценки
Если вы собираетесь приобрести компьютерную систему с определенной моделью безопасности или с определенным типом ядра, вам потребуется гарантия, что эта модель надежна. Или, другими словами, некая гарантия, что система обеспечивает достаточную защиту.Есть два основных способа получить такую гарантию. Первый – это IVV, что означает «независимые верификация и проверка достоверности» (independent verification and validation). Основная его идея в том, что один коллектив разрабатывает и создает систему, а другой – оценивает эту разработку, вплоть до того, что иногда создает идентичную систему, чтобы сравнивать с ней оцениваемую. Это дорогой путь, его применяют в таких важных случаях, как создание системы управления ядерным оружием или компьютеров космических кораблей многоразового использования.
Более дешевый путь – оценивать систему по какому-то независимому набору критериев и присваивать ей определенный рейтинг безопасности.
Первым набором критериев оценки систем была «Оранжевая книга». В какой-то мере она уже устарела, но все же оказала большое влияние на компьютерную безопасность в 80-х годах, и до сих пор можно услышать, как перебрасываются терминами из «Оранжевой книги» – вроде «уровня безопасности С2».
На самом деле «Оранжевая книга» называется так: «Критерии оценки надежности компьютерных систем Министерства обороны США» (U.S. Department of Defense Trusted Computer System Evaluation Criteria), но это название трудно выговорить, а обложка у книги оранжевая. Она была опубликована в 1985 году Национальным центром компьютерной безопасности, который в некоторой степени можно считать подразделением Агентства национальной безопасности. Задачей «Оранжевой книги» было определить требования безопасности и стандартизировать правительственные требования поставок. Она дала фирмам-изготовителям вычислительных машин возможность измерить безопасность своих систем и подсказала им, что они должны ввести в свои защищенные программы. Кроме того, она предложила систему классификации различных уровней компьютерной безопасности и способы проверить, удовлетворяет ли определенная система заданному уровню.
Эта классификация выглядит так: D (минимальная секретность), С (защита по усмотрению), В (обязательная защита) и А (подтвержденный доступ). Внутри некоторых этих уровней существуют подуровни. Есть, например, С1 и С2 – защита по усмотрению и защита с контролируемым доступом, последняя более эффективная. С1 не является защищенным уровнем; это, по сути, то, что вы получаете с новеньким с иголочки UNIX'OM. (Вы ведь не замечали большого количества систем, которые гордились бы своим рейтингом безопасности C1.) C2 лучше; это, наверное, наиболее подходящий уровень безопасности для коммерческих продуктов[25]. В основе большинства процедур контроля доступа лежит модель Белла-Лападулы, которая берет начало с уровня B1 – уровни Bl, B2, B3 и А, как считали, больше подходят для военных систем.
Основная проблема такого подхода – с уровнями безопасности – была в том, что они не означали, что система защищена. Приобретение системы уровня В1, например, не давало гарантированной безопасности компьютера. Это всего лишь означало, что изготовители установили в систему обязательный контроль доступа и имели необходимую документацию, чтобы получить рейтинг безопасности В1. Безусловно, обязательный контроль доступа делает систему уровня В1 намного более защищенной, чем система уровня С2, но ошибки защиты одинаково вероятны в любой системе. Единственное, что было доподлинно известно, – в первом случае разработчики больше старались.
Кроме того, «Оранжевая книга» применима только к автономным системам и полностью игнорирует возможное подсоединение компьютера к сети. Несколько лет назад фирма Microsoft предпринимала большие усилия, чтобы присвоить Windows NT рейтинг безопасности С2. Усилия пошли на убыль, когда стало известно, что об этом рейтинге можно говорить, только если компьютер не подсоединен к сети, у него вовсе нет сетевой карты, дисковод заклеен эпоксидной смолой, а процессор – Compaq 386. Рейтинг С2 системы Solaris столь же необоснован. В недавних модификациях «Оранжевой книги» с переменным успехом делались попытки иметь дело с компьютерами, соединенными с сетью.
Кроме того, как известно, рейтинг имеет узкое значение. Рейтинг системы относится только к определенной конфигурации и определенному типу установленного программного обеспечения. Если версия 1.0 операционной системы имела определенный уровень безопасности, нет никакой гарантии, что версия 1.1 имеет такой же уровень. Если рейтинг компьютерной безопасности относится к определенной конфигурации – с определенным набором установленного программного обеспечения, – то нельзя ничего сказать о безопасности компьютеров других конфигураций.
В сегодняшнем мире, где всегда все взаимосвязано, «Оранжевая книга» вышла из употребления. Некоторые национальные и международные организации делали попытки модернизировать ее. Канадцы создали свои «Канадские критерии оценки надежности компьютерных продуктов» (Canadian Trusted Computer Products Evaluation Criteria). EC ответил «Критериями оценки безопасности информационных технологий» (Information Technology Security Evaluation Criteria, ITSEC), предварительно одобренными в 1995 году. Еще одно предложение США было названо «Федеральными критериями».
Недавно все собрались вместе, чтобы прекратить это сумасшествие. Были разработаны «Общие критерии» с целью удовлетворить всех и объединить хорошие идеи из всех остальных документов. Появился стандарт ISO (International Organization for Standardization, Международная организация по стандартизации) (15408, версия 2.1). Основная его мысль в том, что «Общие критерии» предоставляют свод концепций безопасности, которые пользователи могут включать в профиль защиты, представляющий собой, по сути, формализованные потребности пользователя в отношении безопасности. Кроме того, каждый отдельный продукт можно проверить соответственно профилю защиты. Предполагается, что правительство станет следить за тем, чтобы методология «Общих критериев» выполнялась как надо, а коммерческие лаборатории будут осуществлять фактическое тестирование и сертификацию.
«Общие критерии» основаны на соглашении о взаимном признании сертификатов качества, то есть различные страны договорились признавать проведенную друг другом сертификацию. В соглашении участвуют Австралия, Канада, Франция, Германия, Новая Зеландия, Великобритания и Соединенные Штаты.
Это огромный шаг в правильном направлении. «Общие критерии» разработаны, чтобы дать общую оценку безопасности (не работы) программ, которые можно приобрести, по ряду различных требований. Индустрия смарт-карт тратит много времени на разработку своего профиля безопасности в рамках «Общих критериев». Я связываю с этой программой большие надежды.
Будущее безопасных компьютеров
Формальные модели хороши для блестящей теории, но менее полезны на практике. У них есть принципиальные ограничения; нет гарантии, что, реализовав модель безопасности, вы обязательно получите систему, имеющую определенные свойства защиты. Модели могут привести к системе, непригодной для использования; принудительная подгонка системы под модель способна выработать чересчур замысловатые конструкции. Может потребоваться уйма времени, чтобы разработать и создать их. И хуже того, они даже не гарантируют безопасности. Если система соответствует требованиям формальной модели безопасности, в лучшем случае она в силах гарантировать защиту от злоумышленников, которые придерживаются этой модели. Ушлые взломщики изобретательны и всегда выдумывают что-нибудь новенькое. И в результате, поскольку злоумышленники не придерживаются моделей разработчиков, они снова и снова взламывают защиту.Из тех систем, которые сейчас находятся в употреблении, практически ни одна не создана по формальной модели безопасности. Системы используют некоторые формальные идеи безопасности – так, все операционные системы имеют надежную вычислительную базу, – но для того, чтобы системы оставались полезными и пригодными, приходится искать компромисс. Только это и имеет смысл.
Безопасность операционной системы, а значит, и защита компьютера имеет несколько ключевых компонентов. Один из них – это жесткий мандатный механизм безопасности более общего типа, чем в формальных моделях. Этот мандатный механизм безопасности реализует политику администратора, который не обязательно является пользователем. Более того, стратегия политики безопасности заключается также в контроле доступа и шифрования. То есть политика должна устанавливать, кто (человек или процесс) и к каким данным (или другим процессам) может иметь доступ и какие средства управления шифрованием должны быть применены к этим данным. Такого рода стратегия (как и ничто другое) не может перекрыть тайные каналы, но полезна для прекращения тех злоупотреблений, с которыми мы имеем дело сегодня.
Вторым ключевым компонентом безопасной операционной системы является выверенный канал. Это механизм, с помощью которого пользователь (или процесс) напрямую взаимодействует с надежной вычислительной базой, который может быть задействован пользователем или проверенными программами и который не может быть подменен посторонним программным обеспечением. Например, разве это не здорово, если пользователь видит экран входа в систему и уверен, что это настоящий экран входа, а не троянский конь, пытающийся выудить его пароль? Механизмы реализации выверенного канала также будут иметь большое значение для снижения ущерба, ожидаемого от программ злоумышленников.
На рынке существуют надежные операционные системы, которые снабжены этими компонентами, но они все еще мало известны потребителям. Мне хотелось бы увидеть, как большинство этих идей реализуются в основных операционных системах, таких как Microsoft Windows. Но не похоже, что это случится в ближайшее время.
Глава 9
Идентификация и аутентификация
Независимо от того, какую систему защиты вы используете, чаще всего первым шагом работы является идентификация и подтверждение подлинности (аутентификация): кто вы такой и можете ли это доказать? Как только компьютер узнает вас, он сможет выяснить, что вам разрешено и чего не позволено делать. Другими словами, контроль доступа не может начаться прежде, чем завершатся идентификация и аутентификация.
Давайте поговорим об этом. У Алисы есть некие возможности для работы на компьютере, и мы хотим быть уверены в том, что эти возможности есть только у нее. Иногда это – возможность получить доступ к какой-либо информации: файлам, балансу счетов и т. д. Иногда – получение доступа ко всему компьютеру: никто другой не сможет включить его и воспользоваться данными Алисы и ее программами. В других случаях возможность носит более конкретный характер: получить деньги из банкомата, воспользоваться сотовым телефоном, отключить охранную сигнализацию. Эта возможность может быть связана с веб-сайтом: например, доступ к странице Алисы или банковским документам. Иногда эта возможность – доступ к шифровальному ключу, который слишком длинен для запоминания. (Система PGP – набор алгоритмов и программ для высоконадежного шифрования, применяет контроль доступа для защиты частных ключей.) Не важно, что из перечисленного мы рассматриваем, – важно то, что некоторые меры контроля доступа требуют идентификации Алисы.
На самом деле меры контроля доступа должны обеспечить две вещи. Во-первых, Алиса должна попасть в систему, а во-вторых, система должна оставить других снаружи. Сделать только первое или только второе легко – открытая дверь позволит и Алисе, и кому-нибудь другому войти; а заложенная кирпичом дверь будет держать снаружи как остальных, так и Алису, – но выполнить оба условия сразу сложнее. Нам нужно что-нибудь, что даст возможность узнавать Алису и пускать ее внутрь, но так, чтобы другие не смогли в это повторить. Мы должны уметь идентифицировать Алису, а после этого проверить подлинность идентификации. (На самом деле меры контроля доступа обязаны осуществлять еще и третью функцию – протоколирование всего, что происходило.)
Традиционно опознавательные и проверочные меры основываются на чем-то одном из трех: «что вы знаете», «кто вы такой» и «что вам позволено». Это реализуется в виде паролей, биометрических методов распознавания и опознавательных знаков доступа. Иногда системы используют совместно любые две из этих вещей. Параноидальные системы используют все три.
Два шага, применяемые в каждом из этих примеров, отражены в названии данной главы. Первый шаг называется идентификацией (опознаванием): вы сообщаете компьютеру, кто вы (имя пользователя). Второй шаг называется аутентификацией (подтверждением подлинности): вы доказываете компьютеру, что вы именно тот, кем себя назвали (пароль).
Компьютер, который вас опознает, имеет список имен пользователей и паролей. Когда вы вошли под своим именем пользователя и паролем (или номером вашего счета и идентификационным номером), компьютер сличил введенные данные с записями, хранящимися в его списке. Если вы ввели имя пользователя, имеющееся в списке, и пароль, соответствующий этой записи, то попадете внутрь. Если нет, вы останетесь вне системы. Иногда система будет повторно спрашивать вас об имени пользователя и пароле. Иногда она будет заблокирована после определенного числа неудачных попыток. (Вы ведь не хотите, чтобы кто-нибудь, укравший карточку банкомата, затем пробовал перебрать все десятки тысяч возможных идентификационных номеров, один за другим, в попытке найти единственный подходящий.)
К несчастью, система имен пользователей и паролей работает не столь хорошо, как предполагают люди.
Понятие паролей, вообще говоря, основывается на попытке совместить несовместимое. Идея в том, чтобы набрать легкую для запоминания случайную последовательность. К сожалению, если нечто легко запомнить, то оно не будет случайным, например «Сюзанна». А если это будет набрано наугад, например «r7U2*Qnpi», то оно запоминается нелегко.
В главе 7, когда я говорил о длине ключей и безопасности, я обсуждал проблемы изобретения и запоминания пользователями ключей. Пароль – это форма запоминания пользователем ключа, и словарные нападения на пароли поразительно эффективны.
Как работает это нападение? Подумаем о системе контроля доступа к компьютеру или веб-сайту. У компьютера есть файл имен пользователей и паролей. Если нападающий получит доступ к этому файлу, то узнает все пароли. В середине 70-х годов эксперты по компьютерной безопасности пришли к лучшему решению: вместо хранения всех паролей в файле они решили хранить хэш-функцию пароля. Теперь, когда Алиса набирает свой пароль в компьютере или на веб-сайте, программное обеспечение вычисляет хэш-значение и сравнивает его с сохраненным в файле. Если они совпадают, Алиса допускается в систему. Теперь нет файла паролей, который можно было бы украсть, – есть только файл хэшированных паролей. И так как назначение хэш-функции – воспрепятствовать незваному гостю зайти слишком далеко в своих намерениях, злоумышленник не сможет восстановить настоящие пароли из хэшированных.
И тут ему на помощь приходят словарные нападения. Предположим, что нападающий владеет копией файла хэшированных паролей. Он берет словарь и подсчитывает хэш-значение каждого слова в словаре. Если хэш-значение какого-либо слова соответствует одной из записей файла, тогда он нашел пароль. Он попробует перебрать таким образом все слова, попытается переставлять буквы, набирать некоторые буквы прописными и т. п. В конце концов он попробует все характерные комбинации короче заданной длины.
Ранее словарные нападения были сложны из-за медленной работы компьютеров. Они стали более легкими, потому что компьютеры стали гораздо быстрее. L0phtcrack является примером хакерского инструмента, предназначенного для восстановления паролей и оптимизированного для паролей Windows NT. Windows NT имеет две парольные защиты: более сильную, предназначенную для NT, и более слабую, совместимую со старыми сетевыми протоколами входа в систему. Эта функция работает без учета регистра с паролями не длиннее семи символов. L0phtcrack облегчает работу в парольном пространстве. На Pentium II с тактовой частотой 400 МГц L0phtcrack может перебрать каждый буквенно-цифровой пароль за 5,5 часа, каждый буквенно-цифровой пароль с прочими символами за 45 часов и каждый из возможных паролей, включающий любой знак клавиатуры компьютера, – за 480 часов. Это не сулит ничего хорошего.
Некоторые пытались решить эту проблему, используя все более и более «сильные» пароли. Это означает, что пароли сложней для угадывания и их появление в словаре менее вероятно. Старая универсальная система контроля доступа на мэйнфрэймах (RACF) требовала от пользователей ежемесячной смены паролей и не разрешала использовать слова. (В Microsoft Windows нет такого контроля, и вам услужливо предлагается сохранить любой пароль.) Некоторые системы создают пароли для пользователей случайным образом – путем связывания случайных слогов в произносимое слово (например, «талпудмокс») или соединения чисел, символов и смены регистра: например FOT78hif#elf. Система PGP использует парольные фразы, которые представляют собой сложные предложения с бессмысленным контекстом: например «Телефон ЗЗЗЗЗЗ, это должно быть вы говорите мне приятным голосом 1958???!телефон». (Однако это не так просто для запоминания и набора, как вам хотелось бы.)
Эти ухищрения становятся все менее и менее эффективными. В течение последних десятилетий действие закона Мура делает возможной «атаку в лоб» для ключей, имеющих все большую энтропию. В то же самое время есть максимум энтропии, до которого средний компьютерный пользователь (или даже пользователь уровнем выше среднего) может что-то запомнить. Вы не можете ожидать от него запоминания 32-символьного случайного шестнадцатеричного числа, так что же должно произойти, чтобы он запомнил 128-битовый ключ? Вам действительно не стоит полагаться, что он введет при входе в систему фразу с использованием набора алгоритмов и программ высоконадежного шифрования, описанных в предыдущем параграфе. Эти два фактора пересеклись; сейчас взломщики паролей могут вычислить все, что (в пределах разумного) может запомнить пользователь.
Конечно, есть исключения. Производство высоконадежных компьютеров, применяемых в ядерной отрасли, надежные дипломатические каналы, системы, применяемые для связи со шпионами, живущими на вражеской территории, – случаи, когда пользователи найдут время, чтобы запомнить длинные и сложные парольные фразы. Эти применения не имеют ничего общего с современными компьютерными сетями и паролями для продажи товаров в электронной торговле. Проблема в том, что средний пользователь не может и даже не пытается запомнить достаточно сложные пароли для предотвращения словарных нападений. Атаковать защищенную паролем систему часто легче, чем напасть на шифровальный алгоритм с 40-битовым ключом. Пароли ненадежны, если вы не в силах предотвратить словарных нападений.
Как ни плохи пароли, люди находят способ сделать их еще хуже. Если вы попросите их выбрать пароль, он будет паршивый. Если вы принудите их выбрать хороший пароль, они напишут его на почтовой карточке и прикрепят к монитору. Если вы попросите поменять его, они сменят его на пароль, которым пользовались месяц назад. Только изучение действующих паролей обнаруживает, что в 16% из них насчитывается три и менее цифры и 86% могут быть легко взломаны. Многочисленные исследования лишь подтверждают данную статистику[26].
Одни и те же люди выбирают одни и те же пароли для множества приложений. Хотите украсть группу паролей? Создайте веб-сайт, содержащий какую-либо интересную информацию: порно, результаты хоккейных турниров, сведения об акциях или все, что касается демографии. Не делайте платным его посещение, а введите регистрацию имен пользователей и паролей для просмотра информации. В большинстве случаев вы будете получать те же самые имя пользователя и пароль, которые пользователь использует в последнее время. Может быть, они позволят вам войти в его банковский счет. Сохраняйте и неправильные пароли; иногда люди по ошибке вводят пароль, предназначенный для системы А, в систему В. Заставьте пользователя заполнить небольшую анкету при регистрации: «Какие другие системы вы используете регулярно? Банк X, брокерскую фирму Y, службу новостей Z?» Я знаю, что один исследователь сделал нечто подобное в 1985 году – он получил дюжины паролей системных администраторов.
И даже когда люди выбирают хорошие пароли и меняют их регулярно, они слишком часто хотят поделиться ими с другими, состоящими и не состоящими в организации, особенно когда им нужна помощь, чтобы справиться с работой. Ясно, что такие откровения несут величайший риск для безопасности, но в сознании людей риск представляется минимальным, а потребность выполнить работу преобладает.
Это не говорит о том, что нет лучших или худших паролей. Предшествующий пример парольной фразы из PGP все еще защищен от словарных нападений. В целом, чем проще пароль для запоминания, тем он хуже. Вообще словарные нападения пытаются сначала разгадать заурядные пароли: словарные слова, перевернутые слова, слова с некоторыми прописными буквами, их же с незначительными изменениями – как, например, с числом 1 вместо буквы I, и т. п.
К сожалению, многие системы ненадежны так же, как и самые слабые пароли. Когда нападающий хочет получить вход в систему, его не волнует, чей он получает доступ. Согласно рабочим тестам, L0phtcrack восстанавливает около 90% всех паролей менее чем за день и 20% всех паролей в течение нескольких минут. Если на 1000 входов 999 пользователей выберут исключительно сложные пароли, такие что L0phtcrack не сможет установить их, программа взломает систему, подобрав единственный слабый пароль.
С другой стороны, с точки зрения пользователя это может быть примером того, что «нет необходимости бегать быстрее медведя – достаточно опережать тех, кто рядом с вами». Любое словарное нападение будет успешным против тех многих входов, чей пароль «Сюзанна» – они-то в первую очередь и станут жертвой атаки. Если же ваш пароль «молот-бабочка», то, хотя он тоже достаточно уязвим для словарных нападений, вероятно, не он станет жертвой.
Давайте поговорим об этом. У Алисы есть некие возможности для работы на компьютере, и мы хотим быть уверены в том, что эти возможности есть только у нее. Иногда это – возможность получить доступ к какой-либо информации: файлам, балансу счетов и т. д. Иногда – получение доступа ко всему компьютеру: никто другой не сможет включить его и воспользоваться данными Алисы и ее программами. В других случаях возможность носит более конкретный характер: получить деньги из банкомата, воспользоваться сотовым телефоном, отключить охранную сигнализацию. Эта возможность может быть связана с веб-сайтом: например, доступ к странице Алисы или банковским документам. Иногда эта возможность – доступ к шифровальному ключу, который слишком длинен для запоминания. (Система PGP – набор алгоритмов и программ для высоконадежного шифрования, применяет контроль доступа для защиты частных ключей.) Не важно, что из перечисленного мы рассматриваем, – важно то, что некоторые меры контроля доступа требуют идентификации Алисы.
На самом деле меры контроля доступа должны обеспечить две вещи. Во-первых, Алиса должна попасть в систему, а во-вторых, система должна оставить других снаружи. Сделать только первое или только второе легко – открытая дверь позволит и Алисе, и кому-нибудь другому войти; а заложенная кирпичом дверь будет держать снаружи как остальных, так и Алису, – но выполнить оба условия сразу сложнее. Нам нужно что-нибудь, что даст возможность узнавать Алису и пускать ее внутрь, но так, чтобы другие не смогли в это повторить. Мы должны уметь идентифицировать Алису, а после этого проверить подлинность идентификации. (На самом деле меры контроля доступа обязаны осуществлять еще и третью функцию – протоколирование всего, что происходило.)
Традиционно опознавательные и проверочные меры основываются на чем-то одном из трех: «что вы знаете», «кто вы такой» и «что вам позволено». Это реализуется в виде паролей, биометрических методов распознавания и опознавательных знаков доступа. Иногда системы используют совместно любые две из этих вещей. Параноидальные системы используют все три.
Пароли
Традиционным подходом к проверке подлинности является применение пароля. Вы наблюдаете повсеместно. Когда вы регистрируетесь в компьютерной системе, то вводите имя пользователя и пароль. Чтобы сделать звонок по телефону с использованием телефонной карты, вам необходимо набрать номер своего счета и пароль. Чтобы получить деньги в банкомате, вы вставляете свою карту и набираете идентификационный номер (пароль).Два шага, применяемые в каждом из этих примеров, отражены в названии данной главы. Первый шаг называется идентификацией (опознаванием): вы сообщаете компьютеру, кто вы (имя пользователя). Второй шаг называется аутентификацией (подтверждением подлинности): вы доказываете компьютеру, что вы именно тот, кем себя назвали (пароль).
Компьютер, который вас опознает, имеет список имен пользователей и паролей. Когда вы вошли под своим именем пользователя и паролем (или номером вашего счета и идентификационным номером), компьютер сличил введенные данные с записями, хранящимися в его списке. Если вы ввели имя пользователя, имеющееся в списке, и пароль, соответствующий этой записи, то попадете внутрь. Если нет, вы останетесь вне системы. Иногда система будет повторно спрашивать вас об имени пользователя и пароле. Иногда она будет заблокирована после определенного числа неудачных попыток. (Вы ведь не хотите, чтобы кто-нибудь, укравший карточку банкомата, затем пробовал перебрать все десятки тысяч возможных идентификационных номеров, один за другим, в попытке найти единственный подходящий.)
К несчастью, система имен пользователей и паролей работает не столь хорошо, как предполагают люди.
Понятие паролей, вообще говоря, основывается на попытке совместить несовместимое. Идея в том, чтобы набрать легкую для запоминания случайную последовательность. К сожалению, если нечто легко запомнить, то оно не будет случайным, например «Сюзанна». А если это будет набрано наугад, например «r7U2*Qnpi», то оно запоминается нелегко.
В главе 7, когда я говорил о длине ключей и безопасности, я обсуждал проблемы изобретения и запоминания пользователями ключей. Пароль – это форма запоминания пользователем ключа, и словарные нападения на пароли поразительно эффективны.
Как работает это нападение? Подумаем о системе контроля доступа к компьютеру или веб-сайту. У компьютера есть файл имен пользователей и паролей. Если нападающий получит доступ к этому файлу, то узнает все пароли. В середине 70-х годов эксперты по компьютерной безопасности пришли к лучшему решению: вместо хранения всех паролей в файле они решили хранить хэш-функцию пароля. Теперь, когда Алиса набирает свой пароль в компьютере или на веб-сайте, программное обеспечение вычисляет хэш-значение и сравнивает его с сохраненным в файле. Если они совпадают, Алиса допускается в систему. Теперь нет файла паролей, который можно было бы украсть, – есть только файл хэшированных паролей. И так как назначение хэш-функции – воспрепятствовать незваному гостю зайти слишком далеко в своих намерениях, злоумышленник не сможет восстановить настоящие пароли из хэшированных.
И тут ему на помощь приходят словарные нападения. Предположим, что нападающий владеет копией файла хэшированных паролей. Он берет словарь и подсчитывает хэш-значение каждого слова в словаре. Если хэш-значение какого-либо слова соответствует одной из записей файла, тогда он нашел пароль. Он попробует перебрать таким образом все слова, попытается переставлять буквы, набирать некоторые буквы прописными и т. п. В конце концов он попробует все характерные комбинации короче заданной длины.
Ранее словарные нападения были сложны из-за медленной работы компьютеров. Они стали более легкими, потому что компьютеры стали гораздо быстрее. L0phtcrack является примером хакерского инструмента, предназначенного для восстановления паролей и оптимизированного для паролей Windows NT. Windows NT имеет две парольные защиты: более сильную, предназначенную для NT, и более слабую, совместимую со старыми сетевыми протоколами входа в систему. Эта функция работает без учета регистра с паролями не длиннее семи символов. L0phtcrack облегчает работу в парольном пространстве. На Pentium II с тактовой частотой 400 МГц L0phtcrack может перебрать каждый буквенно-цифровой пароль за 5,5 часа, каждый буквенно-цифровой пароль с прочими символами за 45 часов и каждый из возможных паролей, включающий любой знак клавиатуры компьютера, – за 480 часов. Это не сулит ничего хорошего.
Некоторые пытались решить эту проблему, используя все более и более «сильные» пароли. Это означает, что пароли сложней для угадывания и их появление в словаре менее вероятно. Старая универсальная система контроля доступа на мэйнфрэймах (RACF) требовала от пользователей ежемесячной смены паролей и не разрешала использовать слова. (В Microsoft Windows нет такого контроля, и вам услужливо предлагается сохранить любой пароль.) Некоторые системы создают пароли для пользователей случайным образом – путем связывания случайных слогов в произносимое слово (например, «талпудмокс») или соединения чисел, символов и смены регистра: например FOT78hif#elf. Система PGP использует парольные фразы, которые представляют собой сложные предложения с бессмысленным контекстом: например «Телефон ЗЗЗЗЗЗ, это должно быть вы говорите мне приятным голосом 1958???!телефон». (Однако это не так просто для запоминания и набора, как вам хотелось бы.)
Эти ухищрения становятся все менее и менее эффективными. В течение последних десятилетий действие закона Мура делает возможной «атаку в лоб» для ключей, имеющих все большую энтропию. В то же самое время есть максимум энтропии, до которого средний компьютерный пользователь (или даже пользователь уровнем выше среднего) может что-то запомнить. Вы не можете ожидать от него запоминания 32-символьного случайного шестнадцатеричного числа, так что же должно произойти, чтобы он запомнил 128-битовый ключ? Вам действительно не стоит полагаться, что он введет при входе в систему фразу с использованием набора алгоритмов и программ высоконадежного шифрования, описанных в предыдущем параграфе. Эти два фактора пересеклись; сейчас взломщики паролей могут вычислить все, что (в пределах разумного) может запомнить пользователь.
Конечно, есть исключения. Производство высоконадежных компьютеров, применяемых в ядерной отрасли, надежные дипломатические каналы, системы, применяемые для связи со шпионами, живущими на вражеской территории, – случаи, когда пользователи найдут время, чтобы запомнить длинные и сложные парольные фразы. Эти применения не имеют ничего общего с современными компьютерными сетями и паролями для продажи товаров в электронной торговле. Проблема в том, что средний пользователь не может и даже не пытается запомнить достаточно сложные пароли для предотвращения словарных нападений. Атаковать защищенную паролем систему часто легче, чем напасть на шифровальный алгоритм с 40-битовым ключом. Пароли ненадежны, если вы не в силах предотвратить словарных нападений.
Как ни плохи пароли, люди находят способ сделать их еще хуже. Если вы попросите их выбрать пароль, он будет паршивый. Если вы принудите их выбрать хороший пароль, они напишут его на почтовой карточке и прикрепят к монитору. Если вы попросите поменять его, они сменят его на пароль, которым пользовались месяц назад. Только изучение действующих паролей обнаруживает, что в 16% из них насчитывается три и менее цифры и 86% могут быть легко взломаны. Многочисленные исследования лишь подтверждают данную статистику[26].
Одни и те же люди выбирают одни и те же пароли для множества приложений. Хотите украсть группу паролей? Создайте веб-сайт, содержащий какую-либо интересную информацию: порно, результаты хоккейных турниров, сведения об акциях или все, что касается демографии. Не делайте платным его посещение, а введите регистрацию имен пользователей и паролей для просмотра информации. В большинстве случаев вы будете получать те же самые имя пользователя и пароль, которые пользователь использует в последнее время. Может быть, они позволят вам войти в его банковский счет. Сохраняйте и неправильные пароли; иногда люди по ошибке вводят пароль, предназначенный для системы А, в систему В. Заставьте пользователя заполнить небольшую анкету при регистрации: «Какие другие системы вы используете регулярно? Банк X, брокерскую фирму Y, службу новостей Z?» Я знаю, что один исследователь сделал нечто подобное в 1985 году – он получил дюжины паролей системных администраторов.
И даже когда люди выбирают хорошие пароли и меняют их регулярно, они слишком часто хотят поделиться ими с другими, состоящими и не состоящими в организации, особенно когда им нужна помощь, чтобы справиться с работой. Ясно, что такие откровения несут величайший риск для безопасности, но в сознании людей риск представляется минимальным, а потребность выполнить работу преобладает.
Это не говорит о том, что нет лучших или худших паролей. Предшествующий пример парольной фразы из PGP все еще защищен от словарных нападений. В целом, чем проще пароль для запоминания, тем он хуже. Вообще словарные нападения пытаются сначала разгадать заурядные пароли: словарные слова, перевернутые слова, слова с некоторыми прописными буквами, их же с незначительными изменениями – как, например, с числом 1 вместо буквы I, и т. п.
К сожалению, многие системы ненадежны так же, как и самые слабые пароли. Когда нападающий хочет получить вход в систему, его не волнует, чей он получает доступ. Согласно рабочим тестам, L0phtcrack восстанавливает около 90% всех паролей менее чем за день и 20% всех паролей в течение нескольких минут. Если на 1000 входов 999 пользователей выберут исключительно сложные пароли, такие что L0phtcrack не сможет установить их, программа взломает систему, подобрав единственный слабый пароль.
С другой стороны, с точки зрения пользователя это может быть примером того, что «нет необходимости бегать быстрее медведя – достаточно опережать тех, кто рядом с вами». Любое словарное нападение будет успешным против тех многих входов, чей пароль «Сюзанна» – они-то в первую очередь и станут жертвой атаки. Если же ваш пароль «молот-бабочка», то, хотя он тоже достаточно уязвим для словарных нападений, вероятно, не он станет жертвой.