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

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

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

  • механизмы контроля качества;
  • криптографические примитивы;
  • вспомогательные аппаратные средства;
  • механизмы разграничения.

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

Контроль качества

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

Компетентные сотрудники компании-потребителя должны убедиться в том, что процесс контроля качества у поставщика заслуживает доверия. Институт программной инженерии университета Карнеги-Меллона (Software Engineering Institute, SEI) создал пятиуровневую модель для оценки зрелости процесса разработки (Capability Maturity Model, CMM; www.sei.cmu.edu/cmm/cmm.html), причем претензии поставщиков на пятый уровень SEI CMM налагают на них большую ответственность. А предложенные Уотсом Хамфри методы Team Software Process и Personal Software Process (www.sei.cmu.edu/tsp) дают внушительную статистику сокращения числа ошибок на тысячу строк кода. Держитесь подальше от поставщиков, сулящих производство качественного программного обеспечения на базе доморощенных программ контроля качества: их обещания стоят меньше, чем воздух, которым они надуты. Требуйте аттестации контроля качества, которая должна проводиться независимыми организациями.

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

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

Криптографические примитивы

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

В первую очередь, избегайте частных решений и используйте только известные, тщательно проверенные процессы и протоколы. Инструментарий американского Национального института стандартов и технологий (National Institute of Standards and Technology, NIST) представляет собой набор криптографических примитивов. В него входят усовершенствованный стандарт шифрования AES (Advanced Encryption Standard) с соответствующими режимами работы, алгоритм защищенного хэширования SHA-1 (Secure Hash Algorithm), алгоритм цифровой подписи DSA (Digital Signature Algorithm) и комплекты для шифрования по методу эллиптической кривой. Вскоре комплект будет включать в себя и протоколы управления ключами (csrc.nist.gov/CryptoToolkit).

Для финансового сектора Американский национальный институт стандартов (American National Standards Institute, ANSI) предлагает набор стандартов шифрования, разработанных Аккредитованным комитетом стандартов X9 (Accredited Standards Committee X9, ASC). Даже если процессы или протоколы хорошо известны, используйте только те из них, которые утверждены авторитетными органами стандартизации. Участники неформальной сессии на конференции Crypto 2004 (www.iacr.org/conferences/crypto2004) взломали фактически все известные алгоритмы хэширования, кроме SHA-1, но даже в нем недавно обнаружена уязвимость. Это лишний раз доказывает, что применение хорошо изученных, широко известных, официально утвержденных криптографических примитивов повышает уровень вашей безопасности.

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

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

Вспомогательные аппаратные средства

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

«Инкапсуляция» жизненно важных функций в оборудование и организация взаимодействия компонентов позволяют радикально повысить уровень безопасности. Более подробную информацию можно найти в литературе, например в трудах конференций Cryptographic Hardware and Embedded Systems (islab.oregonstate.edu/ches/). Сегодня многие поставщики признают, что должным образом разработанные аппаратные компоненты могут сыграть важную роль в организации защиты. Например, некоммерческая организация Trusted Computing Group (www.trustedcomputinggroup.org) объединяет поставщиков, реализующих аппаратную поддержку разнообразных функций поддержки безопасности.

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

Механизмы разграничения

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

Если вы устанавливаете механизм разграничения на общей платформе, всегда остаются «тайные каналы» для угроз (см. www.fas.org/irp/nsa/rainbow/tg030.htm). Академическая наука изучает их с 70-х годов, но поставщики современных продуктов для обеспечения безопасности не обращают особого внимания на эту проблему. Почему? Да потому, что злоумышленники добиваются успеха, эксплуатируя более очевидные «прорехи», являющиеся следствием плохого контроля над качеством продуктов для организации защиты. Когда качество последних значительно улучшится, поставщики станут уделять больше внимания «тайным каналам», использовать которые для злоумышленников не сложнее, чем «пролезать» в нынешние «дыры».

Как бы то ни было, есть надежда получить надежную защиту от сегодняшних и завтрашних атак. Специалисты занимаются созданием разграничивающих ядер (separation kernel), которые позволят ИТ-системам разграничивать память и разделять информационные потоки приложений. Например, разработки компании Green Hills Software, связанные с разграничивающим ядром защиты полетов (www.afei.org/brochure/ 4af3/presentations/mark__Van_Fleet.pdf), можно распространить на структуры ядер, на которых основаны коммерческие операционные системы (www.ghs.com/news/20041129_INTEGRITY_PC.html). Если такое случится, «тайные каналы» к памяти будут устранены, а временные «каналы» сократятся на несколько порядков. Мощные механизмы разграничения не только позволят продуктам для обеспечения безопасности лучше работать сегодня, но и перекроют некоторые из завтрашних путей для атаки.

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

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

Брайан Сноу (bdsnow@nsa.gov) — технический директор объединенного управления по образованию и обучению Агентства национальной безопасности США.


Brian Snow, Four Ways to Improve Security, IEEE Security & Privacy, May/June 2005. IEEE Computer Society, 2005, All rights reserved. Reprinted with permission.