До сих пор мы изучали проблему по частям. Мы рассмотрели основные существующие угрозы. Мы познакомились с разными видами атак и типами злоумышленников. Мы многое узнали о различных технологиях и о том, каким образом они противодействуют (или почему не могут противодействовать) нападениям. Пришло время собрать это все вместе и попытаться решить некоторые проблемы безопасности.
Руководителей можно разделить на три категории в зависимости от их подхода к вопросам безопасности. Первая категория считает: «В этой области дела обстоят слишком плохо». Эта точка зрения, согласно которой системы безопасности настолько ненадежны, что просто невозможно вести учет товаров с помощью карманных компьютеров (PDA), осуществлять банковские платежи через Интернет или участвовать в лотерее с помощью сотового телефона. Вторая категория придерживается позиции «Я куплю себе безопасность». Согласно этой точке зрения, безопасность – всего лишь отметка об оплате в товарном чеке, и если вы приобрели брандмауэр, то защита вам обеспечена. Обе категории придерживаются крайних взглядов, и любая из этих позиций отражает упрощенческий взгляд на вещи. Третья категория рассуждает еще более странно: «Мы слишком незначительны, чтобы нас атаковали». Эта позиция более чем упрощенческая.
Мы хотим предложить нечто лучшее. Дела можно вести безопасно в цифровом мире так же, как можно их вести в мире реальном. На первый взгляд лучший способ обеспечить безопасность состоит в использовании как можно большего количества средств защиты: повесить больше замков на двери, везде использовать шифрование, брандмауэры, системы обнаружения вторжения, инфраструктуру открытого ключа в компьютерных сетях. К сожалению, все далеко не так просто. Во-первых, финансирование системы безопасности ограничено. Во-вторых, нагромождение различных средств защиты – не лучший путь к достижению цели.
Задача состоит в том, чтобы понять, как работает целостная система и как в нее вписываются средства защиты. Бесполезно рассматривать только отдельные технологии.
Безопасность – это цепь; ее прочность определяется прочностью самого слабого ее звена. Если вы решили осуществить зашифрованное телефонное соединение, вы должны побеспокоиться об алгоритме шифрования голосовой связи, о механизме обмена ключами, который позволит участникам диалога понимать друг друга, о процессе создания ключа, о безопасности программного обеспечения на телефонной станции, о физической безопасности аппаратов и т. д. Изъян в любом из этих звеньев сведет на нет все усилия.
То же самое относится к компьютерным системам. Если у вас есть сеть с брандмауэром, вы должны подумать о безопасности самого брандмауэра. Если ваша сеть снабжена брандмауэром и VPN, необходимо, чтобы были защищены оба этих устройства. Уязвимое место в одном из них может привести к тому, что вся сеть окажется в нерабочем состоянии.
Безопасность – это процесс, а не продукт. В этой части мы будем обсуждать процессы, связанные с безопасностью: атаки, способы защиты и взаимоотношения между ними. Мы поговорим о том, как осуществляются реальные нападения, и о том, как сконструировать систему, способную противостоять таким нападениям. Мы также поговорим о текущем состоянии средств безопасности, об их будущем и о том, что необходимо для их эффективной работы.
В первой части мы теоретически рассматривали атаки: какие существуют виды нападений и нападающих. Но, как я каждый раз не устаю повторять, теория отличается от практики. Каждый, кто читает детективные романы или криминальную хронику в газетах, знает, что для осуществления нападения необходимо намного больше, чем просто найти уязвимое место. Можно считать, что нападающий с успехом использовал слабую точку, если ему удалось определить цель, спланировать атаку, сделать свое дело и скрыться. Недостатки в замке сейфа, находящегося в безопасном месте, менее существенны, чем аналогичные недостатки в банковском уличном ящике для депозитов.
То же самое и в цифровом мире. Потенциальному преступнику недостаточно найти изъян в алгоритме шифрования, использующемся в системе кредитных карт. Он должен получить доступ к соединению, он должен обладать достаточными знаниями о протоколах, чтобы создать поддельное сообщение, которое позволит ему на самом деле украсть деньги, и в конце концов он должен успеть убраться вовремя. Обнаружение изъяна в шифровании в отрыве от всех остальных шагов представляет только теоретическую ценность.
Подобно этому, существует великое множество мер противодействия, которые могут помочь «заткнуть дыру». В сейфе можно повесить более надежный замок или установить сигнализацию на окнах и дверях помещения, в котором сейф находится, и поставить у дверей охрану. Недостатки в шифровании могут быть исправлены, если использовать лучший алгоритм шифрования. Они не будут представлять опасности, если держать протоколы в секрете, использовать частную сеть для сообщений или просто менять ключи каждые пять минут.
В общем случае успешную атаку можно разбить на пять последовательных шагов:
1. Опознать цель, которая должна подвергнуться нападению, и собрать о ней информацию.
2. Проанализировать информацию и найти уязвимую точку в цели, которая позволит добраться до объектов, на которые направлена атака.
3. Получить необходимый уровень доступа к цели.
4. Осуществить нападение на цель.
5. Завершить атаку, что может включать в себя уничтожение всяких следов атаки, и скрыться от возмездия.
То есть, другими словами, необходимо определить, что атаковать и как атаковать, проникнуть внутрь, провести атаку и убраться вовремя. Первые два шага – это исследование. Вы в силах выполнить их в полной безопасности в собственной лаборатории; вы даже можете использовать для этого муляжи настоящей цели. Если вы ученый, скорее всего, вы остановитесь после второго шага и опубликуете полученные материалы. Последующие три шага связаны с риском, который неизбежен при взломе и проникновении в систему как виртуальную, так и реальную. Тут уж как повезет: либо успел скрыться вовремя, либо поймали.
Помните Звездные войны? Для того чтобы взорвать Звезду Смерти, повстанцы сначала должны были получить информацию, которую принцесса Лейа поместила в R2-D2. Это была единственная причина, по которой Люк должен был в первую очередь вызволить дроидов с Татуина. Спасение принцессы было в Мак-Гаффине. Это был первый шаг.
Шаг второй остался за кадром. Инженер восставших изучил информацию, полученную от дроидов и нашел слабое место в обороне их станции – проектировщики системы жизнеобеспечения никогда не предполагали, что их детище будут внимательно изучать профессионалы в области безопасности, и вот результат: Звезда Смерти, создание которой обошлось в десятки миллиардов «кредитов», может быть уничтожена через вентиляционную шахту.
Шаг третий продемонстрировал спецэффекты ближнего боя в ограниченном пространстве между крестокрылыми бойцами повстанцев (их экипировка приводит зрителей в восхищение) и защитниками станции. Задача крестокрылых состояла в прикрытии нескольких истребителей, которые получали возможность свободно перемещаться по всему пространству и простреливать насквозь вентиляционную шахту. Доступ к цели был достигнут совместными усилиями.
Молодой мастер Люк смог завершить четвертый шаг после того, как Хан Соло оторвался от Дарта Вейдера, севшего ему «на хвост», и вкрадчивый голос Алека Гинеса внушил Люку мысль отключить компьютер, который являлся целью (возможно, работающий с бета-версией), и использовать Силу.
Взрыв Звезды Смерти (шаг 5) исключил всякую возможность возмездия, по крайней мере на некоторое время. После этого было нетрудно убраться восвояси. Наши герои получили медали от альянса повстанцев, чье материальное положение улучшилось настолько, что они смогли позволить себе заказать новую форму, и Вселенная была спасена на несколько следующих серий. Список можно продолжить.
Только что описанный пример мало отличается от атаки через Интернет, нацеленной на компьютеры какой-либо компании. На первом шаге происходит выбор цели и сбор информации. Осуществить это на удивление легко. На веб-сайте обычно можно найти любую информацию: от сведений о том, что содержат различные базы данных Интернета, до способов работы с ними в режиме сетевого подключения. Специальный номеронабиратель поможет установить коммутируемое соединение. Существует множество техник, которыми нападающий может воспользоваться для того, чтобы узнать, как работает сеть, в которой находится его цель: изучение результатов работы специальных программ, используемых для проверки доступности адресата, служебных сообщений, состояния портов и т. д. Сетевой модуль проверки текущего состояния способен выдать еще больше информации. Это чаще всего похоже на вышибание двери, хотя компьютер сам готов выдать совершенно посторонним людям массу информации о том, какое аппаратное обеспечение в нем используется, какие работают программы и какие службы они поддерживают. Все эти сведения могут с успехом использоваться нападающим.
Второй шаг – это нахождение уязвимого места. На этом этапе атакующий внимательно изучает всю собранную информацию, для того чтобы выбрать точку атаки. Вероятно, на одном из компьютеров установлена определенная версия почтовой программы, операционная система или Solaris, или Windows NT, которые содержат известные ошибки. Возможно, удастся использовать FTP или регистрационное имя, или что-нибудь еще. Часть оборудования, обеспечивающего поддержку порта, через который лежит путь к цели, может оказаться незащищенной. Не исключено, что нападающий в силах использовать телефонную сеть объекта, на который направлена атака. Чем больше уязвимых мест в различных частях системы известно атакующему, тем лучше он сможет спланировать нападение.
Шаг третий – получение некоторого вида доступа к компьютеру. В Интернете это тривиально, так как любой компьютер подключен к Сети и таким образом доступен. (Конечно, некоторые компьютеры находятся за брандмауэром и недоступны, но тогда брандмауэр, по всей видимости, доступен.)
Четвертый шаг – проведение атаки. Это может оказаться сложным делом, а может, наоборот, пустяковым. Если нападающий хорошо подготовлен, все проходит удивительно легко.
Заметим, что некоторые атаки включают в себя множество итераций. Нападающий может выполнить шаги с первого по четвертый неоднократно: проникновение на веб-сервер, получение необходимого уровня доступа, использование этого доступа для проникновения на другой сервер, расположенный внутри общей территории, защищенной брандмауэром, получение к нему доступа и т. д. На каждом шаге происходит сбор информации, определение цели и методов ее достижения, получение доступа и выполнение операции.
Пятый шаг – завершение атаки. Если нападающий искал какой-то определенный файл, он получает к нему доступ, делает что ему было нужно и исчезает. В его власти стереть записи в контрольном журнале и таким образом уничтожить все следы. Он также способен модифицировать системные файлы, чтобы было легче получить доступ в следующий раз. И стоит ему почувствовать опасность, быстро завершает начатое и скрывается. И исчезает мгновенно. Хождение вокруг да около характерно для любителей.
В руководстве по взлому «FAQ and Guide to Cracking» Микстера описаны те же самые шаги. Вот что он говорит о том, что нужно сделать в первую очередь после того, как вы получили корневой доступ (получение прав корневого пользователя на копьютере-цели выполняется на шаге 4):
1. Поэтапно удалить следы получения несанкционированного корневого доступа.
2. Собрать основную информацию о системе.
3. Удостовериться, что вы сможете выбраться оттуда.
4. Разрушить или обновить уязвимый домен.
Он особенно подчеркивает необходимость отключения контроля и уничтожения записей в контрольном журнале и получения информации о том, как часто система подвергается проверкам и как часто проводится анализ информации, хранящейся в контрольном журнале.
Хакерские инструменты позволяют автоматизировать множество процессов. Они действуют далеко не так эффективно, как виртуозный хакер, но они способны превратить несмышленого подростка в опасного противника.
Другой пример: атака против платежной системы, использующей смарт-карты. Первый шаг состоит в том, чтобы собрать всю информацию о платежной системе, которая может пригодиться: особенности ее построения, общедоступную документацию, сведения об используемых алгоритмах и протоколах и т. д. Возможно, вам удастся раздобыть массу информации, если вы знаете, где ее искать.
Шаг второй – изучить документацию, отыскивая слабое звено. Во второй части этой книги говорилось обо всех видах уязвимых мест, которые могут существовать в подобных системах. Уязвимыми могут быть алгоритмы и протоколы шифрования. Возможно, уязвимая точка скрывается в самой смарт-карте, из-за того, что система сопротивления вторжению не действует как предполагалось. Может быть, существует изъян в способах их использования – если его удастся обнаружить, это поможет достичь цели. Вам нужно найти все уязвимые точки, для того чтобы успешно атаковать систему.
На третьем шаге необходимо получить уровень доступа, необходимый для проведения атаки. Вы должны стать зарегистрированным пользователем этой платежной системы (возможно, под вымышленным именем). Вероятно, вам придется украсть чью-либо карту. Может быть, вам необходимо будет вступить в сговор с продавцом, который принимает смарт-карты в качестве платежного средства. Получение доступа – не всегда легкое мероприятие.
Четвертый шаг – выполнение атаки: размножить смарт-карту и использовать ее дубликаты, изменять содержимое памяти смарт-карты и пользоваться этим при совершении покупок, изменять баланс и требовать оплаты наличными – все, что вам удастся осуществить. Для выполнения последнего пункта вам недостаточно взломать систему смарт-карт, вы должны перевести все добытое с помощью взлома в наличные деньги.
Шаг пятый – заметание следов. Возможно, вы захотите ликвидировать все физические доказательства вашего нападения. Если оборудование, которым вы пользовались для осуществления атаки, находилось у вас дома, вы его уберете оттуда. Если доказательства вашего нападения остались в компьютерных файлах, вы их удалите. Может быть, вам удастся взломать компьютеры платежной системы и уничтожить записи, представляющие для вас опасность. Все что угодно, лишь бы замести следы.
В некоторых атаках присутствуют не все описанные этапы. Нападения ради огласки часто не включают в себя шаги 2, 3 или 5. Приведем в качестве примера атаку против алгоритма шифрования, использующегося в цифровых сотовых телефонах. Шаг 1 – получение информации об алгоритмах шифрования, применяющихся в сотовых телефонах. Шаги 2 и 3 пропускаются. (Цель известна и весь доступ, который вам нужен, – это описания алгоритмов.) Шаг 4 – выполнение криптографического анализа и сообщение об этом средствам массовой информации. Шаг 5 не выполняется – вы ничего не делали нелегально. Такая атака потенциально успешна против любого алгоритма шифрования данных для цифровой сотовой связи.
В этой книге я на многих примерах постарался показать, что безопасность – это цепь, и надежность системы определяется прочностью самого слабого ее звена. Уязвимые точки как раз и представляют собой такие слабые звенья. Нахождение слабых мест в системе – это только первый шаг к их использованию. Не менее важно получить доступ к обнаруженной уязвимости, суметь реально использовать ее для совершения определенных действий и затем благополучно скрыться – без этого не бывает успешных нападений.
Меры противодействия существуют для того, чтобы защитить уязвимые точки. Они могут быть простыми, наподобие постройки стены вокруг города, чтобы вражеская армия не смогла в него проникнуть, или сложными, такими как создание надежной системы проверки для обнаружения попыток мошенничества среди продавцов кредитных карт и установления личности преступников.
Обычно меры противодействия применимы для разрушения атаки на любом из пяти этапов ее проведения.
Большая часть обсуждавшихся во второй части технических мер противодействия применяется в компьютерах и компьютерных сетях. Я пытался обрисовать ситуацию в целом: как работают различные средства и методы или почему они не работают, каким образом они соотносятся друг с другом и т. д. Ни одна технология в области безопасности не должна рассматриваться как панацея: результат достигается, когда каждая из них используется эффективно.
Надежность системы всегда определяется ее самым слабым звеном, и это, вообще говоря, заставляет нас обратиться к рассмотрению отдельных технологий. В умело построенной системе эти технологии не лежат на поверхности, в конечном счете безопасность системы определяется их взаимодействием. Криптографические методы могут быть разрушены с помощью лобовой атаки или криптоанализа алгоритма. Можно также воспользоваться невнимательностью сотрудника и раздобыть пароль. Но замок на двери помещения, в котором находится компьютер, или хорошо сконфигурированный брандмауэр обеспечит защиту на другом уровне.
Помните начало В поисках утраченной радуги (Raiders of the Lost Arc)? Индиана Джонс должен был пройти через пауков, ловушки с шипами, ямы, отравленные стрелы, внезапно вылетающие, если наступишь не на тот камень, и саморазрушающееся устройство, срабатывающее при движении статуи. Это многоуровневая защита. Он преодолел ловушку с шипами, не затронув пусковой механизм, но он еще должен был увернуться от надвигающейся стены, остановить механизм и сделать массу других вещей. Самый легкий способ избежать ловушки определяет ее эффективность.
Так же как нападение на систему представляет собой нечто более сложное, чем просто нахождение уязвимых мест, защита системы более сложна, чем выбор мер противодействия. Эффективная система таких мер покоится на трех составляющих:
• защита;
• обнаружение;
• реагирование.
В офисе военной организации служебные документы хранятся в сейфе. Сейф обеспечивает защиту от возможного проникновения, но той же цели служит сигнализация и охрана. Предположим, что нападающий – посторонний человек: он не работает в офисе. Если он попытается украсть документы из сейфа, он должен не только взломать сейф, ему нужно еще отключить сигнализацию и суметь пройти мимо охраны. Сейф с замком – это меры защиты, сигнализация – способ обнаружения вторжения, охрана обеспечивает реагирование.
Если охрана обходит офис через каждые пятнадцать минут, то сейф должен противостоять атакующему в течение пятнадцати минут. Если сейф находится в офисе, персонал которого присутствует только в рабочие часы, он обязан обладать способностью выдержать атаку в течение шестнадцати часов: от пяти часов пополудни до девяти утра следующего дня (и намного дольше, если офис закрыт в выходные дни). Если сейф снабжен сигнализацией, и как только кто-нибудь дотронется до него, сразу прибудет охрана, тогда он должен выдерживать атаку только в течение того времени, которое потребуется ей, чтобы добраться до места происшествия и принять меры.
Все сказанное означает, что надежность сейфа основывается на механизмах обнаружения и реагирования на месте. И сейфы классифицируются по этому признаку. Одному сейфу может быть присвоена классификация TL-15: это означает, что он способен противостоять профессиональному взломщику с инструментами в течение 15 минут. Другой сейф может быть отнесен к разряду TRTL-60, что будет означать, что ему по плечу сопротивляться такому же взломщику, да еще вооруженному паяльной лампой с подачей кислорода, 60 минут. Это оценки чистого времени атаки: время идет, только когда сейф подвергается нападению, – время, затраченное на планирование и подготовку, не учитывается. И тесты проводятся профессионалами, имеющими доступ к чертежам сейфа: нельзя рассчитывать на недостаток информации у нападающего. (Много общего с криптографическими атаками, не правда ли?)
Меры защиты, обнаружения и реагирования работают совместно. Сильный механизм защиты подразумевает, что вы не нуждаетесь в столь же действенных механизмах обнаружения и реагирования.
Классификация сейфов демонстрирует это ясно. Какой сейф вы купите: рассчитанный на 15 минут, на 30 минут, на 24 часа? Это будет зависеть от того, в течение какого времени сработает сигнализация (обнаружение) и прибудет охрана, чтобы арестовать взломщиков (реагирование). В отсутствие систем обнаружения и реагирования в действительности все равно, какой сейф вы выберете.
Большинство мер компьютерной безопасности носят профилактический характер: криптография, брандмауэры, пароли. Некоторые можно отнести к механизму обнаружения, как системы обнаружения вторжения. Реже встречаются механизмы реагирования: например, система ввода регистрационного имени и пароля, которая блокируется после трех неудачных попыток – хотя механизмы обнаружения бесполезны без механизмов реагирования. Представьте себе систему обнаружения вторжения, которая только регистрирует атаку. Она подаст сигнал системному администратору, может быть, пошлет сообщение по электронной почте на его пейджер. Если администратор не отвечает в течение нескольких часов – допустим, он обедает, – тогда не имеет значения, что нападение было обнаружено. Не было предпринято никаких мер, чтобы решить проблему.
Обычная охранная сигнализация также является средством обнаружения. Когда она срабатывает, дальнейшее развитие событий зависит от того, есть ли кому реагировать на нее. Если взломщик знает, что на сигнал тревоги никто не обратит внимания, это то же самое, как если бы сигнализации не было вовсе.
Иногда невозможно использовать механизмы обнаружения и реагирования. Представьте себе обычное прослушивание: Алиса и Боб общаются с помощью незащищенной связи, а Ева их подслушивает. Ни Алиса, ни Боб не могут обнаружить прослушивание и, соответственно, у них нет возможности как-то отреагировать на него. Средство защиты – шифрование – должно обеспечить достаточно безопасную связь, чтобы прослушивание дало результаты, представляющие интерес для Евы.
Сравним только что приведенный пример с шифрованием кодов доступа для системы кредитных карт. Предположим, что заполучить эти коды можно только взломав систему. Если на всех автоматах установлена сигнализация (обнаружение) и коды доступа могут быть изменены в течение 15 секунд (реагирование), то алгоритм шифрования не обязательно должен быть очень надежным. Возможно, существует множество путей для того, чтобы получить эти коды, не вызвав при этом сигнал тревоги. Если коды меняются раз в неделю и это изменение никоим образом не связано с механизмом обнаружения (то есть автоматическое реагирование не предусмотрено), то алгоритм шифрования должен обеспечить защиту кодов в течение недели.
Неразумно надеяться только на защитные механизмы, и прежде всего потому, что часто одна атака может следовать за другой. Использование исключительно защитных механизмов обеспечит безопасность только в том случае, если технологии, лежащие в их основе, совершенны. Если бы наличествовала идеальная система защиты смарт-карт от вторжения, не было бы необходимости в обнаружении и реагировании. Система защиты смарт-карт, существующая в реальном мире, время от времени дает сбои; поэтому хорошо сконструированная система защиты обязана включать в себя механизмы обнаружения и реагирования на случай ее провала. Одна из основных идей этой книги состоит в том, что не существует совершенной технологии. Обнаружение и реагирование, таким образом, весьма существенны.
Представим себе компьютерную сеть. Если брандмауэры, операционные системы, пакеты серверного программного обеспечения абсолютно защищены, тогда нет необходимости в системах сигнализации. Никто не в силах проникнуть внутрь, так что незачем поднимать тревогу. В реальном мире не существует продуктов, у которых нет уязвимых точек. Всегда можно найти способ взломать брандмауэр, разрушить операционную систему, атаковать программное обеспечение сервера. Единственное, что спасет положение в отсутствие совершенных защитных барьеров, это применение контрмер обнаружения и реагирования, чтобы получить вовремя сигнал, если система будет взломана, и иметь возможность противодействовать.
В реальных системах множество уязвимых точек, и существует много различных способов провести атаку. Если террорист хочет взорвать самолет, он может протащить на борт бомбу, сбить его с помощью ракеты или захватить самолет и направить его на ближайшую гору. Хакер, желающий проникнуть в корпоративную сеть, может атаковать брандмауэр, веб-сервер, использовать модемное подключение и т. д.
Системы, действующие в реальном мире, обладают множеством различных возможностей для противодействия атаке. Оборудование авиалиний включает в себя детекторы металла, химические анализаторы и рентгеновские аппараты, позволяющие обнаружить бомбу, и системы, отыскивающие «ничейные» вещи, так что можно быть уверенным, что бесхозный пакет не взлетит вместе с самолетом, в то время как его хозяин остался на земле. (Эта система противодействия предполагает, что немногие террористы захотят взрывать себя вместе с самолетом, а большинство предпочтут спокойно разгуливать по земле, когда самолет будет взорван.) Военные самолеты имеют также системы противоракетной обороны. Корпоративные сети содержат брандмауэры, системы обнаружения вторжения, используют процедуры периодического обновления паролей или шифрования файлов на сервере.
И все это удивительно легко может стать бесполезным.
Я использую термин ландшафт уязвимых точек, чтобы изобразить обманчивый и сложный мир атак и мер противодействия. Использованная метафора допускает расширение списка описываемых атак – выстрелы из ружья в банковского кассира, шантаж программиста с целью заставить его включить троянского коня в кусок программного кода, проникновение через стену банка, обработка невнимательного сотрудника для того, чтобы получить пароль, – и контрмеры: пуленепробиваемое стекло, защищающее кассира; проверка всего персонала; камеры наблюдения снаружи здания; биометрический контроль. Различные куски ландшафта связаны с различными типами атак. Компьютерные атаки представляют собой, несомненно, только малую часть ландшафта.
Каждая система имеет свой собственный ландшафт уязвимых мест, хотя многие черты для различных систем схожи. (Каждая компьютеризированная система подвержена угрозе отключения питания. И почти каждая система использует угрозу ареста в качестве контрмеры.) Ландшафт уязвимых точек очень неровен, его составляют пики и долины различной высоты и глубины. Чем выше пик, тем эффективнее соответствующая мера отпора: вершина «используйте пароли» невысоко поднята над землей, а «выключите компьютер и утопите его в вонючем болоте», конечно, намного выше. Долины, с другой стороны, представляют собой узкие места: это возможности потенциальных противников атаковать вашу систему. Чем ниже долина, тем серьезнее изъян.
Уязвимая точка еще не означает выигрыш. Выигрыш – это то, о чем мы говорили в главе 3: выигрыш вора, которому удалось украсть деньги, выигрыш нечестного торговца, присвоившего чужую собственность, выигрыш озабоченного студента, заработавшего дурную славу. Уязвимые места могут быть использованы атакующими, чтобы добиться цели. Цель – украсть деньги; незащищенный кассовый аппарат – уязвимая точка. Испортить чью-либо репутацию – это цель; незашифрованные файлы на его жестком диске – уязвимая точка. Некоторые уязвимые точки бесполезны для достижения именно данной цели. В анонимных группах новостей целью атакующего может быть, например, установление личности корреспондентов. Нехватка идентифицирующей информации не сослужит ему хорошую службу. Если группа новостей построена по принципу платной подписки, у нападающего может быть иная цель – пользоваться ею бесплатно. В таком случае уязвимость системы идентификации будет ему на руку.
Ландшафт уязвимости можно представить различными способами. Я выделяю в нем четыре обширные области: физический мир, мир виртуальный, доверенности и жизненный цикл системы. Они связаны друг с другом. Противник способен действовать на уровне физического мира: взломать дверь и ворваться, забросать бомбами, отнять жизнь и т. д. С помощью Интернета тот же противник может напасть в виртуальном мире: отключить компьютеры и телефонную связь, взломать полицейские компьютеры и поместить ложное объявление о розыске всех членов совета директоров и т. п. Нападения на физические инфраструктуры из виртуального мира могут проводиться на расстоянии, мгновенно и без предупреждения. Они часто оказываются гораздо опаснее нападений на физическом уровне.
Проблему физической безопасности человечество пыталось решать во все времена: как только возникло понятие собственности. Стены, замки и вооруженная охрана – вот средства физической безопасности. Уязвимыми местами являются, например, не снабженная сигнализацией стеклянная крыша, дремлющая по ночам охрана и замки, которые можно открыть фомкой. Долгое время учреждения имели дело со всеми этими проблемами, и большинство из них научились использовать меры физической безопасности, соответствующие реальной угрозе. Они более или менее представляют своих противников и то, какие контрмеры являются достаточными для защиты их имущества.
Разработчики систем безопасности в цифровом мире часто забывают о физической безопасности. Постоянно похищаются портативные компьютеры, в которых хранятся секреты. За один особенно неудачный месяц 2000 года MI5 и MI6 (британские разведывательные службы) лишились портативных компьютеров с секретными сведениями. Возможно, воры не интересовались этой информацией или она была зашифрована, однако никто этого не знает точно. (Британские вооруженные силы, судя по всему, имеют множество проблем с сохранностью портативных компьютеров. В 1991 году компьютер, содержавший секретные указания в связи с Войной в Заливе, был похищен из автомобиля, принадлежавшего Королевским Военно-Воздушным силам. После того как были организованы широко освещавшиеся полицейские мероприятия по розыску преступника, компьютер был возвращен с посланием: «Я – вор, а не изменник».) Удивительно много компьютеров крадут в аэропортах организованные шайки воров при прохождении пассажирами детекторов металла.
Меры физического противодействия часто используются совместно, так чтобы они усиливали друг друга, и обычно это бывает более эффективно, чем использование любой из них по отдельности. Охрана обходит прилегающую к запертому зданию территорию, огороженную забором. Банки используют охрану, сигнализацию, видеонаблюдение и сейфы, снабженные замками, срабатывающими в назначенное время.
Когда эти меры предпринимаются в совокупности, ни одна из них не должна обязательно обеспечивать полную защиту от нападения. Требования, предъявляемые к каждому из средств защиты, зависят от того, какие другие меры безопасности задействованы. Дверного замка стоимостью в 5 долларов может быть вполне достаточно при наличии забора и охраны внутри. А замок стоимостью в 50 долларов окажется бесполезен, если поблизости оставлено открытым окно. Отравленные стрелы будут излишни, если на пути злоумышленника установлены вращающиеся стальные лезвия.
Против угроз в виртуальном мире также были разработаны контрмеры. Установка брандмауэра аналогична возведению стен и запиранию дверей. Системы идентификации выполняют функции охраны и напоминают проверку пропусков. Шифрование позволяет создать в киберпространстве «секретную комнату» для конфиденциальных переговоров или электронный сейф для хранения информации.
Хорошая система защиты также использует несколько различных мер безопасности: брандмауэр защищает систему от проникновения посторонних, строгая идентификация дает уверенность в том, что лишь правомочное лицо может войти в нее, а дополнительные гарантии дает шифрование данных при сквозной передаче[49].
Доверенность определяет, кому и как собственник доверяет распоряжаться своим имуществом или его частью. Например, поступающий на работу должен представить достоверную анкету, представленные им рекомендации должны быть проверены, а его прошлое не должно быть омрачено криминальными эпизодами. Если его приняли, то ему выдается служебное удостоверение с фотографией и свидетельство о праве на парковку. Различным группам людей предоставляется право входить в определенные помещения, открывать доступные им файлы или посещать некоторые собрания. Только определенные особы могут подписывать чеки, заключать контракты или проводить финансовые операции. При чрезвычайных обстоятельствах дополнительная гарантия безопасности обеспечивается отстранением от обязанностей: например, лицо, обладающее правом подписывать чеки, оказывается лишенным доступа к компьютеру, создающему подписи. Доверенность предполагает сложную структуру отношений. Некто может обладать правом изменять записи базы данных, но не инженерные спецификации. Другой человек будет, наоборот, иметь право изменять эти спецификации, но не иметь доступа к персональным данным.
В реальном мире не составляет труда определить, кто облечен доверием, а кто нет. Вы знаете, как это выглядит. Если иностранец заходит в офис и достает мелкие деньги, это уже вызывает подозрение. До тех пор пока организация настолько мала, что все лично знают друг друга, атака, связанная с физическим проникновением, практически нереальна. Любая другая организация должна обезопасить себя от шпионов: служащие должны отслеживать появление незнакомцев и при этом не думать ни о чем постороннем (в противном случае люди будут уязвимы для угроз, взяточничества, подкупа, шантажа, обмана и других отвратительных проявлений).
В виртуальном мире проблема гораздо сложнее – нужно обеспечить тот же уровень доверия между людьми без физического присутствия заинтересованного лица, имеющего возможность всегда изменить ситуацию. Например, в физическом мире злоумышленник, который хочет притвориться доверенным членом сообщества, рискует, что его могут найти и арестовать. В виртуальном мире шпион, который проник внутрь системы, представляясь доверенным лицом, гораздо меньше рискует быть обнаруженным и пойманным.
В целях промышленного шпионажа можно, например, подключиться к телефонной линии своего конкурента. Затем необходимо рассчитать, как и когда следует провести эту атаку. Оборудование офиса уязвимо в течение всего жизненного цикла: при его проектировании, при сборке, при установке и после того, как оно размещено там, где должно находиться. В зависимости от необходимого уровня доступа нападающий может изменить его свойства на любом из этих этапов. В некоторой точке жизненного цикла советские шпионы поставили «жучки» на пишущие машинки в посольстве Соединенных Штатов. Когда они их поставили? На фабрике в США, во время транспортировки в посольство или во время установки? Мы не знаем точно, но каждая возможность могла быть реализована. И в зависимости от того, насколько серьезной проверке подвергались машинки, «жучки» могли или не могли быть обнаружены.
Точно так же, преступник, который хочет украсть деньги из игрового автомата, имеет выбор: он может, воспользовавшись случаем, внести нужные изменения в схему при установке или взломать автомат, когда тот уже находится в казино. Каждый из этих видов атак имеет свои характерные особенности – сложность, вероятность достижения успеха, рентабельность – но все они допустимы.
Оборудование, использующееся в виртуальном мире – программное обеспечение, работающее на компьютерах, включенных в сеть. Нападающий может его атаковать в любой точке на протяжении всего жизненного цикла. Злонамеренные разработчики программного обеспечения в состоянии сознательно оставить «черный ход» в последней версии операционной системы. Злоумышленник способен поместить троянского коня в наиболее популярный браузер и распространять эту программу бесплатно через Интернет. Он может написать вирус, который будет атаковать программное обеспечение при открытии исполняемого файла во вложении сообщения электронной почты. В его силах проанализировать программное обеспечение, использовать все существующие уязвимые точки. Возможности здесь не ограничены.
Ландшафт уязвимых точек предоставляет широчайшее поле деятельности для различных видов возможных атак, и поэтому имеет смысл при разработке мер противодействия исходить именно из ландшафта. Идея состоит в том, чтобы защититься от наиболее вероятных угроз, вместо того чтобы защищаться от угроз наиболее явных, игнорируя все остальные.
Не менее важно разумное вложение средств в применяемые меры противодействия. Не имеет смысла тратить кучу денег на самый лучший замок на входной двери, если злоумышленник способен проникнуть через окно. Нерационально тратить 100 долларов на пуленепробиваемое стекло, чтобы защитить имущество, оцениваемое в 10 долларов. Можно сказать, что, например, применять сложные методы шифрования для кабельного телевидения – это то же самое, что «повесить замок на сумку из бумаги».
Ценность чего-либо всегда определяется в зависимости от окружающих условий. До того как стали применяться жесткие диски, подростки иногда воровали в офисах дискеты… поскольку они могли представлять ценность. Некоторые компании потеряли таким образом довольно важные данные. А с другой стороны, маловероятно, что украдут кредитную карточку общей стоимостью около 100 долларов, у которой 0,25 доллара на депозите. Тщательный анализ стоимости очень важен при разработке рациональных мер противодействия телефонному мошенничеству и созданию пиратских копий программного обеспечения.
Следует помнить, что возможный противник далеко не всегда преследует цель обогащения. Иначе как тогда объяснить поведение хакера, который тратит сотни часов на то, чтобы взломать бесполезную компьютерную систему? Многие нападающие стремятся к огласке, или хотят отомстить, или имеют иные, нематериальные цели; помните об этом, когда анализируете ценности.
Также полезно иметь в виду, что блокирования любого из четырех первых шагов атаки достаточно, чтобы ее пресечь. Простые меры противодействия, такие как обучение персонала, грамотная политика безопасности, процедуры, связанные с контролем доступа, являются разумными и рентабельными средствами, позволяющими снизить риск, создаваемый ландшафтом уязвимых точек. Эти простые мероприятия могут значительно повысить сложность и рискованность действий, необходимых для осуществления успешной атаки.
Следующие несколько глав будут посвящены моделированию угроз, оценкам риска и определению необходимых мер противодействия.
Моделирование угроз – это первый шаг в решении проблемы безопасности. Это попытка осмыслить информацию, которую можно извлечь из ландшафта уязвимых мест. Что может оказаться реальной угрозой для системы? Если вы не знаете этого, как вы можете определить, какие меры противодействия нужно использовать?
Моделирование угроз – трудное дело, и успех в нем приходит только с опытом. Для его осуществления необходимо использовать системный подход и хорошо представлять себе все особенности ландшафта. Как лучше провести нападение на систему? Я нахожу, что истинные хакеры весьма искусны в решении этого вопроса, и может быть, компьютеры их привлекают в первую очередь именно возможностями интеллектуальной игры. Хакеры получают удовольствие, размышляя о недостатках систем: как можно их одолеть, почему это возможно и что при этом будет происходить? Они испытывают наслаждение, заставляя систему делать то, для чего она не была предназначена. Те же чувства испытывает умелец, способный переделать двигатель своего автомобиля, чтобы он работал так, как ему хочется, а не так, как предполагал его производитель. Такое же удовольствие получает хакер, взламывающий брандмауэр через Интернет, чтобы убедиться в том, что он способен «овладеть» чужим компьютером.
Я пришел к выводу, что наилучшими экспертами в области безопасности являются люди, исследующие несовершенства защитных мер. Они идут на избирательный участок, размышляя о том, как можно было бы в обход установленного контроля проголосовать дважды. Когда они пользуются телефонной карточкой, они думают о средствах защиты от мошенников и о том, как можно их обойти. Эти размышления вовсе не обязательно подталкивают их к конкретным действиям, и если они обнаруживают, например, появившееся «слепое пятно» в системе видеонаблюдения в магазине, это не означает, что они тут же предпримут попытку кражи.
Моделирование угроз имеет с описанной ситуацией много общего, и единственный способ изучить проблему – это практика. Начнем с кражи блинов.
Наша цель – поесть бесплатно в местном ресторанчике. Для этого у нас есть много возможностей. Можно поесть и убежать. Можно расплатиться подложной кредитной картой, фальшивыми чеком или наличными. Можно выманить посетителя из ресторана и съесть его блюдо. Можно прикинуться (а то и стать на самом деле) поваром, официантом, управляющим или хозяином (которого видели всего лишь несколько работников). Можно стащить тарелку с чужого столика или из устройства для подогрева, опередив официанта. Можно подождать у мусорного бака, когда вынесут выбрасывать объедки. Можно включить пожарную сигнализацию и вволю попировать в полном одиночестве. Можно представиться управляющему некоей знаменитостью, могущей рассчитывать на бесплатный завтрак, или найти доверчивого клиента, которого можно уговорить заплатить за нас. Можно ограбить кого-нибудь поблизости от ресторана и расплатиться за еду. Можно подделать талон на бесплатное обслуживание. А кроме того, есть освященная веками традиция – ворваться с ружьем и прокричать: «Гоните сюда все ваши блины!».
Вероятно, существует множество других возможностей, но у нас уже есть общее представление. Взглянув на приведенный перечень, не так трудно понять, что большинству нападающих ничего не нужно делать в тот момент, когда деньги переходят из рук в руки. Это любопытно, поскольку означает, что безопасность системы платежей не защищает от кражи блинов.
Подобная ситуация складывается и в цифровом мире. Представим себе хранилище блинов в Веб – большинству нападающих не придется иметь дело с системой электронных платежей. Существует множество других уязвимых мест. (Вспомните изящное нападение через веб-страницу на корзину для покупок, описанное в главе 10, когда нападающий мог изменять цены товаров произвольным образом. Здесь кроется возможность для подобного нападения: можно изменить прейскурант таким образом, что блин будет стоить 0,00 долларов.) Наиболее успешные нападения редко проводятся на физическом уровне.
Перейдем к более значительным и интересным проблемам. Займемся проведением выборов. Это будут местные выборы – мэра города. Жульничество на выборах старо, как сами выборы. Насколько это трудно?
Предположим, имеется дюжина избирательных округов, в каждом из которых есть свой избирательный участок. На каждом участке присутствуют по три члена избирательной комиссии, которые следят за правильностью голосования. Избиратели получают у них бюллетени, которые потом опускают в урну. В конце дня все бюллетени пересчитываются специальной машиной. Избирательные комиссии всех двенадцати участков сообщают по телефону о результатах голосования в центральную комиссию, где подводятся окончательные их итоги, после чего один из претендентов объявляет о своей победе под дождем конфетти и под громкие звуки оркестра.
Эта система имеет множество уязвимых мест. Можно воздействовать на избирателей, на членов комиссии, можно подобраться к урнам для голосования и счетным машинам, можно дать ложное сообщение по телефону или воздействовать непосредственно на центральную комиссию. Давайте рассмотрим каждый вариант в отдельности.
Подкуп избирателей – освященный временем способ проведения выборов. Эта практика теряется во тьме веков и не имеет места лишь в странах третьего мира. Во время выборов 1996 года в городе Додж Кантри, Джорджия, насчитывающем 17 000 жителей, 21 человек был уличен в различных махинациях при голосовании, в том числе в подкупе избирателей. В большинстве штатов (включая Джорджию) закон запрещает платить избирателям, поэтому политики вынуждены прибегать к другим ухищрениям: они обещают снижение налогов, организацию общественных работ, лоббирование законопроектов и благосклонность Белого Дома. Это эффективный способ, хотя и дорогостоящий.
И на него не стоит полагаться. Использование закрытых кабин для голосования делает невозможным прямой подкуп избирателей. Можно заплатить по 100 долларов каждому из них, чтобы они проголосовали за нужного кандидата, однако войдя в кабину для голосования, они могут отдать свой голос кому пожелают. (Снижение налогов в этом отношении эффективнее, особенно если речь идет о находящемся в должности претенденте: избиратели думают, что, голосуя за него, они добьются еще больших поблажек.) Есть старая история про чикагского политика, скупавшего голоса. Его подручные пачкали черной краской рычаги для голосования[50], соответствовавшие его имени, и получали возможность убедиться в том, что избиратели голосовали именно за него.
Эти виды мошенничества используются также и в том случае, когда применяется преимущественно голосование по почте. В Силиконовой долине от трети до половины всех бюллетеней направляется в избирательную комиссию по почте. В Аризоне даже проводился эксперимент по голосованию через Интернет на предварительных выборах Демократической партии 2000 года. В этом случае опасность состоит в том, что некто может отправиться в бедные кварталы города и скупить целый пакет чистых бюллетеней по 10 долларов за каждый (в Аризоне использовались идентификационные номера (PIN), которые также можно «скупить») – и обитатели этих кварталов будут довольны.
Правящая партия Сингапура нарушает тайну выборов своеобразным способом: территории, на которых проводится голосование, имеют крошечные размеры – вплоть до одного многоквартирного дома. Проконтролировать, как проголосовал отдельный избиратель, невозможно, однако власти откровенно лишают государственного финансирования те районы, жители которых голосуют за оппозицию. Это – вид массового подкупа избирателей.
Предположим, подкуп избирателей нам не по средствам, а кроме того, нас беспокоит, что кто-нибудь может разоблачить в газете наши махинации. А что, если взять избирателя на испуг? Фокус, проделанный мексиканской Институциональной революционной партией, состоял в том, что в отдаленных районах урны для голосования, непроницаемые для любопытных взглядов, устанавливали под деревом, в ветвях которого скрывался головорез, следивший за тем, чтобы избиратели голосовали «правильно».
Можно попытаться одурачить избирательную комиссию. Например, нанять группу артистов, которые будут изображать законных избирателей. Можно сделать так, чтобы некоторые избиратели проголосовали не один раз. Это все действенные методы, но существует защита от них. В Соединенных Штатах члены избирательной комиссии имеют списки законных избирателей, с которыми они сверяются при голосовании и делают соответствующие пометки. На первых общих (нерасовых) выборах в Южной Африке в 1994 году избирателям на руку наносили клеймо несмываемыми чернилами, чтобы лишить их возможности проголосовать дважды. На первых в постсоветский период выборах в Латвии (1990 год) проверяли удостоверения личности, в которых делали отметки о голосовании. Во время выборов 1999 года в Индонезии избирателей заставляли окунать пальцы в чернила. (Предполагалось, что чернила будут держаться все три дня, отведенные для голосования, однако некоторые обнаружили, что краситель смывается.)
Можно направить свои усилия непосредственно на членов избирательной комиссии. Если иметь их своими союзниками, нетрудно добиться потрясающих результатов. Можно внести в списки избирателей кого угодно – в начале двадцатого века многие умершие жители Чикаго регулярно участвовали в выборах – или просто подделать результаты голосования. Во время президентских выборов 1960 года чикагские демократы под руководством мэра Ричарда Дейли, жуткого типа, вовсю мошенничали, манипулируя голосами избирателей в пользу Кеннеди, и в результате Никсон эти выборы проиграл. (Когда республиканцы потребовали провести пересчет голосов в этом штате, демократы в свою очередь потребовали пересчета голосов в других штатах, и, в конце концов, обе стороны сдались.) Подобные вещи имеют место по сей день: на выборах 1996 года в Сенат в штате Иллинойс организация Демократической партии была обвинена в подкупе избирателей, а именно в том, что избиратели голосовали по несколько раз и даже имели место манипуляции с машинами для голосования.
Несмотря на широко распространенную коррупцию в избирательных комиссиях, мошенничество на выборах становится все более трудным делом. Можно попытаться подкупить членов избирательных комиссий, чтобы они закрывали глаза на некоторые вещи, но беда в том, что на каждом участке их трое. Или подкупить одного из них, но нет никакой гарантии в том, что двое других будут столь же сговорчивы. Расходы в этом случае даже превышают те, что связаны с подкупом избирателей, а вероятность того, что средства массовой информации будут поставлены на ноги, гораздо больше.
Что вы скажете насчет урн для голосования? Можно наполнить их фальшивыми бюллетенями, в этом и состоит основная идея мошенничества. Однако важно не перестараться так, чтобы проголосовали, скажем, 130 процентов избирателей. И нужно быть уверенным, что никто ничего не заметит: в некоторых странах третьего мира используют прозрачные избирательные урны, чтобы предотвратить подобные махинации.
Атаковать машину для подсчета голосов еще проще. Это компьютеризированное устройство, и если вредоносная программа сделает так, что не будут учтены голоса за одного из кандидатов, скорее всего этого никто не заметит. Можно попытаться внедрить троянского коня в программный код во время его написания (предполагается, что машина не просто механически подсчитывает голоса, а для этой цели имеется специальная программа). Или же улучить момент, когда никто не работает с машиной, и ввести вредоносный код. Можно одурачить избирательную комиссию, изобразив дело как установку новой версии программы. Существует масса возможностей для такого рода мошенничеств.
Можно намеренно внести опечатки в избирательные бюллетени или сдвинуть рамку на доли дюйма таким образом, что иногда машина не будет учитывать голоса, поданные за оппозицию, и этого никто не заметит. Еще способ: привести машину в негодность; тогда избирательная комиссия будет вынуждена подсчитывать голоса вручную. И тогда подкупленный член комиссии может попытаться сфальсифицировать результат. На президентских выборах в Мексике в 1988 году компьютер «отказал» как раз в тот момент, когда лидировал один из претендентов на президентское кресло. Когда он снова заработал, оказалось, что победил действующий президент… и после этого избирательные бюллетени были быстренько сожжены. Я не хочу бросать тень на мексиканскую избирательную систему, но все это выглядит очень подозрительно.
Центральная избирательная комиссия – наименее подходящее для мошенничества место, так как она у всех на виду. Возможно, злоумышленнику удастся представить неверные сведения по районам, но один из членов избирательной комиссии может это обнаружить. Телефонные переговоры между окружными пунктами и центральным офисом – может быть, этот элемент системы ему удастся использовать в своих целях.
Итак, что же предпочесть? Кажется, наиболее верный путь к успеху – склонить большинство членов избирательной комиссии к тому, чтобы они действовали согласно нашим указаниям. В их власти прибавить и убавить голоса, подменить избирательные урны во время транспортировки; у них есть еще масса других возможностей. Тогда у нас будет доступ к машине для подсчета голосов, в наших силах привести для голосования мнимых избирателей или подбросить в урны фальшивые бюллетени. Вывод, однако, таков: все это осуществить достаточно сложно. Если люди, входящие в состав избирательной комиссии, не зависят полностью от одного из кандидатов – такая ситуация часто встречается в странах третьего мира, но редко в Соединенных Штатах, – сделать это практически невозможно.
Цель этого мысленного эксперимента – показать, что существует множество путей одолеть избирательную систему, и лишь в незначительной степени это имеет отношение к компьютерным системам. Можно взломать программу или вызвать отказ в обслуживании и тем самым вынудить членов избирательной комиссии вернуться к старой, гораздо менее надежной системе подсчета голосов. Но в конечном счете результаты выборов близки к истине. Если люди в избирательной комиссии заслуживают доверия, выборы, скорее всего, «чистые». Если они не заслуживают доверия, существует такое великое множество способов повлиять на исход голосования, что не стоит даже задумываться, какой из них наиболее предпочтителен.
Интернет вносит свои поправки в эту запутанную схему, и опасность значительно возрастает. Все старые способы мошенничества остаются в силе, но появляется масса новых возможностей: атаки против компьютеров в избирательных участках, атаки через сеть, атаки против компьютеров избирателей (которые в любом случае ненадежны). И нападения, приводящие к отказу в обслуживании, которые не могли бы быть проведены против централизованной системы. Что еще хуже, современная избирательная система не дает шансов исправить ситуацию в случае успешного нападения. В 2000 году в Аризоне на предварительных выборах было разрешено голосование через Интернет. Если бы возникли проблемы или подозрения, что проблемы существуют, что бы стали делать в Аризоне? Отменять выборы и переносить их на неделю? По этой причине ни один специалист по выборам не посоветует пользоваться услугами Интернета для голосования.
Это должно быть просто. Организация – правительство, корпорация, группа защитников прав человека – нуждается в том, чтобы обезопасить от прослушивания свои телефонные переговоры. Решение, естественно, состоит в том, чтобы использовать шифрование. Но откуда следует ждать угрозы?
Противником может являться фирма-конкурент или правительство, некто, кто обладает необходимыми ресурсами и доступом, чтобы провести сложную атаку. Чтобы решить проблему, организация строит или покупает телефонную линию, в которой используется шифрование.
Как атаковать эту систему? Для этого необходимо взломать код, но предположим, что это нам не под силу.
Можно попытаться сделать так, чтобы телефоны работали неправильно. В системе существует много параметров: можно ослабить алгоритм шифрования, можно внести путаницу в систему генерации ключа, можно настроить телефон так, что он будет делать незашифрованные звонки, или можно использовать скрытый канал для того, чтобы выудить информацию о ключе, анализируя цепь передачи звуковых сигналов (когда эта операция была проведена открыто, она получила название «Клиппер»). Все эти нападения осуществимы во время создания оборудования, во время транспортировки или во время эксплуатации. Такие атаки можно провести, проникнув ночью на фабрику, подкупив того, кто там работает, или просто поменяв некоторые скрытые установки в момент запуска оборудования.
Это может показаться нереальным, но если вы обладаете ресурсами государственной разведывательной организации, все это – совершенно разумные методы проведения атаки. Швейцарская компания Crypto AG поставляла шифровальное оборудование правительствам многих стран третьего мира. В 1994 году один из ее руководителей был арестован в Иране за установку негодного криптографического оборудования. Когда спустя несколько лет он вышел из тюрьмы, он опубликовал материалы о том, что их компания годами вносила изменения в свою продукцию по заказу разведки США. В пятидесятые годы компания Xerox продавала в Россию копировальные устройства, в которых была спрятана небольшая фотокамера, тот, кто производил ремонт этих устройств, должен был всего-навсего периодически заменять в ней пленку.
«Советы» были не менее коварны: в Москве они установили жучки в американском посольстве во все оборудование, включая пишущие машинки IBM Selectric. Британские компании, занимающиеся шифрованием, славятся тем, что поставляют иностранным правительствам продукт, в котором предусмотрены специальные возможности для овладения чужими секретами. Даже если бы об этом не шла молва, наверняка аргентинское правительство подумало дважды, прежде чем использовать шифровальные устройства английского производства во время войны за Фолклендские острова.
Есть бездна возможностей для прослушивания, которые невозможно предотвратить за счет мер безопасности, применяемых в телефонной связи: можно установить жучок в самом защищенном телефоне (или просто в комнате, где стоят эти телефоны), подкупить людей, делающих или принимающих звонки, и т. д. И не приходится рассчитывать на то, что подобные проблемы удастся разрешить с помощью технических средств.
Одним из лучших методов нападения является просто выведение телефона из строя. Это легче сделать владельцу телефонной системы: например, когда телефоном пользуется правозащитная организация в проблемной стране третьего мира или когда международная корпорация пытается связаться со своим филиалом в развитой стране, славящейся промышленным шпионажем. Чтобы подслушать чужие разговоры, достаточно вызвать сбои в работе защищенного телефона. Скорее всего, собеседники продолжат общаться по обычному телефону и скажут все, что собирались сказать.
Защита электронной почты – несколько более интересная тема. В главе 12 я вкратце изложил принципы работы безопасных почтовых программ. С помощью криптографии можно достичь двух вещей: создать цифровую подпись для идентификации и обеспечить тайну переписки. (История такого средства защиты, как конверт, весьма любопытна. Вавилоняне запекали свои таблички в глиняные «конверты». Бумажные конверты впервые стали использовать китайцы – зачастую с восковыми печатями, дававшими дополнительные гарантии, – и такие конверты завоевали Европу, где они приобрели особенную популярность благодаря стараниям Людовика XIV.)
В любом случае существует уйма способов нападения на почтовую систему. Взять хотя бы криптографию: работают ли алгоритмы и протоколы так, как предполагали их разработчики? Или реализацию: нет ли в программном обеспечении таких ошибок, которые можно использовать? Здесь существуют все те «черные ходы», которые используются против безопасных телефонов: нельзя ли изменить программу на стадии разработки и усовершенствования или когда она уже находится в распоряжении пользователя? А что можно сказать о паролях, вводимых пользователями, чтобы прочесть зашифрованную корреспонденцию или подписаться под посланием? Почтовые программы проходят сертификацию, это делается для того, чтобы обосновать использование открытого ключа, но в главе 15 мы уже обсуждали возможные уязвимые места в модели безопасности системы сертификации. И нельзя забывать обо всех других уязвимых точках, которые не имеют отношения к системе электронной почты: можно подглядеть и прочитать чужое письмо перед его отправкой или по получении, сделать копию распечатки – все это не зависит от того, каким механизмом депонирования ключей государство (или компания) имеет глупость вынуждать пользоваться.
Использование шифрованной корреспонденции сопряжено с большим риском, чем в случае шифрования телефонных переговоров, когда опасность утечки информации существует только во время звонка. Поскольку корреспонденция может некоторое время храниться обеими сторонами, такая опасность остается всегда. Кроме того, нападающий способен взломать операционную систему используемого для переписки компьютера, а для телефонных переговоров применяется специальное оборудование, к которому намного труднее подобраться. Противник в силах с минимальным риском провести нападение на расстоянии и завладеть всей интересующей его информацией, а не одним только письмом. Наконец, нападение может быть автоматизировано так, чтобы оно было направлено сразу на многие различные цели или просто дожидалось своего часа. К обсуждению этого примера мы вернемся в главе 21.
Следующий, более сложный пример: электронная система платежей, основанная на использовании смарт-карты, на которой ведется баланс средств. (Их часто называют «электронным бумажником» – stored-value cards.) Некоторые такие карты уже опробованы на практике: система Mondex (а также MasterCard), VisaCash (испытана во время летних Олимпийских игр 1996 года в Атланте), Banksys's Proton. Мы рассмотрим некую абстрактную карту, не вникая в детали этих систем. Назовем нашу гипотетическую систему Plasticash.
Основная идея Plasticash состоит в том, чтобы использовать ее в денежных расчетах. Специальные терминалы станут неотъемлемой частью деловой жизни: они появятся в банках, в магазинах, будут присоединены к компьютерам, подключенным к Интернету. Когда покупатель захочет купить что-либо (или, в более общем смысле, просто перевести деньги кому-нибудь), они с продавцом вставят свои карты Plasticash в устройство чтения и записи и переведут деньги. (У продавцов, возможно, будут специальные карты, постоянно находящиеся в считывающем устройстве.) В банке или с помощью банкоматов можно будет как пополнить средства, находящиеся на карте, так и перевести их с карты на банковский счет. Обратите внимание: двум картам не обязательно находиться рядом друг с другом, достаточно соединить их по телефону или с помощью модема.
Такие карты обладают тем преимуществом, что они не обязательно должны работать в режиме онлайн, то есть находиться на связи с каким-либо центральным сервером где бы то ни было. (При использовании обычных платежных карточек торговый автомат обязан связаться с банковским компьютером в режиме реального времени.) Их недостаток состоит в том, что утрата или повреждение карты означают потерю денег.
Plasticash, как и всякая другая система электронных платежей, должна будет иметь полный набор средств защиты и использовать криптографию, меры компьютерной безопасности, средства защиты от подделки, возможности контроля и что угодно еще. Она будет обеспечивать необходимый уровень целостности данных, конфиденциальности, анонимности и т. д. Мы не будем вдаваться в подробности. Давайте рассмотрим варианты нападений на подобную систему в принципе.
В функционировании системы Plasticash участвуют три стороны: клиент, продавец и банк. Поэтому существуют три схемы взаимодействия между участниками расчетов:
• Банк – клиент. Клиент снимает деньги на свою карту.
• Клиент – продавец. Клиент переводит деньги со своей карты на карту продавца.
• Банк – продавец. Продавец вносит полученные деньги на свой банковский счет.
В первой части этой книги рассказывается о преступлениях, которые, возможно, будут совершаться и в сфере Plasticash: это кража денег, ложное обвинение, нарушение тайны частной жизни, вандализм и террор, а также разглашение сведений. Система Plasticash должна предусматривать меры противодействия использованию ее для подготовки других преступлений, таких как отмывание денег. Приготовления к преступлению трудно определить точно, представления об этом могут меняться при каждом пересечении границы государства и даже после каждых новых выборов. Также неясно, насколько законы и обычаи различных стран способны противоречить друг другу. Например, на международной арене принятые в США требования к финансовой отчетности могут восприниматься как нарушение швейцарских законов, охраняющих тайну банковской деятельности.
Когда мы говорим о мошенничестве со стороны банков, мы не обязательно имеем в виду, что речь идет о банковской «империи зла». Такие преступления могут совершаться отдельными мошенниками, работающими в заслуживающем уважения банке. Вообще, мы чаще имеем дело с мошенничеством клиентов и продавцов (отдельных мошенников, принятых на эту работу), поскольку теоретически банки в силах позволить себе лучшие механизмы и меры безопасности, а возможные потери в связи с ущербом репутации от нападений на банковские системы очень велики.
Итак, первый вид преступлений – это кража. Существует несколько способов похитить деньги с Plasticash. Ими могут воспользоваться как клиенты, так и продавцы:
• Взломать карту, чтобы прибавить себе денег. Это также можно осуществить несколькими способами, наиболее очевидный путь – добраться до устройства, регистрирующего находящуюся на карте сумму.
• Можно таким же образом увеличить или уменьшить размер платы за покупку.
• Можно научиться создавать или имитировать новые карты и изготовить фальшивые Plasticash, которые будут функционировать, как настоящие. Фальшивая карта не обязательно даже должна быть похожа на оригинальную: мошенник может пользоваться ею только при покупках в Интернете или переводить деньги с фальшивой карты на настоящую, с которой и будет производить платежи.
• Можно научиться клонировать карты. Мошеннику понадобится завладеть на время настоящей картой, чтобы сделать клон, после чего ее можно будет вернуть владельцу. (Успешные преступления такого рода уже совершались с канадскими банковскими карточками, и в 1999 году некоторые из мошенников были арестованы. Жулик-продавец ухитрялся в считанные секунды клонировать карту, использовавшуюся покупателем для расчетов.)
Вот способы мошенничества, используемые клиентами:
• Отрицать сделанные покупки. Это старый прием, состоящий в том, чтобы приобрести что-либо дорогостоящее, заявить о краже карточки и опротестовать произведенные платежи. Есть новый вариант этого метода – прикинуться дураком в свое оправдание, заявляя, например, следующее: «Visa виновата в том, что я потерял все свои деньги в азартных играх онлайн; это произошло не по моей вине». Такое мошенничество проводится на законном административном уровне. С чем бы мы ни имели дело – с чеками, кредитными картами, дорожными чеками и чем угодно еще, – всегда найдутся люди, не желающие платить по счетам и утверждающие, что они не расходовали этих денег.
• Можно договориться с кем-нибудь о том, что он заявит о похищении своей карты, и получить ее дубликат. Такого рода жульничества также распространены во многих сферах и не ограничиваются системой Plasticash.
Виды мошенничества, доступные лишь продавцам:
• Принять платеж и отказаться передать покупку. Защита карты не будет препятствием для такого обмана, предотвратить его можно лишь с помощью административных мер и установленных законом процедур.
• Получить доступ к карте покупателя и произвести серию несомненно действительных переводов на свой банковский счет. Это очевидный способ мошенничества. Преступник попытается перевести деньги и затем быстренько снять их со счета.
• Повторить перевод денег. Продавец может каким-либо способом сделать так, что покупатель заплатит двойную цену.
Наконец, мошенничества, доступные банкам:
• Отказаться перевести в Plasticash сумму, которую внес клиент. Противодействовать этому можно только с помощью административных мер и регистрации банковских операций: клиент сумеет доказать незаинтересованной третьей стороне, что его обманули, если будет правильно организовано ведение записей.
• Прикарманить деньги, переведенные клиентом с Plasticash для занесения на его счет. Иначе как административными методами противодействовать этому нельзя.
Все эти мошенничества могут совершаться также в сговоре двух (или трех) сторон. Трудно представить какой-либо другой вид надувательства, которое могут совершить вместе покупатель с продавцом, но в зависимости от степени защищенности системы вероятны такие виды преступлений, которые будут успешны, если они действуют сообща, и обречены на провал при попытке осуществить их в одиночку. Кроме того, нетрудно представить себе преступления, совершаемые людьми, прикидывающимися обслуживающими терминал лицами или телефонистами.
Второй вид преступлений представляет собой ложное обвинение (клевету или шантаж). Их способны совершить как покупатель, так и продавец:
• Покупатель может заявить, что у продавца недействительная карта Plasticash (или неправильно функционирует терминал). То же самое может заявить и продавец относительно карты покупателя. Это мошенничество следует пресекать административными мерами.
Также вероятен шантаж со стороны банка:
• Можно подделать карту клиента (или продавца) и выдвинуть против него ложное обвинение. Весьма правдоподобно, что если банк выпускает карты, то для него не проблема и подделывать их. Приятно ли будет клиенту узнать, что в его карте числятся расходы на проституток?
Третий вид преступлений – это нарушение тайны частной жизни. Это происходит, когда кто-либо сообщает третьей стороне конфиденциальную информацию о некотором лице без его согласия. В зависимости от местного законодательства такие действия не везде считаются преступлением. Если разработчики Plasticash хотят, чтобы система распространилась по всему миру, имеет смысл составить перечень этих действий и не обращать на них внимания, если они считаются законными (и не причиняют никому вреда).
До тех пор пока система не станет обладать средствами для предотвращения нарушения тайны частной жизни, банки будут иметь неограниченные возможности для получения информации о расходах клиентов. («Я знаю, что Вы приобрели прошлым летом».) Этого можно избежать в некоторых случаях (но только в некоторых), если клиенты будут приобретать карты с фиксированной суммой денег на них, аналогично некоторым телефонным картам с предоплатой.
Продавец не сумеет непосредственно получить подобные сведения и узнать имя покупателя, однако с помощью других продавцов он может собрать информацию об использовании карты с известным ему идентификационным номером и, сопоставив данные, идентифицировать ее владельца.
Наконец, следует помнить и о возможности подслушивания: люди, вовсе не участвующие во взаиморасчетах, могут подслушивать и собирать информацию.
Четвертый вид преступлений, вызывающих беспокойство, включает вандализм и терроризм. Эти правонарушения в первую очередь направлены против системы в целом, хотя могут совершаться и против отдельных владельцев карт, продавцов и банков. Главная цель таких преступлений – помешать правильному функционированию системы. То, что называется атаками, направленными на отказ в обслуживании, в этом случае может оказаться весьма любопытно. Судите сами.
Действия, направленные против продавца:
• Можно создать помехи во взаимодействии с банком или покупателями.
• Можно объявить карту продавца похищенной или скомпрометированной.
• Можно физически повредить или уничтожить карту продавца.
• Нарушить электрическое питание терминала или разорвать телефонную связь с ним.
Действия, направленные против клиента (покупателя):
• Можно создать помехи во взаимодействии с банком или продавцами.
• Можно объявить карту продавца похищенной или скомпрометированной.
• Можно физически повредить или уничтожить карту клиента (покупателя). Действия, направленные против банка:
• Можно создать помехи во взаимодействии с клиентами или продавцами.
• Можно физически повредить или уничтожить банковские технические средства, обеспечивающие безопасность.
Действия, направленные против системы в целом:
• Заставить систему самосовершенствоваться, прежде чем кто-либо поймет, что с этим делать. (Можно рассматривать это как аналог «проблемы 2000 года».)
• Вызвать отказ в обслуживании многих или вообще всех банков.
• Создать помехи во взаимодействии с клиентами или продавцами.
• Уничтожить открытый ключ высшего уровня сертификации в системах, основанных на PKI.
Преступные действия способны также дестабилизировать работу системы:
• Можно наладить массовый выпуск поддельных карт.
• Можно организовать массовые, широко распространенные мошенничества с картами и подорвать доверие к системе.
Наконец, поговорим об использовании системы для совершения преступлений, то есть о нарушениях закона с ее помощью. До сих пор мы рассматривали лишь возможность отмывания денег, но не менее заманчиво обсудить возможности других противозаконных действий. (Заметим, что большинство злодеяний связаны с передачей наличных денег из рук в руки. Наша система карт позволит легко избавиться от таких преступлений, как торговля наркотиками, незаконные азартные игры, проституция и т. д.)
Некоторые люди получают банковские карточки под вымышленными именами, но нетрудно склонить кого-либо к тому, чтобы он использовал свое настоящее имя. (Несомненно, в мире найдется много желающих открыть банковский счет, который, как они понимают, будет контролироваться другими людьми и использоваться для отмывания денег, если им предложат несколько тысяч долларов или, в отдельных случаях, возможность провести несколько дней или недель в пьяном или наркотическом угаре.) Если на такие карточки положить деньги, их можно использовать как компактное платежное средство, и не существует очевидного способа воспрепятствовать этому.
Обратите внимание на то, что решение вопросов морали и законности в этой сфере далеко не очевидно. Требования о предоставлении финансовой отчетности в государственные органы США и Великобритании могут причинять некоторые неприятности гражданам, но власти редко злоупотребляют этим. Во многих других странах, таких как Китай, Турция. Мексика или Сирия, дело принимает совсем другой оборот. Последнее обстоятельство чревато политическими и юридическими проблемами для тех компаний, которые обязаны предоставлять такие сведения, и способно привести к большему распространению мошенничества в этих странах.
Недостаточно просто составить перечень угроз, необходимо знать, как реагировать на каждую из них. Здесь на помощь приходит оценка рисков. Основная идея состоит в том, чтобы оценить возможный ущерб от реализации угрозы и возможное число таких случаев в течение года, а затем вычислить ожидаемые потери за год.
Например, «планируемые» убытки от хакерского вторжения в сеть составляют 10 000 долларов в каждом случае (эта сумма включает в себя оплату труда тех, кто будет обнаруживать такие происшествия, приводить все в порядок и т. д.), а такие происшествия могут случаться трижды в день или тысячу раз в год. В таком случае ожидаемые убытки за год не превзойдут 10 миллионов. (Можно понять, что из этого следует. Если ожидаемые убытки за год составляют 10 миллионов долларов, то приобретение, установка и поддержка брандмауэра за 25 000 в год – весьма выгодное дело. Приобретение нечто такого «супер-пупер-умопомрачительного» за 40 миллионов будет пустой тратой денег. При этом анализе предполагается, что брандмауэр и «супер-пупер-умопомрачительное» одинаково хороши для предотвращения угрозы. Позже мы еще вернемся к этой теме.)
Иногда вероятность реализации угрозы очень мала. Если речь идет о вторжении в систему конкурента с целью получения сведений о новых разработках, потери могут составить, например, десять миллионов долларов в каждом случае. Но предположим, что число таких вторжений составляет 0,001 или 0,1% в год. Таким образом, ожидаемые убытки за год превращаются в 10 000 долларов, и меры противодействия, которые обходятся в 25 000 долларов, становятся совершенно невыгодными.
Страховые компании постоянно имеют дело с оценкой рисков, исходя из нее они и определяют размер страховых взносов. Они считают ожидаемые убытки за год для каждого случая, прибавляют расходы на свою деятельность плюс некоторую прибыль и таким образом получают сумму взносов при страховании от определенных рисков.
При этом, разумеется, им приходится делать множество предположений; конкретные риски, о которых мы говорим, еще слишком новы и трудны для понимания. Иногда требуется особенная проницательность для того, чтобы обнаружить вектор катастрофического развития событий, когда незначительная ошибка чревата многомиллионными потерями.
Для анализа рисков, связанных с компьютерным миром, производители предлагают множество алгоритмов и методов. Однако они в большей степени предназначены для оценки крупных рисков, таких как промышленный шпионаж, а не незначительных опасений вроде взлома шифровального ключа электронной почты.
Анализ рисков важен в том отношении, что позволяет сориентироваться в этой сфере. Огромные зияющие «дыры» в системе безопасности не страшны, пока вероятность реализации угрозы равна нулю. (Токио, например, до сих пор беззащитен перед огнедышащими драконами.) Маленькие «щели» обязательно нужно затыкать, если ежедневно через них может осуществляться десять миллионов нападений.
При разработке системы безопасности жизненно необходимы как моделирование угроз, так и оценка рисков. Слишком многие разработчики систем представляют себе свою деятельность наподобие поваренной книги: смешаем в определенных пропорциях некоторые меры противодействия – хорошими примерами тому являются шифрование и брандмауэры, – и как по волшебству мы окажемся в безопасности.
Так никогда не бывает. Йоги Берра сказал: «Будьте осторожны, если вы не знаете, куда идете, может быть, лучше вам не попадать туда». Часто системы безопасности оказываются неспособны противостоять некоторым угрозам. Шифрование электронной почты может спрятать от посторонних глаз содержание корреспонденции, но никак не сумеет скрыть факт существования переписки. В некоторых случаях выявление корреспондентов оказывается более опасным для них, нежели знание содержания писем. В других ситуациях информация о том, что некто использует шифрование, оказывается чрезвычайно содержательной сама по себе.
Хорошая разработка получается в результате последовательного движения от технических требований к нахождению правильного решения, а не в результате применения сухой технологии для получения конечного продукта. В случае разработки систем безопасности это означает, что сперва необходимо заняться моделированием угроз, выработать политику безопасности и только после этого выбирать подходящие технологии. Угрозы определяют политику безопасности, а она, в свою очередь, – процесс разработки. В частности:
• Следует понять, что реально угрожает системе, и провести оценку рисков. Это легче сделать, если использовать опыт «реального мира» и знания об имевших место нападениях на похожие системы.
• Определить политику безопасности для противодействия этим угрозам.
Это должен быть ряд положений вроде: «только уполномоченные банки вправе изменять баланс на картах Plasticash» или «все движения денежных средств в системе Plasticash должны быть доступны контролю».
• Разработать меры противодействия, которые воплотят в жизнь политику безопасности. Эти контрмеры должны представлять собой объединение механизмов защиты, обнаружения и реагирования.
Конечно, такая прямолинейная модель создания решения – это идеал, а реалии жизни не часто помогают в ее реализации. Более правдоподобно, что путь разработки будет напоминать спираль, и придется не один раз повторить эти три шага, с каждым разом все более и более приближаясь к достижению истинной безопасности. В наивысшей степени сказанное относится к новым системам и новым технологиям, когда действительные угрозы остаются неизвестны до тех пор, пока на практике не удастся определить, кто и на что будет нападать. Поэтому все хорошие системы предусматривают план действий в непредвиденных обстоятельствах и способы восстановления после катастрофических событий.
Рассмотрение целей и методов нападающих кажется очевидным делом, однако многие организации, ведущие себя вполне разумно в других случаях, оказались неспособны сделать это. Военная контрразведка США потратила многие годы на то, чтобы построить защиту от одной хорошо финансируемой организации, имевшей единственную цель – прослушивание американских линий связи военного значения. Она преуспела в этом, однако совершенно упустила из виду опасность, исходящую от хакеров. Хакеров не интересует прослушивание. Их никто не финансирует. Они не организованы. Им не нужны военные секреты, им хочется поковыряться в системе ради развлечения и посмотреть, как она обрушится. Им хочется похвастаться перед приятелями и, может быть, увидеть свое имя в газетах. Некий сотрудник AT&T Bell Labs обнаружил дефект в реализации «Клиппер-чипа» (Clipper chip[51]) военной контрразведки и создал ей дурную славу. Зачем? Ради удовольствия поймать контрразведку на ошибке.
Если вы занимаетесь моделированием угроз, сперва обратите внимание на те случаи, когда люди глубоко заблуждались насчет реальности угрозы.
• В индустрии сотовых телефонов было потрачено много денег на разработку средств обнаружения мошенничества, но никто не понимал реальной угрозы. Предполагалось, что преступники будут пытаться пользоваться услугами телефонной связи бесплатно. В действительности все, что требовалось настоящим преступникам, – это анонимность, им не хотелось, чтобы телефонные звонки вели к ним. Номера сотовых телефонов перехватывались в эфире, использовались несколько раз и затем забывались. Система, имевшая целью предотвращение мошенничества, не была рассчитана на обнаружение таких действий.
• В той же индустрии сотовых телефонов, еще в давние времена аналоговой передачи сигналов, никто не беспокоился о безопасности связи, поскольку, как считалось, «сканеры дороги и редко встречаются». Спустя годы сканеры стали дешевы и широко распространены. Тогда, следуя замечательной традиции ничего не предпринимать, никто не побеспокоился о безопасности цифровых телефонов, поскольку «цифровые сканеры дороги и редко встречаются». Что же дальше? Они так же подешевели и стали более распространены.
• Хакеры часто предлагают на продажу средства взлома на веб-страницах и досках объявлений. Некоторые из этих хакерских средств сами заражены Back Orifice, и тот, кто их написал, получает доступ к компьютеру использующего их хакера. Аристотель называл подобное стечение обстоятельств «поэтической справедливостью».
• Когда обнаруживается уязвимость протокола безопасности Интернета, поставщик обычно пересматривает протокол с целью ее уменьшения. Однако ввиду важности обратной совместимости новый протокол часто делается совместимым со старым, уязвимым протоколом. Умный нападающий просто взламывает старый протокол и использует его уязвимость. Это называется атакой на откат версии (version-rollback).
• Несколько лет тому назад монетоприемники японских автоматов для игры в пачинко были заменены устройствами для чтения магнитных карт. В системе использовались разные меры защиты от жульничества, но разработчики ошибались, считая владельцев игорных заведений хорошими парнями. В действительности многие из них были вовлечены в организованную преступность. И модель безопасности была построена плохо: владельцы помещений, где находились автоматы, не оставались в накладе и получали доходы независимо от того, настоящими или фальшивыми были карты, поэтому у них не было стимула обращаться в полицию по поводу мошенничества. (Разработчики также полагали, что, установив для каждой карты предел в 100 долларов, можно ограничить потери.) Махинация была проведена тонко – она включала восстановление настоящих карт, «исчезновение» многих автоматов после землетрясения в Кобе и охватывала множество игорных заведений, – и общая сумма ущерба от нее составила около 600 миллионов долларов. По слухам, деньги утекли в Северную Корею.
• Производители автоматов, принимающих монеты, давно предвидели возможность манипуляций мошенников с механическими устройствами. Например, просверливание отверстий в автомате для воздействия на механизм барабана или использование устройств, воздействующих на счетчик монет, подлежащих выплате игроку. Несколько лет назад один из производителей автоматов для игры в покер был удивлен совершенно неожиданному способу воздействия с помощью статического электричества. Некоторые игроки обнаружили, вероятно, случайно, что если накопить достаточно большой заряд, походив по плюшевым коврам в казино, и разрядиться на автомат, из него посыплются все имеющиеся монеты.
• В конце 1999 года было взломано шифрование цифровых видеодисков (DVD). Если даже диск зашифрован, ключ для дешифрования должен быть в проигрывателе. Иначе и быть не может. Все было в порядке, пока проигрыватели оставались защищенными от взлома физическими устройствами, но с момента создания программного проигрывателя ключи присутствуют в программах. Кто-то просто произвел анализ программы и нашел ключ, таким образом, содержание видеодисков теперь может копироваться и распространяться через Интернет.
• В 1980 году при проведении Пенсильванской лотереи ее ведущий и несколько рабочих сцены, с которыми он был в сговоре, подтасовали пинг-понговые шарики, использовавшиеся в розыгрыше, и выиграли 1,2 миллиона долларов. Никто не предполагал возможности такого сложного сговора. В настоящее время проведение лотереи контролируется более тщательно. (Подобное происшествие, но уже вследствие случайной ошибки, имело место при проведении Аризонской лотереи. В 1998 году кто-то обратил внимание на то, что в выигрышных номерах нет ни одной девятки. Оказалось, что алгоритм генерации псевдослучайных чисел содержит элементарную программную ошибку. Кажется, пингпонговые шарики надежнее компьютеров.)
Правила дорожного движения большинства европейских стран предписывают использование на грузовых автомобилях устройства, называемого тахограф, который присоединяется к спидометру и фиксирует скорость, пройденное расстояние и другие сведения. Тахограф записывает показания спидометра на бумажную ленту, на которой водитель ставит свою подпись и дату; лента затем хранится какое-то время. Здесь трудно было что-либо подделать, и попытки обмана совершались чаще с использованием слабостей процедуры, а не технологии. Недавно Европейский союз начал финансирование проекта «Тахосмарт» для создания полностью цифрового устройства взамен старого тахографа. Любая подобная система открыта для всех видов нападений, описанных в этой книге (хуже всего, что новое устройство, похоже, будет основано на использовании смарт-карт и будет еще менее надежным).
Приведенные примеры интересны тем, что нападающие использовали не недостатки мер противодействия, а просчеты модели безопасности. Во всех случаях меры противодействия существовали, но они не решали истинную проблему. Хотя они могли преодолеть некоторые смежные проблемы. И в некоторых случаях решения создавали еще большие проблемы, нежели те, с которыми удавалось справиться.
Если достаточно долго заниматься моделированием угроз, станет ясно, что понятие «система безопасности» имеет различные значения в зависимости от ситуации. Вот несколько примеров:
• Компьютеры, используемые в деловой сфере, должны быть защищены от хакеров, преступников и промышленных конкурентов. Военные компьютеры должны быть надежно защищены от тех же угроз, а также от проникновения вражеских военных сил. Некоторые коммерческие компьютеры, обслуживающие телефонные сети, также должны быть защищены от вторжений военных противников.
• Многие городские транспортные системы используют проездные карточки вместо наличных денег. Подобные им телефонные карты применяются повсюду и в Европе и в Азии. Такие системы обязаны быть застрахованы от всевозможных подделок. Конечно, это не проблема, если подделки обходятся дороже, чем настоящие карты.
• Программы безопасности электронной почты должны обеспечить защиту корреспонденции от любых попыток перлюстрации и внесения в нее изменений. Конечно, во многих случаях программными средствами невозможно обезопасить себя от некоторых манипуляций: это троянский конь в компьютере, атаки TEMPEST, видеокамера, которая может считывать с экрана, и т. д. Телефоны, использующие кодирование, имеют тот же недостаток: они сумеют обеспечить тайну переговоров в дороге, но бессильны против «жучков» в помещении.
Хитрость заключается в том, чтобы разрабатывать систему в расчете на реальные угрозы, а не использовать технологии безопасности все подряд в надежде, что из этого что-нибудь получится. Для чего необходимо выработать политику безопасности (иногда называемую моделью безопасности), основанную на анализе угроз, и уже затем разрабатывать механизмы защиты, которые реализуют эту политику и противодействуют угрозам.
Политика безопасности системы подобна внешней политике правительства: она определяет цели и задачи. Когда правительство обвиняют в непоследовательности во внешней политике, это происходит потому, что в его действиях отсутствует логика и нет общей стратегии. Точно так же без политики безопасности меры противодействия цифровой системы будут неупорядочены. Политика – это способ обеспечить всеобщую взаимосвязь.
Хорошая политика формируется как ответ на угрозу. Если угрозы отсутствуют, то нет и политики: каждый может делать все что угодно. Соединенные Штаты нуждаются во внешней политике ввиду угроз со стороны других государств. Штат Пенсильвания не нуждается во внешней политике, потому что остальные штаты не представляют для него опасности. То же самое с политикой безопасности – она необходима, потому что моделирование угроз не заканчивается пустой страницей. Политика безопасности определяет рамки, в которых осуществляются выбор и реализация мер противодействия.
Большая часть этой книги посвящена тактике, а политика имеет дело со стратегией. Вы не можете решить, какие виды защиты от мошенничества нужно использовать в сотовом телефоне, пока у вас нет стратегии реализации этих контрмер. Вы не можете ожидать, что дюжина инженеров, каждый из которых отвечает за безопасность одной маленькой части системы, будут вести себя согласованно, если нет общей политики, направляющей их работу. О политике безопасности помнят всегда, когда определяют и реализуют меры противодействия.
Не нужно доказывать, что каждая организация нуждается в политике безопасности для своей компьютерной сети. Политика должна очерчивать границы ответственности (кто отвечает за ее реализацию, проведение в жизнь, проверку, пересмотр), определять, что является основой политики безопасности сети и почему именно это. Последнее замечание очень важно, так как произвольная политика, «спущенная сверху» без объяснений, скорее всего, будет проигнорирована. Более правдоподобно, что сотрудники станут следовать ясной, краткой, логичной и последовательной политике.
Политика безопасности – это то, как вы определяете, какие меры противодействия использовать. Нужен ли вам брандмауэр? Как его сконфигурировать? Нужны ли маркеры доступа или достаточно использования паролей? Можно ли пользователям разрешить доступ к видео с их браузеров? Если нет никакой политики, то нет и возможности логически обосновать ответы на эти вопросы.
К сожалению, большинство организаций не имеют сетевой политики безопасности. А если и имеют, то никто ее не придерживается. Я знаю историю проверки одной сети, в которой использовался брандмауэр, защищавший границы между двумя половинами внутренней сети. «Какая сторона находится внутри брандмауэра, а какая – вне его?» – спросил проверяющий. Этого никто не знал. Это – пример организации с плохой политикой безопасности.
В любом случае политика безопасности должна в первую очередь давать ответы на вопрос «почему», а не «как». «Как» – это тактика, контрмеры. Трудно выбрать правильную политику, но еще труднее определить комплекс мер противодействия, которые позволят ее реализовать.
Мы коснулись различных аспектов этой проблемы в главах, посвященных защите программного обеспечения от копирования, присвоению интеллектуальной собственности и цифровым водяным знакам. Некоторые компании продают программные продукты с правами исключительно индивидуального пользования: аудио– и видеофайлы, которые нельзя скопировать или перепродать; данные, которые можно прочитать, но нельзя распечатать; программное обеспечение, которое не может быть скопировано. Другие компании «продвигают» по электронной почте свои секретные решения в письмах, которые нельзя прочитать по прошествии времени и которые автоматически «удаляются» после определенной даты. Третьи используют технологии электронной коммерции, в которых реализованы другие виды прав.
Общая идея всех этих решений состоит в том, что Алиса может послать Бобу файл, а затем проверить, что впоследствии происходит с полученным файлом. В случае программ, распространяемых по почте, Алиса хочет контролировать удаление файла с компьютера Боба. Если речь идет о продуктах с правами исключительно индивидуального пользования, Алиса посылает Бобу файл, но ограничивает время его просмотра, возможности копирования, изменения и пересылки третьим лицам.
Но это не работает. Контроль над тем, что Боб делает с некоторыми данными, предполагает, что доверенное (Алисой) программное обеспечение установлено на компьютере Боба. Такого не бывает, поэтому эти средства неэффективны.
В качестве примера рассмотрим игры онлайн. Многие игры в Интернете позволяют участвовать в них множеству игроков одновременно, а в некоторых даже проводятся турниры с денежными призами. Хакеры придумали компьютерных противников – ботов (bot), которые помогают в игре, особенно в таких, как Quake и NetTrek. Идея состоит в том, что бот реагирует намного быстрее, чем человек. Таким образом, игрок, их использующий, получает большие преимущества[52]. За этим последовала «гонка вооружений», когда создатели игры пытались выводить из строя этих союзников игроков и заставлять играть по справедливости, а хакеры, в свою очередь, делали более умных и менее уязвимых ботов.
Эти игры создаются в расчете на доверяемое клиенту программное обеспечение, а хакеры умело разрушают любую хитрость, противопоставленную разработчиками игр. Я постоянно восхищаюсь усилиями хакеров, которые они прилагают, чтобы преодолеть системы безопасности. Из этого можно извлечь двойной урок: не только неразумно считать, что программы будут использоваться согласно оказанному доверию, но также нет никакого способа когда-либо достичь нужного уровня защиты.
Противниками всех этих систем – пропадающих почтовых сообщений, ограничения права пользования музыкой и видео, справедливого ведения игры – являются два типа нападающих: средний и квалифицированный пользователи. От среднего пользователя можно защититься любыми средствами. Дядюшка Стив хочет только получить бесплатно копию Norton Utilities, Короля-Льва или самого последнего компакт-диска Робина Хичкока. Для этой ситуации не существует аналога в физическом мире; дядюшка Стив не сможет сделать отдельную копию сумочки от Шанель, даже если он этого захочет. С одной стороны, он более неуловим; с другой – причиняет меньше материального ущерба. Дядюшка Стив – не организованный преступник, он не собирается создавать преступную сеть. Он даже не станет покупать программное обеспечение, видео– или компакт-диск в том случае, если ему не удастся раздобыть бесплатную пиратскую копию. Остановить дядюшку Стива способны почти все меры противодействия, и нет необходимости в сложных программах для обеспечения безопасности.
Против квалифицированного пользователя бессильны любые контрмеры. В главе 16 я описывал героический путь, который преодолевают некоторые хакеры, чтобы взломать схемы защиты от копирования. Ранее в этой главе я рассказывал о специально разработанных программах-ботах, которые разрушают интерфейс пользователя в компьютерных играх. Поскольку преодоление контрмер имеет такое большое значение для хакеров, бесполезно пытаться построить систему, которая была бы неуязвима. И что еще хуже, большинство систем нуждаются в защите от наиболее ловкого взломщика. Если один человек взламывает Quake (или «Интердоверие», или «Пропажа Инк.»), он может придумать программное средство «выбрать и щелкнуть», которое затем использует любой желающий. Систему безопасности, которая была неприступна почти для всех, сумеет после этого вскрыть каждый.
Единственно возможное решение состоит в том, чтобы поместить механизм дешифрования в защищенное аппаратное устройство в надежде на то, что это замедлит работу профессионалов на несколько лет. Но как только кому-нибудь понадобится «программный проигрыватель», защита будет взломана в течение считанных недель. Индустрия DVD столкнулась с этим еще в 1999 году. Компания Glassbook приобрела такой опыт в 2000 году, когда незащищенные копии Верхом на ядре Стивена Кинга появились через два дня после того, как была выпущена электронная версия книги (возможно, имевшая защиту от копирования).
Любая разумная политика безопасности исходит из того, что от профессиональных пиратов невозможно защититься с помощью технологий. Профессиональные пираты в цифровом мире не отличаются от людей, которые подделывают сумочки от Шанель, и общество знает способы поимки таких людей (механизмы обнаружения и реагирования в физическом мире). Они могут быть эффективными или нет, но они совершенно бесполезны в случае борьбы с подделками в цифровом мире. Такая политика безопасности признала бы, что Дядюшка Стив – любитель, и что почти любая мера противодействия ему является достаточной до тех пор, пока она не будет взломана окончательно или не окажется заведомо уязвимой.
Обратите внимание, что это исследование показывает, что разумные поставщики продуктов должны найти альтернативные способы получения прибыли. Продажа копий книги в цифровом мире не приносит такого же дохода, как в мире вещественном. Намного выгоднее продавать обновления в реальном времени, подписку, а кроме того, есть дополнительные причины, чтобы люди покупали бумажную копию. Мне нравится покупать компакт-диски, а не копировать их, потому что я получаю вкладыш с пояснениями. Я также покупаю настоящую книгу вместо того, чтобы распечатывать ее электронную копию, потому что книгу в переплете удобно носить с собой. Я готов платить за биржевые сводки, поскольку эта информация ценна тогда, когда поступает своевременно.
Реализацию альтернативных моделей можно видеть в методах общественного финансирования добрых дел: общественное телевидение, общественное искусство и уличные представления. Представления проводятся бесплатно, но индивидуальные пожертвования позволяют им состояться. Вместо того чтобы установить продажную цену в 29,99 доллара на эту книгу, возможно, я должен был поместить на веб-странице предложение о внесении взносов. Я написал бы книгу и поместил бы ее в общедоступном домене, но только после того, как получил бы взносы на 30 000 долларов. (Эта идея использовалась для финансирования некоторых анти-бушевских кампаний в 2000 году. Люди обязуются сделать взносы со своих кредитных карточек, но деньги будут востребованы только в том случае, если соберется необходимая сумма. Заметьте, компания, выпускающая кредитные карточки, действовала как доверенное третье лицо в этой сделке.)
В других отраслях по-разному решают эти вопросы. Наиболее разумные компании, проводящие игры, выходят из положения, в частности, допуская использование ботов в некоторых турнирах, но проводя заключительные раунды в узком кругу, на проверенном компанией компьютере. Самые недоверчивые фирмы, поддерживающие электронную почту, подчеркивают, что при установке системы безопасности скорее происходит умаление ответственности, нежели достигается абсолютная безопасность программного обеспечения. Угрозу представляют не злонамеренные пользователи, копирующие и распространяющие электронную почту, а честные служащие, забывающие удалить почту, и злостные адвокаты, спустя годы использующие эту корреспонденцию в суде. Но попытка ограничить возможности пользователя на персональном компьютере обречена на неудачу. Честные люди остаются честными, но при этом возникает обманчивое чувство безопасности. Впрочем, иногда и этого достаточно.
Банкоматы – интересный пример, поскольку модели доверия и безопасности в этом случае переплетены более, чем это кажется на первый взгляд. Банкомат – это сейф, который выдает деньги по команде некоего внешнего устройства. Машина считывает данные пользователя (информацию с магнитной полосы и идентификационный номер), посылает их на центральный сервер и получает ответное сообщение (выдать деньги или отказать, не возвращать карту и т. д.). Банкомат должен быть защищен от мошенников на линиях связи, от взломщиков и от возможности того, что сейф просто увезут. Также необходимы контрольные записи на случай возникновения споров (такой вид учета еще далеко не идеален).
Многие люди должны иметь доступ к банкоматам. Инкассаторы объезжают их на бронированных машинах, чтобы наполнить автоматы наличными деньгами. Обслуживающий персонал должен иметь к ним доступ как в установленное по графику время, так и незамедлительно в случае чрезвычайной ситуации. И если вспомнить, что состав персонала и охраны может меняться, банк должен иметь возможность прекратить доступ для одних работников и ввести доступ для других.
Также примите в расчет простые финансовые калькуляции. Потери от утраты банкомата определяются только стоимостью его замены и суммой наличных денег внутри. Не имеет смысла тратить 10 миллионов долларов на меры безопасности.
Криптография здесь довольно проста. Канал связи не нуждается в шифровании, требуется только аутентификация. Это можно сделать с помощью или МАС-адресов, или цифровой подписи. Контрольные записи, защищенные хэш-функцией, должны сохраняться и в банкомате, и на сервере.
Обеспечение компьютерной безопасности в этом случае очевидно. Машина должна все проверить. В подозрительных случаях она скорее завершит работу, чем необдуманно выдаст деньги. Программное обеспечение должно быть таким, чтобы его было трудно изменить и обслуживающий персонал не смог бы внедрить в систему троянских коней.
Обеспечение физической безопасности – тоже простая задача. Деньги обязаны храниться в сейфе. Здесь должны находиться и контрольные записи всех, кто открывает сейф (возможно, каждый человек будет иметь свою собственную комбинацию или уникальный маркер доступа). Любые долговременные шифровальные ключи должны быть стерты при первых признаках вмешательства.
Интересно заметить, что владельцы банкоматов только недавно получили в свое распоряжение адекватные физические меры противодействия. До недавних пор банкоматы устанавливали в стене банка или другом безопасном месте. В этой книге я упоминал о грабителях, которые увозили автоматы целиком, что причиняло массу беспокойства. Впоследствии кто-то пришел к заключению, что эти нападения единичны и что можно заработать намного больше денег, если установить банкоматы на каждой автостанции, в каждом баре, торговом центре и на каждой бензоколонке. Это были маленькие автономные банкоматы, не столь защищенные, но последнее не имело значения. Если их устанавливать в общественных местах, то появится больше возможностей для обнаружения и реагирования. В них хранится меньше наличности, поэтому и риск меньше. А доходы высоки, так что они достаточно выгодны. Даже если и исчезнет случайно какой-либо банкомат, идея стоит того.
Совсем недавно появилось другое новшество в политике безопасности. Кто-то наконец осознал, что банкомат состоит из двух частей: хранилища денег и сетевого компьютера, который указывает хранилищу, когда и сколько выдать денег. И нет никакой необходимости соединять эти две части в одном месте. В магазинах уже используется защищенное хранилище денег – кассовый аппарат. Теперь некоторые банкоматы представляют собой только компьютер, и они не содержат наличных денег внутри. Компьютер проводит аутентификацию и затем печатает бланк. Клиент относит бланк к кассовому аппарату и получает деньги. Все это хорошо работает только в случае небольших денежных сумм, но система действует. Это – изящный пример правильного подхода к безопасности… до тех пор, пока кто-нибудь не подделает бланк.
Компьютеризированные лотерейные терминалы используются в большинстве лотерей типа «Кено». Организаторы лотереи приобретают защищенный компьютер и принтер, который печатает и заверяет лотерейный билет с выбранными номерами. Один или два раза в неделю проводится розыгрыш. Выигрыши бывают как маленькие, так и очень большие.
Угрозы в этом случае очевидны. Опасность исходит непосредственно от самих организаторов лотереи, которые могут вступать в сговор с людьми, обслуживающими лотерейную систему. Они способны мошенничать одним из двух способов: «покупкой» билетов или изменением информации об уже купленных билетах после того, как результаты станут известны. Более изощренный способ – использование ложного терминала, который собирает деньги, но вовсе не выплачивает выигрыши (на самом деле было бы разумнее выплачивать маленькие выигрыши и исчезнуть, когда кто-нибудь сорвет куш).
Эти опасности возникают в случае открытой политики безопасности. Терминалы лотереи должны работать в режиме онлайн и регистрировать все выбранные комбинации чисел на центральном сервере. На этом сервере должны храниться контрольные записи с маркерами времени, и он должен направлять терминалам информацию, которая будет печататься на билете. Сервер в первую очередь должен иметь средства обеспечения безопасности при проведении лотереи. И должен быть предусмотрен способ выявления ложных организаторов лотереи: очевидно, следует позволить получать небольшие выигрыши у любого распространителя билетов, а не только у того, который их продал. Помогают также регулярные проверки.
Есть еще много деталей, которые требуют проработки, но общую идею вы уже представляете.
В заключение давайте рассмотрим два различных механизма защиты: смарт-карты и запоминающие карты с магнитной полосой. В главе 14 я рассказывал о защите от вмешательства, посягательствах на смарт-карты и о безопасной территории. В главе 19 описывалась модель угроз гипотетической электронной валюте, основанной на смарт-картах. Обладая этими знаниями, давайте зададимся следующим вопросом: будет ли более безопасно пользоваться смарт-картой (картой с микропроцессором), чем картой с памятью (или только с микросхемой памяти, или с магнитной полосой) в конкретном случае?
Тому, кто способен взломать смарт-карту, это безразлично. Он умеет восстанавливать данные с карт обоих типов, но эти карты могут использовать шифрование в качестве защитной меры. Для того, кто не в силах взломать карту, это имеет существенное значение. Он, возможно, умеет считывать данные карты с магнитной полосой, но не может проникнуть в память смарт-карты. С другой стороны, если информация зашифрована каким-либо способом, также не имеет значения, может ли он считывать магнитную полосу. Возможно, в этом случае имеется меньше различий, чем следовало предположить.
Давайте рассмотрим, как используются карты двух различных типов.
Карты с магнитной полосой. Пользователь помещает карту в считывающее устройство и вводит PIN (личный идентификационный номер), пароль или код. Устройство считывает данные с магнитной полосы и использует PIN для расшифровки данных. Затем эти данные обрабатываются устройством для выполнения системой разнообразных действий, для которых она предназначена: вхождение в систему, подписывание электронного чека, плата за стоянку и т. п.
Смарт-карты. Пользователь помещает карту в различные считывающие устройства и вводит тот же личный идентификационный номер. Устройство посылает PIN в смарт-карту, которая расшифровывает данные. Затем они используются картой (а не устройством) для выполнения системой нужных действий, а само устройство выполняет в системе функцию ввода-вывода данных.
В чем же различия? В обоих случаях примененное в преступных целях считывающее устройство в состоянии разрушить систему, так как это устройство является единственной связью карты с внешним миром. Как только станут известны секретные данные карты с магнитной полосой, устройство может делать все, что пожелает. Как только смарт-карта получит правильный PIN, считывающее устройство может заставить всех поверить всему, что оно захочет.
Основное различие между этими картами состоит в том, что смарт-карта умеет осуществлять некоторый контроль, так как имеет внутреннюю защиту. Например, если кто-нибудь украдет карту с магнитной полосой, он сможет грубыми приемами завладеть данными этой карты. Он может сделать это автономно, на компьютере, так что ее владелец даже не узнает о случившемся. (Хитрый вор возьмет карту, считает данные с магнитной полосы и затем положит ее обратно в бумажник жертвы.) Смарт-карту нельзя взломать подобным образом, поскольку ее можно запрограммировать так, что она будет выключаться после десяти (или около того) неправильных вводов пароля подряд. Так, если кто-нибудь похитит смарт-карту, узнать пароль с легкостью у него не получится. Он получит возможность сделать только десять попыток. (Предполагается, что вор не умеет взламывать карту. Если он на это способен, то он может сделать это так же, как и в случае завладения картой с магнитной полосой.)
Другое существенное различие состоит в том, что смарт-карта не выдает свои секреты. Например, при использовании карт для подписи документов смарт-карта будет более безопасна, чем карта с магнитной полосой. Карта с магнитной полосой передает считывающему устройству функцию подписания документа, тем самым сообщая ему все секретные данные. В этом случае остается только надеяться на лучшее. Преступник с помощью устройства чтения может украсть шифр подписи. Смарт-карта же самостоятельно ставит подпись. Сканирующее устройство может загружать в карту для подписи подложные документы, но оно не получит шифр подписи.
Есть и другие, более тонкие различия. Смарт-карта позволяет опереться на некоторые основные правила выполнения действий. В принципе это можно использовать и в системе, которая обращается к базам данных, и для карт с магнитной полосой, но смарт-карты позволяют добиться лучшей реализации.
Известно, что смарт-карты распространены как платежное средство по всей Европе, но не в Соединенных Штатах. Почему? Все объясняется особенностями телефонной связи. Система проверки американских кредитных карточек работает в режиме онлайн. Когда вы покупаете что-нибудь, продавец использует модем, чтобы убедиться в том, что ваша карточка действительна и вы платежеспособны. Пятнадцать лет назад эта система не могла бы работать ни в одной европейской стране. Плата за телефон была высока, многие магазины их даже не имели, а в Италии, например, их установки приходилось дожидаться год или два. Связь была дорогой и ненадежной. Создание онлайновой системы в Европе было невыгодно, поэтому индустрия кредитных карт отдала предпочтение смарт-картам, позволявшим хоть как-то обезопасить сделки. Дело не в том, что смарт-карты защищены лучше, чем карты с магнитными полосами, просто американский способ борьбы с мошенничеством был менее практичным. Настойчивое лоббирование европейскими производителями смарт-карт (Bull SA, Gemplus, и Schiumberger) также нельзя не учитывать.
Если говорить кратко, то существует определенное различие между картами с магнитными полосами и смарт-картами, но насколько это важно – зависит от их применения. Сопротивление вторжению в смарт-карту при достаточных затратах времени и средств всегда может быть преодолено, поэтому не имеет смысла создавать систему, безопасность которой основана на средствах сопротивления вторжению. Большинство людей не способны взломать смарт-карту, так что она достаточно хорошо защищена от большей части преступлений. Но обе карты создавались в предположении, что считывающему устройству следует доверять, поэтому они могут пострадать от действия устройств, используемых злоумышленниками. И все же, смарт-карта лучше защищена от взлома. И до тех пор, пока сопротивление вторжению не преодолено, смарт-карта надежно хранит свои секреты.
Хороши такие меры противодействия, которые не только защищают от известных угроз, но и эффективно действуют в непредвиденных случаях. Хотя и очень трудно обеспечить настоящую безопасность, неразумно полагать, что не случится катастрофа, если в чем-либо допущены просчеты.
Слишком многие системы безопасности чересчур хрупки: они разваливаются от самой незначительной ошибки. Вот несколько примеров:
• Главный секрет систем защиты европейских платных каналов телевидения в течение прошлого десятилетия находился в устройстве настройки телевизора. Это означало, что как только кому-то удастся преодолеть защиту и завладеть ключом, вся система окажется под угрозой.
• Защиту карточки с магнитной полосой MetroCard, использовавшейся для оплаты проезда в метро и автобусах Нью-Йорка, можно было обойти, просто сложив карту в нужном месте (это было в 1998 году).
• DVD-безопасность.
Рассмотрим в связи с этим кредитные карты. Карту трудно подделать, у нее имеются еще такие средства защиты, как голограммы, микропечать и «ультрафиолетовые» водяные знаки. Можно завладеть номером кредитной карточки, но как только она объявлена похищенной, ее номер оказывается в «горячем» списке. Зарегистрирована карта как украденная или нет, компьютерные программы все равно просматривают базу данных по движениям денежных средств, ища аномальные случаи их расходования. Даже если злоумышленник умеет обходить все эти защитные меры, карта имеет ограниченный кредит. И, в конце концов, срок действия карты рано или поздно истекает.
Использование некоторых других систем безопасности приводит к непредвиденным последствиям. Дорогие автомобили теперь имеют систему зажигания, которую нельзя замкнуть, это – защитная мера против воров. Сокращая количество угонов, такая мера также изменяет саму модель угрозы: вместо похищения со стоянки увеличивается опасность ограбления автомашин. Это показывает, что эффективность контрпрофилактики не самая высокая, такие меры, как обнаружение и реагирование – намного действеннее.
Вот еще пример: версия Trend Micro's OfficeScan (возможно, уже исправленная) – продукт, осуществляющий проверку на наличие вирусов и уязвимых мест для нападений, приводящих к отказу в обслуживании, сама имеет болевые точки как для нападений этого типа, так и для других.
Управление национальной безопасности действительно хорошо разбирается в этих вещах. Там создают многоуровневые системы защиты и постоянно задаются вопросом: что будет, если они не сработают? Что, если криптография подведет в тот самый момент, когда откажет защита безопасной территории, и система сигнализации останется единственной мерой противодействия? Что, если охрана вместо того, чтобы реагировать на сигнал тревоги, будет занята другим делом? Или что, если машина, которая генерирует ключи шифрования, выйдет из строя, а следом за ней – также и резервная машина? Что, если человек, отвечающий за ремонт резервной машины, подкуплен? Наверное, вы и сами можете продолжить список подобных вопросов.
Даная была дочерью Акрисия, которому предсказали, что он умрет от руки сына своей дочери. Поэтому Акрисий заточил Данаю в бронзовой комнате, вдали от всего мужского рода. Зевс, воспылавший страстью к Данае, проник в ее комнату через крышу в виде золотого дождя. Даная родила Персея, и вы можете догадаться, чем закончилась эта история[53].
Моделирование угроз по большей части производится ad hoc – для конкретного случая. Вы размышляете о возможных угрозах до тех пор, пока больше уже не можете о них думать, и прекращаете это занятие. Потом вы удивляетесь и приходите в ярость, когда кто-нибудь придумывает такой вид нападения, о котором вы и не подозревали. Мой любимый пример по этому поводу – это банда калифорнийских воров, которые владели искусством вламываться в чужие дома, проделывая бензопилой отверстие в стене. Взломщики совершенно не вписывались в модель безопасности, так как защитные меры, используемые хозяевами, представляли собой дверную и оконную сигнализацию. Они оказались бесполезны в этом случае.
Для облегчения задачи я построил схему действий нападающих, которую назвал деревом атак. Деревья атак представляют собой методологию описания угроз и мер противодействия для защиты системы. В расширенном виде схема позволяет представить наглядно безопасность системы. Она дает возможность просчитать защиту, сравнить методы защиты различных систем и проделать множество других хитростей.
Основная идея состоит в том, что мы изображаем возможные нападения на систему в виде древовидной схемы, в которой основная цель помещается в корне, а различные пути ее достижения изображаются в виде ветвей и листьев. Приписывая каждому узлу в кроне определенное значение, мы можем выполнить некоторые основные расчеты, позволяющие сделать определенные заключения относительно различных способов нападения. Такая схема называется «деревом И/ИЛИ».
Я начну с простейших деревьев атак для систем защиты, не связанных с компьютерным миром, и постепенно выстрою общую концепцию рассматриваемого предмета.
На рис. 21.1 показана несложная схема нападения на сейф. Каждая схема нападения имеет свою цель, представленную в корневом узле дерева. В нашем примере цель – открытие сейфа. В компьютерных науках деревья «растут» сверху вниз. Чтобы открыть сейф, атакующему нужно открыть замок отмычкой, узнать его шифр, прорезать отверстие в сейфе или сделать что-то при установке сейфа, что позволит потом легко его открыть. Чтобы узнать шифр, взломщик должен либо найти где-нибудь запись комбинации цифр, либо выудить ее у владельца сейфа. И так далее. Каждый узел становится промежуточной целью, а дочерний по отношению к нему узел – это путь ее достижения. Конечно, это только образец дерева, к тому же незавершенный.
Рис. 21.1. Узлы атак
Обратите внимание: на рисунках все, что не обозначено явно как узел И, является узлом ИЛИ. ИЛИ – это узел альтернатив, в нашем примере имеется четыре способа открыть сейф. Узлы И представляют собой отдельные шаги для достижения одной цели. Для того чтобы узнать комбинацию сейфа, взломщик должен подслушать разговор «И» вынудить владельца сейфа назвать комбинацию. Достичь цели можно лишь в том случае, если будут пройдены обе промежуточные цели.
Это – основа дерева атак. Завершив построение, полезно присвоить определенные значения различным листьям дерева (на рис. 21.1 «О» означает «осуществимо», а «Н» – «неосуществимо»). Напоминаю, это только пример для иллюстрации. Не нужно думать, что эти оценки характеризуют реальную защиту моего сейфа в офисе. Сделав оценку узлов (скорее всего, на основании тщательного изучения самого сейфа), можно рассчитать безопасность цели. Узел ИЛИ осуществим, если осуществим любой из его дочерних узлов. Узел И осуществим, если осуществимы все его дочерние узлы, и неосуществим в противном случае (рис. 21.2).
Рис. 21.2. Возможные способы взлома
Пунктирные линии на рис. 21.2 показывают все предполагаемые схемы взлома: последовательность осуществимых действий. В этой простейшей схеме существуют два реальных пути проникновения в сейф: прорезать в нем отверстие или узнать комбинацию, подкупив держателя сейфа. Эти сведения позволят правильно организовать защиту.
Присвоение значений (осуществимо или нет) узлам – это далеко не все. Можно затем установить определенные значения всем остальным узлам дерева, используя следующие критерии: легко или сложно, дорого или дешево, законно или незаконно, требуется взлом или нет, требуется специальное оборудование или нет. Рисунок 21.3 демонстрирует ту же самую схему с оценками узлов по критерию «требует специального оборудования» и «не требует специального оборудования».
Рис. 21.3. Способы взлома: потребуется или нет специальное оборудование
Присвоить узлам характеристики «дорого» или «недорого» весьма полезно, но лучше показать, сколько именно это будет стоить. Можно задать узлам численные значения. На рис. 21.4 показана схема с указанием расходов на преодоление каждого узла. Так же как и оценка «да/нет», оценка затрат может легко быть распространена по всему дереву. Узлы ИЛИ принимают наименьшее из значений дочерних узлов, а значение узлов И равно сумме значений всех дочерних узлов.
На рис. 21.4 затраты указаны по всей схеме, а также выделен самый дешевый способ взлома.
Рис. 21.4. Стоимость взлома
Опять же, эта схема может использоваться для определения уязвимых мест системы. Рисунок 21.5 показывает все возможные способы взлома, которые потребуют расходов меньше 100 000 долларов. Если вы рассматриваете только недорогие виды нападений (может, стоимость содержимого сейфа составляет как раз 100 000 долларов), тогда они вас заинтересуют.
Рис. 21.5. Способы взлома, расходы на которые не превышают 100 000 долларов
Существует много других всевозможных оценок узлов, включая вероятность успеха различных способов нападения или вероятность того, что нападающий использует определенный метод, и т. д.
В любой практической схеме узлы имеют множество значений, соответствующих различным переменным. Различные значения узлов можно комбинировать, чтобы узнать больше об уязвимости системы. Например, на рис. 21.6 видно, что самые дешевые виды взлома не требуют специального оборудования. Вы также можете видеть способы открытия сейфа, требующие наименьших затрат и сопряженные с небольшим риском, не требующие взлома, не требующие квалификации, самые дешевые с наибольшей вероятностью успеха, «законные» и т. д. Каждый раз, уточняя определенные характеристики нападений, вы больше узнаете о безопасности системы.
Рис. 21.6. Наиболее дешевые способы взлома, не требующие специального оборудования
Чтобы все это хорошо работало, необходимо объединить схему со сведениями о нападающих. Разные нападающие имеют различный уровень мастерства, успеха, неприятия риска, денег и т. д. Если вас беспокоит организованная преступность, то вы должны иметь в виду возможность дорогостоящих видов взлома и взломщиков, готовых попасть в тюрьму. Если вас тревожит угроза нападения террористов, вы не должны забывать о тех, кто готов умереть ради достижения своей цели. Если же речь идет об аспирантах, изучающих вашу систему безопасности, нет смысла беспокоиться о таких незаконных действиях, как взяточничество и шантаж. Характеристика нападающих определяет то, какой части дерева атак следует уделить особое внимание.
Деревья атак также позволяют сыграть в игру «что, если?», рассматривая различные варианты мер противодействия. Например, цель на рис. 21.6 оценивается в 20 000 долларов, поскольку самый дешевый вид взлома, не требующий специального оборудования, – это взятка лицу, знающему комбинацию. Что, если принять меры предосторожности – заплатить этому человеку сумму большую, чем возможная взятка, с тем чтобы он был менее сговорчив? Если предположить, что теперь расходы на подкуп составляют 80 000 долларов (напоминаю, это только пример; в реальности придется исследовать, как именно контрмеры влияют на значение узла), то цена увеличится на 60 000 долларов (возможно, на эту сумму придется нанять головорезов для достижения соглашения).
Ниже показана схема нападений на программы безопасности электронной почты PGP. Так как PGP является сложной программой, то и схема получается сложной, и будет проще изобразить ее в виде плана, а не графически. PGP имеет несколько средств безопасности, так что здесь показано только одно из нескольких деревьев атак на PGP. В нашей схеме цель состоит в том, чтобы прочитать сообщение, зашифрованное с помощью PGP. Другими мишенями могут быть: подделка подписи, изменение подписи в письме, незаметное изменение сообщения, подписанного или зашифрованного с помощью PGP.
Если компьютерная программа допускает изменение (с помощью троянского коня) или порчу (с помощью вируса), то ее можно использовать для того, чтобы PGP создавал незащищенную пару (открытый – закрытый) ключей (например, чтобы факторизация осуществлялась на основе множителей, известных нападающему).
Цель: прочитать сообщение, зашифрованное PGP (ИЛИ)
1. Прочитать сообщение, зашифрованное PGP
1.1. Расшифровать сообщение (ИЛИ)
1.1.1. Взломать асимметричное шифрование (ИЛИ)
1.1.1.1. Атаковать «в лоб» асимметричное шифрование (ИЛИ)
Можно подбирать возможные ключи с помощью (известного) открытого ключа получателя до нахождения совпадения. Эффективность этого нападения значительно уменьшается с помощью произвольной избыточной информации, вводимой в процессе симметричного шифрования.
1.1.1.2. Математически взломать асимметричное шифрование (ИЛИ)
1.1.1.2.1. Взломать RSA (ИЛИ)
На сегодня неизвестно, равнозначен ли взлом RSA разложению на множители.
1.1.1.2.2. Разложение на множители RSA или вычисление дискретного логарифма для схемы Эль-Гамаля.
Каждое из этих действии требует решения множества теоретических проблем, которые в настоящий момент кажутся очень сложными.
1.1.1.3. Криптоанализ асимметричного шифрования
1.1.1.3.1. Общий криптоанализ RSA и схемы Эль-Гамаля (ИЛИ)
Способы общего криптоанализа RSA или Эль-Гамаль не известны. Криптоанализ одного зашифрованного текста даст общий подход для взламывания RSA и схемы Эль-Гамаля.
1.1.1.3.2. Использование уязвимых мест RSA и Эль-Гамаля (ИЛИ)
В RSA есть несколько уязвимых мест; тем не менее PGP устраняет большую часть угроз, с ними связанных.
1.1.1.3.3. Тайминг-атаки (атаки, основанные на сравнительных измерениях времени) на RSA и Эль-Гамале.
Тайминг-атаки на RSA уже известны, они вполне могут успешно применяться и против схемы Эль-Гамаля. Однако эти атаки требуют низкоуровневого контроля за компьютером получателя в то время, как он расшифровывает послание.
1.1.2. Взломать симметричный ключ
1.1.2.1. Взломать симметричный ключ с помощью атаки «в лоб» (ИЛИ)
Все алгоритмы шифрования с помощью симметричного ключа для PGP имеют ключи размером не менее 128 бит. Это делает нереальной лобовую атаку.
Атака «в лоб» в некоторой степени облегчается при включении избыточной информации в начало всех зашифрованных сообщений. См. OpenPGP RFC[54].
1.1.2.2. Криптоанализ шифрования с помощью симметричного ключа Алгоритмы шифрования с помощью симметричного ключа (поддерживаемые PGP 5.x): IDEA, 3-DES, CAST-5, Blowfish и SAFER-SK 128. Эффективные методы для общего криптоанализа этих алгоритмов не известны.
1.2. Другими способами установить симметричный ключ, используемый для шифрования посланий
1.2.1. Вынудить (обманом) отправителя использовать открытый ключ получателя, чей закрытый ключ известен, для шифрования сообщения, (ИЛИ)
1.2.1.1. Заставить отправителя поверить, что некий подложный ключ (секретный ключ которого известен) – это ключ адресата.
1.2.1.2. Убедить отправителя зашифровать послание не одним-единственным ключом: настоящим ключом получателя и другим, секретный ключ которого известен.
1.2.1.3. Сделать так, чтобы сообщение было зашифровано некоторым другим открытым ключом, происхождение которого отправителю неизвестно Этого можно добиться, запустив программу, которая заставит пользователя поверить, что используется правильный ключ, тогда как на самом деле шифрование производится другим ключом.
1.2.2. Заставить получателя подписать зашифрованный симметричный ключ (ИЛИ)
Если адресат слепо подписывает зашифрованный ключ, то он невольно открывает незашифрованный ключ. Ключ достаточно короток, поэтому хэширование не обязательно перед подписыванием. Или если хэш-функция сообщения соответствует зашифрованному ключу, то получателю можно предложить подписать сообщение (или его хэш-функцию).
1.2.3. Контроль памяти компьютера отправителя (ИЛИ)
1.2.4. Контроль памяти компьютера получателя (ИЛИ)
Незашифрованный симметричный ключ должен храниться где-нибудь в памяти во время шифрования и дешифрования. Если память доступна, это дает повод завладеть ключом и прочитать послание.
1.2.5. Определить ключ по генератору случайных чисел (ИЛИ)
1.2.5.1. Определить состояние генератора случайных чисел в момент шифрования послания (ИЛИ)
1.2.5.2. Внедрить программу (вирус), которая определенным образом изменит состояние генератора случайных чисел (ИЛИ)
1.2.5.3. Внедрить программу, которая непосредственно повлияет на выбор симметричных ключей
1.2.6. Внедрить вирус, который откроет симметричный ключ 1.3. Заставить получателя (помочь) расшифровать послание (ИЛИ)
1.3.1. Атаковать симметричный ключ с помощью зашифрованного текста (ИЛИ)
Шифрование в режиме обратной связи, используемое PGP, совершенно не защищено от таких атак. Пересылая адресату тот же ключ (или зашифрованный ключ) вместе с измененным текстом, можно заполучить полное содержание письма[55].
1.3.2. Атаковать открытый ключ с помощью избранного зашифрованного текста (ИЛИ)
Так как RSA и схема Эль-Гамаля достаточно гибки, можно внести определенные изменения в зашифрованный симметричный ключ. Этот измененный (зашифрованный) ключ можно переслать с подлинным сообщением. Это дает возможность атаковать симметричные алгоритмы. Или можно найти слабый зашифрованный текст, и его шифрование с помощью алгоритма симметричного ключа предоставит информацию об измененном ключе, что позволит получить сведения о подлинном ключе.
1.3.3. Отправить любое сообщение адресату (ИЛИ)
Если получатель автоматически расшифровывает сообщение и отвечает на него, то отправитель получит образец шифрования известного открытого текста.
1.3.4. Контроль исходящей почты получателя (ИЛИ)
Если получатель отвечает на сообщение без использования шифрования, то можно собрать информацию о полученном им сообщении.
1.3.5. Сфальсифицировать поля «ответить» или «от кого» подлинного сообщения (ИЛИ)
В этом случае получатель может послать ответ по фальшивому адресу электронной почты, и даже если послание засекречено, оно будет зашифровано открытым ключом, секретный ключ которого известен.
1.3.6. Прочитать послание после того, как оно будет расшифровано получателем
1.3.6.1. Скопировать сообщение с жесткого диска или из виртуальной памяти компьютера (ИЛИ)
1.3.6.2. Копировать сообщение с резервной копии, хранящейся на магнитной ленте (ИЛИ)
1.3.6.3. Контроль сетевого трафика (ИЛИ)
1.3.6.4. Использовать средства приема электромагнитного излучения для считывания сообщения, выведенного на экран (ИЛИ)
1.3.6.5. Получение сообщения с устройств вывода
1.3.6.5.1. Получить текст с бумажной распечатки
1.3.6.5.2. Получить текст с фоточувствительного барабана принтера
1.3.6.5.3. Подслушать передачу информации с компьютера на принтер
1.3.6.5.4. Получить информацию из памяти принтера.
1.4. Добыть секретный ключ получателя
1.4.1. Разложение на модули RSA или вычисление дискретного логарифма для схемы Эль-Гамаля (ИЛИ)
Оба эти способа требуют решения множества теоретических вопросов, которые в настоящее время представляются очень сложными.
1.4.2. Получить секретный ключ получателя из его связки ключей (ИЛИ)
1.4.2.1. Добыть зашифрованную связку ключей получателя (И)
1.4.2.1.1. Скопировать его с жесткого диска пользователя (ИЛИ)
1.4.2.1.2. Скопировать его резервную копию (ИЛИ)
1.4.2.1.3. Контроль сетевого трафика (ИЛИ)
1.4.2.1.4. Внедрить вирус или закладку для раскрытия копии зашифрованного секретного ключа
Недавно созданный вирус Melissa как раз подходит для такого случая. Существуют и другие возможности: сделать файл открытым для чтения или поместить его в Интернете.
1.4.2.2. Расшифровать секретный ключ
1.4.2.2.1. Взломать зашифрованное с помощью алгоритма IDEA сообщение (ИЛИ)
1.4.2.2.1.1. Взломать IDEA с помощью атаки «в лоб» (ИЛИ)
IDEA использует 128-битовые ключи. Поэтому успешная атака «в лоб» нереальна.
1.4.2.2.1.2. Криптоанализ IDEA
Эффективные методы криптоанализа IDEA не известны
1.4.2.2.2. Узнать пароль
1.4.2.2.2.1. Контроль клавиатуры в момент введения пользователем пароля (ИЛИ)
1.4.2.2.2.2. Убедить пользователя открыть пароль (ИЛИ)
1.4.2.2.2.3. Использовать программу, запоминающую нажатия на клавиши, когда пользователь вводит пароль (ИЛИ)
1.4.2.2.2.4. Угадать пароль
1.4.3. Контроль памяти получателя (ИЛИ)
Когда пользователь расшифровывает полученное письмо, секретный ключ должен помещаться где-нибудь в памяти.
1.4.4. Внедрить вирус для раскрытия секретного ключа
На самом деле более изощренным является способ, указанный в пункте 1.4.2.1.4, где вирус дожидается расшифровки секретного ключа.
1.4.5. Создать для получателя незащищенную пару ключей (открытый – закрытый)
При рассмотрении схемы сразу становится очевидным, что взлом RSA и IDEA алгоритмов шифровки – не самое выгодное нападение на PGP. Существует множество способов считывания посланий, зашифрованных PGP. Вы можете подсмотреть изображение на экране, когда получатель расшифровывает и читает послание (используя троянского коня вроде Back Orifice, приемник TEMPEST или скрытую камеру), завладеть секретным ключом, после того как пользователь введет пароль (с помощью Back Orifice или специального компьютерного вируса), получить пароль (с помощью программы, запоминающей ввод с клавиатуры, приемника TEMPEST или Back Orifice) или попытаться овладеть паролем «в лоб» (это будет в меньшей степени энтропией, чем генерировать 128-битовые ключи IDEA). Выбор алгоритма и длина ключа – наименее существенные вещи из тех, которые могут сокрушить всю систему безопасности PGP.
Ниже приведена более общая схема: цель состоит в прочтении определенного сообщения или во время пересылки, или на одном из двух компьютеров.
Задача: прочитать определенное сообщение электронной почты, посланное с одного компьютера, использующего Windows 98, на другой.
1. Убедить отправителя показать письмо (ИЛИ)
1.1. Подкуп
1.2. Шантаж
1.3. Принуждение с помощью угроз
1.4. Обман
2. Прочитать сообщение, когда оно вводится в компьютер (ИЛИ)
2.1. Улавливать электромагнитное излучение экрана компьютера (Мера противодействия: использовать TEMPEST)
2.2. Визуально контролировать экран компьютера
2.3. Контролировать видеопамять
2.4. Контролировать шнур для подключения дисплея
3. Прочитать сообщение, хранящееся на диске отправителя (контрмера: использовать SFS для шифрования данных на жестких дисках) (И)
3.1. Получить доступ к жесткому диску (контрмера: установить замки на все двери и окна)
3.2. Считать файл, защищенный SFS
4. Прочитать сообщение, когда оно пересылается от отправителя к получателю (контрмера: использовать PGP) (И)
4.1. Перехватить сообщение во время пересылки (контрмера: использовать программу шифрования транспортного уровня)
4.2. Прочитать сообщение, зашифрованное PGP
5. Убедить получателя показать сообщение (ИЛИ)
5.1. Подкуп
5.2. Шантаж
5.3. Принуждение с помощью угроз
5.4. Обман
6. Подсмотреть сообщение во время его прочтения (ИЛИ)
6.1. Принимать электромагнитное излучение экрана монитора (контрмера: использовать TEMPEST)
6.2. Следить за изображением на экране
7. Прочитать сообщение, хранящееся на диске получателя (ИЛИ)
7.1. Получить сообщение с жесткого диска после его расшифровки (контрмера: использовать SFS для шифровки данных на диске) (И)
7.1.1. Получить доступ к жесткому диску (контрмера: установить замки на двери и окна)
7.1.2. Считать файл, зашифрованный SFS
7.2. Получить резервную копию расшифрованного сообщения
8. Получить бумажную распечатку сообщения (контрмера: хранить бумажные копии в сейфе) (И)
8.1. Получить доступ к сейфу
8.2. Открыть сейф
9. Украсть компьютер отправителя и попытаться извлечь из него сообщение
10. Украсть компьютер получателя и попытаться извлечь из него сообщение
Как создавать дерево атак? Вначале определите возможные цели нападения. Каждая цель формирует отдельное дерево атак, хотя различные деревья могут иметь общие узлы и одно дерево может являться частью другого. Затем обдумайте все возможные виды нападений на каждую цель и включите их в схему. Повторяйте все действия, спускаясь вниз по дереву, пока не закончите. Покажите схему еще кому-нибудь, чтобы он тоже поработал над ней. Проделывайте это столько раз, сколько потребуется; возможно, на анализ уйдет несколько месяцев.
Этот процесс требует творческого подхода, но часто вместо мозгового штурма для решения конкретной задачи используется рутинная методика. Не забывайте высматривать новые формы атак в ландшафте уязвимых точек и делайте это при исследовании каждого шага возможного нападения. Конечно, всегда есть вероятность, что какой-то вид нападения вы упустите из виду, но со временем все у вас будет получаться хорошо. Как и всякий другой вид исследования проблем безопасности, создание дерева атак требует определенного подхода и практических навыков.
Создав однажды дерево атак и проанализировав значения всех его узлов (эти значения будут меняться со временем, поскольку вы будете уточнять сведения о возможных нападениях), вы сможете использовать эту схему для принятия решений по вопросам безопасности. Значения корневого узла позволяют оценить степень уязвимости цели. Вы сможете определить, уязвима ли система для отдельных видов атак, например распределенной атаки, приводящей к отказу в обслуживании. Вы можете использовать дерево атак для того, чтобы очертить круг допущений, исходя из которых решаются вопросы безопасности системы: например, средства безопасности PGP созданы в предположении, что никто не сможет подкупить программиста[56]. Вы можете оценить последствия изменений в системе или значение вновь обнаруженного слабого места; вычислить новые значения узлов на основе полученной информации и определить, как это влияет на узел, содержащий цель. И наконец, вы можете сравнивать и классифицировать виды нападений по затратам, вероятности успеха и т. д.
Такого рода исследования приводят к удивительному выводу о том, что кажущиеся уязвимыми места на самом деле таковыми не являются. Те, кто используют PGP, обычно беспокоятся о длине ключа: что следует предпочесть – 1024-битовый RSA или 2048-битовый? Схема нападения показывает, что длина ключа RSA не имеет значения. Существует множество других видов нападений, намного более простых, чем взлом открытого ключа: внедрение программы, запоминающей ввод с клавиатуры, изменение программы на жестком диске жертвы. Увеличение длины ключа с 1024 до 2048 бит нисколько не усложняет дерево атак; гораздо более опасны нападения, направленные на преодоление мер компьютерной безопасности. Деревья атак позволяют оценить перспективы системы в целом.
Дерево атак обладает еще одним ценным свойством: содержащиеся в нем сведения остаются актуальны в дальнейшем. Однажды построив дерево атак PGP, вы сумеете использовать его в любой другой ситуации, когда речь идет о PGP. Эта схема может быть включена в другую, более обширную. Например, на рис. 21.2 представлена схема, целью которой является прочтение определенного письма, посланного с одного компьютера, использующего Windows 98, на другой. Если вы посмотрите на терминальные узлы дерева, то заметите, что целые деревья атак на PGP и на сейф вставлены в этот план нападения.
Такая возможность расширения схемы означает, что вам не обязательно знать все на свете. Если вы используете PGP, то вам не нужно знать детали дерева атак на PGP; все, что вы должны знать, – это значения корневого узла. Если вы эксперт в области компьютерной безопасности, вам не обязательно быть в курсе, насколько трудно взломать сейф определенной модели, нужна оценка значений корневого узла. Создав однажды библиотеку деревьев атак на определенные виды компьютерных программ, дверные и оконные замки, на сетевые протоколы безопасности и т п., вы можете затем использовать их где угодно.
Мы уже неоднократно затрагивали тему испытания средств безопасности. В главе 7 обсуждался выбор криптографических примитивов. Там же была выдвинута идея, что наилучшим способом проверки надежности криптографии является открытый криптоанализ, проводимый в течение многих лет. В главе 8 мы рассматривали различные стандарты безопасности компьютера – Оранжевую Книгу и Общие Критерии, а также проверку их соответствия этим стандартам. В главе 13 обсуждались надежность программного обеспечения и то, как ошибки оборачиваются уязвимостью. Испытания позволяют проверить работоспособность системы безопасности: одно дело смоделировать угрозы, разработать политику безопасности и применить меры противодействия, но будут ли эти меры работать на самом деле? Несомненно, вы уже приобрели солидный брандмауэр или антивирусную программу, или VPN (виртуальную частную сеть), или систему защиты от мошенничества для платного телевидения, или систему биометрического контроля, или основанную на использовании смарт-карт систему расчетов, или программу шифрования электронной почты и т. п., но достаточно ли прочна их защита? Большинство программных продуктов ненадежны, и причина кроется в недостаточности тестирования.
Провести правильное испытание средств безопасности не удается по нескольким причинам. Во-первых, изъяны в системе защиты могут возникать когда угодно: при разработке модели безопасности, при создании системы, при реализации, они могут появиться в алгоритмах и протоколах, в исходном коде, при взаимодействии человека с компьютером, в используемой компьютерной системе (в аппаратной части, операционной системе или другом программном обеспечении). Во-вторых, одно-единственное упущение способно лишить продукт защиты. Вспомните, что безопасность – это цепь, надежность которой определяется самым слабым ее звеном. В-третьих, и это наиболее важно, эти недостатки не могут быть обнаружены во время бета-тестирования. Безопасность никак не связана с функционированием. Программы шифрования в состоянии работать нормально, будучи совершенно незащищенными. Недостатки остаются необнаруженными, пока кто-нибудь специально не примется искать их.
На протяжении всей книги я подчеркивал, насколько трудно обеспечить действительную безопасность. Одно дело – спроектировать систему обороны, другое – должным образом реализовать ее, третье – исключить влияние ятрогенных эффектов,[57] но совсем другое – провести испытания и убедиться в том, что все сделано правильно.
Раньше я был президентом Counterpane Systems, консультационной компании по вопросам шифрования и безопасности. Большую часть времени я тратил на оценку продуктов компьютерной безопасности. Как правило, меня приглашали, когда продукт был почти готов, чтобы проверить, действительно ли он безопасен. Более разумные заказчики обращались ко мне на раннем этапе разработок, чтобы удостовериться в безопасности разработки. Иногда я оценивал готовый продукт, основанный на решениях, которые были проанализированы мною ранее. Эта глава – квинтэссенция того опыта.
Перечитайте главу 13, посвященную надежности программного обеспечения, найдите словосочетание «компьютер Сатаны» и вспомните, как продукты безопасности должны работать при появлении противника. Теперь подумайте, как и зачем проводят функциональное испытание.
При функциональном испытании невозможно найти недостатки системы безопасности. В отличие от многих других условий проекта, безопасность не связана с функционированием. Если вы создаете код для текстового процессора и хотите проверить функцию печати, то должны подключить принтер и посмотреть, печатает ли он. Если вы находчивы, то испытаете несколько типов принтеров и напечатаете различные виды документов. Все просто: если программное обеспечение работает как следует, то вы в этом убедитесь.
Безопасность – нечто иное. Представьте, что вы встраиваете функцию шифрования в тот же текстовой процессор. Затем проверяете его таким же образом: шифруете ряд документов, затем расшифровываете их. Дешифрование восстанавливает открытый текст, а зашифрованный текст похож на бессмыслицу. Все это великолепно работает. К сожалению, эти испытания ничего не говорят о безопасности шифрования.
Функциональное тестирование хорошо для обнаружения случайных погрешностей, которые приводят к тому, что компьютерная программа ведет себя непредсказуемо, в основном перестает работать. Недостатки системы защиты не проявляются столь эффектно; обычно они невидимы, пока не станут известны злоумышленникам. Испытание средств безопасности – это не беспорядочное использование программного обеспечения и наблюдение за его работой. Это сознательное выявление проблем, создающих угрозу безопасности. Функциональное испытание никогда не выявило бы, что нападающий может создать веб-страницу, которая будет запускать некоторую программу на компьютере пользователя, просматривающего эту страницу с помощью Microsoft Internet Explorer 3.0 или 3.0.1. Как раз этого и не удастся обнаружить при бета-тестировании.
Представьте, что производитель поставляет программный продукт, не прошедший вообще никакого функционального испытания: ни внутри компании, ни с помощью бета-тестирования. Производитель лишь заверяет, что программа должным образом компилирована. Вероятность того, что программное обеспечение не имеет ошибок, в этом случае равна нулю. Даже если это простой продукт, все равно он содержит тысячи ошибок и будет все время ломаться самым неожиданным образом. Он не будет работать.
А теперь представьте, что производитель продает программный продукт без какого-либо испытания средств безопасности. Правда, теперь производитель проводит обычные функциональные испытания. Но вероятность того, что этот продукт не содержит ошибок в защите, также равна нулю.
К сожалению, слишком многие программные продукты, даже продукты безопасности, имеют те же проблемы.
Даже достаточно полный анализ безопасности не сильно поможет. Я обнаруживал от 5 до 15 ошибок на тысячу строк кода, и это – в конечном продукте, после всех испытаний. Мы все знаем, какое огромное количество ошибок можно найти в операционной системе Microsoft, даже после сотен человеко-часов испытаний. Точно так же дни, недели и даже месяцы исследования безопасности не приведут ни к чему.
Другая сторона проблемы состоит в том, что полноценное исследование безопасности может быть проведено только опытными специалистами. Вспомним, что о продукте безопасности в лучшем случае можно будет сказать: «Я не могу взломать его, и другие умельцы также не смогут сделать этого». Только опытные специалисты в области безопасности в состоянии действительно обнаружить недостатки системы, поэтому качество любого испытания зависит от профессионализма исследователей.
Иногда недостатки защиты обнаруживаются случайно. Хороший пример – изъян в защите пароля Microsoft Bob: она позволяет повторно вводить пароль и после трех неправильных попыток. Хотя это – исключение. Вероятность случайного попадания на какую-либо ошибку в системе безопасности очень низка, иногда она стремится к нулю. Более эффективен целенаправленный поиск.
К сожалению, еще не создана такая полезная вещь, как всеобъемлющий справочник по вопросам безопасности. Те из нас, кто работают в этой области, зачастую создавали свои собственные справочники, содержащие перечни возможных нападений и уязвимых мест, которые встречаются в коммерческих продуктах, описаны в научной литературе или придуманы нами самими. Подобные перечни огромны – пару лет назад я составил такой список из 759 нападений, но и он не был исчерпывающим.
Нетрудно провести испытания на предмет некоторой заданной уязвимости. Иные слабые места легче найти, чем другие. Поиск каждого узкого места требует много времени, но приближает к цели. Всестороннее испытание на предмет всех известных слабых мест все еще остается трудным делом, так как для этого нужно постоянно обновлять и пополнять их перечень. Это отнимает время, но все же осуществимо. Проблема в другом: испытание на предмет всех возможных слабых мест невозможно.
Обратите внимание, я не говорю «очень трудно» или «невероятно трудно». Я сказал «невозможно».
Поиск всех возможных слабых мест предполагает исследование даже тех из них, о которых ни вы, и ни кто-либо еще не могли и подумать. Если вы строите мост, вы должны быть готовы гарантировать, что мост не обрушится в результате действия природных сил. Вероятно, вы сможете составить список воздействий, к которым мост будет устойчив. Вы даже можете предусмотреть защиту моста от возможных террористических актов. Но вы никогда не станете утверждать, что мост устоит перед какой-либо неизвестной технологией, которая еще не создана.
Все сказанное касается не только программного обеспечения широкого потребления. Эти рассуждения в равной мере относятся и к аппаратным средствам безопасности, и к большим частным системам, и к военным аппаратным и программным средствам, и ко всему остальному. В том числе к технологиям безопасности, не имеющим отношения к компьютерам. Это общие проблемы.
Что делать разработчику системы? В идеале – он должен перестать полагаться на своих собственных проектировщиков и бета-тестирование. Ему следует нанять независимых экспертов в области безопасности, которые проведут испытания. На них придется истратить значительные средства; скорее всего, это потребует стольких же усилий, сколько и сама разработка и реализация.
Но никто, за исключением военных, не собирается поступать таким образом. И даже они, видимо, не всегда делают это, а только когда речь идет о системах управления ядерным вооружением.
Производители же намерены поступать, как всегда, то есть продавать ненадежные продукты, и лишь затем устранять изъяны в защите, которые будут обнаружены и преданы гласности. Они будут делать из ряда вон выходящие заявления и надеяться, что никто не призовет их к ответу. Они будут проводить конкурсы по взлому их систем и устраивать другие рекламные трюки. Они станут выпускать новые версии программ так быстро, что к тому времени, когда кто-нибудь потрудится закончить анализ безопасности, они смогут сказать: «Да, но это было в гораздо более ранней версии». Однако продукты все равно останутся ненадежны.
Каждый день обнаруживаются новые изъяны в безопасности представленных на рынке программных продуктов. Их раскрывают сами клиенты, исследователи (ученые и хакеры) и преступники. Насколько часто – это зависит от известности продукта, упорства исследователей, сложности программы и качества проведенного производителем испытания средств безопасности. Если речь идет о популярной операционной системе, то это случается несколько раз в неделю. В случае малоизвестной программы шифрования прореха обнаруживается лишь однажды за все время ее существования.
Так или иначе, кто-нибудь да находит уязвимые места в системе безопасности. И что дальше?
Существует несколько вариантов его дальнейших действий. Он может сохранять все в тайне и никому не сообщать об этом или поделиться только со своими друзьями. Он может уведомить производителя. Или оповестить своих собственных клиентов, постаравшись не раскрывать ошибку, чтобы только его продукты могли защищать пользователя (мне встречались компании, поступавшие таким образом). Или предать гласности свою находку. (Конечно, он всегда может использовать в преступных целях свои знания об уязвимых местах, но давайте предполагать, что он – честный человек.) Практика предания гласности, известная как полное раскрытие (full disclosure), стала популярна в последние годы. И остается предметом горячих споров.
Но сначала немного истории.
В 1988 году, после того как использование червя Морриса продемонстрировало, насколько легко провести нападение через Интернет, Агентство перспективных исследовательских программ (Defense Advanced Research Projects Agency, DARPA) начало финансирование группы, которая, как предполагалось, будет координировать ответные меры безопасности, повышать уровень осведомленности в вопросах безопасности и вообще делать много полезных вещей. Она называется Группой компьютерной «скорой помощи» (Computer Emergency Response Team, CERT), ее центральное подразделение находится в Университете Карнеги-Меллона в Питсбурге.
Все эти годы CERT действует как центр обмена информацией по вопросам уязвимости систем безопасности. Как и предполагалось, люди сообщают в CERT обо всех обнаруженных ими уязвимых местах. CERT проверяет, действительно ли они существуют, уведомляет об этом производителя и после того, как последний исправит ошибки, публикует подробные сведения о них (и о сделанных исправлениях).
Это хорошо выглядит в теории, но плохо работает на практике. Были три главные претензии к этой системе. Во-первых, CERT медленно проверяла наличие уязвимых мест, поскольку получала множество сообщений и не успевала справляться с работой. Во-вторых, производители не торопились исправлять ошибки, о которых им сообщала CERT, поскольку она не публиковала никакие сведения, прежде чем ошибки были исправлены, и не было необходимости в спешке. И в-третьих, CERT не сразу публиковала сообщения даже после того, как все исправления были сделаны.
Практика полного раскрытия возникла из-за общего разочарования в описанной процедуре. Конференции в Интернете, такие как Bugtraq и NT Bugtraq (организованные в 1993 и в 1997 годах соответственно), превратились в форум для людей, считавших, что производителей извещать бесполезно, а единственный способ повысить безопасность – предавать гласности случаи, когда ее средства оказываются ненадежны. Это была реакция протеста на «башню из слоновой кости», воздвигнутую учеными, хранившими в тайне свои познания. Как писал один хакер: «Теперь обсуждение проблем безопасности не будет ограничено закрытыми списками рассылки так называемых специалистов по вопросам безопасности, и подробности можно будет найти не только в пространных, перегруженных деталями академических статьях. Напротив, информация станет общедоступной, и каждый сможет использовать ее по своему усмотрению».
Сегодня многие исследователи публикуют в конференциях сообщения об обнаруженных ими уязвимых местах, иногда делая также сообщения в печати. Средства массовой информации и компьютерная пресса перепевают в рассылках эти сообщения, обрастающие слухами и домыслами. (Вот почему за прошедшие годы в прессе было так много подобных историй.) Производители стараются «залатать» прорехи в защите сразу, как только они становятся достоянием гласности, поэтому они также могут публиковать сообщения о том, как быстро и тщательно они исправляют ошибки. Системы безопасности совершенствуются намного быстрее благодаря практике полного раскрытия.
В то же время хакеры используют эти рассылки для сбора информации об уязвимых местах и для написания вредоносных программ. Некоторые виды нападений довольно сложны, но те, кто способен разобраться в них, могут составить программы с интерфейсом вида «выбрать и щелкнуть», которые сумеют использовать и все остальные. Это – обратная сторона полного раскрытия, которая может быть истолкована таким образом, что публикация подробностей об уязвимых местах приносит больше вреда, чем пользы, вооружая хакеров средствами для взлома системы. Те, кто придерживается такой точки зрения, считают, что средства безопасности лучше работают, если их уязвимые места не обнажаются перед публикой.
Сторонники полного раскрытия возражают на это, заявляя, что такие представления основаны на далеко не всегда верном предположении, будто сведения об уязвимых местах предает гласности обязательно тот, кто первым их обнаружил. Иногда уязвимые места становятся известны нападающим за месяц или даже год до того, как их обнаружит производитель (эти сведения тайно распространяются в хакерском подполье). Как говорится, пример поучительный. Чем скорее уязвимые места станут общеизвестны и будут исправлены, тем лучше будет всем.
Действительность показывает, что «латание» слабых мест не является решением проблемы; многие системные администраторы не используют «заплаты», сделанные производителями. Многие компании лукавят, заявляя: «Мы выпустили "заплату". Что еще мы можем сделать?» В физическом мире товары с браком часто возвращают продавцу. Но это никогда не случается в компьютерном мире. Даже после того как производитель устраняет ошибки и стихают волнения в прессе, системы так и остаются уязвимыми.
Следующий пример поясняет сказанное. В апреле 1999 года кто-то обнаружил брешь в Microsoft Data Access Components, которая позволяла контролировать удаленную систему Windows NT. Об этом сразу же было сообщено в открытой конференции. Хотя ее модератор утаил от публики подробности этой опасности больше чем на неделю, все же какой-то хакер провел анализ и выяснил детали, которые позволяли использовать уязвимость.
Примерно в то же самое время Microsoft выпустила «заплату», которая должна была препятствовать нападающим в использовании уязвимости пользовательских систем. Microsoft также издала бюллетень по этой теме безопасности и опубликовала несколько других сообщений по вопросам безопасности.
Но «заплата» Microsoft не смогла чудесным образом устранить причину опасности. В тот же год, во время празднования Дня Всех Святых хакеры, воспользовавшись уязвимостью системы, стерли более чем 25 веб-сайтов, основанных на NT, принадлежавших администраторам безопасности, которые не беспокоились (или даже не знали, что следовало побеспокоиться) об обновлении конфигурации в течение шести месяцев.
Вот и все в двух словах.
Microsoft никогда не исправила бы это уязвимое место, если бы не существовал сценарий его использования (exploit script). В других случаях Microsoft заходила так далеко, что или полностью игнорировала проблему, объявляя опасность «чисто теоретической» и поэтому не заслуживающей внимания, или утверждала, что исследователь лжет. Вопросы болевых точек безопасности беспокоят Microsoft лишь в связи с формированием общественного мнения. Когда возникает проблема, компания что-нибудь предпринимает, но редко заранее. Таким образом, огласка сведений об уязвимых местах приводит к их устранению.
Эти сведения также позволяют написать имитатор атаки[58], давая возможность группе преступных хакеров извлечь выгоду из уязвимых мест как (1) в промежутке времени между их обнаружением и опубликованием «заплаты», так и (2) после этого, поскольку многие системные администраторы не используют «заплаты» Microsoft.
Что лучше: публиковать сведения или сохранять их в тайне?
Иногда это зависит от производителя. Большинство компаний непредвзято реагируют на сообщения о нападениях на их системы. Они признают и устраняют проблему, помещают ее решение на свой веб-сайт, и все приходит в норму. Другие производители реагируют иначе; некоторые компании, предоставляющие услуги цифровой сотовой связи, отвечают ложью и нападками на публикации об изъянах алгоритмов шифрования, а не исправляют положение. Индустрия развлечений преследует в судебном порядке людей, показавших, насколько паршиво обеспечена безопасность DVD-плейеров, и людей, впоследствии говоривших об этом. Вообще говоря, выявленные уязвимые места, которые нелегко устранить (намного труднее внести изменения в 10 миллионов проданных сотовых телефонов, нежели разослать через Интернет решение проблемы программного обеспечения), гораздо более осложняют жизнь компании.
Иногда у исследователя нет выбора. Один служащий Управления национальной безопасности неофициально утверждал, что его коллеги зафиксировали несколько новых нападений в Интернете, но им было запрещено публиковать информацию. Позже некоторые из них были обнаружены другими исследователями, другие остались тайной. Бывает, что у исследователя есть выбор, но он предпочитает молчание. В течение нескольких лет Стив Белловин скрывал написанную им статью о нападениях на систему службы доменных имен (DNS). Белловин и Чесвик преднамеренно не рассказали в своей книге, посвященной брандмауэрам, о синхронных лавинных адресациях в сети.
Netscape обычно предлагала 1000 долларов (и тенниску в придачу) в награду нашедшему дефект в безопасности своего программного обеспечения. Было выписано всего несколько чеков, однако в 1997 году датский хакер нашел прореху в системе безопасности и потребовал большие деньги. Дело обернулось так, что он не получил своих денег: его описание эффектов, связанных с программными ошибками, позволило инженерам Netscape воспроизвести и устранить их и без его помощи. В 2000 году французский исследователь обнаружил, как взломать систему безопасности смарт-карт СВ (Groupement des Cartes Bancaries). Затем, по сведениям из разных источников, он то ли предложил свои услуги, то ли занялся шантажом. В конечном счете он был арестован и осужден условно.
Безопасность рождается в соперничестве, даже в академических «башнях из слоновой кости». Кто-то предлагает новую схему: алгоритм, протокол, техника; другой взламывает ее; кто-то третий все восстанавливает и т. д. Все превращается в забаву. Но когда дело касается уже выпущенных и используемых систем, это может обернуться мошенничеством. Действительно ли выгода от огласки нападения перевешивает возрастание угрозы со стороны противника, получившего сведения о таких возможностях? (На языке Агентства национальной безопасности это называется «выпуском акций».) Почему компания должна наживаться на работе исследователя? Будет ли компания игнорировать проблему до тех пор, пока исследователь не обнародует данные? Заботит ли самого исследователя реакция публики? В любом случае, как вести себя исследователю?
Этот последний вопрос никогда не имел должного обсуждения. Публикация слабых мест безопасности – это своего рода «атака ради огласки»: исследователь хочет увидеть свое имя в газете. Иногда такие сведения разглашает или консультант по вопросам безопасности, или служащий компании, которая занимается оценкой уязвимости или предлагает средства защиты сети. Это особенно верно, если новость появилась в прессе; сообщение в PR Newswire или Business Wire дорого обходится, и никто не будет этого делать, не будучи уверенным, что затраты окупятся.
Вообще я одобряю практику полного раскрытия и думаю, что она скорее укрепляет безопасность, нежели наоборот. Эта книга, которую могут прочитать как хорошие, так и плохие парни, не представляет угрозы безопасности потому лишь, что в ней описаны методы нападений. Точно так же разглашение сведений о слабых местах не то же самое, что их появление. Производители не беспокоятся об устранении обнаруженных, но неопубликованных ошибок (этим грешит не только Microsoft, мы наблюдаем такое почти в каждой крупной компании), поэтому публикация – первый шаг к ликвидации ошибки. Наказывать того, кто разгласил сведения об ошибках, – все равно, что казнить гонца, принесшего дурные вести. Виноват во всем сам производитель, выпустивший ненадежное программное обеспечение.
Но бывают и исключения из правил.
Во-первых, я против такой огласки, которая, прежде всего, сеет панику. Сообщения о слабых местах, о которых нет достаточных свидетельств, очень вредны. (Пример тому – случай, когда кто-то обнаружил переменную, содержащую три буквы NSA, в шифровании API Microsoft[59] и объявил, что Агентство национальной безопасности (National Security Agency) установило лазейку в изделия Microsoft.) Так же плохи сообщения об уязвимых местах в ответственных системах, которые не могут быть легко устранены и знания о которых способны причинить серьезный вред (например, программное обеспечение управления воздушным движением). Я полагаю, что это остается на совести исследователей – определять баланс выгоды от раскрытия уязвимости и связанных с этим опасностей.
Во-вторых, я верю в эффективность предварительного уведомления производителей. CERT впадает в крайность, давая иногда компаниям годы для разрешения проблемы. В результате многие производители не принимают уведомление всерьез. Но если предупреждение о том, что сведения об уязвимых местах будут опубликованы через месяц, исходит от исследователя, то может оказаться, что такое сообщение появится одновременно с объявлением о сделанных исправлениях. Это выгодно каждому.
И в-третьих, я полагаю, что эта практика заходит слишком далеко. Написание научных статей по вопросам уязвимости помогает исследованиям и помогает в разработке систем безопасности. Написание демонстрационного кода – часто необходимая часть исследования. С другой стороны, массовое распространение средств нападения – плохая идея. Создание хакерских инструментов с интерфейсом «выбрать и щелкнуть», которые может использовать каждый начинающий хакер, не приводит ни к чему хорошему. Эта тенденция помогает преступникам и делает вычислительные сети менее безопасными. Она не решает проблему, а создает новые.
Иногда трудно определить, что хорошо и что плохо. Средства оценки уязвимости могут использоваться как для укрепления безопасности, так и для взлома системы. Средства удаленного доступа во многом похожи на Back Orifice. Если такая компания, как Microsoft, лживо отрицает в прессе реальность обнаруженных уязвимых мест, будет ли правильным опубликовать реальный сценарий нападения? Я считаю, что нужно содействовать решению проблем, а не создавать новые. Полное раскрытие – это часть решения. Устранение проблемы и усиление безопасности сети – тоже часть решения. Я не против тех средств, которые можно применять как в хороших, так и в дурных целях, но я не приемлю те средства, которые предназначены только для скверных дел.
В холле здания ЦРУ высечена в камне цитата из Библии:
«И познаете истину, и истина сделает вас свободными»
Знающие правду способны использовать эти знания, чтобы добиться победы над теми, кто не знает ее (или кто отказывается поверить в нее). Полное раскрытие приводит нас ближе к истине, чем что-либо другое.
В главе 7 я рассказывал о преимуществах использования открытого, общедоступного шифрования вместо частного, закрытого. Поскольку единственным свидетельством в пользу безопасности криптографических примитивов является длительное исследование многими специалистами, наиболее выгодно сделать их открытыми. Именно этот довод побуждает любого разумного разработчика системы безопасности использовать открытые решения для всего, что связанно с безопасностью, включая открытый исходный код программного обеспечения.
Обратите внимание: безопасность не имеет ничего общего с функциональностью. Поэтому никакое бета-тестирование не поможет выявить недостатки безопасности. Единственный способ обрести уверенность в устойчивости системы к нападениям – это длительное испытание ее специалистами. И только одним способом можно достичь этого – сделать подробности системы общеизвестными.
Детали хорошо спроектированной защиты не являются секретом. В тайне сохраняются лишь некоторые изменяемые параметры: ключи шифрования, пароли, маркеры доступа и т. д. Противоположность этому – «безопасность через засекречивание» (security by obscurity), где сохранение в тайне деталей системы становится условием безопасности. Если система разработана таким образом, то ее защита довольно хрупкая. Как смогли убедиться разработчики системы безопасности цифровой сотовой связи или схемы шифрования DVD, или интерфейса FireWire, рано или поздно потаенное становится явным. Плохо разработанная система защищена, пока детали остаются в секрете, но быстро ломается, как только о них кто-нибудь узнает. Хорошо разработанная система безопасна, даже если ее детали общеизвестны.
Итак, поскольку хорошая разработка системы безопасности не связана с засекречиванием и можно много выгадать, если опубликовать подробности системы безопасности, имеет смысл поступать именно так. Открытые системы, скорее всего, будут тщательно исследоваться, а значит, будут и более надежны, чем закрытые системы.
Эти рассуждения применимы непосредственно к программному обеспечению. Единственный способ найти недостатки безопасности в коде состоит в том, чтобы исследовать его. Это верно для всех кодов – и открытых, и закрытых. И этим не может заниматься кто попало, требуются специалисты в области безопасности программного обеспечения. На протяжении нескольких лет их помощь неоднократно потребуется для оценки безопасности системы с различных точек зрения. Можно нанять таких экспертов, но будет намного дешевле и эффективнее позволить всему обществу заниматься этим. И лучший способ поспособствовать этому – опубликовать исходный код.
Предвижу возражение, что публикация кода подарит нападающим информацию, необходимую для обнаружения и использования уязвимых мест системы. Сохранение кода в тайне, как считается, не позволяет нападающим получить нужную информацию.
Это наивное утверждение. Обнародование исходного кода увеличивает не количество слабых мест, а осведомленность широкой публики. Производители, держащие исходный код в тайне, скорее всего, небрежны. А производители, делающие свой код открытым, имеют больше шансов обнаружить уязвимые места и устранить их. Засекреченное программное обеспечение ненадежно. Публикация исходного кода обеспечивает большую безопасность, чем сохранение его в тайне.
Однако открытое программное обеспечение не гарантирует безопасность. Нужно помнить о двух вещах.
Во-первых, простая публикация кода не означает автоматически, что его станут исследовать на предмет безопасности, и уж конечно не означает, что этим займутся специалисты. Например, исследователи нашли ошибки переполнения буфера в коде, созданном в Массачусетском технологическом институте для Kerberos, через десять лет после выпуска этого кода. Другой открытый модуль – программа Mailman, предназначенная для работы со списками адресатов конференций, – более трех лет имела бросающиеся в глаза недостатки защиты, пока сам разработчик не пересмотрел код и не обнаружил их.
Исследователи безопасности – непостоянные и вечно занятые люди. Они не имеют ни времени, ни склонности исследовать каждую часть опубликованного исходного кода. И хотя полезно сделать исходный код открытым, это не гарантирует безопасность. Я мог бы назвать дюжину библиотек открытого кода программ защиты, о которых никто никогда не слышал. С другой стороны, открытый исходный код защиты различных программных средств UNIX изучался многими профессионалами в области безопасности.
Кроме того, обнародование кода не гарантирует, что проблемы безопасности решаются сразу, как только обнаруживаются. Нет оснований надеяться, что некая часть открытого исходного кода двухлетней давности имеет меньше недостатков, чем часть закрытого кода такого же стажа. Если открытый исходный код интенсивно исследовался, это может быть похоже на правду. Но только то обстоятельство, что часть исходного кода была доступной в течение нескольких лет, само по себе ничего не означает[60].
Я – за открытый исходный код и полагаю, что таким образом можно повысить уровень безопасности. Но программное обеспечение не становится автоматически надежным только потому, что делается открытым, и, наоборот, оно не делается небезопасным, если остается закрытым. Другие отмечали, что открытый код кажется более безопасным, и эта необоснованная вера заставляет людей доверять ему больше, чем следует. Это плохо.
Также обратите внимание, что в этом исследовании полностью игнорируется существенный вопрос о том, как сделать программное обеспечение безопасным в первую очередь на стадии разработки. Использование открытого кода – это, во-первых, стратегия бизнеса и, во-вторых, стратегия безопасности. К сожалению, похоже, что традиционные методы закрытого программного обеспечения более эффективны при создании высококачественного крупного продукта. Возможно, лучше всего в отношении безопасности создать закрытое программное обеспечение и затем сделать его открытым (как поступила Netscape со своим кодом браузера).
Стараясь отвертеться от практики полного раскрытия и использования открытого исходного кода, некоторые компании пытались защитить себя с помощью законодательных мер и прилагали усилия к тому, чтобы обратное проектирование (reverse engineering) было объявлено незаконным. Закон Соединенных Штатов об авторском праве в компьютерной сфере DMCA (Digital Millennium Copyright Act) объявляет обратное проектирование уголовным преступлением, такое же положение содержится в UCITA (Uniform Computer Information Transactions Act). В настоящее время это становится законом в нескольких штатах.
Мы уже знаем, к чему это приводит. Ассоциация контроля за копированием DVD (DVD Copy Control Association) начала судебное преследование тех, кто перепроектировал их схему защиты DVD, и тех, кто создал общедоступные средства, позволявшие использовать слабые места. Эти люди были арестованы. Mattel выиграла дела против хакеров, которые воспроизвели средства безопасности в CyberPatrol – программе, блокирующей доступ к определенным ресурсам.
Налицо опасный прецедент. Законодательными мерами не укрепить безопасность систем и не воспрепятствовать нападающим в поисках слабых мест. Все, на что они годятся, – это дать производителям возможность не беспокоиться по поводу паршивой безопасности своих продуктов и сваливать с больной головы на здоровую. Конечно, легче реализовать плохие средства безопасности и запретить кому бы то ни было обращать на это внимание, чем трудиться над созданием надежной защиты. Несмотря на то что подобные законы помогают сдерживать распространение взломанного программного обеспечения (пример тому – случаи с DVD и Mattel), в конечном счете они надолго останавливают развитие средств безопасности.
Мы часто сталкиваемся с объявлениями: «Компания X предлагает 10 000 долларов каждому, кто прорвется через ее брандмауэр (взломает ее алгоритм, успешно использует ее протокол в мошеннической операции или сделает что-либо подобное)». Эти состязания хакеров проводятся для демонстрации того, насколько сильна и надежна защита объектов, подвергающихся нападениям. Логика здесь примерно такова: «Мы предложили приз за взлом цели, но никто не сделал этого. Значит, цель хорошо защищена».
Но это не так.
Состязания – негодный способ демонстрации безопасности. Очевидно, продукт (или система, протокол, алгоритм), выдержавший испытание, заслуживает не больше доверия, нежели тот, который ему не подвергался. Результаты состязаний вообще не содержат никакой полезной информации. Тому есть четыре основных причины.
Во-первых, состязания в основном нечестны. Криптоанализ в этом случае осуществляется в условиях, когда нападающий знаком со всем, кроме главного секрета. Он имеет доступ к алгоритмам, протоколам, исходному коду. Он знает зашифрованный и открытый тексты. Вероятно, он даже владеет частичной информацией о ключе. И результат криптоанализа может быть каким угодно. Это может быть полный взлом: когда средства безопасности удается преодолеть в разумные сроки. Это может быть доказательство того, что теоретически взлом возможен: результат, который не имеет практического применения, но все-таки показывает, что средства безопасности не так хороши, как было объявлено. Большинство состязаний по хакерству имеют произвольные правила, определяющие, с чем должен работать нападающий и что следует считать удачным взломом. По некоторым правилам алгоритмы не раскрываются.
Состязания по взлому компьютеров ничем не лучше. Они не раскрывают того, как используются программные продукты, поэтому ничего нельзя сказать относительно того, что является причиной взлома: изъяны самого продукта или ошибки, допущенные при его установке или конфигурировании. Они выявляют особенности различных частей системы: если в состязании проверяется надежность брандмауэра, то что можно сказать об уязвимости операционной системы, из-за недостатков которой этот брандмауэр может оказаться неэффективным?
Правила, по которым определяют победителя состязаний, также произвольны. В 1999 году Microsoft установила веб-сервер Windows 2000 и рискнула предложить хакерам взломать его. Внезапно сервер исчез из Интернета. Вскоре он появился вновь, и Microsoft успокоила, что причиной небытия было отключение питания. (Как это ни странно, похоже, что действительно просто забыли установить систему бесперебойного питания и это сказалось на испытании.)
Нечестные соревнования не новы. В середине 1980-х проводили состязание авторы алгоритма шифрования, названного FEAL. Они предложили файл с зашифрованным текстом и обещали награду первому, кто его прочитает. С тех пор алгоритм неоднократно взламывался. Все признают, что FEAL совершенно ненадежен, однако никто так и не был признан победителем.
Во-вторых, результаты состязания невозможно проанализировать. Они представляют собой случайные, бессистемные испытания. Вправе ли мы считать, что работа десяти человек, каждый из которых затратил по 100 часов, соответствует 1000 часов анализа? Может быть, все они пытались провести одни и те же нападения? Обладают ли они достаточной компетенцией для такого исследования, или они только случайные люди, которые услышали о состязании и захотели испытать удачу? Одно только то обстоятельство, что никто не побеждает в конкурсе, не означает, что цель надежно защищена. Из него следует всего лишь, что никто не признан победителем…
В 1999 году журнал PC Magazine объявил одновременно состязания по взлому Windows NT и Linux box. Первой была взломана вторая. Свидетельствует ли это о том, что Linux менее надежен? Конечно, нет; это означает только, что участники игры сначала проникли в Linux box.
В-третьих, объявленная награда редко бывает достаточным стимулом для участия профессионалов в состязаниях. Анализ безопасности требует большого труда. Люди, хорошо разбирающиеся в этих вопросах, берутся за такую работу по разным мотивам (деньги, престиж, борьба со скукой), но стремление выиграть тенниску едва ли побудит их к этому. Профессионалы в области безопасности зарабатывают гораздо больше, занимаясь своей обычной работой на заказчика или публикуя статьи с результатами своих исследований.
Взглянем на ситуацию с позиций материальной заинтересованности. В среднем час работы компетентного аналитика криптографии или ведущего специалиста по компьютерной безопасности стоит 200 долларов. Всего за неделю работы они получают 10 000 долларов. Этого времени недостаточно, чтобы разобраться с кодом. Вознаграждение в 100 000 долларов выглядит соблазнительно, но обратное проектирование – скучное занятие, а для исчерпывающего изучения все равно не хватит времени. Награда в миллион долларов уже вызывает интерес, но большинство компаний не могут позволить себе предложить такую сумму. Да и исследователь не имеет никакой гарантии в получении вознаграждения: он может ничего не найти или, смертельно устав от бесплодных попыток, проиграть кому-то другому, кроме того, компания способна изменить правила игры и ничего не заплатить. Неужели кто-то будет жертвовать своим временем (и рисковать добрым именем) ради рекламной акции какой-то компании?
И в-четвертых, состязания никогда не приводят к положительному результату в отношении безопасности. Если что-то было взломано, понятно, что это ненадежно. Но если цель устояла, это вовсе не означает, что она защищена.
Все эти четыре причины являются общим правилом. Бывают и исключения, но редко. Состязания по взлому RSA, как с помощью разложения на множители, так и путем лобовой атаки на симметричный алгоритм, – все это честные и хорошие соревнования. Эти соревнования успешны не потому, что исследователи борются за денежные призы, а вследствие того, что интерес к проблеме взлома этого алгоритма тем или иным способом присутствует всегда. Просто соревнования фокусируют внимание на том, что само по себе интересно. Конкурсы по взлому AES – больше соревнования, чем криптоаналитические расчеты, но они также были честными.
Состязания, если они правильно проводятся, могут принести пользу в отдельных областях исследований. Они помогают находить недостатки и исправлять их. Но они бесполезны для оценки безопасности. Хозяин может предложить 10 000 долларов тому, кто проникнет в его дом и украдет книгу с определенной полки. Но если никто не сделает этого в установленный срок, то это не значит, что дом надежно защищен. Возможно, никто из потенциальных взломщиков просто не слышал о конкурсе. Возможно, они были слишком заняты другими делами. Возможно, они не знали, как проникнуть в дом, но знали обходной путь: как подделать свидетельство о праве на недвижимость и перевести дом на свое имя. Может быть, они проникли в дом, но осмотрелись и поспешили убраться, прихватив нечто, стоящее больше 10 000 долларов. Поэтому состязания ничего не доказывают.
Состязания по криптоанализу – вообще не более чем реклама продукции. Даже честность устроителей не гарантирует того, что будет проведен анализ безопасности цели. Если цель устоит, это не будет означать, что нет недостатков в ее защите.
Обыкновенные люди (или обычная компания, или заурядное в этом отношении государство) вообще не способны создать свои собственные средства безопасности. Чаще всего они вынуждены выбирать между множеством готовых решений и надеяться на лучшее. Вывод, содержащийся в этой книге, о том, что практически невозможно разработать безопасные программные продукты и что большинство коммерческих продуктов являются небезопасными, звучит не ободряюще. Что может сделать измотанный системный администратор, занятый обеспечением безопасности электронной почты посольства или сети своей компании? Или простой гражданин, обеспокоенный безопасностью систем электронной торговли или сохранением в тайне медицинских сведений?
Первое, что приходит в голову, – а так ли уж это важно? Или, точнее, чья это проблема? Я беспокоюсь только о том, чтобы никто не вмешивался в мои частные дела. Меня мало волнует возможность мошенничества с кредитными карточками Visa. Мои возможные потери ограничены 50 долларами. Я беспокоюсь о сохранении в тайне идентификационного номера моей банковской карточки, потому что если кто-то очистит мой счет, то это будет моей проблемой, а не банка.
Меня также заботят некоторые другие вещи, но я не могу на них повлиять. От меня не зависит, какие брандмауэры и средства защиты базы данных использует IRS (информационно-поисковая система) для защиты моей налоговой информации. Или что использует мой медицинский страховщик для защиты записей о состоянии моего здоровья. Возможно, я могу поменять страховщиков, но в общем я не свободен в своем выборе. (Полагаю, что если бы я был достаточно богат, то мог бы выбирать банки в лучше регулируемых условиях, например в Швейцарии, но большинству из нас это недоступно.) Даже если законы требуют соблюдения тайны (секретности, идентификации, анонимности и неприкосновенности и т. п.), все равно нет никакой гарантии, что люди, ответственные за обеспечение мер безопасности, выполняют свою работу хорошо. Я не могу проверить государственные средства безопасности только потому, что я хочу удостовериться в их эффективности. Печально, но факт – большинство аспектов обеспечения безопасности неподконтрольны простым людям.
Ради интереса давайте представим, что система безопасности находится под вашим контролем: Кроме того, вы несете финансовую ответственность за ее функциональность: вы потеряете деньги, если идентификационная схема будет взломана. Вам предъявят иск в случае нарушения защиты и утечки информации частного характера и т. д. Вы уже оценили риск и решили, что нужно приобрести средства безопасности определенного типа. Как выбрать правильный продукт? Как оценить его возможности?
Проблема состоит в том, что плохие средства безопасности выглядят точно так же, как и хорошие. Я могу предложить два продукта – пару VPN (виртуальных частных сетей), например. Они имеют одинаковые возможности и одинаковые особенности. В них встречаются одинаковые модные словечки: тройной DES (стандарт шифрования данных), IPsec и т. д. Они в равной степени удовлетворяют требованиям безопасности. Каждая сеть безопасна и каждая может быть взломана. Обычный пользователь не имеет никакой возможности увидеть разницу. Специалист в области безопасности сумеет это сделать, но уйдет полгода работы на то, чтобы он составил свое мнение. Это просто не оправдывает затрат.
Я постоянно поражаюсь газетным статьям, которые сравнивают средства безопасности и выставляют им оценки. Недавно я видел одну публикацию о брандмауэрах. Авторы пытались сравнить их надежность: в лабораторных условиях устанавливали различные брандмауэры и подвергали их воздействию 300 атак. Все это интересно, но имеет лишь весьма отдаленное отношение к тому, насколько надежен будет брандмауэр в реальной конфигурации и насколько эффективно он будет противостоять реальным противникам. Все, о чем говорилось в статье, так это о том, может ли брандмауэр, установленный в лаборатории, выдержать определенную атаку, а не о том, способен ли он укрепить безопасность сети. Легко сравнивать функциональные особенности, исследовать аспекты безопасности намного труднее. Я видел даже более ужасающие статьи, в которых средства безопасности оценивались только на интерфейсе пользователя. По-видимому, авторы пытались «что-нибудь измерить», и интерфейс пользователя был единственной вещью, которую они могли наблюдать.
Но даже если они оценили уровень безопасности, будет ли эта оценка применима в том случае, когда вы используете продукт некоторым вполне определенным способом? Например, я не беспокоюсь, насколько надежной можно сделать отдельную операционную систему. Меня интересует, насколько она будет защищена 90% времени в реальных ситуациях. Я тревожусь о том, насколько на ее работу могут повлиять ошибки внешнего окружения. Или насколько защищена будет система, после того как ее установит обыкновенный системный администратор. Вот в чем вопрос.
Легче опознать откровенно плохие продукты. Продукты, сопровождаемые заведомо невыполнимыми обещаниями вроде: «гарантирована защита от взлома» или «неподдающееся взлому шифрование», конечно, почти всегда оказываются ненадежными. Продукты, сопровождаемые невероятными псевдонаучными заявлениями о новых ошеломляющих технологических прорывах (обычно это касается технологий шифрования), почти всегда смертельно опасны. Другие предупреждающие сигналы – это ссылки на загадочных «специалистов по безопасности», использование ключей нелепой длины, отказ от общепризнанного опыта без серьезного на то основания (в отношении безопасности выгоднее следовать в общем потоке) и проведение фантастических состязаний по безопасности. В этой книге я обращаю внимание на то, что действительно хорошо на практике обеспечения безопасности: использование известной и опубликованной криптографии, использование открытых протоколов, выявление недостатков различных технологий. Компании, демонстрирующие незнание этих принципов, не заслуживают доверия. Конечно, может оказаться, что продукт, имеющий некоторые из этих предупреждающих знаков, надежен, только это маловероятно. Помните – гениев всегда намного меньше, чем дураков.
Пока что все было легко. Но после того как вы определили, какие продукты производятся компаниями, очевидно, не имеющими понятия о том, чем они занимаются, все становится намного сложнее. Все остальные продукты в равной мере изобилуют модными словечками, и все они сопровождаются правильными рассуждениями. Одни из них старше других, но значит ли это, что они более надежны? Об уязвимых местах одних было больше публикаций. Говорит ли это, что они менее укреплены, потому что в них обнаружено множество недостатков и, вероятно, будет найдено еще больше, или наоборот, – что они более надежны, потому что большее количество ошибок уже было найдено и исправлено? Нет никакой возможности узнать это. Вот почему так много компаний по безопасности используют рекламные приемы, свойственные юристам, ведущим дела пострадавших от транспорта, сея страхи, неуверенность и сомнения.
Опустить руки и отказаться от принятия решения – это не выход из положения. Существуют продукты безопасности, и потребители вынуждены выбирать из того, что имеется. Глупо отказываться от установки брандмауэра только потому, что вы не знаете, какой лучше. Кто-то сказал: «Лучше сейчас иметь посредственные средства безопасности, чем не иметь никаких, надеясь найти самые совершенные».
Правда в том, что испытание средств безопасности может только выявить существующие изъяны, но не доказать их отсутствие. Верно также и то, что в отсутствии недостатков убедиться невозможно, здесь не помогут ни попытки доказать безопасность системы, ни формальные модели безопасности, ни детальные деревья атак. Мы возвращаемся назад к исходной позиции, где мы были, когда выбирали алгоритм шифрования или протокол. Лишь продолжительные испытания, в которых участвуют многие люди, позволят нам начать доверять продукту безопасности.
Единственное, что можно сделать, – это осуществить такой процесс, который обеспечивает безопасность в любом случае, независимо от возможных изъянов продукта. Мы вернемся к этому в главе 24.
Напрашивается закономерный вопрос: «Какие технологии помогут созданию продуктов, обеспечивающих безопасность, в будущем?» Конечно, криптография постоянно улучшается. Несомненно, мы все лучше и лучше проектируем брандмауэры. Будет ли это помогать? Ответ: и да, и нет. «Да» – потому что отдельные технологии непрерывно совершенствуются. «Нет» – потому что фундаментальные проблемы остаются.
Технологии развиваются. Центральные процессоры стали намного быстрее работать, чем десять лет назад, что дает возможность применять шифрование почти повсеместно. Например, можно полностью зашифровать цифровую сотовую связь с помощью сильных алгоритмов без видимого замедления работы.
Технологии компьютерной и сетевой безопасности тоже совершенствуются. Сегодняшние брандмауэры намного эффективнее разработанных 10 лет назад. Системы обнаружения вторжения все еще находятся на ранней стадии развития, но и они постепенно улучшаются.
И это верно почти для каждой технологии, обсуждавшейся во части II книги. Технологии защиты от несанкционированного доступа становятся качественнее, то же можно сказать и о биометрических технологиях. Мы даже создали более эффективные механизмы защиты цифровых копий (несмотря на вскрытие DVD).
Но кое-что остается неизменным – основы технологий и люди, использующие их. Криптография всегда будет не больше, чем математика. Недостатки безопасности всегда будут присутствовать в программном обеспечении. Пользователи никогда не захотят запоминать длинные пароли. Люди будут всегда уязвимы для манипуляций.
Ситуация ухудшается. Системы становятся более сложными, и для компьютерных систем это означает нечто большее, чем аналогичные усовершенствования в любой другой области. Будущее цифровых систем – сложность, а сложность – главный враг безопасности. Безопасность не укрепляется, а становится более уязвимой.
Цифровая технология представляет собой нескончаемый ряд новшеств, непредсказуемых последствий и неожиданностей, и нет никакой причины полагать, что это прекратится в обозримом будущем. Единственная вещь, которая остается неизменной, – это то, что цифровые системы постоянно усложняются.
В течение последних нескольких лет мы наблюдаем этот процесс. Микропроцессоры стали более сложными. Операционные системы и программы тоже усложнились. Иногда без достаточно веской причины: существует целое моделирование виртуального полета, скрытое в каждой копии Microsoft Excel 97[61]. Компьютеры и сети стали более сложными. Появились сложные сетевые службы, загружаемые в память модули, программные агенты и распределенная обработка данных. Отдельные сети объединились, что привело к дальнейшему возрастанию сложности. Интернет, вероятно, – наиболее сложная система, когда-либо созданная человечеством. И она не станет более простой в ближайшее время.
Глобальная финансовая система стала более сложной. Цифровые системы в вашем автомобиле, посудомоечной машине и тостере стали сложными. Усложнились смарт-карты, а также сети, которые их обслуживают. Дверной замок вашего гостиничного номера, сигнализация, сотовые телефоны, система контроля состояния окружающей среды – все стало более сложным. Букингемский Фонтан в Чикаго управляется удаленным компьютером, находящимся в Атланте.
С точки зрения потребителя, это замечательно. Появилось больше возможностей выбора. С точки зрения профессионала в области безопасности, это ужасающее. Сложность – главный враг безопасности. Эта истина известна с момента появления компьютера и, вероятно, будет верна и в дальнейшем. И поскольку киберпространство продолжает усложняться, безопасность будет становиться все более хрупкой. Тому имеется несколько причин.
Первая причина – количество изъянов систем защиты. В главе 13 я рассказывал о надежности программного обеспечения и о ее связи с безопасностью. По мере усложнения системы возрастает и количество ошибок при выполнении программ, и число уязвимых мест защиты. Это происходит всегда. При усложнении программного обеспечения возрастает и количество ошибок. И процент этих ошибок будет влиять на безопасность, хотя это не всегда очевидно.
Вторая причина – модульная структура сложных систем. В главе 10 говорилось о модульном коде и связанных с ним проблемах безопасности. Сложные системы обязательно модульные; нет никакого другого способа управиться со сложностью системы, кроме как разбить ее на части, поддающиеся управлению. Мы никогда не смогли бы сделать Интернет таким сложным и интересным, каким он является, не прибегая к модульности. Но разрастание модульной структуры грозит ослаблением безопасности, поскольку взаимодействие модулей создает дополнительные возможности для взлома защиты.
Третья причина – это взаимосвязь сложных систем. Распределенные и объединенные в сети системы опасны по своей природе. Усложнение систем может привести к тому, что незначительные проблемы становятся неразрешимыми, – повлечь за собой эффект «бабочки»[62]. Мы уже наблюдали примеры того, как все становится доступным благодаря Интернету. В течение нескольких лет мы считали, что такие интернет-приложения, как почтовые программы, безопасны, но недавняя эпидемия макровирусов показала, что и Microsoft Word и Excel нуждаются в укреплении средств защиты. Апплеты Java должны не только быть безопасными в использовании, но также не допускать возможности применения их для нападения. При написании программного кода для веб-страниц используются тонкие взаимодействия между сценариями CGI, HTML, фреймами, программным обеспечением веб-сервера и cookies. В 2000 году баг Internet Explorer 5.0 блокировал правильную работу Windows 2000 при установке 128-битового шифрования. Фотокопировальные устройства, порты маршрутизаторов, RAID-массивы – ко всему этому можно получить доступ через Интернет, со всеми вытекающими отсюда угрозами для безопасности. Мошеннические драйверы принтера могут скомпрометировать Windows NT; файлы PostScript могут содержать вирусы. Вредоносный код, вложенный в сообщение электронной почты, может проникнуть через брандмауэр. Помните, я говорил о версии Windows NT, которая имела оценку безопасности С2, но только в том случае, если компьютер не подключен к сети и не имеет накопителя на гибких магнитных дисках? Помните WebTV-вирус?[63] Сколько пройдет времени, прежде чем кто-нибудь придумает вирус, поражающий сотовые телефоны?[64]
Четвертая причина в том, что чем сложнее система, тем она труднее для понимания. В главе 17 я рассказывал о манипуляциях людьми и о негативном влиянии человеческого фактора на безопасность. Эти проблемы обостряются из-за сложности систем. Люди, управляющие реальной системой, как правило, не обладают полным пониманием ее устройства, в том числе и проблем, связанных с безопасностью безопасности. А если кто-то плохо разбирается в вопросе, он, скорее всего, воспользуется помощью знающего человека. Сложность не только делает фактически невозможным создание безопасной системы, но и приводит к чрезвычайным трудностям в управлении ею.
Пятая причина – трудность анализа. В 18-21 главах я обрисовал процедуру проектирования и анализа систем безопасности: моделирование возможных угроз, определение механизмов защиты и проектирование системы безопасности. Чем сложнее система, тем тяжелее выполнить такой анализ. Все становится очень запутанным: спецификации, проект, создание и использование системы. Дерево атак для любой сложной системы становится гигантским. И, как мы уже неоднократно убедились, все это релевантно анализу безопасности.
Последняя, шестая причина – повышенные требования к испытаниям сложных систем. В главе 22 говорилось об испытаниях безопасности. Я доказывал, что единственно разумный способ исследования безопасности системы состоит в проведении тестирования непосредственно на ней. Однако чем сложнее система, тем труднее сделать такие оценки. Чем сложнее система, тем больше будет возникать ошибок, имеющих отношение к безопасности, и в спецификации, и в процессе разработки, и при вводе в действие. И, к сожалению, количество ошибок и трудности их распознавания растут не пропорционально возрастанию сложности, а намного быстрее.
Предельно упрощая, допустим, что система имеет 10 различных настроек, по 2 возможных варианта. Тогда 45 различных комбинаторных сочетаний могут взаимодействовать самым неожиданным образом, и в целом наберется 1024 различные конфигурации. Каждое взаимодействие способно привести к недостаткам безопасности и должно быть особо проверено. Теперь предположите, что система имеет 20 различных настроек. Это означает 190 различных сочетаний (по 2 из 20) и примерно 1 миллион конфигураций (2^20). 30 различных настроек определяют 435 различных пар и миллиард конфигураций. Даже небольшие увеличения в сложности системы означают стремительный рост количества различных конфигураций.
Увеличение числа возможных взаимодействий приводит к возрастанию объема работы во время оценки безопасности. Для системы с умеренным количеством параметров проверка всех двухпараметрических взаимодействий – тоже немалая работа. Проверка каждой возможной конфигурации – сложнейшая задача. Таким образом, трудность проведения оценки безопасности растет по мере увеличения сложности. Появление дополнительных потенциальных изъянов и усложнение анализа безопасности неизбежно приводит к уменьшению надежности систем.
В современных системах ситуация не столь сложна; часто параметры ортогональны, то есть независимы. Конечно, раз системы усложняются, то число связей увеличивается. Это происходит, например, если параметры находятся на разных уровнях в системе, и эти уровни разделены строго определенным интерфейсом. Такое разделение системы на относительно независимые модули с четко определенными интерфейсами – признак удачной разработки. Правильное разделение на модули может значительно уменьшить эффективную сложность системы, при этом все важные функции будут сохранены. Конечно, параметры в пределах одного модуля могут взаимодействовать, и эти взаимодействия должны быть проанализированы, поэтому количество параметров должно быть сведено к минимуму. Разбиение на модули работает хорошо при использовании должным образом, но многие реальные системы все же имеют взаимозависимости, которые позволяют параметрам в различных модулях влиять друг на друга.
Более сложная система менее надежна с любой точки зрения. Прежде всего, она содержит большее количество уязвимых мест, а ее модульность усиливает эти недостатки. Ее тяжелее испытывать и анализировать.
Это ухудшает положение. Увеличение числа недостатков безопасности пагубно влияет на защиту: безопасность всей системы зависит от прочности ее самого слабого звена. Один-единственный недостаток может свести на нет защиту всей системы.
Реальные системы не показывают никаких признаков уменьшения сложности. Фактически они становятся более громоздкими все быстрее и быстрее. Microsoft Windows – пример такой тенденции. Windows 3.1, выпущенная в 1992 году, имеет 3 миллиона строк кода. В 1998 году Windows NT 5.0 насчитывала уже 20 миллионов строк кода, а в 1999 году она была переименована в Windows 2000 и содержала в среднем от 35 до 60 миллионов строк кода. Сравнительные данные приведены в табл. 23.1.
Операционная система (Год) – Количество строк кода
Windows 3.1 (1992) – 3 млн
Windows NT (1992) – 4 млн
Windows 95 (1995) – 15 млн
Windows NT 4.0 (1996) – 16,5 млн
Windows 98 (1998) – 18 млн
Windows 2000 (2000) – 35-60 млн (приблизительно)
Windows 2000 ошеломляет своим размером, и будет иметь больше изъянов защиты, чем Windows NT 4.0 и Windows 98 вместе взятые. В свое оправдание Microsoft утверждала, что нужно потратить 500 человеко-лет, чтобы сделать Windows 2000 безопасной. Я привел эти цифры только для того, чтобы продемонстрировать, насколько неадекватна эта оценка[65].
Вы также можете видеть, что сложность увеличивается, по количеству системных вызовов. Версия UNIX 1971 года имела 33 вызова. В начале 1990-х их количество в операционных системах достигало уже 150. Windows NT 4.0 SP3 имеет 3433. Количество системных вызовов для различных операционных систем представлено в табл. 23.2.
Вначале брандмауэры имели дело только с FTP (протоколом передачи файлов), протоколами Telnet, SMTP, NNTP и службой DNS. И это все. Современные брандмауэры должны взаимодействовать с сотнями протоколов и с запутанным набором правил доступа к сети. Некоторые новые протоколы разработаны подобно HTTP, чтобы они могли «работать с брандмауэром» (то есть обходить его). И пользователи, устанавливающие автоматическую связь, могут не беспокоиться о брандмауэре; теперь для этой цели существуют широкополосные аппаратно-программные средства с DSL и кабельными модемами. Хуже того, существует доступное программное обеспечение, позволяющее пользователям домашних компьютеров представлять себя в качестве веб-серверов. Больше особенностей, больше сложности, меньше надежности.
Операционная система(Год) – Количество системных вызовов
UNIX 1ed (1971) – 33
UNIX 2ed (1979) – 47
SunOS 4.1 (1989) – 171
4.3 BSD Net 2 (1991) – 136
SunOS 4.5 (1992) – 219
HP UX 9.05 (1994) – 163
Line 1.2 (1996) – 211
SunOS 5.6 (1997) – 190
Linux 2.0 (1998) – 229
Windows NT 4.0 SP3 (1999) – 3 433
Сертифицированный открытый ключ в Х.509 версии 1 был определен на 20 строках ASN.1. Сертификат Х.509 версии 3 занимает приблизительно 600 строк. Сертификат SET – 3000 строк.
Полный стандарт SET занимает 254 страницы. И это только формальная спецификация протокола; есть еще руководство для программиста на 619 страницах и бизнес-описание на 72 страницах. По различным причинам SET никогда не будет широко использоваться, но в любом случае я полагаю, что никто не способен пробраться через все эти лабиринты, не наделав ошибок. Ошибки в работе программного обеспечения обнаруживаются главным образом во время бета-тестирования, но при этом недостатки защиты, скорее всего, не будут найдены. Тем не менее они там будут. Если их найдет порядочный человек, то он опубликует свои исследования в печати. Если их обнаружит мошенник, то он воспользуется ими для внедрения в систему кредитных карт: возможно, для получения крупной суммы денег или для создания поддельного счета на кредитной карте, возможно, затем, чтобы повлиять на обработку данных кредитных карточек и подчинить себе всю систему.
Сложность пробирается во все. В 2000 году вычислительные возможности «Мерседес 500» были больше, чем 747—200[66]. Мой старый термостат имел один наборный диск, и было легко установить температуру. Мой новый термостат имеет цифровой интерфейс и руководство по программированию. Я гарантирую, что большинство людей понятия не имеют, как его заставить работать. Термостаты, основанные на системе Home Gateway от Sun Microsystems, могут быть подключены к Интернету, так что вы можете заключить договор с какой-нибудь компанией, занимающейся контролем окружающей среды, для управления вашим хитроумным устройством. Sun рисует в своем воображении связь с Интернетом для всех ваших приборов и дверных замков. Вы думаете, кто-нибудь проверит программное обеспечение рефрижератора на наличие изъянов защиты? Я уже рассказывал о современном злонамеренном коде и о взаимодействии сценариев Java, HTML, CGI и веб-браузеров. Есть кто-нибудь, кто беспокоится, что новые сотовые телефоны, работающие с Wireless Access Protocol, будут способны пересылать апплеты Java? И только вопрос времени, когда появится вирус, поражающий сотовые телефоны.
Компьютерные игры имели обыкновение быть простыми. Теперь можно играть, используя сеть. Любой в состоянии зайти на веб-сайт и принять участие в игре с несколькими игроками. Сейчас кто-нибудь еще может войти в систему компьютера игрока через Интернет. Престо, теперь он «сервер»! Мама и папа могут держать в компьютере некую конфиденциальную информацию (рабочие секреты, финансовые данные) а их отрок предоставляет всем возможность проникнуть внутрь. Кто-нибудь проверяет безопасность этих игр? Уязвимость в функции автоматического обновления игры Quake3 Arena позволяет нападающему модернизировать любой файл на компьютере пользователя. Napster также делает доступным ваш компьютер, после чего вы, скорее всего, найдете ошибки переполнения в программном обеспечении.
Положение ухудшается. Нынешнее поколение игровых приставок (Sega Dreamcast, Sony PlayStation 2) выпускается с такими свойствами, как 56-килобайтовые модемы, IP-стеки и веб-браузеры. Миллионы из них уже проданы. Возможно, браузеры и операционные системы будут безопасны; если – да, то такое случится впервые. Хорошая шутка: вы играете с кем-нибудь в Sonic через модем, и вдруг этот игрок проникает в ваш компьютер и побеждает! Если это только игровой пульт, то круто! Это не повод для волнения. Но не забывайте, что игровые компании требуют, чтобы вы делали все электронные покупки с помощью игрового пульта. Там будут и номера кредитной карточки, и электронный бумажник, и много чего еще. Добро пожаловать в мир, в котором ошибка переполнения буфера в Tekken 3 поставит под угрозу вашу финансовую безопасность.
Эта проблема становится всеобщей: сегодняшние игрушки будут завтра применены для опасных целей. Программное обеспечение для массового потребителя становится лучше при добавлении разных свойств и функциональных возможностей, но при этом проигрывает в надежности. Несмотря на сказанное и на факт, что программы и сети не были разработаны для опасных применений, но так или иначе, они используются для этого. Мы стали зависимы от систем, неизвестных в своей надежности. Скоропалительные решения вида «отправить, наконец, эту проклятую штуку» стали частью нашей критической инфраструктуры. Интернет и операционные системы – одни из самых наглядных примеров этого.
Конечно, ошибки безопасности обнаруживаются и исправляются, но это сизифов труд. Изделие «программное обеспечение» уже выпущено. Через какое-то время ошибки безопасности найдены и устранены, и безопасность улучшается. Затем выходит версия 2.0 с новым кодом, с добавленными особенностями и увеличенной сложностью – и мы опять там же, откуда и начинали. Бывает и хуже.
У военных это называется «среда, насыщенная целями»[67].
В будущем системы с сетевой структурой будут сложными, а значит, менее стойкими. Индустрия технологий гонится за спросом на особенности, на возможности выбора, на скорость. Нет никаких стандартов по качеству или безопасности и нет никакой ответственности за опасное программное обеспечение. Следовательно, нет экономического стимула поддерживать высокое качество. Вместо этого есть экономическая подоплека для создания продукции самого низкого уровня, какой только выдержит рынок. И пока клиенты не потребуют «лучшее качество и безопасность», ситуация не изменится.
Я вижу две альтернативы. Первый вариант – это «притормозить», упростить и попытаться добавить безопасности. Клиенты не потребуют этого (такие проблемы слишком сложны для их понимания), поэтому это должна потребовать группа защиты прав потребителей. Я могу легко представить организацию для Интернета, подобную Управлению по контролю за продуктами и лекарствами (FDA), но в окружающей нас среде, где на утверждение рецепта нового лекарства требуется десятилетие, это решение экономически не выгодно.
Другой путь – признать, что цифровой мир будет «номером один» со сверхрасширяющимися особенностями и возможностями, со сверхбыстрым выпуском изделий, со сверхувеличивающейся сложностью и сверхскоротечно падающей безопасностью. Если мы признаем эту реальность, то сможем попытаться заняться делом вместо того, чтобы прятать голову в песок и отрицать проблему.
Я повторюсь: сложность – самый ярый враг безопасности. Безопасные системы должны быть «обрезаны до кости» и сделаны настолько простыми, насколько это возможно. И нет никакой замены этой простоте. К сожалению, простота противоречит основным тенденциям развития цифровых технологий.
Уже появились новые технологии, которые могут полностью изменить средства безопасности и в лучшую, и в худшую сторону. Так как эта книга не по предсказанию будущего, упомяну только несколько наиболее интересных достижений.
Крупные достижения в криптографии. Криптография лишь в некоторой степени основана на математических доказательствах. Лучшее, что мы можем сказать – то, что мы не можем ее взломать, так же как и другие ловкие люди, пытавшиеся сделать это. Всегда есть шанс, что когда-нибудь мы изучим новые методы, которые позволят нам взломать то, что недоступно сегодня. Как говорят в Агентстве национальной безопасности: «Атаки всегда совершенствуются, они никогда не ухудшаются». Мы наблюдали это в прошлом, когда, казалось бы, надежные алгоритмы были разрушены с помощью новых методов, и мы, вероятно, увидим это и в будущем. Некоторые люди даже предполагают, что в АНБ уже многое знают из этой новой математики и спокойно, с выгодой для себя взламывают даже самые сильные алгоритмы шифрования. Я так не думаю: может быть, они и владеют некоторыми секретными техниками, но не многими.
Крупные достижения факторизации. Вызывает опасение, что все алгоритмы открытых ключей базируются в основном на двух математических задачах: проблеме разложения на множители больших чисел (факторизации) или проблеме дискретного логарифмирования. Разложение на множители становится осуществлять все легче, и это происходит намного быстрее, чем кто-либо думал. Не доказано математически, что эти проблемы невозможно решить, и, хотя математики так не думают, может быть, кто-нибудь придумает способ эффективного решения этих проблем еще в наши дни. Если это случится, то мы окажемся в мире, где криптография открытых ключей не будет работать, и тогда главы этой книги будут представлять только исторический интерес. Но все не так страшно; инфраструктура аутентификации, основанная на симметричном шифровании, может служить для той же цели. Но в любом случае я не думаю, что это произойдет[68].
Квантовые компьютеры. Когда-нибудь квантовая механика фундаментально изменит способ работы компьютера. В настоящее время можно смело утверждать, что квантовые компьютеры способны сложить два 1-битовых числа, но кто знает, что будет дальше?[69] Возможно, если иметь в виду новые квантовые методы расчета, большинство алгоритмов открытых ключей покажутся устаревшими (см. предыдущий пункт), но на самом деле они всего лишь заставят нас удвоить длины ключа для симметричных шифров, хэш-функций и MACs (кодов аутентификации сообщения).
Аппаратные средства сопротивления вторжению. Многие проблемы безопасности устраняются, если использовать для защиты информации аппаратные средства сопротивления вторжению. Бурное развитие технологий привело к значительному уменьшению стоимости средств защиты от несанкционированного вмешательства[70].
Искусственный интеллект. Работа многих защитных средств может быть сведена к выполнению простой задачи: пропускать полезное содержимое, задерживая при этом вредоносное. Так работают брандмауэры, системы обнаружения вторжения, антивирусное программное обеспечение, VPN, системы защиты от мошенничества с кредитными картами и множество других вещей. Они подразумевают два подхода: неосмысленный (если есть любой из десятков тысяч образцов поиска в файле, следует, что файл заражен вирусом) или интеллектуальный (если программа начинает делать подозрительные вещи, скорее всего, завелся вирус, и вы должны все исследовать). Последнее кажется внушающим ужас, вызывает пугающие ассоциации с искусственным интеллектом. Что-то подобное было испытано как антивирусный механизм и в конце концов оказалось менее эффективным, чем примитивная модель проверочного сканера. Подобные идеи моделируются в некоторых продуктах обнаружения вторжения, и все еще неясно, делают ли они что-нибудь лучше, чем методичный поиск сигнатур, которые свидетельствуют о внедрении[71]. Однако когда-нибудь это может стать большим делом: если в области искусственного интеллекта со временем произойдет существенный прогресс, мы получим революцию в компьютерной безопасности.
Средства автоматической проверки. Многие дефекты системы безопасности, такие как ошибки переполнения буфера, – результат небрежного программирования. Хорошие автоматические средства, которые могут просматривать коды компьютера с целью обнаружения изъянов защиты, должны пройти длинный путь, чтобы они сумели обеспечить хорошую безопасность. Хорошие компиляторы и хорошая программа синтаксического контроля также проходят долгий путь, и когда задачи безопасности выйдут в них на первый план, только тогда они действительно смогут помочь программистам избежать ошибок. Кроме того, нужно убедить программистов использовать эти новшества, однако это уже другой вопрос. (Имеется ряд хороших средств, но они почти никем не затребованы.) И это отдельная проблема.
Безопасные сетевые инфраструктуры. Интернет не безопасен, безопасность никогда не стояла в планах для этой системы. Люди, которые будут работать в Интернете II, должны в первую очередь подумать о безопасности. При создании этой новой сети следует допустить, что кто-то будет перехватывать и пытаться похищать сетевые соединения и что заголовок пакета данных, возможно, будет подделан[72]. Нужно учесть, что пользователи в большинстве случаев не могут доверять друг другу, и рассматривать с этой точки зрения все виды приложений. Существует множество проблем, которые нельзя разрешить с помощью самых лучших протоколов сети, но некоторые можно.
Анализ трафика. Технология анализа трафика все еще находится в периоде становления, и я думаю, что новые интересные достижения в этой области появятся в следующем десятилетии[73]. Методы защиты трафика должны еще долго совершенствоваться, чтобы они могли обеспечить должный уровень защиты любой сети.
Обеспечение надежности. Надежность означает, что система делает то, что ей положено делать, и ничего лишнего. Технология, которая смогла бы обеспечить надежность программ, была бы незаменимой для компьютерной безопасности.
Большинство подобных технологий все еще находятся в стадии разработки. Я не буду делать скидок ни для одной из них. Практические результаты если и появятся, то, скорее всего, только в далеком будущем. Хотя если чему-то и научило нас двадцатое столетие, то это – как можно реже употреблять слово «невозможно».
Рассмотрим нападения, приводящие к переполнению буфера. Впервые о них заговорили в сообществе безопасности в начале 1960-х (система с разделением времени пострадала от такой атаки), и, вероятно, они описывались в литературе по безопасности еще раньше. В 70-е годы первые компьютерные сети имели много недостатков, которые часто использовались для нападения. В 1988 году компьютерный червь Морриса вызывал переполнение буфера, используя команду fingerd UNIX (распространенный способ нападения этого типа). Теперь, через 10 лет после появления червя Морриса и примерно через 35 лет после первоначального обнаружения такого способа нападения, можно было бы предполагать, что сообщество безопасности наконец-то решило проблему защиты буфера. Но это не так. В 1998 году более чем две трети всех обращений в CERT были связаны с проблемами, вызванными переполнением буфера. В 1999 году в течение двух особенно неудачных для Windows NT недель, в NT-приложениях было обнаружено 18 различных изъянов, открывающих дорогу для такой атаки. Когда в первую неделю марта 2000 года я стал собирать факты, с описания которых начал эту книгу, среди них мне встретились три случая ошибки переполнения буфера. Пример с переполнением буфера – это низко висящий плод. Но если мы когда-либо и научимся решать эту проблему, тут же появятся другие, возможно, еще более сложные.
Рассмотрим алгоритмы шифрования. Закрытые секретные алгоритмы появляются постоянно и затем вскрываются самым банальным образом. Каждый раз мы убеждаемся, что закрытые секретные алгоритмы – плохая идея. Тем не менее многие компании в различных отраслях промышленности продолжают выбирать частные, закрытые алгоритмы взамен открытых.
Обратимся к проблемам исправления ошибок. В начале 2000 года всего одна прореха в защите Microsoft Internet Information Server помогла хакерам украсть тысячи номеров кредитных карточек с разных сайтов электронной торговли. Microsoft выпустила «заплату», в которой эта ошибка была исправлена еще в июле 1998, и еще раз напомнила о необходимости установить эту «заплату» в июле 1999, когда стало ясно, что многие пользователи и не беспокоятся по поводу установки исправления.
Кто-нибудь обращает внимание на подобные вещи?
На самом деле никто. Или, по крайней мере, совсем немногие. Поскольку потребность в средствах защиты программных продуктов огромна, их появляется все больше. А постоянная нехватка действительно компетентных экспертов приводит к тому, что все меньшее количество людей уделяют внимание проблемам безопасности.
Можно описать сценарий, по которому происходит проектирование большинства программных продуктов, имеющих средства защиты «внутри». Менеджер находит какого-нибудь парня, который считает, что безопасность – «это круто», и назначает его ответственным за эту часть системы. Этот человек может кое-что знать о безопасности, а может и не знать. Может, он прочитал одну-две книги по этой теме, а может быть, и нет. Проектирование системы защиты – вообще забавная вещь. Это как игра в «кошки-мышки». Или как в кино: агент против агента.
Проверка системы защиты происходит так же, как и проверка любой другой части системы: вы смотрите, как это работает, и делаете выводы. Все работает великолепно – в конце концов, безопасность не имеет никакого отношения к функциональным возможностям, – и менеджер счастлив.
Однако, поскольку уровень экспертизы систем безопасности вообще низок, оказывается, средства защиты совершенно неэффективны. Но никто не догадывается об этом.
Ситуация несколько лучше, если программный продукт является средством защиты. Более вероятно, что проектировщики что-то смыслят в безопасности. Но они не могут делать все. Однажды разработчик брандмауэра рассказал мне о недостатках в его коде, приводящих к переполнению буфера. Он сказал, что сделал все возможное, чтобы гарантировать отсутствие подобных вещей, но он не мог проверять всех остальных программистов в команде. Он пробовал, но не смог. Несколько серьезных недостатков в коде, связанных с переполнением буфера, были обнаружены и исправлены за последующие годы. И нет оснований предполагать, что необнаруженных ошибок больше не осталось.
Меня бесконечно удивляют всяческие дырки в защите, используя которые, нетрудно ее взломать. Я видел продукт, осуществляющий шифрование файла, который случайно сохранил ключ в незашифрованном виде. Я видел VPN, где файл конфигурации, отвечающий за телефонную связь, случайно позволяет лицам, не обладающим соответствующими правами, пройти процедуру аутентификации, или такие, где один клиент VPN может видеть файлы всех других клиентов. Существует огромное количество способов сделать продукт ненадежным, и производители ухитряются натыкаться на одни и те же грабли снова и снова.
Они ничему не учатся, потому что и не должны учиться.
Средства защиты компьютера, так же как и программное обеспечение в общем, обычно соответствуют довольно странным представлениям о качестве. Здесь ситуация другая, чем в случае с автомобилем, небоскребом или упаковкой с жареным цыпленком. Если вы покупаете какую-либо вещь и терпите урон по вине изготовителя, вы можете предъявить иск и выиграть дело. Производителю автомобилей не избежать неприятностей, если автомобиль взорвется при столкновении. Буфетчик не останется без проблем после продажи земляничного пирога с крысой внутри. Чего никогда не скажут подрядчики-строители, так это: «Ну что ж. Мы скоро построим второй небоскреб, и уж он не упадет на все 100%». Эти компании ответственны за свои действия.
Программное обеспечение бывает разное. Оно продается без какой-либо ответственности вообще. Например, в лицензионном соглашении Windows 98 есть следующие слова: «Изготовитель и его поставщики отказываются нести материальную ответственность за какие-либо убытки, вытекающие из использования или невозможности использования данного изделия, даже в том случае, если Изготовитель был предупрежден о возможности этих убытков».
Ваша база данных взаиморасчетов с партнерами может рухнуть, увлекая за собой вашу компанию, а вы не сможете предъявить никаких претензий к производителю программного обеспечения. Ваш текстовый процессор может испортить законченную рукопись вашей книги (из-за чего я часто беспокоюсь), уничтожив несколько лет вашей работы, и вам некуда будет обратиться за помощью. Если ваш брандмауэр вдруг окажется совершенно бесполезным, в этом будете виноваты только вы сами. Microsoft в состоянии пропустить дефект в Hotmail, который будет использован кем-нибудь для получения сорока миллионов или около того учетных записей, защищенных паролем или нет, и даже не потрудится принести извинения.
Производители программного обеспечения могут и не беспокоиться о качестве своих продуктов, так как не несут за это никакой ответственности. (То есть ответственность существует, но она ограничивается заменой гибкого диска или компакт-диска с физическими дефектами.) Поэтому средства защиты могут и вовсе не обеспечивать безопасность, так как никто не сумеет предъявить иск их производителям, обманувшим покупателя лживыми заверениями.
В конце концов, эта ситуация приводит к тому, что рынок не поощряет создание действительно безопасных продуктов. Их разработка требует больше труда, времени и средств. Покупатели же не знают, как отличить надежный продукт от негодного. На этом рынке можно добиться успеха, выпустив программное обеспечение, о надежности которого производитель позаботился лишь постольку, поскольку это ему необходимо, чтобы избежать неприятностей.
Крупные производители знают это, как и то, что создавать надежное программное обеспечение не выгодно. Согласно исследованиям, 90-95% всех программных изъянов безобидны, они не сказываются на работе программ, и пользователи их не замечают. Намного дешевле выпускать программное обеспечение с дефектами и затем исправлять обнаруженные 5-10% ошибок.
Они также знают, что невыгодно заниматься обеспечением реальной безопасности. По несколько раз в неделю они сталкиваются с новыми уязвимыми местами в своих продуктах. Они устраняют те, что им под силу, а о тех, с которыми справиться не могут, делают лживые заявления для печати, и ждут, когда бум в прессе утихнет. Затем они выпускают новую версию программного обеспечения с новыми функциональными возможностями, которые сопровождаются полным набором новых погрешностей, потому что пользователи предпочитают «навороченность» безопасности.
И пользователи будут их покупать. До тех пор пока закон не будет побуждать производителей к созданию безопасных продуктов, они не станут беспокоиться об этом.
В 1996 году была клонирована шотландская овца по имени Долли. В последовавшей за этим событием дискуссии в прессе «Тайм» и «Ньюсуик» высказывали мнение, что клонирование людей безнравственно, и необходимо законодательными мерами пресечь возможность проведения подобных экспериментов. Но все это бессмысленно. Кто-нибудь все равно попытается клонировать людей независимо от того, законно это или нет. Нужно принять это как неизбежность и попытаться понять, что с этим делать.
В компьютерном мире также невозможно обеспечить какие-либо гарантии. Технологические приемы могут отразить большинство случайных атак. Угроза уголовного наказания может удержать от преступления многих, но не всех. Попытки нарушить чьи-либо права все равно будут продолжаться. Сети будут взламываться. Мошенничество будет процветать. Деньги будут красть. Люди будут гибнуть.
Технология не является панацеей. Программные продукты всегда имеют недостатки, число которых постоянно увеличивается. Единственный выход состоит в том, чтобы смириться с реальностью и научиться жить в этих условиях. Точно так же, как и в любой другой сфере общественной жизни. Никакие технические приемы не могут защитить нас от террористических актов. Мы стараемся обеспечить свою безопасность с помощью доступных нам средств, таких как таможенный контроль, сбор информации об известных террористических группах, неотвратимое уголовное преследование.
Бывалые путешественники держат лишь небольшую сумму денег в бумажнике, а остальное – в мешочке, скрытом под одеждой. Таким образом, если их обворуют, они не потеряют все деньги. Структура шпионских или террористических организаций предполагает разделение на маленькие группы, члены которых знают только друг друга и никого более. Таким образом, если кто-нибудь оказался схвачен или сдался сам, он может выдать только тех людей, которые входят в его ближайшее окружение. Разделение – эффективный способ защиты, так как оно ограничивает последствия действий противника, приводящих к успеху. Это – пример здравого смысла, которым часто пользуются. Пользователи имеют индивидуальные учетные записи; двери помещений офиса запираются разными ключами; права доступа предоставляются соответственно степени доверия конкретному лицу, а также реальной необходимости предоставления ему определенных сведений; личные файлы шифруют уникальными ключами. Система безопасности не строится по принципу «все или ничего», но она должна предотвращать возможность причинения значительного ущерба.
Схожий принцип – минимум привилегий. В основном это означает, что нужно давать кому-нибудь (пользователю или некоторым процессам) только те привилегии, которые необходимы для выполнения задачи. Мы постоянно сталкиваемся с этим в повседневной жизни. Ваш ключ, скорее всего, подходит только к вашему, а не любому помещению в здании. Доступ к банкоматам и хранящимся в них деньгам имеет только обслуживающий их персонал. Даже если вы пользуетесь особым доверием на службе, вы сможете выболтать только те секреты, которые вам позволено знать.
Еще больше примеров можно найти в компьютерном мире. Пользователи имеют доступ только к тем серверам, которые нужны им для работы. Только системный администратор имеет доступ к системе в целом, пользователи имеют доступ лишь к своим файлам. Иногда отдельные файлы бывают защищены групповым паролем, известным только тем, кому необходим доступ к этим файлам. Конечно, легче предоставить каждому полный доступ, но безопаснее давать людям только те привилегии, в которых они действительно нуждаются. Системы предоставления прав доступа в UNIX и NT основаны на этом принципе.
Многие нападающие пользовались нарушением принципа минимума привилегий. Как только нападающий получает доступ к учетной записи пользователя, вскрывая пароль или как-нибудь иначе, он предпринимает несколько попыток получить высшую привилегию. Например, многие нападающие пытаются вскрыть «песочницу» Java (sandbox), получить таким образом минимальные привилегии, а затем перейти в режим, позволяющий получить привилегированный статус. Взлом защиты цифровых дисков, проездных карточек и систем платного телевидения и других, имеющих одно общее свойство – все секреты хранятся в устройстве, находящемся в распоряжении пользователя, – также можно назвать получением высших привилегий.
Разделение также важно, потому что чем больше людей пользуются системой, тем меньше ее надежность. Чем крупнее компьютер, чем шире круг задач, решаемых с его помощью, тем он менее безопасен.
Это одна из причин, почему Интернет, наиболее широко используемая сеть, таит столько опасностей. Сравните веб-сервер и компьютер, работающий в режиме пониженного потребления мощности, находящийся в запертом бомбоубежище и окруженный охраной. Использование разделения делает систему более похожей на второй вариант.
Прежде всего следует защитить самое слабое звено. Это очевидно, но снова и снова я встречаю системы, в которых это правило игнорируется. Было бы наивностью просто вкопать огромный кол перед воротами замка и надеяться, что враг побежит прямо на него. Защита должна быть со всех сторон, поэтому придется выкопать ров и построить частокол. Точно так же при использовании алгоритма шифрования с 256-битовым ключом не стоит надеяться, что вы в безопасности; враг, вероятно, найдет такой способ нападения, который никак не связан с алгоритмами шифрования.
Меня постоянно удивляет, как много зияющих дыр остается в коммерческих системах безопасности. Разработчики не замечают их, так как поглощены созданием защиты тех частей системы, в которых они хорошо разбираются. Изучите ландшафт уязвимых мест в целом, сконструируйте схему нападений, найдите в ней самое слабое звено и обезопасьте его. Затем переходите к следующему слабому звену. Таким образом вы, вероятно, сможете построить наиболее безопасную систему.
Пропускной пункт представляет собой узкий коридор, в котором легко контролировать пользователей. Вспомните, как устроены и для чего предназначены турникеты на вокзале, контрольно-кассовые пункты в супермаркете и двери вашего дома. Для этих целей используются брандмауэры, маршрутизаторы, регистрация при входе в систему, а некоторые веб-сайты направляют пользователей сперва на домашнюю страницу. Так же устроена система обнаружения мошенничества с кредитными картами. Всегда имеет смысл использовать пропускные пункты в целях безопасности.
Но эти пункты полезны только в том случае, если нет никакого способа обойти их. Один из обычных способов преодоления брандмауэра состоит в том, чтобы обойти его: можно найти, например, незащищенное удаленное соединение. Случается, что люди оставляют удаленное соединение включенным. Иногда маршрутизаторы, запоминающие устройства большой емкости и даже принтеры могут иметь незащищенные порты. Все это позволяет нападающим обходить пропускные пункты.
В сетях возможны более тонкие способы нападений такого типа. Одна компания может иметь надежную систему сетевой безопасности. А другая компания может не обеспечивать ее должный уровень. Если они взаимодействуют по сети, это означает, что сеть имеет слабое звено, которое нуждается в защите.
Глубинная (многоуровневая) защита – другой универсальный принцип безопасности, который применяется в области компьютерных технологий, так же как и в других областях.
Защита территории (дверные замки и сигнализация на окнах) более эффективна, если она используется совместно с системой слежения внутри дома. Система защиты кредитных карточек от мошенничества работает лучше, если она дополняется проверкой подлинности и системой отслеживания подозрительных расходов. Брандмауэр в сочетании с системой обнаружения вторжения и сильной криптографической защитой приложений будет намного более надежным, чем просто брандмауэр.
На протяжении всей книги я пытался донести до читателя мысль, что защита настолько надежна, насколько прочно ее самое слабое звено, и предыдущее утверждение, кажется, противоречит этому принципу. В действительности все зависит от исполнения. Вспомните схемы нападений: безопасность группы узлов ИЛИ определяется надежностью защиты самого слабого узла, в то время как в случае конечных узлов И защита каждого из них усиливает защиту их совокупности.
Два брандмауэра, каждый из которых защищает отдельную точку входа в сеть, – это не глубинная защита. Для успешного нападения достаточно преодолеть любой из этих брандмауэров. Защита по глубине будет реализована в том случае, если брандмауэры установлены последовательно один за другим: тогда нападающему придется по очереди иметь дело с двумя уровнями защиты. Меня всегда поражает, когда я вижу сложные сети, точки входа в которые порознь защищают брандмауэры различных марок или даже различные конфигурации одного и того же брандмауэра. Это совершенно лишено смысла.
Многие системы устроены таким образом, что если система выходит из строя, пользователь обращается к резервной системе, хоть и менее безопасной. Например, в Соединенных Штатах система VeriFone используется при совершении сделок по кредитной карточке. Когда клерк проверяет вашу карту, VeriFone обращается к базе данных и проверяет, не украдена ли карта, достаточно ли денег у вас на счете и т. д. Вспомните случаи, когда терминал не работал по какой-либо причине: или он был сломан, или прерывалась телефонная связь. Разве торговец отказывался обслуживать вас? Конечно, нет. Он вытаскивал бумажные бланки и оформлял сделку по старинке.
Многие нападающие пытаются взломать защиту «кавалерийской атакой»: атаки, приводящие к отказу в обслуживании, могут повторяться снова и снова. Я уже говорил о грабителях, которые заставляют постоянно срабатывать сигнализацию для того, чтобы ее в конце концов отключили. Есть и более тонкие способы нападения. Немногие люди дисциплинированы настолько, чтобы не воспользоваться обычной связью, когда они не могут пользоваться безопасной. Даже военные, которые, как принято считать, подходят к этому серьезно, постоянно повторяют подобные ошибки.
Нужно, чтобы системы в случае отказа становились более защищенными, а не менее. Если в банкомате перестанет работать система проверки личного идентификационного номера, произойдет отказ, но при этом не посыплются деньги из щели. Если сломается брандмауэр, то это приведет к тому, что он перестанет пропускать любые пакеты данных. Когда повреждается слот-машина, она не должна проливать монетный дождь на поднос выплаты.
Тот же самый принцип используется в технике безопасности и называется отказоустойчивостью (безаварийный отказ). Если выйдет из строя микропроцессор в автомобиле, это не должно привести к разгону до максимальной скорости. Если произойдет отказ в системе управления ядерной ракетой, это не должно привести к ее запуску. Безаварийный отказ – хорошее правило проектирования.
Снова и снова в этой книге я выступаю против безопасности, основанной на секретности: закрытая криптография, закрытый исходный код, секретные операционные системы. Секретность так же может иметь место, но не в продуктах, а в том, как они используются. Я называю это непредсказуемостью.
Одно из преимуществ защищающихся перед нападающими состоит в знании местности. Армия не передает врагу сведений о расположении своих танков, установок противовоздушной обороны и батальонов. Нет никакой причины сообщать каждому интересующемуся сведения о топологической схеме вашей сети. Слишком многие компьютеры в ответ на любой запрос выдают информацию об используемой операционной системе и номере версии. Этому нет разумного обоснования. Будет намного лучше, если при регистрации пользователя в системе на экране появится сообщение:
«Предупреждение: частный компьютер. Использование этой системы предусматривает контроль безопасности. Все действия пользователя и сведения о нем регистрируются, включая IP-адрес и имя хоста».
Предоставьте нападающим самим разбираться, можете ли вы следить за ними.
Если вы строите частную систему безопасности (например, электронных банковских платежей), то важно использовать сильный, открытый, надежный алгоритм шифрования. Когда вы сделаете свой выбор, незачем объявлять о нем.
Если вы используете брандмауэр, нет никакого смысла сообщать всему миру настоящее имя хоста и имя пользователя. Это также принцип построения системы мер безопасности (сетевой сигнализации, приманок и других). Администратор сети знает, как она работает и что означают те или иные действия. Когда кто-то копается в фиктивном счете, администратор знает, что это – злоумышленник. Нападающий не должен знать, где и какое оборудование работает, когда и какой протокол можно использовать, какие порты и при каких условиях будут открыты. Поразительно, как часто серверы, приложения и протоколы объявляют на весь мир: «Привет! Я – служба V2.05». Многие автоматические средства взлома в поисках определенных версий программного обеспечения просматривают машины, о которых известно, что у них имеются уязвимые места. Если сети будут непредсказуемы, нападающие не смогут так свободно их огуливать. Не располагая нужной информацией, намного труднее обозначить цель и определить возможные виды атак. Разница такая же, как между прогулкой по солнечном лугу в полдень и по зарослям колючего кустарника в полночь.
Столь же непредсказуемы должны быть и меры реагирования. Ракета «Патриот» недостаточно эффективно поражала в небе иракские «Скады», но вы никогда не узнали бы об этом из официальных сообщений Пентагона. Если Соединенные Штаты знали, насколько была неэффективна противовоздушная оборона, это не означало, что нужно сообщать об этом врагу.
Непредсказуемость – мощное средство, используемое террористами, специалистами по «промыванию мозгов» при авторитарных режимах и теми, кто еще только рвется к власти. Но оно также хорошо работает в сфере компьютерной безопасности.
Я уже говорил в предыдущей главе: сложность – злейший враг безопасности. Система настолько защищена, насколько защищено ее самое слабое звено. Поэтому систему с меньшим количеством связей легче обезопасить. Эйнштейн говорил: «Все должно быть настолько просто, насколько это возможно, но не более».
Народная мудрость «Не кладите все яйца в одну корзину», казалось бы, противоречит этому утверждению. Так оно и есть, и на этом принципе строится защита по глубине. Но помните, что охранять несколько корзин сложнее, чем одну. Когда речь идет о безопасности, лучше следовать совету одного героя Марка Твена: «Сложите все яйца в одну корзину и присматривайте за ней».
Обеспечить безопасность намного легче, если приходится иметь дело с надежными и разумными пользователям, и намного тяжелее – с невежественными и имеющими злой умысел. Меры безопасности, не понятые и не согласованные к каждым, не будут работать. Помните: самыми трудными проблемами безопасности являются те, которые связаны с людьми, а самыми легкими – те, что связаны с битами. Несомненно, должна существовать защита от нападений изнутри, но в основном ваши сотрудники – это ваши союзники. Заручитесь их поддержкой, насколько это возможно.
В чем мы действительно нуждаемся – так это в уверенности, что наши системы работают должным образом, что они обладают требуемыми свойствами и только ими. Большинство нападений в реальном мире приводит к тому, что системы либо перестают делать то, что им положено, либо начинают вести себя непредвиденным образом.
Сомнение в надежности защиты должно присутствовать постоянно. Подвергните сомнению ваши предположения, ваши решения. Поставьте под вопрос ваши модели безопасности и модели угроз. Продолжайте анализировать деревья атак. Не доверяйте никому, особенно самому себе. Вы будете сильно удивлены тем, что вам удастся обнаружить.
Обнаружение атак намного важнее, чем предотвращение. Я неоднократно уже упоминал о том, что полностью предотвратить нападения невозможно. Конечно, стремиться к совершенству нужно, но все, что нам известно относительно сложных систем, говорит о том, что невозможно выявить и устранить все уязвимые точки. Нападающие найдутся всегда, и их нужно ловить и наказывать.
Меня поражает, насколько часто производители средств защиты компьютерных систем забывают об этом. Вы никогда не увидите дверной замок с рекламным лозунгом: «С этим замком вы можете не бояться воров». Но те, кто продает средства защиты компьютеров, постоянно делают заявления подобного рода: «Брандмауэры исключают возможность проникновения в вашу внутреннюю сеть», «Процедура аутентификации не допустит нежелательных посетителей в вашу систему», «Шифрование не позволит посторонним прочитать содержимое ваших файлов». Все эти заявления безосновательны. Механизмы предотвращения нужны, но предотвращение – только часть решения проблемы безопасности и притом наиболее непрочная часть. Эффективная система безопасности также включает обнаружение нападения и реакцию на него.
В реальном мире люди понимают это. Банки не заявляют: «У нас есть надежное хранилище, так что мы не нуждаемся в системе сигнализации». Никто не увольняет ночную охрану музеев только потому, что в них есть замки на окнах и дверях. В лучшем из миров все, что вы выигрываете за счет применения защитных средств, – это время. В реальном мире средства, предотвращающие нападения, часто не используются вообще.
В некоторых случаях средства защиты – это все, на что вы можете положиться. Шифрование в качестве защитного средства должно предотвращать подслушивание переговоров. Но нет никакого способа обнаружить подслушивание, так что невозможно и никакое реагирование. Тем не менее чаще всего обнаружение и реагирование возможны.
И они обеспечивают большую надежность. Систему безопасности, защищающую ваш дом (дверной замок) легко обойти, если разбить кирпичом окно. Тогда почему большинство домов еще не ограблены? Почему нет публичных призывов использовать окна из поликарбоната? Потому что есть средства обнаружения и реагирования.
Современное общество предотвращает преступления. Это – миф. Если Алиса захочет убить Боба, она сможет это сделать. Полиции не удастся остановить ее, если, конечно, она не полная идиотка. Они не смогут защитить каждого Боба. Боб должен позаботиться о своей безопасности сам. Он вправе нанять телохранителя, если это ему по карману, но это также ничего не гарантирует.
Обычно преступление обнаруживается уже после его совершения. «Офицер, мы только что откопали на задворках Стадиона Гигантов тело Боба, нашпигованное пулями. Я думаю, что здесь пахнет преступлением». Мы расследуем обнаруженные преступления, собираем свидетельства, которые помогут убедить присяжных в виновности обвиняемого. Предполагается, что весь процесс поиска и наказания преступника должен воздействовать на общество в целом и отбивать у других охоту следовать его примеру. Конечно, приговор выносится с целью наказать виновного, но реальная польза обществу состоит в предотвращении новых преступлений, то есть наказание производит профилактический эффект.
Хорошо, что вся эта сложная система более или менее работает, потому что предотвратить преступление намного труднее, чем обнаружить. Для цифрового мира верно то же самое. Компании, выпускающие кредитные карточки, делают все возможное для предотвращения мошенничества, но главным образом они полагаются на средства обнаружения и, в чрезвычайных случаях, на судебное преследование. Сотовые телефоны могут быть клонированы, но механизмы обнаружения ограничивают финансовые потери.
Как борются с воровством в магазинах? Можно существенно ограничить возможность кражи, если прикрепить товары к прилавкам, поместить их в застекленные витрины или позади прилавка. Эти методы работают, но уменьшают продажи, потому что покупателю нравится брать товар в руки. Поэтому появилось множество технологий обнаружения воровства: ярлыки, прикрепленные к товарам, включают сигнализацию при попытке вынести их из магазина. (Существует другой интересный способ борьбы с кражами предметов одежды: к ним прикрепляются ярлыки, которые распыляют краску при попытке удалить их ненадлежащим образом. Этот способ называется лишением выгоды.)
В Интернете обнаружение может оказаться сложным делом. Недостаточно установить брандмауэр и этим ограничиться. Вы должны обнаруживать нападения на сеть. Это требует чтения, понимания и интерпретации огромного количества записей в контрольных журналах, которые делает брандмауэр, а также маршрутизаторы, серверы и другие сетевые устройства, так как вполне возможно, что некоторые атаки обойдут брандмауэр. Такие нападения всегда где-нибудь оставляют след.
Обнаружение должно быть своевременным. (Поздно реагировать на нападение, о котором вы узнаете из утренних газет.) Это означает, что требуется система контроля в реальном времени. Чем скорее вы обнаружите что-то подозрительное, тем скорее вы сможете отреагировать.
Простого обнаружения недостаточно, необходимо понять – что это за нападение и что оно означает. Традиционно, военные разделяют этот процесс на четыре этапа.
Обнаружение. Осознание того, что произошло нападение. Три ключевых сервера вашей сети одновременно вышли из строя. Что это – нападение или просто проблемы программного обеспечения сети? Или, может быть, случайное совпадение? Если вы даже не знаете, нападение это или нет, вы не можете адекватно отреагировать.
Локализация. Определение точки, в которой произошло нападение. Даже если вы знаете, что сеть атакована, вы можете не иметь сведений о том, какие компьютеры или порты подвергаются нападению. Вы можете знать, что поломка серверов – результат нападения, но не иметь никакого понятия, как нападающему это удалось сделать и чем он занят в настоящее время.
Идентификация. Определение, кем является нападающий и откуда он работает. Это поможет составить представление о его сильных и слабых сторонах. Например, с нападающим из Соединенных Штатов можно бороться иными методами, нежели с нападающим из Молдавии. (Этот шаг более важен в традиционном военном процессе, чем в сетевой безопасности.)
Оценка. Понимание целей и мотивов атакующего, его стратегии и тактики, его возможностей и, желательно, его уязвимых мест. Эта информация имеет чрезвычайно важное значение для выбора средств реагирования. Реакция на шалости ребенка будет совершенно иной, нежели на действия промышленного шпиона. Ребенок, вероятно, сразу отключится от соединения, если вы хоть как-то прореагируете на него. Более упорного нападающего так легко остановить не удастся.
Каждый последующий шаг труднее, чем предыдущий, и требует более детальной информации. Часто ее анализ нуждается в участии квалифицированных специалистов, компьютер, предоставленный сам себе, рано или поздно не сможет справиться с этой задачей (хотя автоматическая программа может хорошо работать довольно долго).
На каждом шаге вы получаете все больше информации о ситуации. Чем больше информации вы получаете (и чем скорее), тем лучше вы вооружены. К сожалению, большинство сетевых администраторов никогда не знают, что они подверглись нападению, а если и знают, то не понимают, откуда оно исходит. Идентификацию и оценку особенно трудно осуществить в Интернете, где нападающему легко маскировать свое местоположение.
Скорость существенна. Чем быстрее вы проанализируете нападение, тем быстрее ответите на него.
Поговорим о способах реагирования. Беспрерывно звонящая сигнализация, на которую никто не реагирует, ничем не лучше, чем полное ее отсутствие. Ответ – это то, для чего, собственно, и нужны средства обнаружения.
Иногда реагировать легко: если украден номер телефонный карточки, значит, его следует аннулировать. Иногда бывает сложнее: кто-то проник на сервер электронной торговли. Можно закрыть сервер, но потери составят 10 миллионов долларов в час. И что теперь?
Ответить непросто, хотя часто бывает, что люди принимают разумные решения за доли секунды. «Кто-то забрался на стену и приближается к застекленной крыше. Что нам сейчас делать?» Это во многом зависит от ситуации. Но вы не можете бездействовать. Можно просто прогнать его. Можно прогнать его и удостовериться, что он больше не вернется. Можно прогнать его, определить, как ему удалось туда попасть, и закрыть уязвимое место.
Пресечь нападение – это только половина дела. Не менее важно выследить и найти нападающего. Это бывает очень трудно в некоторых случаях: например, в Интернете нападающий может переходить с одного компьютера на другой, чтобы «замести следы». Полиция не может тратить много времени на расследование таких случаев до тех пор, пока не будут привлечены дополнительные людские или финансовые ресурсы, и я думаю, что частные компании могут оказать помощь правосудию, например, собирая досье на некоторых взломщиков.
Столкнувшись с судебным разбирательством, большинство людей из компьютерного мира, чуждых правовой сфере, обнаруживают, какая это помойная яма. Недостаточно идентифицировать нападающего, необходимо еще доказать это в суде. В Англии предпринимались попытки привлечь к ответственности обвиняемых в мошенничестве с кредитными картами. Как проходит рассмотрение дела в суде?
Защитник требует представить подробные сведения о средствах безопасности, используемых банком: описание технологии, записи в контрольных журналах; обо всем, что может прийти ему в голову. Представитель банка обращается к судье: «Мы не можем представить эти сведения, поскольку это причинит ущерб нашей безопасности». Судья прекращает дело. Система безопасности могла бы быть идеальным образцом обнаружения, она могла бы правильно указать преступника, но если она не переносит процесса раскрытия информации, значит, она недостаточно полезна.
Когда Джон Уокер предстал перед судом за шпионаж, Агентство национальной безопасности тщательно взвешивало, что лучше: раскрыть информацию о том, как Уокер взламывал механизмы шифрования, или сохранить в тайне истинные размеры причиненного им ущерба. Хорошие способы обнаружения должны выдерживать судебный процесс, включая перекрестные допросы с привлечением экспертов, не теряя при этом своей эффективности. Хорошие средства обнаружения и контроля обязаны делать записи в контрольных журналах, которые могут быть использованы в суде в качестве доказательств. Должна быть возможность демонстрировать эти записи, не раскрывая секретов безопасности (это называется разделением знаний, knowledge partitioning).
Бдительность нельзя терять никогда. Чтобы обнаружение и реагирование были эффективны, необходимо работать все время: 24 часа в сутки, 365 дней в году. Службы охраны работают круглосуточно. Компании, обслуживающие системы охранной сигнализации, работают без выходных. В компьютерном мире не может быть по-другому. Вы не можете повесить объявление при входе в вашу сеть: «Пожалуйста, взламывайте нашу сеть только с девяти часов утра до пяти вечера, с понедельника по пятницу, исключая отпускное время». У хакеров свои планы.
Нападения часто происходят в то время, когда к нему не готовы. Преступные хакерские нападения связаны с определенными периодами академического года. Все виды мошенничества в торговле – с банкоматами, кредитными карточками, – учащаются в Рождественские праздники, когда люди тратят много денег. Банковские системы взламываются чаще всего после полудня в пятницу, когда банки закрываются на выходные. В 1973 году арабы напали на Израиль во время празднования Йом Кипур, самого священного еврейского праздника. Если кто-нибудь готовит серьезное нападение, он выберет столь же неудобное время.
Бдительность означает своевременность обнаружения и реагирования. Обнаружить нападение, когда оно происходит, намного важнее, чем через неделю или даже час после случившегося. Гораздо лучше закрыть уязвимые места сразу после их обнаружения, а не в следующем месяце. Запоздалая реакция часто не лучше, чем ее полное отсутствие.
Бдительность также означает подготовленность. Необходимо ясно представлять, что делать в случае нападения. Когда в 2000 году Yahoo! подверглась атаке, приводящей к отказу в обслуживании, потребовалось целых три часа, чтобы возобновить работу. Частично это произошло потому, что Yahoo! никогда раньше не сталкивалась с нападениями этого типа. Когда все идет гладко, люди забывают, как следует реагировать в исключительных ситуациях. Службы слежения и реагирования полезны только в том случае, если они регулярно обнаруживают нападения и реагируют на них.
В банковском деле давно известно, что хорошую безопасность можно обеспечить только с помощью нескольких уровней контроля. Управляющие контролируют кассиров. Бухгалтеры контролируют управляющих. Аудиторы также проверяют, все ли в порядке, но уже другими способами, и их проверки являются эффективным средством контроля деятельности бухгалтеров. Внешние аудиторы действуют как доверенные третьи лица, им платят за проведение проверки независимо от того, найдут они что-нибудь или нет. В игорном бизнесе также используется многоуровневый контроль. Крупье наблюдают за игроками, администраторы наблюдают за крупье, а специальные контролеры наблюдают за администраторами.
В банковском деле эта схема усилена за счет обязательных отпусков. Идея состоит в том, что если кто-нибудь другой займется вашими делами, он, возможно, обнаружит ваши незаконные действия. Некто Ллойд Бенджамин Льюис, младший сотрудник расчетного отдела крупного банка, более двух лет подготавливал крупную аферу. За все это время он ни разу не уходил в отпуск, не болел и не опаздывал на работу. Он должен был всегда быть на рабочем месте, иначе кто-нибудь мог обнаружить мошенничество.
Недостаточно иметь в штате хороших системных администраторов, которые знают все о компьютерах и проблемах безопасности сети, следят за работой системы и отвечают на нападения 24 часа в сутки. Кто-то должен наблюдать за ними. И не только потому, что они могут иметь злой умысел, хотя это и бывает. (Множество преступлений было совершено банковскими руководителями высшего звена, так как у них гораздо больше возможностей уйти от ответственности. Некий контролер игровых автоматов, убедившись, что они не находятся под наблюдением, пытался изменить работу их запоминающих устройств так, чтобы сорвать банк.) Причина в том, что люди есть люди и они совершают ошибки. Даже компьютеры могут ошибаться, и необходимо предусмотреть средства обнаружения и устранения ошибок.
В 2000 году была взломана французская смарт-карта. Ничего нельзя было сделать, кроме как прекратить всякие операции с ней. Подобные проблемы возникали и с проездными карточками в Нью-Йорке, канадской кредитной карточкой и со средствами защиты DVD. Если все ваше время уходит на обдумывание предупредительных мер, вы можете совершенно упустить из виду план действий в случае неудачи.
Предупредительные меры постоянно оказываются неэффективными. Устранение проблемы и выслеживание злоумышленников – очень важные этапы, но не менее важно привести все в порядок после нападения. При разработке систем следует ориентироваться на возможность их модернизации в процессе эксплуатации.
Также желательно предусмотреть специальные средства шифрования, протоколы и процедуры, которые будут использованы в чрезвычайной ситуации. Так можно сократить потери и быстрее восстановить работоспособность системы.
Борьба за безопасность бывает иногда довольно жестокой. Нападающим легче, они могут вести нечестную игру, использовать новую, неизвестную технику нападения. Они могут использовать методы, мысль о которых даже не приходит в голову защищающимся. Они не ограничены моделью угрозы, используемой в защите.
Преимущество нападающего состоит в том, что ему достаточно найти одну незначительную брешь в обороне. Защитник, с другой стороны, должен позаботиться об отражении любого возможного нападения. Он должен все предусмотреть, он не может позволить себе упустить что-либо из виду.
И защитники пребывают в смятении, допуская глупые ошибки. Они пишут код, содержащий множество изъянов. Они не устанавливают «заплаты» и не обновляют средства безопасности. Их вера в абсолютно безопасное изделие сродни теологической. Они не понимают, каковы реальные угрозы, и, соответственно, не принимают необходимых мер.
Время работает на нападающих. Системы должны работать изо дня в день. Нападающие могут ждать, выискивая тем временем слабые места системы, до того момента, когда защитники потеряют бдительность. Они могут менять стратегию и тактику в зависимости от ситуации.
Единственный выход – перейти в наступление.
Мы не боремся с преступностью, когда делаем наши банки невосприимчивыми к нападениям; с преступностью мы боремся, когда ловим преступников. К счастью, преступники довольно глупы. Хороший эксперт по безопасности имеет достаточно высокие доходы, которые и не снились хакеру, поэтому он может господствовать на поле боя.
Когда существовала угроза ядерного нападения СССР на Соединенные Штаты, предполагалось нанести ответный удар в случае ее реализации. Взаимное уничтожение столь же абсурдно, сколь нереально создание неуязвимой системы обороны, но это работало.
Детективное агентство Пинкертона было основано в 1852 году. В самом начале своей деятельности люди Пинкертона защищали от грабителей поезда на американском Западе. Они сразу поняли, что сопровождать каждый поезд – слишком дорогое удовольствие. Они также хорошо понимали, что ограбление – сложная операция: если вы собираетесь ограбить поезд, вам понадобится свой человек в управлении железной дороги, знающий график движения поездов, дюжина людей, лошади и т. д. Немногие способны справиться с такой задачей. Так что люди Пинкертона решили следовать непосредственно за грабителями. Для них было не так уж важно, платит ли железная дорога за расследование; они ловили преступников, чтобы защитить своих клиентов.
Люди Пинкертона были непреклонны. Если бы вы ограбили охраняемый ими поезд, они обязательно бы выследили вас. Это были серьезные ребята; проводились целые вооруженные сражения против банды Hole in the Wall Gang, в которые вовлекались сотни людей Пинкертона. Имеется сцена в «Butch Cassidy and the Sundance Kid» («Грубиян Кэссиди и Малыш»), где гангстеры преследуются после грабежа поезда группой, которая не собиралась отступать. «Кто эти парни?» – спрашивает Грубиян у Малыша. Это были люди Пинкертона.
В киберпространстве нужны такие же хорошие контратаки. Сегодняшняя ситуация такова, что, если вам не грозит расплата, вас ничто не удержит от взлома. Вторжение в сеть – не игра, это – преступление. Кража денег с помощью взлома системы электронных платежей – преступление. Распространение в Интернете материала, защищенного авторским правом, – тоже преступление. И преступники должны преследоваться по закону. Судебное преследование, помимо наказания преступника, приносит дополнительную пользу. Во-первых, осужденный вряд ли пойдет на новое преступление. И во-вторых, вероятно, другие люди не станут рисковать, пытаясь сделать то же самое.
Это не призыв к «охоте на ведьм», чем уже пытались заниматься ФБР и некоторые другие организации в течение прошлого десятилетия. В восьмидесятые годы они знали немного о компьютерах и сетях, а также о компьютерных преступлениях. Опасность виделась повсюду. В 1989 году, когда NuPrometheus League похитила и опубликовала в Интернете исходный код ROM Macintosh, ФБР проводило проверку множества совершенно случайных людей. В 1990 году контрразведка провела облаву в штаб-квартире компании Steve Jackson Games, потому что компания работала над созданием ролевой игры (даже не компьютерной программы), в которой упоминались некие «киберпанки» и хакеры, а также потому, что одного из сотрудников, Лойда Бланкеншипа, подозревали в принадлежности к хакерской группировке «Легион Смерти» (Legion of Doom). В 1999 году Ассоциация контроля за копированием DVD попыталась заткнуть рот 500 веб-сайтам, чье преступление состояло только в публикации сообщения о взломе DVD-криптографии. А в 2000 году Microsoft потребовала, чтобы Slashdot удалил сообщения о закрытых расширениях к протоколу Kerberos.
Это не призыв к крайним мерам, к которым прибегали в девяностые годы. Дэвид Смит, создатель вируса Melissa, может получить от пяти до десяти лет тюрьмы[74]. Кевин Митник получил и отсидел почти пять лет, и ему запрещено пользоваться компьютером еще три года. (Все его навыки связаны с компьютерами, но ему запретили читать лекции по предмету. Чиновник, занимавшийся его досрочным освобождением, предлагал получить работу в Arby.) Кевину Поулсону был вынесен аналогичный приговор. Китайское правительство приговорило хакера к смерти за взлом банковского компьютера и похищение 87 000 долларов. (По правде говоря, в Китае казнят всех грабителей банков.) Помнится, на американском Западе в начале XIX века конокрадов часто отправляли на виселицу. Общество хотело этим показать, что не потерпит конокрадства. Правительства европейских стран продемонстрировали такое же отношение к террору в начале 70-х, когда террористов начали расстреливать на улицах. Тем самым они предельно ясно объявили: «Мы больше не играем в игры». Чрезмерно суровые приговоры, выносимые хакерам, связаны с панической реакцией общества на новую угрозу.
Это также не воззвание к тому, чтобы объявить вне закона любых исследователей или хакеров, практику «полного раскрытия» или отменить право оценивать надежность средств безопасности. Законы Соединенных Штатов запрещают «обратное проектирование» (reverse engineering) систем защиты от копирования. Индустрия развлечений вовсю лоббирует эти драконовские законы, чтобы с их помощью скрыть недостатки защиты своих продуктов. Ни в одной другой отрасли промышленности производители не пытаются запретить покупателю исследовать товар, чтобы понять, как он работает. Никакая другая промышленность не пытается помешать оценивать качество ее изделий по схеме «Отзывы потребителя». Глупо казнить гонца, принесшего дурные вести.
К чему я призываю, так это к ужесточению судебного преследования людей, вовлеченных в преступную деятельность, и к вынесению справедливых приговоров. Широко распространена такая точка зрения: «Если я сижу спокойно и не поднимаю шума, то никто не побеспокоит меня». Компании неохотно преследуют компьютерных преступников, потому что боятся мести. Действительность же такова, что до тех пор, пока мы не начнем преследовать преступников, они будут и далее распространять средства нападения и взламывать сети. Как только мы начнем наказывать их, хакерство перестанет быть столь привлекательным делом. Это не идеальное решение, так как хакеры, скорее всего, уйдут в подполье, но ситуация все же изменится. Применение в семидесятые годы жестких мер против терроризма имело два положительных эффекта: неисправимые террористы были вынуждены действовать с большей осторожностью, а другие просто сложили оружие.
Абсолютной безопасности не существует, но не всегда это является проблемой. Только в Соединенных Штатах индустрия кредитных карточек теряет из-за мошенничества 10 миллиардов долларов в год, но ни Visa, ни MasterCard не собираются сворачивать бизнес. Ущерб от краж в магазинах Соединенных Штатов составляет от 10 до 26 миллиардов долларов в год, но при этом «утруска» (как это называется) редко становится причиной закрытия магазинов. Недавно мне понадобилось заверить документ у нотариуса: эта процедура использует самый слабый «протокол безопасности», который я видел когда-либо. Однако она прекрасно служит тем целям, ради которых была разработана.
После того как вы определили угрозы, вам предстоит сделать выбор: смириться с риском, постараться снизить его или застраховаться. Если нельзя полностью обезопасить себя, нужно управлять риском. Компании, выпускающие кредитные карточки, понимают это. Ущерб от мошенничества известен. Известно также, что потери, связанные с оплатой по телефону, приблизительно в пять раз больше потерь при непосредственных расчетах по сделке с использованием кредитной карточки и что потери от сделок в Интернете еще вдвое больше. (Многие издержки от фальшивок типа «карта не настоящая» несут торговцы, которые неактивно обращались за помощью при предъявлении счета.) Они выдвигают альтернативы Интернету, такие как SET, именно ввиду повышенного риска.
Закрытая система, подобная этой, – исключение. Мое первичное опасение относительно киберпространства состоит в том, что люди не понимают опасностей и слишком верят в способность технологии устранить их. Киберпространство где-то копирует физический мир, а где-то разительно от него отличается (см. главу 2). И продукты безопасности не могут в одиночку решить ее проблемы.
Необходимо изменить отношение к средствам безопасности. Сейчас средства защиты выдаются производителями за профилактические меры, способные полностью исключить возможность нападения. Хорошее шифрование якобы предотвращает подслушивание. Хороший брандмауэр якобы предотвращает нападения на сеть. И так далее.
Принцип предотвращения угроз более подходит для формирования политики национальной безопасности, чем для организации защиты в коммерческом мире. Бизнес почти всегда связан с риском, поэтому в реальном мире большее внимание уделяется средствам обнаружения и реагирования. Веб-сайты не нуждаются в абсолютно не поддающихся взлому паролях, достаточно, если они будут защищать от нападений большую часть времени. Нет необходимости создавать абсолютно надежные смарт-карты, достаточно, чтобы механизмы обнаружения и реагирования успевали сработать вовремя. (На самом деле и это не так уж важно: в системе кредитных карточек, где вращаются многие миллиарды, используются очень слабо защищенные карты с магнитной полосой и управляемые продавцом терминалы.)
Как только вы начинаете думать о безопасности подобным образом, все остальное разваливается на кусочки. Если безопасность служит для ухода от угроз, тогда она должна оправдывать вложенные деньги. Если безопасность – управление рисками, это становится способом повысить доход. Если компания способна вычислить, как управлять опасностью, которая может возникнуть при подключении к сети их системы, то она сможет захватить большую часть рынка. Если компания кредитных карточек сумеет спрогнозировать, как управлять рисками некоторого класса клиентов, то она сможет продавать большее количество кредитных карточек. Бизнес – это всегда риск, и более востребованы те люди, которые лучше умеют управлять рисками.
Безопасность старее компьютера И промышленность, выпускающая защитные средства, думает о контрмерах как способах управлять риском. Различие огромно. Уход от угроз – как черное и белое: или вы избегаете угрозы, или нет. Управление риском неоднозначно: вы или принимаете риск, или уменьшаете его, или страхуетесь.
Безопасный компьютер – тот, который вы застраховали.
Я считаю, что будущее компьютерной безопасности – за страхованием. Можно застраховаться от чего угодно: от кражи или вандализма, от того, что какой-нибудь выродок расстреляет ваших сотрудников, и т. д. Почему в таком случае не застраховаться от нарушения цифровой безопасности?
Крупные страховые компании не упускают такую возможность. Они разрабатывают различные аспекты страхования рисков, связанных с компьютерной безопасностью: страхование внутренних сетей, страхование от нападений, приводящих к отказу в обслуживании, от подмены веб-сайта при взломе. Это трудная задача, поскольку никто не знает, с какими рисками придется иметь дело.
Излюбленная шутка страховщиков: к ним обращается некая компания, желающая застраховаться от какой-то неслыханной опасности. Между страховщиками и представителями компании происходит следующий диалог:
– Как велики возможные потери?
– Мы не знаем.
– Как может наступить страховой случай?
– Мы не знаем.
– Сколько стоит ваша компания?
– Столько-то.
– Это и будет страховой взнос, можете внести его.
Уже сейчас страховые компании предлагают страхование от хакерства, но я не думаю, что они достаточно хорошо представляют, на что идут. Большинство стратегий сложны и неуправляемы и содержат так много условий, что я не уверен, окупятся ли они когда-нибудь. Преимущество стандартизации процессов безопасности – возможность количественной оценки рисков. Если тысяча компаний используют схожие безопасности, то страховые фирмы могут выработать соответствующую политику. Так работает ADT. Компании покупают обслуживание не потому, что это делает их товарные склады более безопасными, а потому, что имеют возможность оценивать риски.
Со временем появятся два типа страхования сети. Первый тип очевиден: если кто-то вламывается в вашу сеть и причиняет вам ущерб, страховая компания компенсирует его. Но второй тип страхования даже более важен. Представьте, что кто-то проникает в вашу сеть и разоряет ваших клиентов, пользуется их конфиденциальной информацией и наносит непоправимый урон их репутации. Размер компенсации в этом случае может быть огромен. Страхование от угроз подобного типа оказывается рискованным.
Управление риском – будущее цифровой безопасности. Кто научится лучше управлять рисками, тот – победитель. Страхование – важная составляющая управления рисками. С помощью технических решений можно уменьшить риски до такого уровня, что страхование становится оправданным.
Процессы безопасности – это способ уменьшения рисков. Средства защиты сети всегда имеют недостатки: необходимы некоторые процедуры, как для того, чтобы поймать нарушителей, которые используют в преступных целях эти недостатки, так и для исправления найденных ошибок. Если атакующий является посвященным лицом, то необходим процесс, который позволит обнаружить нападение, восстановить систему после нанесенных повреждений и преследовать преступника по закону. В сложных системах обычно присутствует множество уязвимых мест, и это может поставить под угрозу функционирование программ и оказание многих услуг (вспомните сотовые телефоны и DVD); тогда процесс необходим для восстановления системы и укрепления безопасности. Контрразведка – единственный способ быть в курсе того, что действительно происходит. Чтобы управлять остаточным риском, существует страхование.
Все эти процессы сложны, и, чтобы их обеспечить, нужны специалисты. И поскольку уже многие аспекты нашей жизни тем или иным образом связаны с киберпространством, растут требования к компьютерной безопасности, а следовательно, и спрос на специалистов. Единственно правильное решение – привлекать экспертов как можно чаще.
Представим центр, контролирующий безопасность большой сети. Требуется как минимум пять обученных аналитиков для замены одного, работающего в режиме 24 х 7 (часов и дней), а согласованные атаки могут потребовать внимания полдюжины аналитиков. Отдельной организации не выгодно нанимать стольких людей на постоянную работу, поскольку нападения происходят довольно редко, удобнее привлекать этих людей в необходимых случаях. Независимая служба способна обучать своих аналитиков теории и практике. Эта служба может активно испытывать меры противодействия, анализировать способы вторжения, разрабатывать новые способы отыскания уязвимых точек и быть в курсе новых методов взлома. Она также может наблюдать процессы, происходящие в различных зонах Интернета, а не только в сети одной организации.
Я думаю, что в ближайшее время возрастет число действующих в киберпространстве независимых служб безопасности, подобно тому как в физическом мире растет число частных служб охраны, таких как Allied Security и компаний по обслуживанию сигнализации, подобных ADT. Слишком много специальных знаний требуется для обеспечения безопасности киберпространства, и только сотрудники специализированной службы могут в полной мере обладать этими знаниями. Моя консультационная компания Counterpane Systems предлагает разработку и анализ систем безопасности с привлечением средств криптографии. Другие компании предлагают оценку риска, разработку политики безопасности, установку, испытание, обновление оборудования и т. д.
Такие компании оказывают и услуги по защите систем на предприятиях. Кто-то должен постоянно контролировать работу средств защиты и реагировать на все, что происходит. Они (один человек не может находиться на рабочем месте все 24 часа) должны разбираться в нападающих и их методах. Они должны поддерживать средства защиты, приспосабливаясь к постоянным изменениям в сетях и сетевых службах. Компании не могут самостоятельно справиться с этим. Они производят автомобили, продают книги или занимаются чем-либо еще, но не безопасностью сетей. Они привлекают независимые, специализирующиеся в этом компании для управления их сетями, а также для обеспечения безопасности. Конечно, всегда будут специализированные сети (банковские, сети сотовой связи, системы кредитных карточек), которые должны быть закрытыми, и всегда найдутся консультанты безопасности, специализирующиеся в этом. Этим занимается моя новая компания Counterpane Internet Security, Inc.
Это нормальная эволюция служб безопасности. Никто не нанимает свою собственную охрану; ее привлекают. Никто не нанимает своих собственных аудиторов; их привлекают. Даже такая обыденная вещь, как нарезка бумаги для документов, лучше будет сделана в привлеченной компании, специализирующейся в этом.
Кроме выгоды от профессионального подхода и эффективности, практика привлечения специализированных служб способствует тому, что аналитические данные по проблемам безопасности накапливаются. Привлекаемые компании могут заниматься активным сбором информации о новых видах нападений и, возможно, даже вести разведывательную деятельность среди хакеров для предотвращения преступлений. Они сталкиваются с различными моделями нападения и могут их распознавать. И они способны защитить от атак своих многочисленных клиентов: могут обнаружить нападение в Нью Дели и защитить своих клиентов в Нью-Йорке. В реальном мире организации привлекают службы безопасности. Никакая компания не нанимает собственных охранников, каждая обращается в охранную компанию. Банки платят за транспортировку автомобильным компаниям, обеспечивающим вооруженную охрану. Компании приглашают аудиторов для проверки правильности ведения дел. Обеспечение безопасности компьютера от обеспечения безопасности сети ничем не отличается. Оно в той же степени сложно и важно. Безопасность требует бдительности. В цифровом мире привлеченные услуги – единственное, что может обеспечить необходимую бдительность.
Марк Лойзокс, президент фирмы «Управляемые Разрушения» (Controlled Demolitions), взрывает старые здания для постройки новых. Жалуясь на «непрофессионализм» современных террористов, он утверждал в журнале Harpers Magazine (июль 1997): «Мы можем взорвать все мосты в Соединенных Штатах за пару дней… Я берусь заехать на грузовике на мост Верразано[75], взорвать мост и уехать обратно на велосипеде. И никто мне не помешает в этом».
Так как технологии усложняются, социологи приобретают более узкую специализацию. Почти для каждой области деятельности характерно, что люди, имеющие знание ее социальной инфраструктуры, также обладают знаниями по ее уничтожению.
Спросите любого врача, как кого-нибудь отравить, он сможет рассказать вам. Поинтересуйтесь у какого-нибудь аэродромного служащего, можно ли безнаказанно вывести из строя «Боинг-747», и не сомневайтесь, он знает, как это сделать. Теперь справьтесь у любого профессионала по безопасности Интернета, как «сломать» Интернет. Мне поведали примерно с полдюжины различных способов, и я знаю, что это не предел.[76]
Перед обладателем таких знаний система беззащитна. Все, что для этого нужно, – это сочетание умений и моральных качеств. Иногда даже не требуется большого навыка. Тимоти Маквей[77] натворил вполне достаточно в правительственном здании Оклахома-Сити, даже несмотря на утилитарное использование взрывчатых веществ, что вызвало бы отвращение у такого профессионала, как Лойзокс. Доктор Гарольд Шипман убил 150 своих пациентов, используя такие безыскусные методы, как впрыскивание морфия.
На первый взгляд киберпространство никак не отличается от любой другой инфраструктуры нашего общества, оно настолько же непрочно и уязвимо. Но, как я говорил в главе 2, характер нападений различен. Маквей должен был приобрести знание, прийти на частную ферму и попрактиковаться во взрывах, арендовать грузовик, нагрузить его взрывчаткой, приехать к месту теракта, зажечь запал и уйти. Доктор Шипман ничего бы не добился без медицинской практики, не обзаведясь пациентами. Наш гипотетический борец с «Боингами» должен уметь обслуживать самолеты. Они все обязаны были подобраться близко к цели, подвергнуть себя риску, осуществить задуманное, совершить ошибки. И они должны были знать, что делают.
Или подумайте о гонке ядерных вооружений. Еще не было никакой крупномасштабной эскалации вооружений, а знания по производству ядерных бомб стали достоянием публики. Почему так случилось? Потому что эти знания не являлись опасными; осуществить громоздкие технические программы, вложив в них гигантские средства, могли себе позволить только единичные государства.
Киберпространства бывают разные. Вы можете находиться в другом месте, далеко от узла, на который вы нападаете. Вы можете не иметь никаких навыков и вообще ничего, кроме программы, которую вы загрузили с первого попавшегося веб-сайта. И вы даже не подвергаетесь риску. Порядочный хакер распространит сведения о найденной уязвимости в Интернете, а преступник напишет программу-имитатор нападения, которая продемонстрирует уязвимость, и затем любой неумеха без комплексов сможет воспользоваться ею для нападения. Например, как червем филиппинского студента, инфицировавшим десять миллионов компьютеров, что повлекло 10 миллиардов долларов ущерба. Или, возможно, в некотором царстве-государстве с неразвитой правовой системой приютилась веб-страница, которая содержит приложение Java: «Щелкните здесь, чтобы „сломать" Интернет». Не очень привлекательно, так ведь?
В девятнадцатом столетии французский социолог Эмиль Дурхейм постулировал, что анонимность делает людей преступниками. Вы можете дополнить его доводы, приведя в пример психологию современного хакера: невозможность ни с кем связаться, анонимность действий и отсутствие последствий за содеянное приводят некоторых людей к антиобщественным поступкам. Миазмы, вредные влияния виртуального пространства – гарантия этого.
Технология – не панацея, она не смогла помешать Маквею или Шипману. Оба были схвачены с помощью процессов безопасности: обнаружения и реагирования. В случае Шипмана обнаружение и реагирование абсурдно не соответствовали, и он избежал должной за свою бойню кары на десятки лет заточения. Правоохранение выявило случившееся, расследование установило, кто это сделал, а закон не наказал виновного по заслугам[78].
Для социальных проблем нет технических решений. Законы жизненно важны для безопасности.
Если кто-нибудь изобретет дверь, которую невозможно вскрыть, такой же оконный замок или совершенную систему сигнализации, общество не изменится и не скажет: «Нам не нужны полиция или устаревшие законы о взломе и вторжении». Если история преступной деятельности что-нибудь и показала, так это ограниченность технологий. Мы нуждаемся в охране для наблюдения за продуктами и в полиции для расследования преступлений. Нам требуются законы, чтобы преследовать по суду мошенников в сфере электронной торговли, нарушителей компьютерной безопасности и людей, которые создают средства, облегчающие эти преступления. Мы можем внедрить наилучшие технологии для предотвращения преступлений, которые совершаются в первый раз, или для их обнаружения уже после свершившегося факта. Но мы все равно окажемся перед необходимостью полагаться на охрану для поимки преступника и на судебную систему для вынесения приговора. Мы можем сделать все возможное, чтобы помешать проведению маркетинговых исследований фирмы, включающих нелегальный сбор информации на людей, но мы также нуждаемся в законах, чтобы преследовать по суду эти нарушения.
Короче говоря, мы должны заручиться гарантией, что люди будут подвергать себя опасности при совершении преступлений в киберпространстве.
Мы также должны учиться на своих ошибках.
Когда самолет DC-10 терпит крушение, что-либо узнать об этом легко. Есть расследования и отчеты, и в конечном счете люди учатся на таких несчастных случаях. Вы можете подключиться к Air Safety Reporting System и получить детальные описания десятков тысяч аварий и несчастных случаев, начиная с 1975 года.
Крах безопасности происходит по разным причинам, но обычно не из-за шаровой молнии или внезапного удара. Наиболее успешные нападения (на банки, корпорации и правительства) не упоминаются в средствах массовой информации. Некоторые из них проходят незамеченными даже самими жертвами. Мы знаем все относительно MD-80[79], вплоть до металлургии винтового домкрата, и лишь немного о том, как нападавшие крали номера кредитных карточек с веб-узлов. Это подобно Аэрофлоту Советского Союза: официально никогда не происходило никаких аварий, но каждый знал, что иногда самолеты не достигают пункта назначения по загадочным обстоятельствам.
Предание гласности не оценивается по достоинству. Когда в 1995 году Ситибанк потерял 12 миллионов долларов из-за российского хакера, банк объявил о факте внедрения и уверил клиентов, что предпринял новые, более серьезные меры безопасности для предотвращения таких нападений в будущем. Даже в этом случае миллионы долларов были отозваны людьми, которые полагали, что их счета стали уязвимы сразу после объявления Ситибанка. В конечном счете, Ситибанк возместил убытки, но получил ясный и однозначный урок: не разглашать.
Мы обязаны предавать гласности нападения. Должны открыто анализировать, почему системы выходят из строя. Мы должны разделить информацию о нарушениях безопасности на причины, слабые места, результаты и методики. Секретность только на руку нападающим.
Недальновидная политика тех, кто стремится запретить перепроектирование, только ухудшает положение. Почему люди, покупающие программное обеспечение, не должны знать, как оно работает, в отличие от покупателей, например, автомобилей? Почему программное обеспечение должно быть освобождено от «Отзывов потребителя» (способа анализа и испытания)? Опять тайна только помогает нападающим.
И мы нуждаемся в реальной ответственности поставщиков за продукты. Это очевидно: поставщики не будут предоставлять безопасное программное обеспечение, пока это не в их интересах.
Сочетание безответственности и невозможности перепроектирования особенно разрушительно. Если исследователям запрещен анализ безопасности продукта, имеет ли смысл ограждать поставщиков от ответственности? И если поставщики не несут никакой ответственности за некачественные продукты, то как указание на недостатки может быть незаконным?
Всюду в этой книге я доказывал, что технологии безопасности имеют ограничения. Я не хочу сказать, что они бесполезны. Такие контрмеры, как криптография, защита от несанкционированного вмешательства и обнаружение вторжения, делают систему более безопасной. Технологии задерживают незрелые сценарии и случайных нападающих, которые действительно не ведают, что творят. Но эти технологии подобны рентгеновской установке и датчикам металла в аэропортах: они не делают ничего, чтобы остановить профессионалов, но препятствуют любителям.
Средний человек не способен отличить хорошую безопасность от плохой. Она так же работает и столько же стоит. (Плохая безопасность могла бы даже лучше смотреться и меньше стоить; компания, которая не слишком волнуется о безопасности, может уделять больше ресурсов для изготовления модных «примочек».) Реклама и специальная литература в обоих случаях одинаковы. Разницы не заметить, не заглянув внутрь исходного кода или «железа». И к тому же вы должны быть специалистом. Средний человек все еще не может отличить продукт высокого качества от подделки.
Мир заполнен вещами, угрожающими общественной безопасности, суть которых находится вне понимания среднего человека. Люди не могут отличить безопасную авиалинию от опасной, но 1,6 миллиона человек в Соединенных Штатах летают каждый день. Люди не всегда способны отличить качественное лекарство от бесполезного, и все же объем американского фармацевтического рынка составляет 60 миллиардов долларов в год. Люди пользуются «заезженными» каботажными судами, доверяют свои деньги не тем, кому следует, и едят обработанное мясо – не проявляя реального беспокойства по поводу своей безопасности.
В коммерции все то же самое. Когда в последний раз вы лично проверяли точность насосов бензоколонки, или счетчик такси, или информацию о весе и объеме пищевых продуктов в пакетах? Когда в последний раз вы вошли в офис здания и потребовали показать свидетельство последнего осмотра лифта? Или проверяли лицензию фармацевта?
Мы часто полагаемся на правительство для защиты потребителя в областях, где большинство людей не имеют навыков или знаний, чтобы оценить риски должным образом и сделать разумный выбор покупки. Федеральное авиационное агентство (FAA) регулирует безопасность авиатранспорта; Министерство транспорта (DOT) отвечает за безопасность автомобилей. Администрации штатов регулируют веса и меры в торговле. Вы не можете ожидать от семейства, движущегося в направлении к Диснейленду, принятия разумного решения относительно того, является ли их самолет безопасным для полета или арендованный автомобиль безопасным в движении. Мы не ждем, что балкон второго этажа гостиницы упадет на портик ниже. Вы можете спорить о том, действительно ли правительство хорошо справляется со своей ролью (так как избиратели не понимают, как оценивать риски, то они и не вознаграждают правительство за хорошую оценку угрозы), но все же благоразумнее оставить эту роль именно ему.
Но если Управлению по контролю за продуктами и лекарствами США (FDA) доверить роль управления Интернетом, то в результате государственного регулирования из Интернета, вероятно, будет вычищено все, что делает его Сетью, сама его сущность. Регулирование часто выбирает неправильные решения (сколько денег было потрачено, чтобы оснастить посадочные места в самолетах спасательными поясами, и какое количество людей реально воспользовались ими при крушении?), и оно медлительно. FDA потребовалось три с половиной года на утверждение Interleukin-2[80], что соответствует вечности в мире Интернета. С другой стороны, неспешность FDA бывает иногда на пользу: из-за нее Соединенные Штаты не имели национальной катастрофы из-за «Талиломида» (Thalidomide)[81] в масштабе Британии. И благодаря ей же продажа «Лаэтрила» (Laetrile)[82] на американском рынке так и не была санкционирована.
Или представим, что Underwriters Laboratory отвечает за безопасность киберпространства. Это частная лаборатория, которая испытывает и сертифицирует электрическое оборудование. (Они также оценивают надежность сейфов.) «Отзывы потребителей» предоставляют подобный сервис для других продуктов. Частная компания может обеспечить компьютерную и сетевую безопасность, но ценой огромных затрат. И поэтому правительство отворачивается от такой модели, а новые законы в Соединенных Штатах не признают законность оценки безопасности продуктов частыми компаниями и лицами.
Другой пример. Medical Doctors и Registered Nurses лицензированы. Инженеры, имеющие сертификаты, могут помещать буквы РЕ (зарегистрированный инженер) после своего имени. Но свидетельства значимы на местах, а Интернет глобален. И все еще нет никакой гарантии.
Все эти модели не выводят нас из затруднительного положения. Мы нуждаемся в технологических решениях, но они пока не совершенны. Мы нуждаемся в специалистах для управления этими технологическими решениями, но имеющихся специалистов мало. Мы нуждаемся в сильных законах, чтобы преследовать по суду преступников, и готовы следовать установленному порядку, но большинство атакованных компаний не хотят обнародовать случившееся.
В главе 24 я доказывал, что способов обеспечить безопасность при ограничениях технологии, кроме как задействовать процессы безопасности, нет. И что эти процессы неразумно осуществлять силами организации, правильнее привлечь профессионалов безопасности киберпространства. Это представляется единственным выходом из обрисованного выше положения.
Предположим, что решение привлечь стороннюю организацию вас устраивает.
В моей первой книге «Прикладная криптография» я писал: «Шифрование слишком важно, чтобы оставить его исключительно правительству». Я все еще верю этому, но в более общем смысле. Безопасность слишком значительна, чтобы разрешить ею заниматься любой организации. Доверие нельзя доверить случаю.
Доверие индивидуально. Один человек всецело доверяет правительству, в то время как другой может не доверять ему вообще. Различные люди могут доверять различным правительствам. Некоторые люди доверяют корпорациям, но не правительству. Невозможно проектировать систему безопасности (продукт или процесс), которая будет лишена доверия; даже человек, пишущий собственное программное обеспечение безопасности, должен вверить его компилятору и компьютеру.
К сожалению, большинство организаций не понимают, кому они доверяют. Кто-то может вслепую положиться на какую-то особую компанию без особой на то причины. (Слепая вера некоторых людей заставляет их иметь особенную операционную систему, брандмауэр или алгоритм шифрования.) Иная администрация безоговорочно доверяет своим служащим. (Я слышал, что некоторые оценивают безопасность не по тому, сколько истратили на брандмауэр, а по тому, сколько стоит системный администратор.)
Из того, что безопасность по своей сути обязана ограничивать риски, вытекает, что организации должны доверять объектам, которые ограничивают их риск. Это значит, что объекты имеют гарантию. Доверенные объекты обладают такими свойствами, как проверенный послужной список, хорошая репутация, независимые сертификаты и аудиторы. Каждое по отдельности не считается доказательством, но все вместе являются основанием для доверия.
Выбор заключается не в том, чтобы доверять организации, а в том, какой организации доверять. Для меня отдел MIS (управленческой информационной структуры) компании, в которой я работаю, вероятно, заслуживает меньшего доверия, чем независимая привлеченная организация, которая всерьез заботится о безопасности.
Безопасность – это не продукт, а процесс. Вы не можете ее просто добавить к системе уже после нападения. Жизненно важно понять реальные угрозы для системы, спроектировать политику безопасности, соразмерную серьезности угроз, и реализовать соответствующие контрмеры. Помните, что не требуются идеальные решения, но также недопустимы системы, которые можно полностью разрушить. Хорошие процессы безопасности также существенны, они помогают продукту работать.
Благоразумнее готовиться к наихудшему. Нападения и нападающие со временем только совершенствуются, а системы, установленные сегодня, могли быть к месту на 20 лет раньше. Реальным уроком Y2K[83] стала замена устаревшего кода компьютера. Мы все еще подвержены ошибкам, допущенным в аналоговых телефонных системах десятилетия назад и в цифровых сотовых системах годы назад. Мы все еще работаем с опасным Интернетом и ненадежными системами защиты пароля.
Мы также до сих пор еще имеем дело с ненадежными дверными замками, уязвимыми финансовыми системами и несовершенной юридической системой. Но все же ничто из перечисленного не является причиной крушения цивилизации и маловероятно, что станет. И мы не добьемся должной цифровой безопасности, пока не сосредоточим внимание на процессах безопасности, а не на технологиях.
Эта книга постоянно менялась. Я написал две трети книги и осознал, что мне нечем обнадежить читателя. Казалось, возможности технологий безопасности исчерпаны. Мне пришлось отложить рукопись более чем на год, было слишком тягостно работать над ней.
В начале 1999 года я разочаровался в своей консультационной деятельности. Компания Counterpane Systems давала консультации по криптографии и компьютерной безопасности на протяжении нескольких лет, и бизнес быстро развивался. В основном наша работа заключалась в проектировании и анализе. Например, заказчик приходил к нам со своей проблемой, и мы разрабатывали систему, которая была способна противостоять определенным угрозам. Или же заказчик приходил к нам с уже разработанной системой, которая должна была противостоять целому списку угроз, а мы искали просчеты в решении и устраняли их. Мы могли работать до изнеможения. Единственная проблема состояла в том, что наши изящные разработки не выдерживали столкновения с реальным миром. Хорошая криптография постоянно оказывалась неэффективной из-за плохого исполнения. Прошедшие тщательные испытания средства защиты отказывали из-за ошибок, допущенных людьми. Мы делали все, что могли, но системы все же оставались ненадежными.
От криптографии я обратился к безопасности и представлял себе проблему примерно так же, как и военные. Большинство публикаций по вопросам безопасности были проникнуты той же идеей, которую можно кратко сформулировать так: профилактические меры могут обеспечить безопасность.
Для чего используется шифрование? Существует угроза прослушивания, и шифрование должно помешать этому. Представьте себе, что Алиса общается с Бобом, а Ева подслушивает их. Единственный способ помешать Еве узнать, о чем говорят Алиса и Боб, – использовать такое профилактическое средство защиты, как шифрование. В этом случае нет ни обнаружения, ни реагирования. Нет также возможности управлять риском. Поэтому следует заранее отвести угрозу.
В течение нескольких десятилетий мы использовали этот подход к безопасности. Мы рисовали различные схемы. Мы классифицировали различных нападающих и определяли, на что они способны. Мы использовали профилактические меры, такие как шифрование и контроль доступа. Если мы можем отвести угрозы, то мы победили. Если нет – мы пропали.
Вообразите мое удивление, когда я узнал, что в реальном мире такой подход не работает. В апреле 1999 года я прозрел: безопасность связана с управлением рисками, процессы безопасности имеют первостепенное значение, а обнаружение и реагирование – реальные способы улучшить безопасность, и все это могут обеспечить лишь привлеченные независимые компании. Внезапно все стало на свои места. Так что я переписал книгу и преобразовал свою компанию Counterpane Systems в Counterpane Internet Security, Inc. Теперь мы предоставляем услуги по контролю безопасности сетей (обнаружение и реагирование).
Раньше, когда использовалась связь только по радио или телеграфу, такой подход не имел бы смысла. Обнаружение и реагирование были невозможны. Сегодняшний электронный мир сложнее. Нападающий не просто подключается к линии связи. Он взламывает брандмауэр. Он пытается украсть деньги, используя подделанную смарт-карту. Он хозяйничает в сети. Сегодняшний виртуальный мир больше похож на физический со всеми его возможностями.
Но это не ситуация «все или ничего». Раньше, если уж Ева умела подслушивать, то она могла бы подслушать всех. А если бы у нее не было такой возможности, то ей не удалось бы подслушать никого. Сегодня все иначе. Можно украсть деньги, но не слишком много. Пират-одиночка может сделать несколько копий DVD, но не десятки тысяч. Нападающий может проникнуть в сеть и поковыряться в ней минут десять, после чего он будет обнаружен и выдворен.
Реальный мир полон опасностей. Это не значит, что их нужно избегать, невозможно делать деньги, ничем не рискуя. В выигрыше оказывается не та компания, которая лучше всех отводит угрозы, а та, которая лучше всех управляет рисками. (Вспомните систему кредитных карт.)
В Counterpane Internet Security мы считаем, что одни только технические средства не могут защитить от нападений, осуществляемых человеком, поэтому основная наша деятельность заключается в предоставлении услуг квалифицированных специалистов по безопасности. Мы собираем информацию с разных устройств в сетях клиентов и тщательно выискиваем следы нападений. Все сколько-нибудь подозрительное исследуют наши аналитики, которые знают все о нападениях, могут определить, действительно ли происходит нападение, и знают, как на него реагировать.
Я понял, что проблема не в технологиях, а в их использовании. В своей фирме мы используем симбиоз человеческих способностей и возможностей машины. Люди – наиболее уязвимое звено любой системы безопасности, в том числе компьютерной.
И если читателю покажется, что эта книга написана в рекламных целях, то он будет отчасти прав. И книга, и новая компания появились на свет благодаря открытию того, что самую надежную защиту можно обеспечить только с помощью опытных специалистов, занимающихся обнаружением и реагированием. Эта книга отражает ход моих мыслей, связанных с преобразованием нашей компании, и поясняет, чем мы занимаемся.
Вы можете узнать больше о нас на сайте www counterpane com.
Спасибо за внимание.