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

Читать, слущать книги онлайн бесплатно!

Электронная Литература.

Бесплатная онлайн библиотека.



Главная
Все книги
Назад
Читать: - на бесплатной онлайн библиотеке Э-Лит


Помоги проекту - поделись книгой:

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

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

Один из способов справиться со сложностью контроля доступа состоит в том, чтобы разбить таблицу. В некоторых системах список тех, кто имеет доступ к определенному объекту, хранится вместе с самим объектом. Его часто называют списком контроля доступа (access control list, ACL). Это обычная практика, и ACL часто используется в целях безопасности операционных систем. Хотя существуют и определенные проблемы. Такие списки работают хорошо в простых средах, когда пользователи сами устанавливают права доступа, но несколько хуже в тех случаях, когда доступ устанавливает управляющий персонал. В таких системах, например, не существует простого способа временной передачи прав доступа. Также подобные системы недостаточно хорошо обеспечивают проверку доступа по ходу работы программы. Кроме того, поскольку установка доступа привязана к объектам, а не субъектам, могут возникнуть трудности, когда понадобится лишить доступа определенного субъекта. Если кто-нибудь из сотрудников компании увольняется, система должна перебрать все объекты и исключить этого человека из каждого списка. Наконец, управление системой на основе ACL довольно трудоемко, поэтому множество предлагаемых программ предназначено для облегчения этой задачи.

Модели безопасности

Существует множество теоретических моделей безопасности, разработка многих из них финансировалась Министерством обороны в 70-х и 80-х годах. Поскольку речь шла о системах безопасности для нужд обороны, использовалась военная схема секретности, которую мы обсуждали в главе 5. Такие системы называют многоуровневыми системами безопасности (multilevelsecuritysystem, MLS), поскольку они предназначены для поддержки многочисленных уровней секретности в единой системе. (Альтернативные решения слишком громоздкие. Можно создать одну компьютерную систему для несекретных данных, другую, совершенно независимую, – для конфиденциальных данных, третью – для секретных данных и т. д. Или создать систему наивысшего уровня, в которой весь компьютер относится к самому высокому уровню секретности.)

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

Модель Белла-Лападулы предлагает два основных правила безопасности: одно относится к чтению, а другое – к записи данных. Во-первых, если пользователи имеют категорию допуска «Секретно», то они могут читать несекретные, конфиденциальные и секретные документы, но без права читать совершенно секретные. Во-вторых, если пользователи работают с секретными данными, они могут создавать секретные и совершенно секретные документы, но не могут создавать конфиденциальные и несекретные. (Второе условие также важно. Представьте себе, что кто-то – человек или даже компьютерный вирус – пытается украсть документы. Защита, конечно, предотвратит отправку конфиденциальных документов с используемого компьютера. Но если скопировать текст конфиденциального документа в несекретный, то последний можно будет послать по электронной почте. Чтобы этого не случилось, были введены соответствующие средства управления.) Общее правило звучит так: пользователи могут читать только документы, уровень секретности которых не превышает их допуска, и не могут создавать документы ниже уровня своего допуска. То есть теоретически пользователи могут создавать документы, прочесть которые они не имеют права.

Существует понятие обязательного (мандатного) контроля доступа (по терминологии Белла-Лападулы), который осуществляется системой. Он отличается от используемого в операционных системах, подобных UNIX или NT, «разграничительного» контроля доступа, который позволяет пользователям самим принимать решение о том, кто и с каким файлом может работать. (Впрочем, большинство версий UNIX могут иметь некоторые элементы обязательного контроля доступа: обладатель корневого доступа имеет обязательный доступ на чтение, запись и выполнение всех файлов компьютера.)

Модель Белла-Лападулы имеет большое значение, но у нее есть ряд ограничений. Во-первых, эта модель ориентирована на обеспечение конфиденциальности в ущерб всему остальному, а принципы конфиденциальности основаны на военной схеме секретности. Во-вторых, игнорируется проблема изменения классификации. В модели предполагается, что все сведения каким-то волшебным образом относятся к соответствующему уровню секретности, который остается неизменным. В реальной жизни все меняется: кто-то засекречивает важную по его мнению информацию, а кто-то другой впоследствии рассекречивает ее. Бывает так, что совокупность данных имеет более высокую секретность, нежели каждый элемент данных по отдельности: номера телефонов Агентства национальной безопасности относятся к несекретным данным, но полная телефонная книга АНБ классифицируется как конфиденциальная информация. Это означает, что уровень секретности сведений легко повышается сам собой, а обратный процесс возможен только после тщательной проверки. И в-третьих, бывают случаи, когда пользователи должны работать с данными, которые они не имеют права увидеть. Сведения о том, что самолет несет груз из некоторого количества бомб, возможно, имеют более высокий уровень секретности, чем уровень доступа диспетчера, но диспетчеру тем не менее необходимо знать вес груза.

В теоретической литературе обсуждались и многие другие модели безопасности. В модели под названием «Китайская стена», например, подробно рассматриваются компьютерные системы, которые работают с данными, полученными от не доверяющих друг другу пользователей, и способы, позволяющие гарантировать каждому из них конфиденциальность. (Вообразите компьютеризованную брокерскую систему, клиенты которой имеют доступ к своим счетам. Брокеры хотят исключить возможность, чтобы клиент А увидел портфель клиента Б, даже несмотря на то, что, возможно, оба портфеля классифицируются одинаково.)

Модель Кларка-Уилсона была разработана скорее для коммерческих нужд, нежели для военных структур. Требования коммерческой безопасности преимущественно касаются целостности данных, и именно на нее ориентируется эта модель. Кларк и Уилсон дали определение двум типам целостности: внутреннему соответствию, которое относится к свойствам внутреннего состояния системы, и внешнему соответствию, которое касается свойств системы по отношению к внешнему миру. Затем была построена формальная модель безопасности, в которой были систематизированы эти принципы, так же как и принципы обеспечения конфиденциальности.

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

Ядра безопасности и надежная вычислительная база

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

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

Во-вторых, так проще. В ядро системы обычно легче ввести дополнительные меры безопасности. Упрощается осуществление и анализ таких мер. И, как следовало ожидать, в результате получается более защищенная система.

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

Поэтому безопасность операционных систем остается предметом исследований уже в течение десятилетий. Раз так, для нее разработан свой собственный набор понятий.

• Монитор обращений. Часть программных средств, которая осуществляет доступ субъектов к объектам. Когда некий процесс делает вызов операционной системы, монитор обращений останавливает процесс и выясняет, следует ли разрешить или запретить вызов. Например, он не позволит пользователю с конфиденциальной регистрационной учетной записью читать секретные документы или создавать несекретные документы.

• Надежная вычислительная база. Это все защитные устройства внутри компьютера – оборудование, программно-аппаратные средства, операционная система, программные приложения и т. д. – все, что используется для осуществления политики безопасности. Некий администратор указывает компьютеру, что, от кого и каким образом следует защищать (это и есть политика безопасности), а надежная вычислительная база обеспечивает выполнение этой задачи.

• Ядро безопасности. Это оборудование, программно-аппаратные средства, операционная система, программные приложения и все остальные элементы надежной вычислительной базы, которые реализуют концепцию монитора обращений.

Монитор обращений – это абстрактное устройство защиты; оно занимается такими вещами, как управление файлами и управление памятью. Ядро безопасности обеспечивает действие монитора обращений. Надежная вычислительная база содержит все средства защиты, в том числе и ядро безопасности. А все в целом реализует некую модель безопасности – Белла-Лападулы или какую-то другую – и осуществляет защиту наиболее простыми и эффективными средствами. И конечно, надежная вычислительная база по определению надежна – пользователи не должны иметь возможность изменить ее, иначе безопасность может быть утрачена.

Эту концепцию трудно осуществить в реальной операционной системе. Компьютер – сложный зверь, и все в нем должно быть надежным. Любая мелочь способна испортить все дело. Если кто угодно имеет доступ к жесткому диску с правом на чтение и запись, то как можно помешать одному пользователю читать то, что пишет другой? Что, если один пользователь хочет, чтобы второй прочитал, что он написал? Возможно ли, чтобы пользователь, используя прерывания, делал что-то, чего он делать не должен? Как защитить доступ к принтеру? Может ли один человек узнать секреты другого через клавиатуру? Что, если базовые средства надежной вычислительной базы выйдут из строя? Как вам удастся выполнить дефрагментацию диска, если у вас есть доступ только к своим файлам?

Исторический пример почти правильной реализации этой теории – это операционная система под названием Multics, которую в конце 1960-х разработали MIT, Bell Labs и Honeywell. В Multics модель Белла-Лападулы построена с нуля. (Фактически, именно проект Multics дал толчок развитию модели Белла-Лападулы.) Разработчики применяли формальную математическую систему этой модели, чтобы продемонстрировать безопасность своей системы, а затем обозначили понятия модели в своей операционной системе. Ни одного кода не было написано до того, как спецификации были одобрены. Multics работала, хотя средства безопасности в ней были слишком громоздкими. К настоящему времени почти все уже забыли о Multics и уроках, вынесенных из этого проекта.

Один из уроков, о которых люди позабыли, – в том, что ядро должно быть простым. (Даже ядро Multics, которое содержало только 56 000 кодовых строк, как выяснилось, слишком сложно.) Ядро – это по определению высоконадежные программы. В главе 13 будет рассказано о надежности программ, мораль же в том, что неразумно ждать, что в программах не будет сбоев защиты. Поэтому чем проще программа, тем меньше в ней будет ошибок безопасности.

К сожалению, современные операционные системы страдают болезнью, известной как «распухание ядра». Это означает, что большой объем кода располагают внутри ядра, а не снаружи. Когда система UNIX была написана впервые, считалось обязательным помещение несущественных кодов за пределами ядра. С тех пор все забыли этот урок. Все имеющиеся сейчас разновидности UNIX в той или иной степени страдают распуханием ядра: у них либо слишком много команд в ядре, либо имеются непонятные утилиты, запускающиеся в случае корневого доступа, либо что-то еще.

Windows NT устроена намного хуже. Эта операционная система может служить примером того, как полностью игнорируются исторические уроки безопасности. То, что находится в ядре, по определению защищено, поэтому с точки зрения разумного проектирования необходимо уменьшить размер ядра, насколько возможно, и убедиться, что оно полностью защищено. Windows, похоже, придерживается мнения, что, поскольку то, что содержится в ядре, защищено по определению, следует просто побольше всего разместить прямо в ядре. Если разработчикам было непонятно, как обеспечить безопасность чего-либо, они просто запихивали это в ядро и считали его уже защищенным. Очевидно, это не помогает при длительной работе.

В системе Windows драйверы принтеров являются частью ядра. Пользователи регулярно загружают эти драйверы или устанавливают их, наверное, не осознавая, что норовистый (или неисправный) драйвер принтера может полностью уничтожить защиту их системы. Было бы намного разумнее разместить драйверы принтеров снаружи ядра, тогда они не должны были бы быть надежными, но это вызвало бы у разработчиков больше трудностей. А философия Windows NT в том, чтобы всегда отдавать предпочтение простому над безопасным – и в обращении, и в разработке.

Windows 2000 еще хуже.

Тайные каналы

Тайные каналы – это головная боль разработчиков моделей защиты. Помните, что одно из двух основных правил безопасности в том, что пользователь или процесс не может записывать данные на более низком уровне доступа? Тайные каналы – это способ обойти этот контроль.

Тайные каналы – это способ для субъекта с доступом более высокого уровня послать сообщение на более низкий уровень защиты – обычно посредством какихто ресурсов совместного использования. Например, злоумышленная программа, уровень доступа которой «Совершенно секретно», могла бы послать, манипулируя сетевой пакетной передачей (два пакета подряд означают единицу, а два пакета с промежутком между ними – нуль), сообщение, в котором сообщались бы коэффициент загрузки ЦПУ, распределение памяти, доступ к жесткому диску, установка очередности печати и т. п. Тайным каналом могут быть и пробелы в документе, и «случайное» заполнение в конце записи базы данных. Не быстро, но вполне осуществимо отправить сообщения процессов высокого уровня доступа процессам более низкого уровня, разрушая модель безопасности.

Создавать тайные каналы просто и забавно. Опасность представляют не те пользователи, которые копируют с экрана данные с грифом «Совершенно секретно» и переправляют их в Китай, а те, кто пишет программы, которые могут тайно собирать данные, оставаясь в тени.

Разработчики систем тратят много времени на то, чтобы закрыть определенные тайные каналы или, по крайней мере, свести к минимуму количество информации, которую можно было бы по ним переслать. Циклы ЦПУ могут иметь фиксированные такты специально для того, чтобы сделать невозможной утечку по отдельным тайным каналам. К программам пакетной передачи может быть добавлена система случайного шума, чтобы существенно снизить использование этого тайного канала. Но фактически невозможно перекрыть все тайные каналы, и часто пытаются выйти из положения, жестко ограничивая пропускную способность. Тем не менее, если интересующая вас информация – это всего-навсего крошечный 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 не сможет установить их, программа взломает систему, подобрав единственный слабый пароль.

С другой стороны, с точки зрения пользователя это может быть примером того, что «нет необходимости бегать быстрее медведя – достаточно опережать тех, кто рядом с вами». Любое словарное нападение будет успешным против тех многих входов, чей пароль «Сюзанна» – они-то в первую очередь и станут жертвой атаки. Если же ваш пароль «молот-бабочка», то, хотя он тоже достаточно уязвим для словарных нападений, вероятно, не он станет жертвой.

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

Подведем итоги. Все основывалось на нападающем, захватившем файл хэшированных паролей. Стоит предотвратить словарные нападения, и пароли снова станут пригодными. Это возможно, хотя и нелегко для компьютеров с общим доступом. Парольный файл UNIX, например, может читать кто угодно. В наши дни в UNIX есть теневой парольный файл; в нем находятся действительные хэшированные пароли, а в общедоступном парольном файле не содержится ничего полезного. Файл хэшированных паролей в NT хорошо защищен, и его трудно украсть; для этого вам нужен или доступ администратора, чтобы разыскать хэшированные пароли через сеть (хотя поздние версии NT и Windows 2000 предотвращают и это), или же вам нужно отлавливать пароли, когда они используются для других сетевых приложений.

Система также может «захлопываться» после нескольких попыток неудачного ввода пароля, например десяти. Таким образом, если кто-то пытается войти под именем Алисы и начать угадывать пароли, он введет только 10 вариантов. Конечно, это будет надоедать Алисе, но это лучше, чем подвергать риску ее имя пользователя. И точное определение времени «замораживания» может зависеть от обстоятельств. Может быть, ее вход будет закрыт на 5 минут или на 24 часа. Может быть, до тех пор пока она не поговорит с каким-нибудь администратором. Высоконадежные механизмы после определенного числа попыток неудачного ввода пароля или его неправильного набора могут замораживаться надолго, с уничтожением информации внутри.

Другое решение состоит в том, чтобы использовать интерфейс, несовместимый с компьютером. Ваша магнитная карта, по которой вы вправе получить наличные деньги, защищена четырехзначным идентификационным номером. Что может быть более незначительным для компьютерного взлома? Требуется несколько миллисекунд, чтобы перебрать все возможные 10 000 идентификационных номеров, но в данном случае компьютер сложно присоединить к интерфейсу пользователя. Человек может стоять у банкомата и перебирать все эти номера один за другим. И для того, чтобы проверить все 10 000 идентификационных номеров, может потребоваться вместо 10 секунд – 28 часов безостановочной работы.

Так же как люди способны быть достаточно отчаянными, чтобы постараться осуществить такое нападение, так и банкомат будет «глотать» карточки, если вы вводите слишком много неверных паролей. До сих пор эта мера безопасности все еще применяется во многих системах: кодах дезактивации сигнализации (конечно, вы можете попытаться перебрать 10 000 возможных кодов, но на это у вас есть всего лишь 30 секунд), электронных дверных замках, телефонных карточках и т. п. Эти системы работают потому, что здесь нападение не может быть автоматизировано; но если вы сумеете использовать компьютер для перебора всех идентификационных номеров (или паролей) данных систем, вы взломаете эти системы.

Большинство системных проектировщиков не осознают разницы между системой с ручным интерфейсом, которая может быть надежна с четырехзначным личным идентификационным кодом, и системами, имеющими компьютерный интерфейс. Это та причина, по которой мы видим слабые, подобные идентификационному коду, пароли в очень многих веб-системах (включая некоторые брокерские сайты).

Что все-таки делать, если вы не можете предотвратить словарные нападения? Один из приемов – найти более объемный словарь. Другой – прибавить случайные числа к паролям (как говорят, «посолить»). В работе должно быть несколько различных типов визуальных и графических паролей; идея состоит в том, что чем больше возможных паролей, тем, следовательно, сложнее устроить словарное нападение. Однако все это ограничено памятью пользователя.

Пароли – это то, что знает пользователь. Другие техники проверки подлинности базируются на том, кем является пользователь, – на биометрических данных, и на том, что пользователь имеет, – на опознавательных знаках доступа.

Биометрические данные

Идея проста: вы сами подтверждаете свою подлинность. Ваш «отпечаток голоса» отопрет дверь в вашем доме. Сканирование сетчатки глаза пустит вас в офис. Отпечаток большого пальца зарегистрирует вас в вашем компьютере. Это использовалось даже в фильме «Звездный путь»: капитан Пикард «подписывает» электронный бортовой журнал отпечатком своего большого пальца.

Биометрические данные – самые старая из форм опознавания. Физическое узнавание является биометрикой; наши предки использовали его задолго до того, как они эволюционировали в людей. Коты метят свою территорию. Дельфины издают индивидуальные, как подпись человека, звуки.

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

Для большинства методов биометрические данные нужно сохранять в базе данных, как и пароли. Голос Алисы будет служить биометрическим опознавательным знаком в разговоре по телефону, если вы Алису уже знаете. Если она незнакомка, то вам это не поможет. Точно так же и с почерком Алисы – вы можете узнать его, только если уже видели. Для разрешения этой проблемы карточки с подписями хранятся в банках в картотеке. Алиса пишет свое имя на карточке, когда открывает свой счет; эта карточка хранится в банке. Когда Алиса подписывает чек, банк сопоставляет ее подпись с той, что хранится в картотеке, для того чтобы убедиться, что чек имеет силу. (На практике это случается редко. Проверить письменную подпись так долго, что банк не побеспокоится сделать это за сумму, меньшую 1000 долларов. Он предполагает, что если возникнут проблемы, то кто-нибудь пожалуется. И разобраться с редкой проблемой дешевле, чем платить кому-либо за постоянную проверку.) Вы можете точно так же поступить и с Алисиным голосом – сравнив его с аналогичным образцом, хранящимся в центральной базе данных.

Исключения составляют ситуации, где биометрические данные подтверждаются как часть запутанного и необычного протокола. Когда Алиса подписывает контракт, например, у Боба еще нет копии ее подписи. Однако протокол работает – так как Боб знает, что он сможет проверить подпись впоследствии, если возникнет такая необходимость.

Существует много различных типов биометрических данных. Я уже упомянул почерк, звучание голоса, узнавание лица, отпечатки пальцев. К биометрикам также относятся линии на руке, сканирование сетчатки, сканирование радужной оболочки глаза, динамические характеристики подписи (не только то, как она выглядит, но и с каким нажимом, с какой скоростью она была начертана и т. д.) и другие. Одни технологии надежнее других – отпечатки пальцев намного надежней распознавания лица – но ситуация может измениться, поскольку технологии совершенствуются. Некоторые навязчивы – одна несостоявшаяся технология базировалась на образце отпечатка губ и требовала от пользователя поцеловать компьютер. В целом, биометрические данные будут считываться все лучше и лучше.

«Лучше и лучше» имеет два разных смысла. Во-первых, это значит, что самозванец не будет неправильно опознаваться в качестве Алисы. В целом, роль биометрических данных заключается в том, чтобы доказать, что Алиса-претендент и есть настоящая Алиса. Таким образом, если самозванец может успешно одурачить систему, то она работает не очень хорошо. Это называется ложной уверенностью. Во-вторых, это значит, что система не будет пытаться представить Алису как самозванца. Вернемся к началу: если роль биометрических данных – доказать, что Алиса – это Алиса, и если она не может убедить систему, что она – это она «не поддельная», тогда система также работает плохо. Это называется ложным отрицанием.

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

Вообще, вы можете настроить биометрическую систему как в сторону допущения ошибки ложной уверенности, так и в сторону ложного отрицания. Здесь весьма нечеткие границы: если система получает отпечаток пальца, который, похоже, принадлежит Алисе, впустит ли она ее внутрь? Это зависит от того, склонна она в большей степени допустить ложную уверенность, или ложное отрицание. Если Алиса уполномочена взять карандаш со склада, то лучше допустить ошибку ложной уверенности; здесь больше неприятностей с отказом законному пользователю, чем если бы несколько карандашей просто потерялись. Если система защищает большие суммы денег, то ложное отрицание предпочтительней: оставить неправомочных пользователей снаружи более важно, чем иногда отказать в доступе законному пользователю. Если система приступает к выполнению ряда последовательных операций для запуска ядерных ракет, страшны оба варианта.

Биометрические данные значат очень много, так как на самом деле их сложно подделать: очень трудно нанести ложный отпечаток на свой палец или сделать сетчатку своего глаза похожей на чужую. Некоторые люди могут говорить голосами других (например, эстрадные имитаторы), а Голливуд способен сделать лица людей похожими на других. Но вообще подделать биометрические данные очень тяжело.

С другой стороны, биометрические данные даже слишком легки для подделки: не проблема украсть биометрики после того, как были сделаны начальные измерения. Во всех случаях, которые мы обсуждали, проверяющему необходимо было бы удостовериться не только в том, что биометрические данные верны, но и в том, что они были введены правильно. Вообразим удаленную систему, которая использует узнавание лица как биометрику. «Для получения разрешения возьмите свою фотографию, сделанную „Полароидом", и отправьте ее нам. Мы сравним картинку с той, что хранится у нас в файле». Как здесь осуществить нападение?

Легко. Чтобы выдать себя за Алису, возьмите ее фотографию, сделанную «Поляроидом», так, чтобы владелица об этом не знала. Потом, несколькими днями позже, используйте ее, чтобы обмануть систему. Это нападение работает потому, что получить фотографию Алисы просто, это совсем не то, что сделать свое лицо таким, как у нее. И так как система не проверяет, что это изображение вашего лица, а только то, что оно соответствует Алисиному лицу в картотеке, мы в состоянии обмануть ее.

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



Поделиться книгой:



Регистрация