«Эльбрус» — пик безопасности?
 
16.03.2004
Александр Карабуто


 
стр. 1
стр. 2 >>

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

Еще во времена СССР команда создателей вычислительных комплексов «Эльбрус» 1 и 2 (1978, 1985) имела за плечами опыт разработки и эксплуатации системы, в которой, в частности, была успешно решена проблема защищенности вычислений. Архитектура последующих микропроцессоров «Эльбрус» 3М и Е2К адаптирует эту технологию для современного окружения. Технология основана на использовании контроля типов данных и аргументов на всех уровнях системы: в аппаратуре, в языке и в ОС.

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

Стратегический подход

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

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

Технология «Эльбрус» радикально отличается от традиционного подхода — базовые решения, развитые в языках, эффективно поддержаны в аппаратуре и в операционной системе «Эльбрус». Технология была разработана в 70-е годы, но актуальность заложенных в нее идей возросла в последнее время, когда незащищенность информационных систем создала критическую ситуацию для развития IT-индустрии. Реализация технологии требует, конечно, некоторых аппаратных ресурсов и ведет к небольшому снижению производительности, однако, думается, это вполне разумная плата.

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

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

1. Никто не тронет меня
Благодаря механизму ссылки, только вычислительный процесс, создавший некоторую область данных, имеет к ней доступ. Если, конечно, ссылка на эту область не была добровольно передана ее владельцем кому-либо другому.

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

В описываемой системе элементарным звеном защиты является контекст. Любой контекст защищен от ошибочных или злонамеренных действий программ, работающих в других контекстах. Иными словами, обеспечивается защита одной процедуры от другой. Эта защита (в «Эльбрусе» она называется контекстной) существенно отличается от других подобных схем (Unix или Windows), таких, например, как защита между двумя виртуальными пространствами, когда невозможно никакое взаимодействие, — в нашем же случае два контекста могут активно взаимодействовать, работая в одной задаче.

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

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


1 Борис Арташесович Бабаян — один из первых выпускников Физтеха, а ныне — семидесятилетний патриарх с мировым именем в области архитектуры и программного обеспечения вычислительных комплексов, устойчивых к отказам и сбоям, директор Института микропроцессорных вычислительных систем РАН, главный конструктор вычислительных средств систем ПРО/ПКО и микропроцессорных вычислительных комплексов «Эльбрус», научный руководитель ТОО «Московский центр SPARC-технологий» (www.elbrus.ru), с 1984 года — член-корреспондент РАН. Мы предлагаем вам конспект основных положений стостраничной статьи Бориса Бабаяна «Защита информационных систем», опубликованной в 2003 году на www.elbrus.ru/mcst/ secure_ information_system_v5_2r.pdf и излагающей взгляды автора на защиту информационных систем. За деталями желающие могут обратиться к первоисточнику.
2 Даже при разработке языков в целях повышения эффективности эти исходные положения размываются, модифицируются, приводя в результате, конечно, к более эффективному, но ненадежному языку. Тому есть две причины. Во-первых, прежде, когда оборудование было медленное и громоздкое, задача достижения высокой эффективности имела высший приоритет, а проблема защищенности не была такой острой, как сейчас. Не было и компьютерных сетей, значительно реже происходил обмен программами и пр. Во-вторых, упомянутые выше модели использовались лишь при разработке языков программирования, но ни при разработке операционных систем, ни, тем более, при разработке архитектуры вычислительных машин соображения защищенности не фигурировали даже в таком виде.
3 В результате заметно облегчается сборка всей программной системы, а значит, и отладка больших программных комплексов. В качестве объективного подтверждения этого факта можно привести два примера. Первый: на машины «Эльбрус» переносилось много отлаженных программ с других систем. Во всех случаях в отлаженных программах обнаруживались ошибки. При прогоне в системе симуляторов Э3-Е2К широко распространенных тестов SPEC92 было обнаружены около трех десятков ошибок. Второй: система имеет большой эффект при разработке ОС, так как отпадает необходимость заботится о внутренней защите между модулями самой системы. По своему характеру системное программирование становится подобным прикладному. Алгоритмы ОС, вызванные из пользовательской программы или по прерыванию, работают на стеках пользователя и т. д. Иными словами, ОС превращается в набор описаний, глобальных для любой пользовательской программы.
4 Нет необходимости отдельно оговаривать права доступа и т. д. Если по алгоритму необходимо что-то передать, то передача одновременно означает и передачу прав. В практике других систем известны случаи, когда сложные действия в принципе могли бы улучшить защищенность, но их сложность приводит к тому, что программисты ими не пользуются. Логика здесь простая. Действия для обеспечения защищенности не ощущаются программистом как абсолютно необходимые, поскольку не очевидно, будет ли нарушена защита именно в этом месте. А раз так, программист о них благополучно «забывает».


 
стр. 1
стр. 2 >>

<<Читаю и говорю
Все материалы номера
Экзекуция по протекции >>