Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Обучение от Mail.Ru Group.
Онлайн-университет
для программистов с
гарантией трудоустройства.
Набор открыт!
2010 г.

Пути к решению неразрешимой проблемы

Сергей Кузнецов

Обзор сентябрьского 2010 г. номера журнала Computer (IEEE Computer Society, V. 43, No 9, Сентябрь 2010).

Авторская редакция.
Также обзор опубликован в журнале "Открытые системы"

Темой сентябрьского номера журнала Computer является «проверенность программного обеспечения» (Software Assurance). Тематическая подборка включает четыре из шести больших статей номера. Приглашенным редактором является Энн Собель (Ann E.K. Sobel, Miami University). Энн не стала писать развернутую вводную заметку, а ограничилась одним абзацем на странице содержания номера (кроме того, последняя публикация тематической подборки содержит материалы взятого Энн интервью).

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

Первая статья тематической подборки написана Нэнси Мид и Джо Яжомбеком ( Nancy R. Mead, Software Engineering Institute, Carnegie Mellon University, Joe Jarzombek, Department of Homeland Security) и называется «Совершенствование проверенности программного обеспечения на основе государственно-частного сотрудничества» («Advancing Software Assurance with Public-Private Collaboration»).

В соответствии с определением Комитета США по национальным системам безопасности (US Committee National Security Systems), проверенность программного обеспечения (Software assurance, SwA) означает наличие определенного уровня доверия к тому, что в программном обеспечении отсутствуют уязвимости, как внесенные в него преднамеренно, так и появившиеся случайным образом в любой точке его жизненного цикла, и что программное обеспечение функционирует так, как и было задумано.

В Программе обеспечения проверенности программного обеспечения (Software Assurance Program) Отделения национальной кибербезопасности (National Cyber Security Division) Министерства внутренней безопасности (Department of Homeland Security, DHS) США предполагается обеспечение механизмов, позволяющих стандартизовать и автоматизировать задачи снижения уровня угроз компьютерной безопасности и выявления программного обеспечения, пригодного для поддержки кибербезопасности. Сообществу SwA предоставляется практическая инфраструктура для общественно-частного сотрудничества в целях повышения уровня доверия к программному обеспечения, его надежности и отказоустойчивости на протяжении всего жизненного цикла программного обеспечения (software development life cycle, SDLC).

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

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

Раньше федеральное правительство США и организации, ответственные за функционирование критической национальной инфраструктуры, сами разрабатывали требуемые программные и системные решения. Соответственно, требования к безопасности и проверенности программного обеспечения могли учитываться прямо в ходе SDLC. Однако по мере все более активного перехода правительства и организаций, отвечающих за критическую инфраструктуру, к использованию серийных коммерческих программных средств и заказной разработке крупных систем этот подход изменяется. Поскольку SwA должно обеспечиваться в ходе жизненного цикла разработки, а не за счет предоставления какого-то дополнительного патча в конце этого процесса, правительство должно отслеживать, как его контракторы удовлетворяют требования безопасности и проверенности программного обеспечения в течение SDLC.

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

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

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

Статью «Движение по направлению к проверенным системам: суть исследований и разработок» («Moving Toward Trustworthy Systems: R&D Essentials») представили Фредерик Шелдон и Клер Вишик (Frederick T. Sheldon, Oak Ridge National Laboratory, Claire Vishik, Intel).

В феврале 2010 г. бывший директор консорциума OpenNet Initiative Денис Блейр (Dennis Blair) информировал Конгресс США о том, что «злоумышленная киберактивность возрастает с невиданной скоростью», и констатировал, что усилия, предпринимаемые в США для защиты от кибератак, являются недостаточными. С тех пор Пентагон подвергся взрыву компьютерных атак, интенсивность которых в настоящее время составляет в среднем 5000 в день. В условиях постоянно возрастающих изощренности и частоты киберугроз критичной становится потребность в проверенном программном обеспечении, обеспечивающем масштабируемое доверие на всех уровнях – персональном, частном, правительственном и общегосударственном.

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

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

Авторы статьи преследуют цель проинформировать читателей о наиболее существенных результатах исследований и новых проектах, направленных на решение проблем кибербезопасности с новых междисциплинарных позиций. Это приведет к образованию новых направлений во многих областях, включая проверенность программного обеспечения. Проведенный анализ основывается на материалах недавних семинаров и совещаний, посвященных поиску новых подходов к обеспечению компьютерной безопасности. Более точно, авторы концентрируются на результатах 6-го Annual Cyber Security and Information Intelligence Research Workshop и Federal Cybersecurity R&D Themes Kickoff Event, организованного в рамках программы Network and Information Technology Research and Development (NITRD). Оба мероприятия посвящались поиску новых подходов к обеспечению кибербезопасности.

Автором статьи «Встраивание дисциплины ‘проверенность программного обеспечения’ в систему высшего образования» («Fitting Software Assurance into Higher Education») является Сэмуэль Редвайн (Samuel T. Redwine Jr., Sam Redwine Consulting).

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

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

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

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

Такие изменения не будут простыми. Потребуются время и готовность отказаться от старых подходов и воспользоваться учебниками, посвященными более актуальным вопросам безопасности и тестопригодности. В некоторых учебных заведениях, например, в Высшей школе военно-морских сил (Naval Postgraduate School) и Университете Джеймса Мэдисона (James Madison University) уже предпринимаются попытки включить в учебную программу вопросы проверенности программного обеспечения. Организационной реальностью является сопротивление прогрессу – отсутствие времени на написание новых учебников, опасение, что при включении в программу новых тем придется пожертвовать чем-то не менее важным, и, конечно, сопротивление любым организационным изменениям. Поэтому в статье не предлагается какой-либо общий способ реализации требуемых изменений (вероятно, в разных учебных заведениях потребуется применять разные подходы), а лишь описываются составные части дисциплины «проверенность программного обеспечения», которым следует посвятить разделы учебных программ.

Последний материал тематической подборки – «Безопасность программного обеспечения в реальном мире» («Software Security in the Real World») – представляет собой интервью, которое приглашенный редактор Энн Собель взяла у главного директора по технологиям компании Cigital Гэри Мак-Гроу (Gary McGraw).

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

В начале своего интервью Энн Собель отметила, что за относительно короткий промежуток времени Гэри Мак-Гроу внес большой вклад в область проверенности программного обеспечения, и спросила Мак-Гроу, какими своими достижениями он более всего гордится? Гэри ответил, что более всего гордится тем, над чем работает в настоящее время. Дисциплина «проверенность программного обеспечения» обрела значительную зрелость в последние 15 лет. За это время Мак-Гроу написал книги «Building Secure Software» (1999 г.) и «Software Security» (2006 г.). В последние годы вместе со своими коллегами он исследует актуальные проекты в области безопасности программного обеспечения и подготавливает отчеты о полученных результатах (Cigital – это консалтинговая компания в областях безопасности и качества программного обеспечения).

Исследуются реальные компании с реальными проектами, в которых участвуют сотни служащих, работающих в области безопасности программного обеспечения. На основе этих исследований была построена модель BSIMM (Building Security In Maturity Model – «Создание безопасности в зрелой модели»), которую можно бесплатно скачать с сайта http://bsimm2.com. BSIMM основана на изучении подходов к обеспечению безопасности программного обеспечения в 30 компаниях. Названия многих их этих компаний известны каждому. Некоторые из них концентрируются на безопасности программного обеспечения уже более десяти лет, и в течение последнего года Гэри изучал то, что они на самом деле делают.

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

В конце интервью Энн Собель спросила г-на Мак-Гроу, какой он ожидает увидеть область проверенности программного обеспечения в 2020-м году? Гэри ответил, что он плохой предсказатель. Если сейчас что-нибудь спрогнозировать, то через десять лет кто-нибудь это раскопает и вдоволь посмеется. Поэтому он предпочел перестраховаться и говорить весьма уклончиво.

В области безопасности программного обеспечения за последние 15 лет (в 1995 г. сам Мак-Гроу начал работать в этой области) достигнут большой прогресс. В то время имелось несколько хороших книг (например, книга Мори Гассер (Maury Gasser) по системной безопасности (Gasser, M. Building a Secure Computer System. Reinhold, 1988)) и статей (например, «Smashing the Stack for Fun and Profit» и «Checking for Race Conditions in File Accesses» Бишопа (Matt Bishop) и Дилгера (Michael Dilger)). Некоторые люди работали в области безопасности программного обеспечения, но она была просто крошечной. Было просто невозможно убедить людей, что этим нужно заниматься. Сегодня-то всем понятно, что безопасность программного обеспечения заслуживает самого пристального внимания, только не очень ясно, что же именно нужно делать.

Модели, подобные BSIMM, и известия о том, как китайцам удалось взломать Google, помогают людям понять масштабность этой проблемы, стоящей перед всеми нами, и виды рисков, которые загоняют нас в угол. Но Мак-Гроу считает, что мы достигли большого прогресса. И он не видит причин, которые могут остановить этот прогресс в ближайшие годы. Модели наподобие BSIMM, позволяющие измерить уровень безопасности, очень полезны. Словами лорда Кельвина (Lord Kelvin), «если вы не можете ничего измерить, вы не способны развивать науку».

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

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

Вне тематической подборки в сентябрьском номере Computer опубликованы две статьи. Вей Тан, Ян Фостер и Джиа Жанг (Wei Tan, Ian Foster, University of Chicago and Argonne National Laboratory, Jia Zhang, Northern Illinois University) представили статью «Сетевой анализ научных потоков работ: путь к повторному использованию» («Network Analysis of Scientific Workflows: A Gateway to Reuse»).

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

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

Разработчики программного обеспечения часто прибегают к повторному использованию компонентов для повышения производительности своего труда и достижения более высокого качества создаваемых программных продуктов. Аналогичным образом, многие средства поддержки разработки научных потоков работ (например, Taverna) позволяют ученым разрабатывать потоки работ с использованием доступных Web-сервисов, и специализированные репозитории помогают ученым находить эти сервисы. Например, в репозитории BioCatalogue каталогизировано более 1600 Web-сервисов, относящихся в области наук о жизни.

Авторы статьи проанализировали потоки работ, спецификации которых сохраняются в репозитории myExperiment. С использованием методов анализа социальных сетей им удалось ответить на два важных вопроса: и в чем состоят паттерны использования Web-сервисов в современных научных потоках работ и как можно извлечь эти знания, чтобы облегчить повторное использование? На основе результатов этого исследования авторы предлагают новую среду CASE (Collection, Annotation, Search, rEcommendation), поддерживающую повторное использование научных потоков работ.


Среда CASE для поддержки повторного использования потоков работ

Последняя большая статья сентябрьского номера называется «Влияние систематических ошибок опущенных переменных на оценку качества оптимизации программ» («The Effect of Omitted-Variable Bias on the Evaluation of Compiler Optimizations») и написана Тоддом Митковичем, Амером Диваном, Матиасом Хаусвиртом и Питером Суини (Todd Mytkowicz, Amer Diwan, University of Colorado at Boulder, Matthias Hauswirth, University of Lugano, Switzerland, Peter F. Sweeney, IBM T.J. Watson Research Center).

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

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

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

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

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

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

Целью авторов является как демонстрация важности учета размера среды и порядка связывания программы при оценке качества оптимизаторов, так и привлечение внимания компьютерного сообщества к наличию проблемы OVB в целом.

Новости мира IT:

Архив новостей

Последние комментарии:

Релиз ядра Linux 4.14  (9)
Среда 22.11, 19:04
Loading

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 985 1945361
Пресс-релизы — pr@citforum.ru
Обратная связь
Информация для авторов
Rambler's Top100 TopList liveinternet.ru: показано число просмотров за 24 часа, посетителей за 24 часа и за сегодня This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2015 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...