Оригинал материала: https://3dnews.ru./640421

Компьютер с чистого листа

Время начинать заново. Системный тупик. Убить, чтобы спасти

#Время начинать заново

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

Сначала одна из главных американских газет, The New York Times, большой статьей отметила 80-летие Питера Ноймана (Peter G Neumann) — живой легенды в мире инфобезопасности и профессионала, по сию пору активно занимающегося делом всей своей жизни: рисками и угрозами человеку со стороны компьютерных технологий. Причем основную часть этой статьи занимает не биография героя, а рассказ о том необычном исследовательском проекте, который ныне возглавляет Нойман. Непосредственно к этой теме отсылает и броский заголовок материала: «Убить компьютер, чтобы его спасти»...

Затем, в последних числах декабря 2012 года, на сайте известного среди ИТ-специалистов журнала IEEE Spectrum, была опубликована беседа с близким коллегой Ноймана Робертом Уотсоном (Robert N. M. Watson), который — как бы со стороны молодого поколения — совместно с ветераном возглавляет тот же самый проект. Содержание данной беседы вполне адекватно отражено в названии: «Компьютеры: время начинать заново».

Наконец, в январе 2013-го еще один отраслевой компьютерный журнал, Communications of the ACM, публикует большую обзорно-аналитическую статью опять-таки Уотсона, посвященную осмыслению гигантских проблем в компьютерной безопасности. А также, ясное дело, и тому оригинальному решению, что было предложено несколько лет назад и ныне активно развивается для вывода компьютерной индустрии из очевидного тупика в области защиты информации. [Robert N. M. Watson. Reflections on a decade of operating system access control extensibility. Communications of the ACM 56(2), January 2013]

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

#Системный тупик

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

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

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

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

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

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

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

По сути дела, в работе антивирусов изначально предполагается, что противник уже достиг успеха в своих гнусных целях — влез в машину, получил доступ к вашим данным и вообще мог сделать с зараженным компьютером что угодно. Если же вредоносы сработаны квалифицированно, то, как свидетельствует опыт с вирусами-червями типа Stuxnet или Flame, созданными в недрах спецслужб, такие зловреды могут сидеть и работать в компьютерах на протяжении многих лет — совершенно незаметно для любых антивирусных программ.

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

Убить, чтобы спасти

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

Ныне, точнее вот уже несколько последних лет, Нойман и занимается непосредственно этой задачей. Как ведущий специалист исследовательского центра SRI International (Менло-Парк, Калифорния), начиная с 2010 года он возглавляет команду исследователей, которая пытается полностью переосмыслить подходы к обеспечению безопасности компьютеров и компьютерных сетей.

Эти работы ведутся в рамках специального пятилетнего проекта, который финансируют DARPA, то есть Агентство передовых военных исследований Министерства обороны США, и AFRL — исследовательский центр американских ВВС. Причем проект является действительно международным, коль скоро вторым главным его участником, наряду с командой SRI International, является Компьютерная лаборатория Кембриджского университета, Великобритания. Так что с английской стороны проект возглавляет упомянутый выше сотрудник Кембриджа Роберт Уотсон.

Вообще говоря, интересующий нас проект и коллаборация SRI-Cambridge — это на самом деле всего лишь один представитель из нескольких десятков разных исследовательских проектов, которые финансирует ныне DARPA в рамках большой программы, затеянной в 2010 году и нацеленной на широко поставленную задачу так называемой «кибергибкости». Главным стимулом при запуске этой программы была простая, в сущности, идея: если компьютерная индустрия загнала себя в тупик, то что здесь можно и нужно сделать по-другому?.

Другие проекты программы, почти наверняка, тоже занимаются разработкой по-своему любопытных идей. Однако проект, рассматриваемый здесь и получивший условное название Clean Slate — «чистый лист», — особо интересен по причине своей радикальности.

Биология и спецслужбы. Отсеки и привилегии. Оптимистичный пессимизм

#Биология и спецслужбы

Строго говоря, более официальное название проекта звучит как CRASH, что является аббревиатурой от Clean-Slate Design of Resilient Adaptive Secure Hosts. Поскольку слова тут подбирались в первую очередь для звучности аббревиатуры, литературно переводить эту цепочку эпитетов системы (гибкая, безопасная, адаптивная) вряд ли имеет смысл.

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

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

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

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

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

#Отсеки и привилегии

Если переходить к более конкретным особенностям этой системы, то среди базовых основ CRASH в первую очередь называют принцип компартментализации (compartmentalization) и принцип наименьшей привилегии (principle of least privilege).

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

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

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

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

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

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

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

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

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

Конкретные названия тут, ясное дело, никакой роли не играют. В других разведслужбах тот же самый принцип может быть реализован в виде кодовых слов типа MU12, Z-53 и DDE2A. Куда важнее тут суть. Сотрудник спецслужбы, на низком уровне занимающийся работой над объектом MU12 (перехват), может, в принципе, иметь общее представление о том, к какой стране и ведомству относится это название. Но порою может даже и этого не знать. Потому что не требуется.

Тем более не требуется ему для работы информация о том, что тот же объект у дешифровальщиков называется Z-53 (не говоря уже о сведениях про успехи вскрытия). А сотрудники, технически занятые обработкой Z-53, понятия не имеют о том, что у переводчиков это называется «объект DDE2A», и тем более — о том, какова его информационная ценность...

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

А в тесной и непосредственной связи с этим принципом действует еще один, именуемый need to know — то есть принцип «требуется знать». Иначе говоря, любой сотрудник разведки, занятый разработкой объекта строго в пределах своего отсека, извне получает лишь ту дополнительную информацию, которая необходима для успешного продвижения работы. Если же необходимости в этом нет, то нет и никакого дополнительного доступа.

В мире компьютерной безопасности та же самая, по сути, идея, получила название «принцип наименьшей привилегии».

Причем и здесь этот подход новым никак не назовешь. О принципе наименьшей привилегии в компьютерной среде заговорили еще в середине 1970-х годов, когда впервые этот термин прозвучал в конструктивных предложениях ученых МТИ, Массачусетского технологического института (там же и тогда же, что интересно, была придумана знаменитая криптосхема RSA для шифрования с открытым ключом. Несколько ранее и в глубочайшем секрете эту же схему изобрели математики британской спецслужбы GCHQ).

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

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

Помимо общих идей, нацеленных на реализацию весьма мелкого уровня грануляции песочниц, в CRASH применяют еще несколько специфических приемов. Например, один из конструктивных подходов к защите информации, разрабатываемых командой Питера Ноймана, носит название tagged architecture, или «архитектура меток». Суть здесь в том, что каждый блок данных, обрабатываемых в системе, должен содержать в себе метку целостности – зашифрованный код, который гарантирует, что блок по-прежнему тот же самый, которому система доверяет. Если же «документы» данных или программы не в порядке, то компьютер их обрабатывать не будет.

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

#Оптимистичный пессимизм

Для того чтобы возглавить столь масштабный проект — тотальное переосмысление компьютерной безопасности, более авторитетного и квалифицированного специалиста, чем Питер Нойман, не сыскать, наверное, во всей необъятной области компьютерных исследований. Свою деятельность на этом поприще Нойман, как студент-математик Гарварда, начал летом 1953 года — когда его наняли в качестве программиста калькулятора IBM, работавшего на основе колоды перфокарт.

Непосредственно на компьютерной безопасности работа Ноймана сконцентрирована уже более 40 лет, с момента перехода в 1970-м из Bell Labs в SRI International. Конечно же, ему совершенно не нравится тот путь, который давным-давно выбрала компьютерная индустрия, — в первую очередь гнаться за скорейшим выводом недоделанных продуктов на рынок, а проблемы защиты информации, как и все прочие «вторичные», решать потом, по мере обострения их серьезности.

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

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

Знаменитой эта уязвимость стала почти 25 лет тому назад, когда аспирант Корнеллского университета Роберт Теппен Моррис развлечения ради применил данную технологию для создания первого программного червя. Червь Морриса распространился по всему Интернету, который в ту пору состоял примерно из 50 тысяч машин, переполнил буферы памяти в туче компьютеров и фактически обрушил работу всей Сети. «Вредителя» нашли, завели дело и отдали под суд, но в итоге все же не посадили, а лишь оштрафовали, поскольку в содеянном не нашли злого умысла.

Для Питера Ноймана события этой истории были особо неприятными по многим причинам. В свое время, в Гарварде, он учился вместе с Робертом Моррисом-старшим, отцом Роберта Теппена Морриса. Впоследствии, в 1960-70-е, они дружили семьями, вместе работая в Bell Labs, где Моррис-старший был одним из создателей операционной системы Unix.

Но, помимо сугубо личных аспектов, добавлялся к переживаниям и серьезный технический момент. Дело в том, что к 1980-м годам, когда червь Морриса обрел свою дурную славу, о проблеме переполнения буфера специалисты не только прекрасно знали, но и давно нашли для нее эффективное решение — в большом исследовательском проекте под названием ОС Multics. Одним из руководителей этого проекта был Питер Нойман — в период с 1965 по 1969 год.

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

Уже в рамках проекта Multics удалось найти и реализовать множество эффективных решений, актуальных и на сегодняшний день. Однако в тот период большинство из них было просто проигнорировано индустрией — наступила эпоха массового доминирования мэйнфреймов IBM, а они работали под управлением совсем другой ОС.

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

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

Примечательные слова по этому поводу сказал недавно Ричард Кларк (Richard A. Clarke), в недавнем прошлом Национальный координатор нескольких госадминистраций США (в ранге министра) по вопросам безопасности, защите критических инфраструктур и контртерроризму. Расценивая инициативы Ноймана как принципиально важное для безопасности дело, Кларк сказал так: «По большому счету, все наши усилия, которые предпринимаются сегодня для защиты сетей, сводятся к тому, чтобы нескончаемо лепить заплатки и затыкать дырки пальцами. Однако фонтаны новых протечек тут же начинают бить где-то еще... На фундаментальном уровне наши сети не переделывались вот уже 45 лет. Конечно же, это будет стоить гигантских денег — перепроектировать все это хозяйство. Но давайте начнем. И посмотрим, не станет ли это работать действительно лучше. А дальше — пусть решает рынок...»

Прототип планшета CHERI на базе платы Terasic DE4 FPGA, работает под управлением укрепленной версии ОС FreeBSD. Компартментализация на основе архитектуры полномочий позволяет обеспечивать масштабируемую и мелкогранулированную защиту, ослабляя как известные, так и неизвестные уязвимости



Оригинал материала: https://3dnews.ru./640421