Ядро безопасности

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

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

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

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

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

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

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

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

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

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

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

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

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

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: