Не менее важно разумное вложение средств в применяемые меры противодействия. Не имеет смысла тратить кучу денег на самый лучший замок на входной двери, если злоумышленник способен проникнуть через окно. Нерационально тратить 100 долларов на пуленепробиваемое стекло, чтобы защитить имущество, оцениваемое в 10 долларов. Можно сказать, что, например, применять сложные методы шифрования для кабельного телевидения – это то же самое, что «повесить замок на сумку из бумаги».
   Ценность чего-либо всегда определяется в зависимости от окружающих условий. До того как стали применяться жесткие диски, подростки иногда воровали в офисах дискеты… поскольку они могли представлять ценность. Некоторые компании потеряли таким образом довольно важные данные. А с другой стороны, маловероятно, что украдут кредитную карточку общей стоимостью около 100 долларов, у которой 0,25 доллара на депозите. Тщательный анализ стоимости очень важен при разработке рациональных мер противодействия телефонному мошенничеству и созданию пиратских копий программного обеспечения.
   Следует помнить, что возможный противник далеко не всегда преследует цель обогащения. Иначе как тогда объяснить поведение хакера, который тратит сотни часов на то, чтобы взломать бесполезную компьютерную систему? Многие нападающие стремятся к огласке, или хотят отомстить, или имеют иные, нематериальные цели; помните об этом, когда анализируете ценности.
   Также полезно иметь в виду, что блокирования любого из четырех первых шагов атаки достаточно, чтобы ее пресечь. Простые меры противодействия, такие как обучение персонала, грамотная политика безопасности, процедуры, связанные с контролем доступа, являются разумными и рентабельными средствами, позволяющими снизить риск, создаваемый ландшафтом уязвимых точек. Эти простые мероприятия могут значительно повысить сложность и рискованность действий, необходимых для осуществления успешной атаки.
   Следующие несколько глав будут посвящены моделированию угроз, оценкам риска и определению необходимых мер противодействия.

Глава 19
Моделирование угроз и оценки риска

   Моделирование угроз – это первый шаг в решении проблемы безопасности. Это попытка осмыслить информацию, которую можно извлечь из ландшафта уязвимых мест. Что может оказаться реальной угрозой для системы? Если вы не знаете этого, как вы можете определить, какие меры противодействия нужно использовать?
   Моделирование угроз – трудное дело, и успех в нем приходит только с опытом. Для его осуществления необходимо использовать системный подход и хорошо представлять себе все особенности ландшафта. Как лучше провести нападение на систему? Я нахожу, что истинные хакеры весьма искусны в решении этого вопроса, и может быть, компьютеры их привлекают в первую очередь именно возможностями интеллектуальной игры. Хакеры получают удовольствие, размышляя о недостатках систем: как можно их одолеть, почему это возможно и что при этом будет происходить? Они испытывают наслаждение, заставляя систему делать то, для чего она не была предназначена. Те же чувства испытывает умелец, способный переделать двигатель своего автомобиля, чтобы он работал так, как ему хочется, а не так, как предполагал его производитель. Такое же удовольствие получает хакер, взламывающий брандмауэр через Интернет, чтобы убедиться в том, что он способен «овладеть» чужим компьютером.
   Я пришел к выводу, что наилучшими экспертами в области безопасности являются люди, исследующие несовершенства защитных мер. Они идут на избирательный участок, размышляя о том, как можно было бы в обход установленного контроля проголосовать дважды. Когда они пользуются телефонной карточкой, они думают о средствах защиты от мошенников и о том, как можно их обойти. Эти размышления вовсе не обязательно подталкивают их к конкретным действиям, и если они обнаруживают, например, появившееся «слепое пятно» в системе видеонаблюдения в магазине, это не означает, что они тут же предпримут попытку кражи.
   Моделирование угроз имеет с описанной ситуацией много общего, и единственный способ изучить проблему – это практика. Начнем с кражи блинов.
   Наша цель – поесть бесплатно в местном ресторанчике. Для этого у нас есть много возможностей. Можно поесть и убежать. Можно расплатиться подложной кредитной картой, фальшивыми чеком или наличными. Можно выманить посетителя из ресторана и съесть его блюдо. Можно прикинуться (а то и стать на самом деле) поваром, официантом, управляющим или хозяином (которого видели всего лишь несколько работников). Можно стащить тарелку с чужого столика или из устройства для подогрева, опередив официанта. Можно подождать у мусорного бака, когда вынесут выбрасывать объедки. Можно включить пожарную сигнализацию и вволю попировать в полном одиночестве. Можно представиться управляющему некоей знаменитостью, могущей рассчитывать на бесплатный завтрак, или найти доверчивого клиента, которого можно уговорить заплатить за нас. Можно ограбить кого-нибудь поблизости от ресторана и расплатиться за еду. Можно подделать талон на бесплатное обслуживание. А кроме того, есть освященная веками традиция – ворваться с ружьем и прокричать: «Гоните сюда все ваши блины!».
   Вероятно, существует множество других возможностей, но у нас уже есть общее представление. Взглянув на приведенный перечень, не так трудно понять, что большинству нападающих ничего не нужно делать в тот момент, когда деньги переходят из рук в руки. Это любопытно, поскольку означает, что безопасность системы платежей не защищает от кражи блинов.
   Подобная ситуация складывается и в цифровом мире. Представим себе хранилище блинов в Веб – большинству нападающих не придется иметь дело с системой электронных платежей. Существует множество других уязвимых мест. (Вспомните изящное нападение через веб-страницу на корзину для покупок, описанное в главе 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 в устройство чтения и записи и переведут деньги. (У продавцов, возможно, будут специальные карты, постоянно находящиеся в считывающем устройстве.) В банке или с помощью банкоматов можно будет как пополнить средства, находящиеся на карте, так и перевести их с карты на банковский счет. Обратите внимание: двум картам не обязательно находиться рядом друг с другом, достаточно соединить их по телефону или с помощью модема.