File engine/modules/ed-shortbar/bar.php not found.
Библиотека книг онлайн
  Добавить в Избранное   Сделать Стартовой  
книги
 
  Search  
электронная библиотека
онлайн библиотека
Главная     |     Регистрация     |     Мобильная версия сайта     |     Обратная связь     |     Карта сайта    |     RSS 2.0
библиотека
     
» Брюс Шнайер Секреты и ложь. Безопасность данных в цифровом мире

 

Брюс Шнайер Секреты и ложь. Безопасность данных в цифровом мире

Глава 8 Компьютерная безопасность

Защита компьютерной информации и криптография – не одно и то же. Криптография часто применяется в целях защиты, но последняя представляет собой намного более общее понятие. В общепринятом понимании компьютерная защита объединяет такие разные вещи, как контроль санкционированного (и несанкционированного) доступа, управление учетными записями и привилегиями пользователя, защиту от копирования, от вирусов и защиту баз данных. В принципе, к защите компьютерной информации также относятся защита от подсоединения других пользователей через сеть, от подбора пароля и от проникновения вирусов, но такого рода вещи мы обсудим в главе, посвященной безопасности сетей. В век Интернета понятия компьютерной безопасности и безопасности сетей практически слились. Но для ясности в этой книге я проведу некую условную границу между понятиями компьютерной и сетевой безопасности по принципу: актуальна эта проблема безопасности для любого компьютера или только для компьютера, подсоединенного к сети. Полная защита компьютерной информации, которую можно определить как предотвращение и (или) выявление недозволенных действий пользователей компьютерной системы, представляется существенно более сложной, чем простая математика криптографии. Так оно и есть.

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

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

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

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

Все это – серьезные требования, и задачи компьютерной безопасности имеют сложные решения.
Определения

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

Конфиденциальность немногим отличается от секретности, о которой мы говорили в главе 5. Изначально компьютерная безопасность понималась как предотвращение несанкционированного доступа к засекреченной информации. Это предубеждение отчасти развеялось с появлением электронной торговли и практики совершения сделок в Интернете – в этой сфере существенно более важна неприкосновенность, – однако оно сохраняется при разработке большинства систем обеспечения компьютерной безопасности. Основная масса исследовательских работ на тему компьютерной безопасности сосредоточена на обеспечении конфиденциальности, главным образом потому, что большая часть ранних исследований финансировалась военными. На практике, как я заметил, понятия «конфиденциальность» и «безопасность» использовались как синонимы.

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

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

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

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

Совместное обеспечение конфиденциальности, доступности и неприкосновенности сводится к контролю доступа. Суть проблемы состоит в обеспечении законным пользователям возможности делать все то, что им дозволено делать и на что остальные не имеют права.

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

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

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

Перед тем как поговорить о различных типах контроля доступа, нам необходимо ввести два понятия. Речь идет о так называемых субъектах, у которых есть доступ к неким объектам. Часто, хоть и не всегда, субъектом является пользователь, а объектом – компьютерный файл. Субъектом также может быть компьютерная программа или процесс, а объектом – другая компьютерная программа, сопряженная, например. Объектом может быть запись базы данных. Объектом может быть определенный ресурс, возможно, какая-то часть технического оборудования компьютера или принтер, или часть памяти компьютера. В зависимости от обстоятельств одна и та же компьютерная программа бывает субъектом доступа в одном случае и объектом в другом.

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

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

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

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

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

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

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

Опубликовано: 12 июня 2011, 13:53     Распечатать
 

 
электронные книги
РЕКЛАМА
онлайн книги
электронные учебники мобильные книги
электронные книги
Полезное
новинки книг
онлайн книги { электронные учебники
мобильные книги
Посетители
электронные книги
интернет библиотека

литература
читать онлайн
 

Главная   |   Регистрация   |   Мобильная версия сайта   |   Боевик   |   Детектив   |   Драма   |   Любовный роман   |   Интернет   |   История   |   Классика   |   Компьютер   |   Лирика   |   Медицина   |   Фантастика   |   Приключения   |   Проза  |   Сказка/Детское   |   Триллер   |   Наука и Образование   |   Экономика   |   Эротика   |   Юмор