Pull to refresh

Программы, данные и их хозяева

Reading time 10 min
Views 11K
В предыдущем выпуске мы констатировали, что сфера информационной безопасности переживает тяжелый кризис. Его суть — в массовом применении компьютеров заведомо ненадежной конструкции для решения жизненно важных задач. Со стороны хорошо видны отдельные проявления кризиса — регулярные неприятности в компьютерах компаний и государственных организаций по всему миру, сопровождаемые скандалами и потрясениями рынка. Но это лишь вершина айсберга. Растущий список пострадавших брендов наводит на мысль, что перед нами не ряд случайностей, а системная закономерность.

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

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

Давайте разберемся, как такое могло случиться.

Фон-неймановская архитектура — родовое проклятие современных компьютеров


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

В конструкторскую группу входили преимущественно ученые из университета Пенсильвании — старейшего в США. Интеллектуальное ядро группы составляли Джон Мокли и Джон Экерт. Эти первопроходцы начали свою работу во многом наугад, отчасти под влиянием идей Джона Атанасова, еще до войны задумавшего электронную машину с фиксированной программой для решения однотипных математических задач. ENIAC предназначался для широкого круга военных расчетов, поэтому в нем были предусмотрены средства замены программы. Но они не были удобными. Коммутационная панель, на которой выполнялось программирование, напоминала первые телефонные станции, где барышни переключали абонентов вручную. Программа ENIAC хранилась в виде совокупности состояний механических переключателей. Для смены программы надо было изменить их физическое расположение на панели, механически задав новую электрическую схему.

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

Инициатором и куратором проекта ENIAC был Герман Голдстайн — военный математик, представлявший в годы войны интересы армии США в университете Пенсильвании. Летом 1944 года он пригласил в проект Джона фон Неймана, который тогда участвовал в качестве ведущего математика в создании атомной бомбы и искал возможность быстрого выполнения сложных расчетов. Работы Мокли и Экерта впечатлили Неймана. Он всерьез заинтересовался идеей «stored program computer» и к лету 1945 года в свойственной ему академической манере обобщил, систематизировал и формализовал эту концепцию в рукописи «First draft of a report on the EDVAC» — в рамках нового проекта EDVAC и нового контракта университета Пенсильвании с армией США. Голдстайн разослал копии этого доклада — от имени Неймана и с его единоличной подписью — нескольким десяткам специалистов, которых он решил привлечь к проекту. Возможно, публикация стратегического ноу-хау понадобилась, чтобы Мокли и Экерт не запатентовали на себя ключевые принципы компьютера (особенно —совместное и равноправное хранение программ и данных, идею которого, кстати, высказал в 1930-е Алан Тьюринг). В конце концов, все работы финансировались правительством; и армия, и университет возражали против закрепления за участниками проекта личных прав на его результаты. Нейману, посвященному в тайны Лос-Аламоса, военные доверяли больше, чем другим.

Доклад вызвал ажиотажный интерес. Его быстро растиражировали в сотнях экземпляров, распространившихся в научно-инженерных кругах. Так в июле 1945 года появилось понятие фон-неймановской архитектуры. Война заканчивалась, и впереди вырисовывались колоссальные научные и коммерческие перспективы удивительных новых машин. В университет Пенсильвании началось научное паломничество. К середине 1946 года Нейман, Голдстайн и Артур Баркс (еще один разработчик ENIAC) окончательно привели концепцию «stored program computer» к академическому стандарту, опубликовав фундаментальную статью «Preliminary discussion of the logical design of an electronic computing instrument». Мокли и Экерт, имена которых остались в тени Неймана, обиделись и, прочитав напоследок курс лекций для других ученых, ушли из университета, основав собственную компьютерную компанию. В течение следующих трех лет компьютеры с совместным хранением команд и данных были созданы в Великобритании и Австралии. К началу 1950-х фон-неймановская архитектура начала казаться единственно возможной, а сфера ее применения — безграничной. До появления первых вирусов оставалось несколько десятилетий, и никто еще не мог себе представить кошмара, который мы сегодня видим повсюду — бесконтрольного поведения вычислительных машин. Напротив, именно полная контролируемость и предсказуемость долго считалась их ценнейшим качеством.

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

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

Обычно программа меняет себя по двум причинам: из-за ошибки программиста или в результате его сознательного решения. Обе эти причины, вместе взятые, неизбежно вызывают появление вирусов в любой фон-неймановской среде достаточно большого размера, находящейся в руках широких народных масс. Фон-неймановская среда безопасна только в том случае, если у нее есть компетентный хозяин, полностью контролирующий все процессы, происходящие в памяти — с первого байта памяти до последнего, с первого такта процессора до последнего. В 1940-е, 1950-е, 1960-е и 1970-е годы это условие безопасности соблюдалось. В 2010-е оно не соблюдается. В лучшем случае один владелец компьютера из сотни осознает, например, что определенное движение мышью (или пальцем) вызывает запуск (или изменение) исполняемого кода, то есть программирует компьютер на выполнение определенных действий.

Заметьте, что процессору безразлично, считает ли свое действие программированием тот, кто нажал на кнопку и запустил код. Процессор ничего не знает о человеке и его намерениях. Он пунктуально и добросовестно, такт за тактом, выполняет ту программу, которая находится в памяти. У него есть право и обязанность записывать любые данные в любую область памяти — в точности так, как велит программа. Фон-неймановская среда дает человеку абсолютный простор для действий, требуя взамен абсолютной ответственности человека за каждый бит, занесенный им в память. Это ее свойство по-прежнему незаменимо для профессионалов, но нежелательно для большинства населения.

Какие есть альтернативы?


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

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

Простой пример устройства с фиксированной программой — шарманка. В выступах на поверхности ее барабана помещается всего несколько сотен бит, и скорость доступа к ним довольно мала. В выступах на поверхности пластика компакт-диска можно записать уже около миллиарда бит со значительно большей скоростью доступа (кстати, и в штампованном CD, и в шарманке применяется механическое хранение информации: единицы и ноли кодируются геометрией объектов). Объем и скорость доступа микросхемы постоянной памяти (ROM) могут быть еще на несколько порядков больше. Иными словами, предельная длина физически неизменяемой программы определяется только уровнем технологии и стоимостью — и ничем другим.

image
Компьютер с фиксированной программой на чипе Hitachi. Вирусам не подвержен. Работает (точнее, играет) без проблем уже 28 лет. Объем постоянной памяти (для программы) — 2 килобайта. Объем оперативной памяти (для данных) — 80 байт. Оцените квалификацию разработчиков!

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

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

Из-за надежности и технологичности компьютеров с фиксированной программой промышленность выпускает их в огромном количестве. Примеры — калькулятор, часы, музыкальный инструмент, сигнальный процессор, контроллер промышленного оборудования. Подобные устройства хороши еще и тем, что дешевы — но только при крупносерийном производстве. Существенная составляющая их себестоимости — качественно написанное программное обеспечение. Единовременные затраты на его создание весьма ощутимы, поскольку нужна высокая квалификация специалистов: задним числом исправить плохую программу не получится. Зато для разработчика снимается проблема нелицензионного использования этого ПО, т.е. расходы на качественную разработку фиксированной программы оправдываются. А главное — полностью исчезает проблема вирусов, лежащая в основе других проблем информационной безопасности. Компьютер, защищенный от вирусов, более привлекателен для потребителя и стоит дороже, чем незащищенный.

Заметим, что при промышленном производстве вместо физической реализации такой архитектуры ее часто эмулируют — например, на основе серийно выпускаемого микроконтроллера с фон-неймановской архитектурой. Эта технологическая уловка при грамотном исполнении (жестком заземлении вывода WP микросхемы перепрограммируемой флеш-памяти для имитации ROM и т.п.) ничего не меняет по сути. Эмуляция безопасной архитектуры на основе небезопасной архитектуры — это один из главных инструментов в арсенале средств антивирусной защиты.


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

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

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

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

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

* * *

Продолжение следует...
Tags:
Hubs:
+9
Comments 158
Comments Comments 158

Articles

Information

Website
aflex.ru
Registered
Founded
2001
Employees
51–100 employees
Location
Россия