поиск по сайту
«Доверенная гарвардская» архитектура – компьютер с динамически изменяемой архитектурой

«ДОВЕРЕННАЯ ГАРВАРДСКАЯ» АРХИТЕКТУРА – КОМПЬЮТЕР С ДИНАМИЧЕСКИ ИЗМЕНЯЕМОЙ АРХИТЕКТУРОЙ

В.А. Конявский

научный руководитель ФГУП «ВНИИ проблем вычислительной техники и информатизации»

доктор технических наук, член-корреспондент РАЕН

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

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

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

Любой компьютер – это реализация (более или менее близкая) идеи «машины Тьюринга».

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

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

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

На машине Тьюринга можно моделировать любую другую вычислительную машину любого «исполнителя», – поэтому говорят о полноте машины Тьюринга.

С указанными выше ограничениями (конечность памяти) на универсальной машине можно, в свою очередь, моделировать машину Тьюринга. Такие универсальные машины называют полными по Тьюрингу (Turing complete).

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

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

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

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

Пытаясь защититься от вредоносных хакерских программ, человечество уже бо­лее 60-ти лет разрабатывает программы, традиционно относимые к области защиты информации - средства идентификации, аутентификации, авторизации, контроля целостности, антивирусные программы, криптографические средства и т. д. Использование этих средств отчасти приносит положительный эффект. Действуя в рамках пусть универсальной, но одной формальной модели, мы неизбежно натолкнемся на ее неполноту – в полном соответствии с теоремой Геделя о неполноте.

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

Действительно, если универсальная машина выполняет любые программы, то, очевидно, она выполнит и вредоносную программу. Это не зависит от ее программного обеспечения, а определяется ее архитектурой. Универсальность компьютера обеспечивается архитектурно, самой «конструкцией» машины Тьюринга, как мыслимой в абстракции, так и реализованной на практике. Способность выполнять вредоносные программы – это базовая, системная, архитектурная уязвимость всех компьютеров, построенных как машина Тьюринга. Уязвимость – оборотная сторона универсальности. Машина Тьюринга архитектурно уязвима. Архитектурно уязвимы и все виды компьютеров, которые мы используем, потому что они разрабатывались так, чтобы быть максимально универсальными. Этой уязвимостью мы платим за универ­сальность наших компьютеров. Мы эксплуатируем компьютеры, а хакеры, в свою очередь, эксплуатируют эту уязвимость.

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

Как же быть?

Если уязвимость в архитектуре, то и совершенствовать нужно архитектуру.

Классическими являются две архитектуры – архитектура фон-Неймана (рис. 1) и гарвардская архитектура (рис. 2). Примером первой выступают практически все настольные компьютеры, примером второй - практически все планшетные компьютеры и телефоны.

Рис. 1. Архитектура фон-Неймана

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

Гарвардская архитектура предполагает наличие разных каналов для команд и данных.

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

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

Рис. 2. Гарвардская архитектура

На использовании этой уязвимости основаны практически все современные хакерские атаки, которые сводятся в основном к атаке на «перехват управления». Схема атаки обычно выглядит так:

s1 внедряется и размещается в оперативной памяти вредоносное ПО (ВрПО);

s2 внедряется и размещается в оперативной памяти вредоносный обработчик прерываний;

s3 записывается в долговременную память ВрПО и обработчик прерываний;

s4 с помощью любого доступного механизма вызывается прерывание, например, с помощью DDOS-атаки;

s5 внедренный ранее обработчик прерываний срабатывает и передает управление ВрПО;

s6 ВрПО выполняет свою функцию, например, реализует разрушающее программное воздействие (РПВ).

Здесь s1 - s3 - это шаги по подготовке атаки, s4 - инициирование атаки, s5 и s6 – собственно использование архитектурной уязвимости.

Чтобы обезвредить шаги s1 и s2, обычно используются антивирусные программы. Иногда это бывает полезным, но только иногда, поскольку с помощью антивирусных программ выявить все ВрПО невозможно. Более того – специалистам известны конструкции ВрПО, которые точно нельзя обнаружить. Можно даже сказать, что компьютерные вирусы и в целом ВрПО удается обнаружить только в силу их несовершенства. В общем случае всегда можно разработать такое ВрПО, которое не может быть обнаружено с помощью антивирусных программ сигнатурного поиска, эвристических анализаторов и поведенческих блокираторов.

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

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

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

Некоторые из перечисленных функций должны выполняться до загрузки операционной системы, и реализовать это можно только с помощью сложного устройства, не программно. Примером такого устройства является СЗИ НСД «Аккорд» (рис.З).

Рис. 3. СЗИ НСД «Аккорд»

СЗИ НСД «Аккорд» – это аппаратный модуль доверенной загрузки с программным комплексом разграничения доступа. Он выполняет все необходимые контрольные функции, его программная часть контролирует, в частности, и запуск задач. «Аккорд» предназначен для работы на компьютерах с процессором х86. Напомним, что архитектура таких компьютеров очень близка к классической архитектуре фон-Неймановского типа.

Эффективность СЗИ НСД «Аккорд» связана с тем, что он блокирует уязвимости, связанные с нарушением целостности, и создает доверенную среду для работы программных средств, обеспечивающих защиту компьютера на шагах si – s6.

Несмотря на большую распространенность цена СЗИ НСД «Аккорд» довольно высока, а его настройка – дело для профессионалов. Конечно, он – лучшее решение для корпоративных применений, но, видимо, слишком сложен для частного применения. Сложность его связана именно с фон-Неймановской архитектурой защищаемого компьютера (нужно добавить неизменяемую память, разделить потоки команд и данных, исполнить контрольные процедуры в доверенной среде до запуска ОС и т.д.).

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

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

Очевидно, что такая архитектура обеспечит неизменность ОС, программ и данных.

Если вернуться при этом к схеме атаки, описанной выше, то видно, что шаг s3 не может быть выполнен, поэтому и сама атака (шаги s5 и s6) тоже не исполнится. Такой компьютер приобретет значительный «вирусный иммунитет», так как вредоносное ПО не будет фиксироваться на компьютере.

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

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

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

Предложенная нами архитектура получила название доверенная Гарвардская архитектура (рис. 4.). Она отличается тем, что в ней используется память, для которой установлен режим «только чтение». При загрузке команды данные размещаются в сеансовой памяти, в которой и исполняются. Начальная загрузка и копирование кодов в сеансовую память могут выполняться как последовательно, так и параллельно – суть разделения этапов от этого не меняется.

Рис. 4. Доверенная Гарвардская архитектура с памятью RO

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

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