Ради интереса давайте представим, что система безопасности находится под вашим контролем: Кроме того, вы несете финансовую ответственность за ее функциональность: вы потеряете деньги, если идентификационная схема будет взломана. Вам предъявят иск в случае нарушения защиты и утечки информации частного характера и т. д. Вы уже оценили риск и решили, что нужно приобрести средства безопасности определенного типа. Как выбрать правильный продукт? Как оценить его возможности?
Проблема состоит в том, что плохие средства безопасности выглядят точно так же, как и хорошие. Я могу предложить два продукта – пару VPN (виртуальных частных сетей), например. Они имеют одинаковые возможности и одинаковые особенности. В них встречаются одинаковые модные словечки: тройной DES (стандарт шифрования данных), IPsec и т. д. Они в равной степени удовлетворяют требованиям безопасности. Каждая сеть безопасна и каждая может быть взломана. Обычный пользователь не имеет никакой возможности увидеть разницу. Специалист в области безопасности сумеет это сделать, но уйдет полгода работы на то, чтобы он составил свое мнение. Это просто не оправдывает затрат.
Я постоянно поражаюсь газетным статьям, которые сравнивают средства безопасности и выставляют им оценки. Недавно я видел одну публикацию о брандмауэрах. Авторы пытались сравнить их надежность: в лабораторных условиях устанавливали различные брандмауэры и подвергали их воздействию 300 атак. Все это интересно, но имеет лишь весьма отдаленное отношение к тому, насколько надежен будет брандмауэр в реальной конфигурации и насколько эффективно он будет противостоять реальным противникам. Все, о чем говорилось в статье, так это о том, может ли брандмауэр, установленный в лаборатории, выдержать определенную атаку, а не о том, способен ли он укрепить безопасность сети. Легко сравнивать функциональные особенности, исследовать аспекты безопасности намного труднее. Я видел даже более ужасающие статьи, в которых средства безопасности оценивались только на интерфейсе пользователя. По-видимому, авторы пытались «что-нибудь измерить», и интерфейс пользователя был единственной вещью, которую они могли наблюдать.
Но даже если они оценили уровень безопасности, будет ли эта оценка применима в том случае, когда вы используете продукт некоторым вполне определенным способом? Например, я не беспокоюсь, насколько надежной можно сделать отдельную операционную систему. Меня интересует, насколько она будет защищена 90% времени в реальных ситуациях. Я тревожусь о том, насколько на ее работу могут повлиять ошибки внешнего окружения. Или насколько защищена будет система, после того как ее установит обыкновенный системный администратор. Вот в чем вопрос.
Легче опознать откровенно плохие продукты. Продукты, сопровождаемые заведомо невыполнимыми обещаниями вроде: «гарантирована защита от взлома» или «неподдающееся взлому шифрование», конечно, почти всегда оказываются ненадежными. Продукты, сопровождаемые невероятными псевдонаучными заявлениями о новых ошеломляющих технологических прорывах (обычно это касается технологий шифрования), почти всегда смертельно опасны. Другие предупреждающие сигналы – это ссылки на загадочных «специалистов по безопасности», использование ключей нелепой длины, отказ от общепризнанного опыта без серьезного на то основания (в отношении безопасности выгоднее следовать в общем потоке) и проведение фантастических состязаний по безопасности. В этой книге я обращаю внимание на то, что действительно хорошо на практике обеспечения безопасности: использование известной и опубликованной криптографии, использование открытых протоколов, выявление недостатков различных технологий. Компании, демонстрирующие незнание этих принципов, не заслуживают доверия. Конечно, может оказаться, что продукт, имеющий некоторые из этих предупреждающих знаков, надежен, только это маловероятно. Помните – гениев всегда намного меньше, чем дураков.
Пока что все было легко. Но после того как вы определили, какие продукты производятся компаниями, очевидно, не имеющими понятия о том, чем они занимаются, все становится намного сложнее. Все остальные продукты в равной мере изобилуют модными словечками, и все они сопровождаются правильными рассуждениями. Одни из них старше других, но значит ли это, что они более надежны? Об уязвимых местах одних было больше публикаций. Говорит ли это, что они менее укреплены, потому что в них обнаружено множество недостатков и, вероятно, будет найдено еще больше, или наоборот, – что они более надежны, потому что большее количество ошибок уже было найдено и исправлено? Нет никакой возможности узнать это. Вот почему так много компаний по безопасности используют рекламные приемы, свойственные юристам, ведущим дела пострадавших от транспорта, сея страхи, неуверенность и сомнения.
Опустить руки и отказаться от принятия решения – это не выход из положения. Существуют продукты безопасности, и потребители вынуждены выбирать из того, что имеется. Глупо отказываться от установки брандмауэра только потому, что вы не знаете, какой лучше. Кто-то сказал: «Лучше сейчас иметь посредственные средства безопасности, чем не иметь никаких, надеясь найти самые совершенные».
Правда в том, что испытание средств безопасности может только выявить существующие изъяны, но не доказать их отсутствие. Верно также и то, что в отсутствии недостатков убедиться невозможно, здесь не помогут ни попытки доказать безопасность системы, ни формальные модели безопасности, ни детальные деревья атак. Мы возвращаемся назад к исходной позиции, где мы были, когда выбирали алгоритм шифрования или протокол. Лишь продолжительные испытания, в которых участвуют многие люди, позволят нам начать доверять продукту безопасности.
Единственное, что можно сделать, – это осуществить такой процесс, который обеспечивает безопасность в любом случае, независимо от возможных изъянов продукта. Мы вернемся к этому в главе 24.
Глава 23
Будущее программных продуктов
Напрашивается закономерный вопрос: «Какие технологии помогут созданию продуктов, обеспечивающих безопасность, в будущем?» Конечно, криптография постоянно улучшается. Несомненно, мы все лучше и лучше проектируем брандмауэры. Будет ли это помогать? Ответ: и да, и нет. «Да» – потому что отдельные технологии непрерывно совершенствуются. «Нет» – потому что фундаментальные проблемы остаются.
Технологии развиваются. Центральные процессоры стали намного быстрее работать, чем десять лет назад, что дает возможность применять шифрование почти повсеместно. Например, можно полностью зашифровать цифровую сотовую связь с помощью сильных алгоритмов без видимого замедления работы.
Технологии компьютерной и сетевой безопасности тоже совершенствуются. Сегодняшние брандмауэры намного эффективнее разработанных 10 лет назад. Системы обнаружения вторжения все еще находятся на ранней стадии развития, но и они постепенно улучшаются.
И это верно почти для каждой технологии, обсуждавшейся во части II книги. Технологии защиты от несанкционированного доступа становятся качественнее, то же можно сказать и о биометрических технологиях. Мы даже создали более эффективные механизмы защиты цифровых копий (несмотря на вскрытие DVD).
Но кое-что остается неизменным – основы технологий и люди, использующие их. Криптография всегда будет не больше, чем математика. Недостатки безопасности всегда будут присутствовать в программном обеспечении. Пользователи никогда не захотят запоминать длинные пароли. Люди будут всегда уязвимы для манипуляций.
Ситуация ухудшается. Системы становятся более сложными, и для компьютерных систем это означает нечто большее, чем аналогичные усовершенствования в любой другой области. Будущее цифровых систем – сложность, а сложность – главный враг безопасности. Безопасность не укрепляется, а становится более уязвимой.
Сложность программного обеспечения и безопасность
Цифровая технология представляет собой нескончаемый ряд новшеств, непредсказуемых последствий и неожиданностей, и нет никакой причины полагать, что это прекратится в обозримом будущем. Единственная вещь, которая остается неизменной, – это то, что цифровые системы постоянно усложняются.