Читать «Журнал «Компьютерра» № 38 от 17 октября 2006 года» онлайн - страница 26

Компьютерра

Что делать? Виртуализироваться! Виртуализация, позволяющая создавать на одном компьютере изолированные друг от друга виртуальные машины, и безопасность идут рука об руку, поскольку вместо комплекса мер по защите компьютера в целом — файрволла, антивируса, разграничения прав доступа — достаточно реализовать защиту только сравнительно маленькой программки — менеджера виртуальных машин (VMM). Во-первых, с его помощью можно выстраивать «доверительную пирамиду»: VMM при создании очередного раздела на компьютере проверит «цифровую подпись» загрузчика операционной системы, загрузчик проверит подписи всех исполняемых файлов и данных операционной системы, операционная система будет проверять подписи у всех запускаемых программ, программы — у всех запускаемых скриптов и используемых данных и т. д., где каждый уровень, который мы уже считаем надежным, проверяет надежность следующего уровня. Если аппаратно обеспечить гарантию подлинности самого первого уровня, с которого начинается «пирамида», — а именно это и делают TPM, LaGrande и иже с ними, то на подобном компьютере будет принципиально невозможно запустить что-либо неподписанное кем-то, кому мы доверяем, — в частности, того же троянца. Во-вторых, виртуализация гарантирует, что если «вредная» программа все-таки будет запущена (например, где-то в описанной схеме встретится незащищенный слой, систему безопасности для собственного удобства отключит сам пользователь или, что еще неприятнее, из-за ошибки в софте «подписанная» программа сделает что-нибудь «неприличное» [Как вы помните, «борьба за безопасность» началась еще с введения бита NX/XD, который позволял предотвратить один из самых распространенных видов подобных атак, заставляющих недостаточно аккуратно написанное приложение выполнить произвольный «чужой» код, послав на его вход специально подобранную последовательность данных]), то «погибнет» лишь один из «отсеков корабля», а не вся система. Скажем, дыра в WinAMP или многострадальном Internet Explorer, использующихся в неслужебных целях, не станет причиной компрометации бизнес-приложения, работающего с важными данными, поскольку пробившийся в одну виртуальную машину низкой защиты хакер попросту не увидит недоступные для него остальные машины, на которых запущены более критичные вещи.

Что же нам предлагают? По правде говоря, для меня стало откровением, что несмотря на отсутствие поддерживающего ее программного обеспечения, первая на рынке технология виртуализации VT-x, которую процессоры Intel поддерживают уже около года, за это время несколько раз оптимизировалась по быстродействию, так что производительность использующих ее программ на Core 2 Duo будет заметно выше, чем на первых Pentium D (даже с учетом разницы в производительности самих этих процессоров). Впрочем, сегодня ведущие производители виртуальных машин уже поддерживают VT-x, хотя и не реализуют всех ее потенциальных возможностей, что, впрочем, неудивительно, если учесть, что необходимый для полного раскрытия технологии объем работ сопоставим по сложности с созданием новой операционной системы, да и ОС в идеале должны бы пройти соответствующую оптимизацию. Камень преткновения в данном вопросе — это необходимость реализации работающих на уровне виртуальной машины драйверов для железа и их поддержки операционной системой. Дело в том, что все нынешние ОСи попросту не умеют совместно с другими ОСями одновременно использовать одно и то же оборудование — скажем, общую видеокарту, и приходится либо реализовывать средствами виртуальной машины виртуальный же графический адаптер, жертвуя производительностью и функциональностью, либо ставить, грубо говоря, две видеокарты — по одной на каждую из ОСей, что тоже едва ли можно назвать удачным выходом. Кроме того, если мы собираемся использовать VMM не только для одновременного запуска Linux и пары копий Windows на одной машине, а для более «прогрессивных» схем, в которых, например, предлагается каждому критичному приложению выделять по собственной копии операционной системы, то без поддержки со стороны ОС и запустить это приложение — проблема (потребуется ждать создания новой виртуальной машины и загрузки в ней ОСи, после чего вручную запускать нужную программу), и работать с ним (было бы лучше, если б запущенная на другой виртуальной машине программа выглядела как обычное приложение, а все технические тонкости были спрятаны), и ресурсов на это уйдет слишком много (о быстродействии во многих случаях можно забыть). Словом, объем работы огромен, он наверняка займет еще несколько лет. Так что первые ее по-настоящему интересные плоды мы, вероятно, увидим тогда же, когда и второе поколение виртуализации от Intel, известное сейчас под кодовым названием VT-d.