книги / Практическая криптография
..pdf2.4 Практическая паранойя |
31 |
ях, стал знаменит во всем мире, а разрушение моста преподало инженерам ценный урок. При наличии сильного ветра легкие подвесные мосты могут войти в резонанс, в результате чего они начнут колебаться и в конце концов сломаются. Как уберечь от подобного разрушения новые мосты? Для сопро тивления колебаниям можно было бы существенно укрепить весь мост, одна ко это обошлось бы слишком дорого. Наиболее распространенным приемом является изменение аэродинамики моста. Мостовое полотно делается толще, в результате чего ветру становится труднее прогибать его вверх-вниз. Иногда для гашения колебаний используются перила, благодаря которым мостовое полотно перестает напоминать крыло самолета, поднимаемое ветром. Дан ный метод срабатывает, поскольку поведение ветра достаточно предсказуемо и не изменяется для того, чтобы разрушить мост.
Проектировщики систем безопасности должны отталкиваться от того, что “ветер” коварен. Что, если бы он начал дуть не из стороны в сторону, а вверхвниз и притом постоянно изменял свое направление с такой частотой, чтобы мост вошел в резонанс? Проектировщики мостов сочтут подобные разгово ры нелепыми: “Ветер никогда так не дует". В этом плане проектировщикам мостов, конечно же, намного легче. Криптографы лишены и этого. Системы безопасности подвергаются нападению умных и коварных злоумышленников, поэтому необходимо уметь защищаться от всех типов атак.
Работать в противоборствующем окружении очень трудно. Это игра без правил, в которой карты всегда ложатся не так, как того хотелось бы. Ведь речь идет о некоем абстрактном “злоумышленнике”; не известно, кем он яв ляется в действительности, какими знаниями и ресурсами обладает, какова его цель и когда он собирается напасть. Поскольку атака нередко случается через много лет после создания системы, злоумышленник обладает преиму ществом в пять-десять лет исследований и может воспользоваться новыми технологиями, которых не существовало на момент проектирования систе мы. И что гораздо печальнее, злоумышленник, имея все эти преимущества, может найти всего лишь одно слабое звено в нашей системе, в то время как мы должны защищать ее всю. Итак, наша цель состоит в том, чтобы по строить систему, способную выдержать весь этот чудовищный натиск. Добро пожаловать в замечательный мир криптографии!
2.4Практическая паранойя
Чтобы заниматься проектированием безопасных систем, необходимо само му стать хитрым и изворотливым. Найти слабые места в собственной работе сможет только тот, кто сам начнет думать как злоумышленник. Разумеется, это повлияет и на остальные аспекты вашей жизни. Каждый, кто работал
32 |
Глава 2. Криптография в контексте окружающего мира |
с криптографией на практике, испытал это чувство. Начав думать о том, как нападать на системы, вы будете применять это ко всему, что вас окружает. Вашу голову заполонят кошмарные мысли о том, как можно перехитрить лю дей и как они могут перехитрить вас. Криптографы — это профессиональные параноики. Через некоторое время вы либо научитесь отделять профессио нальную паранойю от реальной жизни, либо просто сойдете с ума. К сча стью, большинству из нас удалось сохранить хоть какие-то остатки здраво мыслия. .. как нам кажется1.
Паранойя очень полезна при работе в области практической криптогра фии. Представьте себе, что вы разрабатываете систему электронных плате жей. В работу системы вовлечено несколько участников: покупатель, прода вец, банк покупателя и банк продавца. Определить потенциальные источники угрозы очень трудно, поэтому мы воспользуемся параноидальной моделью. Для каждого участника будем предполагать, что остальные участники про цесса объединились с целью его обмануть. Если криптографическая систе ма успешно пройдет испытание параноидальной моделью, она будет иметь неплохой шанс выжить в реальном мире.
2.4.1Критика
Профессиональная паранойя — это неотъемлемая составляющая коммер ции. Увидев на рынке новую систему, мы первым делом думаем о том, как бы ее взломать. Чем быстрее вы отыщете в системе слабое место, тем больше вы о ней узнаете. Нет ничего хуже, чем работать над системой долгие годы только затем, чтобы однажды услышать от случайного знакомого: “А что, если я нападу вот так?..” Наверное, никому бы не хотелось испытать подоб ный конфуз.
Работая в области криптографии, необходимо четко различать критику работы и критику самого человека. Любая работа — это всего лишь спорт, в котором есть свои правила. Если кто-нибудь предлагает что-нибудь, он ав томатически приглашает общественность покритиковать свое изобретение. Если вы взломаете одну из наших систем, мы громко поаплодируем и рас скажем об этом всему миру*2. Мы постоянно ищем слабые места везде и во всем, потому что это единственный способ научиться создавать безопасные системы. Запомните еще один урок: критика системы — это не критика вас лично. Без этого правила вы не выживете в мире криптографии, поэтому привыкайте к критике. Точно так же, отыскивая в чужой системе слабое ме-
*Но помните: тот факт, что вы ие параноик, еще не означает, что вы не попадете в сети, расставленные другим параноиком.
2В зависимости от ситуации, мы можем поругать себя за то, что сами не обнаружили слабое место в своей системе, но это уже совсем другая история.
2.4 Практическая паранойя |
33 |
сто, критикуйте систему, а не ее разработчиков. В криптографии нападки на личности будут восприняты так же негативно, как и везде.
Кажущийся враждебный настрой криптографов то и дело приводит к недоразумениям. Люди, далекие от криптографии, часто воспринимают кри тику работы, выполненной человеком, как критику самого человека и за тем жалуются на наши дурные манеры. В 1999 году на одной конференции рассматривались блочные шифры, использующие алгоритм AES. Создатель шифра Magenta не смог приехать на конференцию и прислал вместо себя своего студента. Между тем у шифра сразу же обнаружился серьезный недо статок, и через каких-нибудь пять минут после начала доклада Magenta был, что называется, разгромлен в пух и прах сразу несколькими слушателями. Это было очень интересно. Нескольким лучшим криптографам мира пред ставили новый блочный шифр, и они раскритиковали его на глазах у всей остальной публики. Это обычный порядок вещей. Еще один слушатель, до этого практически не имевший дела с криптографией, написал очерк о своем посещении конференции. Ему показалось, что все нападки были направлены в адрес самого студента, и он был поражен невероятно грубым поведением аудитории. Реакция этого человека вполне понятна. Во многих кругах наше го общества критика идеи или предложения автоматически означает критику самого автора. В криптографии, однако, мы просто не можем себе этого поз волить.
Еще хуже, когда под прицелом критиков оказываются разработчики, ко торые случайно забрели в область криптографии. Такие люди воспринимают критику своей работы как нападки на них лично со всеми вытекающими от сюда последствиями. Иногда приходится вести себя тактично, однако это ме шает донести до собеседника свою мысль. Если мы скажем что-то наподобие: “Здесь могут быть небольшие недочеты в системе безопасности”, то непремен но получим ответ: “О, не волнуйтесь, мы это исправим”, даже если проблема заключается в самой структуре системы. Практика показывает, что донести до оппонента можно только конкретизированную мысль: “Если мы сделаем то-то и то-то, безопасность будет нарушена”. С другой стороны, сказав это разработчику системы, вы обрекаете себя на неприятности. К сожалению, гармоничного решения этой проблемы не существует.
Итак, когда в следующий раз кто-нибудь будет критиковать вашу работу, постарайтесь не воспринимать это как личное оскорбление. А нападая на чужую систему, критикуйте ее саму, а не тех, кто за ней стоит.
34Глава 2. Криптография в контексте окружающего мира
2.5Модель угроз
Каждая система может подвергнуться нападению. Смысл любой системы безопасности состоит в том, чтобы разрешить доступ к чему-либо одним лю дям и не разрешить другим. В конце концов, человек всегда должен комунибудь доверять, хотя этот кто-то, в свою очередь, может на него напасть.
Очень важно знать, от чего вы пытаетесь защититься. Решить этот на первый взгляд простой вопрос намного сложнее, чем кажется. В чем имен но состоит угроза? Большинство компаний защищают свои локальные сети брандмауэрами, в то время как наиболее разрушительные атаки обычно ис ходят изнутри. Тут брандмауэр бесполезен. Каким бы хорошим он ни был, он не защитит вас от коварного сотрудника. Налицо неудачное построение модели угроз.
В качестве еще одного примера можно привести протокол защищенных электронных транзакций (Secure Electronic Transaction — SET), который при меняется для защиты электронных платежей, выполняемых в Internet с по мощью кредитных карт. Одна из особенностей протокола SET заключается в шифровании номера кредитной карты, чтобы злоумышленник, перехва тивший номер, не мог его скопировать. Это хорошая идея. Вторая же осо бенность, состоящая в том, что даже продавец не видит номера кредитной карты покупателя, гораздо менее удачна.
Некоторые продавцы используют номера кредитных карт для поиска све дений о покупателе или для взимания с него дополнительных сборов. Целые системы электронной коммерции были основаны на предположении о том, что у продавца есть доступ к номеру кредитной карты покупателя. Разумеет ся, запретить этот доступ нереально. Когда Нильс работал с протоколом SET несколько лет назад, последний предоставлял возможность отправлять в за шифрованном виде номер кредитной карты дважды банку и продавцу, чтобы у продавца тоже был номер кредитной карты покупателя. (Спецификации протокола SET настолько сложны и запутанны, что мы решили не утруж дать себя проверкой того, существует ли данная возможность и сегодня.)
Даже несмотря на наличие такой возможности, протокол SET был на правлен на решение совершенно не той проблемы. В большинстве случаев номера кредитных карт воруют вовсе не во время их передачи от покупателя продавцу. Их крадут из базы данных продавца. SET же защищает информа цию только во время ее передачи.
Протокол SET обладает еще одним, гораздо более серьезным изъяном. Недавно один голландский банк, услугами которого пользуется Нильс, пред ложил своим клиентам пластиковые карты с поддержкой SET. В качестве одного из главных аргументов в пользу приобретения такой карты банк на зывала улучшенную безопасность при совершении покупок через Internet.
2.5 Модель угроз |
35 |
Однако данный аргумент оказался не более чем фальшивкой. Покупать то вары через Internet с помощью обычной электронной карты вполне безопасно. Номер кредитной карты не является каким-либо секретом: вы сообщаете его каждому продавцу, у которого что-нибудь покупаете. Настоящим гарантом покупки является ваша подпись, так как именно она авторизует транзакцию. Если у продавца украдут номер вашей кредитной карты, вам могут припи сать несуществующие покупки, однако, поскольку эти транзакции не будут подтверждены вашей собственноручной подписью (или PIN-кодом), закон ного основания для снятия денег с вашего счета не будет. В большинстве подобных случаев достаточно просто обратиться с жалобой, чтобы получить свои деньги обратно. Разумеется, процедура получения новой кредитной кар ты с другим номером может доставить некоторые неудобства, однако на этом все и заканчивается. С протоколом SET все обстоит по-другому. Для авто ризации транзакций SET применяет цифровую подпись пользователя (более подробно это рассматривается в главе 13, “Алгоритм RSA”). На первый взгляд это более безопасно, чем использование только номера кредитной карты. Но взгляните на данную ситуацию с другой стороны. Теперь вся ответственность по выполнению транзакций с компьютера пользователя ложится на самого пользователя. А что, если его компьютер подвергнется нападению вируса, который взломает программное обеспечение SET? Такое программное обес печение может подписать не ту транзакцию, и пользователь потеряет деньги.
Итак, с точки зрения пользователя, протокол SET обеспечивает безопас ность хуоюе, чем обычная кредитная карта. Используя обычную кредитную карту, пользователь всегда сможет вернуть несправедливо снятые с его сче та деньги. Применение протокола SET делает пользователя более уязвимым. Таким образом, хотя SET повышает безопасность системы электронных пла тежей в целом, он переносит остаточный риск с продавца и/или банка на пользователя. Модель угроз пользователя, которую можно было описать сле дующим образом: “я потеряю деньги только тогда, когда кто-нибудь слишком хорошо подделает мою подпись”, изменится и будет выглядеть так: “я поте ряю деньги тогда, когда кто-нибудь слишком хорошо подделает мою подпись или мой компьютер подвергнется нападению вируса”.
Правильное построение модели угроз очень важно. Прежде чем присту пать к разработке криптографической системы безопасности, хорошенько об думайте, откуда могут исходить потенциальные угрозы. Ошибка в анализе угроз может свести на нет смысл всего проекта. В этой книге рассматри вается очень ограниченная область криптографии, поэтому модели угроз не уделяется должного внимания, однако при построении реальной системы не забудьте провести анализ угроз для каждого из ее участников.
36Глава 2. Криптография в контексте окружающего мира
2.6Криптография — это не решение
Разумеется, криптография не решит проблем безопасности. Она может стать как частью решения, так и частью самой проблемы. Во многих ситуа циях появление криптографии только усугубляет проблему, а улучшения от ее применения весьма и весьма сомнительны.
Как защитить автомобиль от угонщика? Самый простой способ — непо средственно защитить машину физически. Просто не подпускайте к ней ни одного прохожего. Это не слишком удобно, поэтому мы предпочитаем устано вить на машине замок и носить с собой ключ. Поскольку машина закрыта, ее можно оставить на улице. Теперь у злоумышленника есть два способа проник нуть в машину. Он может сломать систему блокировки дверей (в том числе разбить окно) или же украсть ключи от машины, которые необходимо защи щать физически. Как видите, теперь у нас два объекта нападения: система блокировки дверей и ключи. Появление ключей помогло угонщику, создав новый объект нападения. Основное преимущество ключей состоит в том, что защитить их физически гораздо легче, чем машину. Поскольку данное пре имущество перевешивает дополнительный риск, связанный с возможностью поломки замка, применение ключей повышает безопасность машины.
В цифровом мире все происходит несколько иначе. Предположим, у вас на компьютере есть секретный файл, который никто не должен прочитать. Вы можете просто защитить файловую систему от неавторизованного до ступа или же зашифровать файл и защитить ключ. Зашифрованный файл больше не представляет собой какого-либо секрета, поэтому вы, как обычный человек, скорее всего, не будете охранять этот файл слишком уж тщатель но (в этом он сходен с машиной, оставленной на улице). Но где же хранить ключ? Хорошие ключи слишком сложны для запоминания. Некоторые про граммы сохраняют ключ на диске — в том самом месте, где хранился зашиф рованный файл. Теперь у злоумышленника появляется два способа добраться
ксодержимому файла. Любая атака, которая в первом случае могла привести
кпохищению секретного файла, теперь с таким же успехом может привести
кпохищению ключа, который, в свою очередь, поможет расшифровать файл. Любая атака, которая могла сработать в первом случае, сработает и во вто ром, однако теперь у нас появился новый объект нападения: сама система шифрования. Очевидно, безопасность системы в целом снизилась. Таким об разом, шифрование файла — это не полноценное решение. Оно может быть частью другого решения, однако само по себе больше проблем создает, неже ли решает.
Криптография имеет множество областей применения. Она является не отъемлемой частью многих хороших систем безопасности. Неправильное при менение криптографии, напротив, существенно ослабляет безопасность.
2.7 Криптография очень сложна |
37 |
Во многих случаях криптография обеспечивает не реальную безопасность, а только видимость безопасности. Зачастую, впрочем, это все, что требуется клиентам. Они хотят чувствовать себя в безопасности, но вовсе не хотят ввязываться во все тонкости, которые свойственны реальным механизмам безопасности. В подобных ситуациях (а они случаются слишком часто) крип тография сама по себе может стать решением проблемы, однако с таким же успехом, как и какой-нибудь амулет, который носят на шее или в кармане.
2.7Криптография очень сложна
Криптография ужасно сложна. Даже опытные эксперты разрабатывают системы, которые через несколько лет оказываются безжалостно взломан ными. Это случается настолько часто, что уже никого не удивляет. Прави ло слабого звена и противоборствующее окружение существенно усложняют и без того нелегкую жизнь криптографов.
Еще одной важной проблемой является недостаточный объем тестирова ния. Никто не знает, как убедиться в том, что система действительно без опасна. Лучшее, что можно сделать, — это опубликовать систему, чтобы на нее взглянули другие эксперты. Обратите внимание, что вторая часть этого метода вовсе не выполняется автоматически: существует масса опубликован ных систем, на которые никто так и не обратил внимания. Даже конференции и научные статьи удостаиваются лишь поверхностных обзоров. Эти обзоры направлены на то, чтобы отличить хорошие статьи от плохих, а не на про верку безопасности систем или правильности результатов. Разумеется, обо зреватели все же проводят некоторую проверку, однако на более тщательный анализ статьи у них просто не остается времени. (В конце концов, обозрева телям редко платят за их работу, и, когда в свободное время им приходится анализировать по 20-30 статей, они, скорее всего, не будут делать это слиш ком тщательно.)
Существует несколько небольших областей криптографии, в которых мы разбираемся довольно хорошо. Это вовсе не означает, что они просты; это лишь говорит о том, что мы работаем над ними уже несколько десятиле тий и — смеем надеяться — знаем их проблематику. Данная книга в основ ном посвящена этим областям криптографии. Здесь мы попытались собрать и упорядочить все то, что знаем о разработке и построении практических криптографических систем.
К сожалению, многие, почти ничего не зная о криптографии, почему-то думают, что она очень проста. Время от времени нам попадается очередной электротехник или программист, который прочитал половину книги о крип тографии — в большинстве случаев это первая книга Брюса Applied Cryptog
38 |
Глава 2. Криптография в контексте окружающего мира |
raphy [86] — и решил разработать собственную систему. На нашей памяти это никогда не приводило к хорошим результатам, по крайней мере за последнее десятилетие. Представьте себе студента архитектурного института, который после года обучения решил спроектировать мост качественно новой конструк ции через Берингов пролив. Стали бы мы строить и использовать этот мост без более глубокого изучения предложенной модели? Конечно, нет. Между тем, когда дело касается криптографии, люди почему-то охотно платят за реализацию систем, разработанных новичками. А поскольку плохая крипто графическая система ничем не отличается от хорошей криптографической системы до тех пор, пока на нее не нападут, некоторые клиенты впадают в заблуждение и покупают подобные продукты.
Не верьте распространенному мифу о том, что криптография проста. Это не так.
2.8Криптография — это самая простая часть
Тем не менее, несмотря на сложность самой криптографии, она остается одной из наиболее простых частей системы безопасности. Криптографиче ский компонент, как и дверной замок, имеет довольно четкие границы и тре бования. Дать четкое определение системе безопасности в целом намного сложнее, поскольку она включает в себя слишком много аспектов. Вопро сы наподобие организационных процедур, применяемых для предоставления доступа, и процедур, которые применяются для проверки соответствия дру гим процедурам, весьма сложны в решении, поскольку связаны с постоянно меняющейся ситуацией. Еще одной серьезной проблемой компьютерной без опасности является отвратительное качество практически всего программ ного обеспечения. О какой безопасности может идти речь, если программы, установленные на компьютере пользователя, содержат тысячи дефектов, ко торые приводят к появлению “дыр” в системе безопасности!
Криптография — одна из наиболее простых частей системы безопасности, поскольку на свете существуют люди, которые в ней разбираются. При необ ходимости вы можете нанять экспертов, которые разработают для вас крип тографическую систему. Разумеется, их услуги недешевы, а работать с ними крайне сложно. Они то и дело будут настаивать на изменении других частей системы для достижения желаемого уровня безопасности. Тем не менее, ка ково бы ни было практическое применение криптографии, оно затрагивает проблемы, которые мы умеем решать.
Реализация остальных частей системы безопасности касается проблем, ко торые мы не умеем решать. Управление ключами и хранение ключей являют ся основополагающими аспектами любой криптографической системы, одна
2.9 Рекомендуемая литература |
39 |
ко у большинства компьютеров нет безопасного места для хранения ключей. Плохое качество программного обеспечения вообще стало притчей во языцех, не говоря уже о защите сетей. Ну а если к этому добавить еще и несознатель ных пользователей, проблема обеспечения безопасности становится практи чески нерешаемой.
2.9Рекомендуемая литература
Все, кто интересуются криптографией, должны прочитать книгу Дэвида Кана (David Kahn) The Codebreakers [45]. В ней содержится история крип тографии с древнейших времен до XX века. Помимо всего прочего, автор описывает множество проблем, с которыми сталкивались и продолжают стал киваться разработчики криптографических систем во всем мире.
Книга, которую вы сейчас держите в руках, в некотором смысле явля ется продолжением первой книги Брюса Шнайера Applied Cryptography [86], которая охватывает намного больший диапазон тем и содержит специфика ции всех рассматриваемых в ней алгоритмов. Тем не менее в ней отсутствуют детали разработки реальных систем, которые обсуждаются в книге Практи ческая криптография.
По части цифр и фактов ничто не может сравниться с книгой Менезеса (Menezes), ван Ооршота (van Oorschot) и Вэнстоуна (Vanstone) Handbook of Applied Cryptography [64]. Этот невероятно полезный справочник — на стоящая энциклопедия криптографии, но, как и все энциклопедии, едва ли подходит для глубокого изучения темы.
Предыдущая книга Брюса Secrets and Lies [88] содержит хорошее объяс нение общих проблем компьютерной безопасности, а также роли криптогра фии в ее обеспечении. И разумеется, лучшим пособием по проектированию систем безопасности является книга Росса Андерсона (Ross Anderson) Secu rity Engineering [1]. Обе книги весьма важны для понимания криптографии в контексте окружающего мира.
Глава 3
Введение в криптографию
В этой главе рассматриваются основные понятия криптографии, а также предоставлена дополнительная информация, которая понадобится вам при изучении последующих глав книги.
3.1 Шифрование
Шифрование — это и есть первоначальное назначение криптографии. На рис. 3.1 изображена общая схема обмена данными, требующая применения шифрования. Пользователи А и Б хотят общаться друг с другом. (В англо язычной литературе по криптографии для обозначения пользователей и зло умышленников принято применять личные имена, в частности Alice, Bob и Eve.) К сожалению, в общем случае канал общения не является безопас ным. Он прослушивается злоумышленником Е. Каждое сообщение т , кото рое пользователь А отсылает пользователю Б, получает и злоумышленник Е. (Это же справедливо и для сообщений, которые пользователь Б отсылает пользователю А, за исключением того, что пользователи А и Б меняются ме стами. Если удастся защитить сообщения пользователя А, то это же решение можно применить и для защиты сообщений пользователя Б, поэтому в даль нейшем будем говорить только о сообщениях, отсылаемых пользователем А пользователю Б.) Что же нужно сделать, чтобы злоумышленник Е не смог читать сообщения?
Чтобы злоумышленник Е не смог понять сообщения, которыми обмени ваются пользователи А и Б, применяется схема шифрования, представлен ная на рис. 3.2. Вначале пользователи А и Б договариваются о применении секретного ключа К е. Для этого им следует воспользоваться каналом об щения, который не может прослушиваться злоумышленником Е (например,