Почему криптография сложнее, чем кажется
АрхивОдин из известнейших криптологов предостерегает разработчиков и пользователей криптосистем от распространенных заблуждений.
.Position.PhotoКриптография сегодня - это важнейшая часть всех информационных систем: от электронной почты до сотовой связи, от доступа к сети Internet до электронной наличности. Криптография обеспечивает подотчетность, прозрачность, точность и конфиденциальность. Она предотвращает попытки мошенничества в электронной коммерции и обеспечивает юридическую силу финансовых транзакций. Криптография помогает установить вашу личность, но и обеспечивает вам анонимность. Она мешает хулиганам испортить вашу WWW-страницу и не позволяет конкурентам залезть в ваши конфиденциальные документы. А в будущем, по мере того как коммерция и коммуникации будут все теснее связываться с компьютерными сетями, криптография станет жизненно важной.
Но присутствующие на рынке криптографические средства не обеспечивают того уровня защиты, который обещан в рекламе. Большинство продуктов разрабатывается и применяется отнюдь не в сотрудничестве с криптографами. Этим занимаются инженеры, для которых криптография - просто еще один компонент программы. Но криптография - это не компонент. Нельзя обеспечить безопасность системы, «вставляя» криптографию после ее разработки. На каждом этапе, от замысла до инсталляции, необходимо осознавать, что и зачем вы делаете.
На обеспечение компьютерной безопасности тратятся миллиарды долларов, причем большая часть денег выбрасывается на негодные продукты. К сожалению, коробка со слабым криптографическим продуктом выглядит так же, как коробка со стойким. Два криптопакета для электронной почты могут иметь схожий пользовательский интерфейс, но один обеспечит безопасность, а второй допустит подслушивание. Сравнение может указывать сходные черты двух программ, но в безопасности одной из них при этом зияют дыры, которых лишена другая система. Опытный криптограф сможет определить разницу между этими системами. То же самое может сделать и злоумышленник.
На сегодняшний день компьютерная безопасность - это карточный домик, который в любую минуту может рассыпаться. Очень многие слабые продукты до сих пор не были взломаны только потому, что они мало используются. Как только они приобретут широкое распространение, они станут притягивать к себе преступников. Пресса тут же придаст огласке эти атаки, подорвав доверие публики к этим криптосистемам. В конце концов, победу на рынке криптопродуктов определит степень безопасности этих продуктов.
Угрозы компьютерным системам
До сих пор любая известная форма коммерции была потенциально подвержена мошенничеству - от обвешивания на рынке до фальшивых счетов и подделки денежных знаков. Схемы электронной коммерции не исключение: им угрожает мошенничество в форме подделки, фальшивого представительства, отказа в предоставлении услуг и просто обмана. Фактически, компьютеризация только усиливает степень риска, поскольку открывает возможность для атак, немыслимых в неавтоматизированных системах. Сегодня вор может заработать себе на жизнь, просто снимая по доллару с каждой карточки Visa. По улицам нельзя разгуливать под чужой личиной, а вот в цифровом мире легко выдать себя за кого-то другого. Такие формы нападения может предотвратить только стойкая криптография.
Еще одну угрозу представляют собой нарушения приватности. Преступления против приватности могут быть целенаправленными (например, пресса может попытаться прочитать электронную корреспонденцию известного лица; или компания - перехватить почту конкурентов). Другие атаки включают свободный поиск любой потенциально полезной информации, например, составление списка богатых вдов, лиц, принимающих лекарство от СПИДа, или просто людей, которые посещают определенные страницы Internet.
Атаки злоумышленников часто случайны, и вашей системе может оказаться достаточным просто быть более безопасной, чем соседняя. Но есть угрозы другого свойства. Бывает, что атакующего привлекает возможность широкой огласки; чаще всего они располагают значительными ресурсами в своих исследовательских центрах или компаниях, достаточным временем, но ограниченными финансами. А юристам порой необходимо, чтобы система подверглась нападению, чтобы защитить своего клиента. Они могут собрать подробную информацию о системе, потребовав раскрытия технических характеристик, а затем использовать значительные финансовые ресурсы и нанять экспертов и закупить оборудование. При этом им вовсе не надо полностью разрушать систему безопасности, нужно только убедить присяжных в том, что в этой системе есть дыры.
Электронный вандализм становится все более серьезной проблемой. Вандалы уже разрисовывали граффити Internet-страницу ЦРУ, забрасывали почтовыми бомбами провайдеров Internet и отменили тысячи сообщений ньюз-групп. Обычным делом для компьютерных вандалов и воров стал взлом компьютерных сетей. Когда средства безопасности неадекватны угрозе, риск быть пойманными для нарушителей невелик.
Нападающие не соблюдают правил, они прибегают к обману. Они могут атаковать систему с помощью технических средств, о которых проектировщики и не помышляли. Похитители произведений искусства, бывало, грабили дома, разрезая стены цепной пилой. Ни одна охранная система не имеет ни малейшего шанса устоять перед такой атакой. Компьютерные воры тоже умеют «проходить сквозь стены»: они крадут техническую информацию, подкупают сотрудников, модифицируют программное обеспечение, вступают в тайный сговор. Они используют технологии более современные, чем те, что используются в системе безопасности, и даже изобретают новые математические приемы для успешной атаки на системы.
Случай благоволит атакующему. Злоумышленники всегда имеют шанс узнать о системе безопасности больше, чем пользователи. Защищающимся приходится учитывать все вероятные уязвимые места, а нападающему нужно нащупать только одну брешь, чтобы скомпрометировать всю систему.
Что криптография может, а чего - нет
Никто не даст стопроцентную гарантию безопасности, но можно стремиться к стопроцентному учету риска. Существующие коммерческие системы подвержены самым разным видам мошенничества: деньги можно подделать, чеки изменить, номера кредиток украсть. И тем не менее, все эти системы коммерческих взаимодействий работают, поскольку преимущества и удобства от их использования перевешивают потери. Системы обеспечения приватности сделок (сейфы, дверные замки, шторы) далеко не совершенны, но часто их вполне достаточно. Хорошая криптографическая система должна соблюдать баланс возможного и приемлемого.
Сильная криптография способна противостоять целенаправленному нападению до определенного предела, когда злоумышленнику становится проще добыть информацию другим способом. Программа кодирования, неважно, хорошая или плохая, не сможет удержать атакующего от просмотра содержимого мусорной корзины. Но эта программа может полностью защитить от ненаправленных нападений. Еще ни одному злоумышленнику не удавалось перелопатить такую кучу мусора, которая вывела бы его на каждого, принимающего лекарство от СПИДа в данной стране. Программа может также защитить коммуникацию от атак, не требующих физического вторжения: одно дело прослушивать телефонные линии, находясь в безопасности центрального офиса телекоммуникационной компании, и совершенно другое дело - вломиться в чужой дом для установки жучка.
Что в криптографии хорошо, так это то, что уже существуют алгоритмы и протоколы, которые необходимы для защиты наших систем. Но плохо то, что алгоритмы - не самое главное: для успешной реализации протоколов нужен значительный опыт. Такие области безопасности, которые пересекаются с управлением людьми и ключами, защита взаимодействия человека и компьютера, контролем доступа, все еще часто ускользают от анализа. Пока не вполне осознаются требования к инфраструктуре открытых ключей, безопасности программного обеспечения, оборудования и сетей, а также к разработке защищенных от подделки модулей.
Компании зачастую неправильно понимают и те аспекты, что относительно просты, и применяют нестойкие алгоритмы и протоколы. Но это даже не самое главное. Практические криптографические приложения нечасто взламываются математическими методами, ведь гораздо проще взломать другие части системы. Любой, даже самый лучший протокол, станет легкой добычей, если не уделять должного внимания более сложным и тонким аспектам реализации. Так, система безопасности Netscape стала жертвой дефекта в генераторе случайных чисел. Возможность ошибки подстерегает повсюду: в модели угрозы, проекте системы, реализации программного и аппаратного обеспечения, управлении системой. Безопасность - это цепочка, и одно слабое звено может привести к разрушению всей системы. Фатальными могут оказаться дефекты, не имеющие непосредственного отношения к обеспечению безопасности. Проектное решение, которое не связано с безопасностью, может, тем не менее, привести к образованию бреши в системе.
После того, как брешь в безопасности обнаружена, ее легко исправить. Но сам поиск таких дефектов в продукте является невероятно сложной задачей. Требование безопасности отличается от любого другого проектного требования, поскольку функциональность в данном случае не может быть приравнена к качеству. Если система обработки текста удовлетворительно печатает, то вы точно знаете, что функция вывода на печать работает. Безопасность - совсем другое дело. Если сейф распознает правильную комбинацию, это еще не значит, что его содержимое защищено от взлома. Никакое бета-тестирование не поможет обнаружить дефект в безопасности, и уж, конечно, никакой тест не может дать гарантии отсутствия дефектов.
Модели угроз
Хороший проект начинается с моделирования угроз: что должна защищать проектируемая система, от кого и как долго. В модели угроз должна быть принята во внимание вся система, а не только те данные, которые необходимо защитить. Необходимо знать, кто и как будет использовать систему. Что служит мотивом для атакующих? Нужно ли предотвращать атаки или достаточно просто засекать их? Если случится самое худшее, как можно восстановить систему безопасности? Ответы на эти вопросы не поддаются стандартизации, они свои для каждой системы. Слишком часто проектировщики не дают себе труда точно смоделировать угрозы или проанализировать реальные риски.
Модели угроз позволяют как проектировщикам продуктов, так и пользователям определить, какие средства обеспечения безопасности им нужны. Имеет ли смысл криптографически защищать жесткий диск, если вы не убираете дискеты с открытыми файлами в сейф? Каким образом может кто-либо из сотрудников компании смошенничать в коммерческой системе? Достаточно ли надежны контрольные журналы, чтобы убедить суд? Нельзя создать надежную систему безопасности, если не понимать, от чего она должна вас защищать.
Разработка систем
Проектирование - основа основ криптографии как науки, и оно весьма специфична. В криптографии сплелись несколько разделов математики: теория чисел, теория сложности, теория информации, теория вероятности, абстрактная алгебра, формальный анализ. Немногие разбираются в этой науке, а полузнание - это опасная вещь: неопытные криптографы почти всегда разрабатывают ущербные системы. Хорошие криптографы знают, что ничто не заменит обширной экспертной работы и многих лет практического криптоанализа. Качественные системы пользуются опубликованными и освоенными алгоритмами и протоколами, использование в проектировании неопубликованных или непроверенных элементов является по меньшей мере рискованным.
Разработка криптографической системы - это еще и искусство. Проектировщик должен найти золотую середину между безопасностью и доступностью, анонимностью и подотчетностью, приватностью и пригодностью. Одна лишь наука не может гарантировать безопасность, только опыт и интуиция, им рожденная, могут помочь криптографу в проектировании новых безопасных систем и поиске дефектов в существующих.
Реализация
Огромная пропасть отделяет математический алгоритм от конкретной его реализации в аппаратном или программном обеспечении. Дизайн криптосистем необычайно хрупок. Одно лишь то, что протокол безопасен с точки зрения логики, не означает, что он таковым останется, когда проектировщик начнет разрабатывать структуру сообщений и рассылки данных. Сколь угодно точное приближение недостаточно, все эти системы должны быть реализованы буквально и совершенно, иначе они не будут работать. Плохо спроектированный интерфейс может сделать программу криптозащиты жесткого диска совершенно ненадежной. Неоправданная надежда на невозможность подделки оборудования может привести к полному провалу системы электронной коммерции. Поскольку все эти дефекты не очевидны при тестировании, они переходят в готовые продукты. Многие дефекты реализации не описаны в научной литературе, поскольку они технически неинтересны. Поэтому они кочуют из продукта в продукт. Под давлением бюджета и дефицита времени программисты используют плохие генераторы случайных чисел, не проверяют должным образом условия возникновения ошибок и оставляют секретную информацию в общих файлах. Единственный способ научиться избегать этих ошибок заключается в том, чтобы вновь и вновь проектировать и ломать системы безопасности.
Дружественная криптография
В конце концов, многие системы безопасности взламываются теми, кто их использует. Большая часть взломов коммерческих систем предпринимается изнутри. Добросовестные пользователи тоже могут создавать проблемы - просто потому, что их мало заботит безопасность. Им нужна простота, удобство и совместимость с существующими (не безопасными) системами. Они выбирают неподходящие пароли, записывают их, раздают друзьям и знакомым свои закрытые ключи, оставляют включенным компьютер с зарегистрированным пользователем и так далее. Нелегко всучить дверной замок тем, кто не хочет обременять себя ключами. Хорошо спроектированная система должна принимать во внимание и поведение людей.
Часто самое сложное в криптографии - убедить людей использовать криптосредства. Очень непросто доказать потребителям, что финансовая приватность важна для них, в то время как они готовы оставить свой подробный покупательский профиль в обмен на скидку в одну тысячную стоимости билета на Гавайи. Трудно создать систему, которая была бы основана прежде всего на строгой аутентификации, если для ее взлома достаточно будет знать девичью фамилию матери пользователя. Безопасностью постоянно пренебрегают клерки магазинов, старшие администраторы, а также все те, кому нужно только поскорее сделать свою работу. Только когда криптосистема основана на тщательном учете потребностей пользователей, она сможет защитить их системы, ресурсы и информацию.
Положение дел с безопасностью
В настоящее время пользователи не имеют средств проверки безопасности систем. Компьютерные журналы сравнивают криптопродукты, перечисляя их характеристики, а не оценивая степень их безопасности. Маркетинговые агенты делают заявления, которые просто не соответствуют действительности. Конкурирующий продукт, который более безопасен, но и более дорог, будет на рынке выглядеть менее привлекательным. Граждане доверяют охрану своей безопасности и спокойствия государству, особенно там, где им не хватает знаний для независимой оценки, например, в выборе материалов для упаковки продуктов, в авиации и медицине. Но вот в том, что касается криптографии, американское правительство действует прямо противоположным образом.
Когда терпит крушение самолет, проводятся расследования и проверки, составляются отчеты. Информация становится широко доступной, ошибка становится уроком для всех. Не составляет труда просмотреть все записи об авиационных катастрофах со времени зарождения коммерческой авиации. Когда же взламывается банковская система электронной коммерции, это, как правило, тщательно скрывается. Если что-то и попадает в газеты, то подробности опускаются. Никто не анализирует случай нападения, никто не извлекает уроков из ошибок. Банк старается потихоньку залатать бреши, надеясь, что клиенты не потеряют доверия к системе, которая его не заслуживает. В конце концов такое замалчивание приводит к более серьезным нарушениям.
Законы не могут заменить инженерных решений. Индустрия сотовой связи США лоббирует протекционистские законы вместо того, чтобы тратить деньги на исправление проектных ошибок, которых вообще не должно было быть. В ответ на атаки уже недостаточно просто латать бреши в безопасности. Компьютерные системы слишком быстро развиваются, слабое звено в безопасности может быть описано в Internet и использовано тысячами других людей. Системы сегодняшнего дня должны предугадывать атаки дня завтрашнего. Любая исчерпывающая система - созданная для аутентичных коммуникаций, безопасного хранения данных или для электронной коммерции - скорее всего будет использоваться по крайней мере лет пять. Она должна обладать способностью устоять перед будущим - более изобретательными атакующими, более мощными компьютерами, более сильными стимулами к разрушению систем широкого распространения. Времени на усовершенствование системы по ходу уже не будет.
История учит нас: никогда не стоит недооценивать деньги, время и усилия, которые будут потрачены на то, чтобы сломать систему безопасности. Лучше готовиться к худшему, считать противников умнее, чем они есть, и верить, что наука и техника скоро смогут то, что невозможно сегодня. Пусть у вас будет запас прочности. Обеспечьте себе большую безопасность, чем необходима вам сегодня, и вы скажете себе спасибо, когда произойдет что-то непредвиденное.
Пер. с англ. Марины Обориной.
Оригинальный текст см. на www.counterpane.com/whycrypto.html
|