Самоучитель по защите компьютерной информации
Что такое криптографический протокол
Протокол —
это последовательность шагов, которые предпринимают две или
большее количество сторон для совместного решения задачи. Все шаги следуют в
порядке строгой очередности, и ни один из них не может быть сделан прежде, чем
закончится предыдущий. Кроме того, любой протокол подразумевает участие, по
крайней мере, двух сторон. В одиночку можно, например, смешать и выпить
коктейль, но к протоколу это не имеет никакого отношения. Поэтому придется
угостить кого-нибудь сделанным коктейлем, чтобы его приготовление и дегустация
стали настоящим протоколом. И наконец протокол обязательно предназначен для
достижения какой-то цели.
Протоколы имеют и другие отличительные черты:
-
каждый участник протокола должен быть заранее оповещен о шагах, которые ему
предстоит предпринять;
-
все участники протокола должны следовать его правилам добровольно. без
принуждения;
-
необходимо, чтобы протокол допускал только однозначное толкование, а
его шаги были совершенно четко определены и не допускали возможности их
неправильного понимания;
-
протокол должен содержать описание реакции его участников на любые
ситуации, возникающие в ходе реализации этого протокола — иными словами,
недопустимым является положение, когда для возникшей ситуации протоколом не
определено соответствующее действие.
Криптографическим протоколом
называется такой, в основе которого лежи:
криптографический алгоритм. Однако целью криптографического протокол;! зачастую
является не только сохранение информации в тайне от посторонних. Участники
криптографического протокола могут быть близкими друзьями, у которых нет друг от друга секретов, а могут являться настолько
непримиримыми врагами, что каждый из них отказывается сообщить другому. какое
сегодня число. Тем не менее, им может понадобиться поставить сноп подписи под
совместным договором или удостоверить свою личность. В этом случае криптография
нужна, чтобы предотвратить или обнаружим, подслушивание посторонними лицами, не
являющимися участниками протокола, а также не допустить мошенничества. Поэтому
часто требуется, чтобы криптографический протокол обеспечивал следующее: его
участники не могут сделать или узнать больше того, что определено протоколом.
Зачем нужны криптографические протоколы
В повседневной жизни нам приходится сталкиваться с протоколами буквально на
каждом шагу — играя
в
любые
игры, делая покупки в магазинах или голосуя на выборах. Многими протоколами нас
научили пользоваться родители, школьные учителя и друзья. Остальные мы сумели
узнать самостоятельно.
В настоящее время люди все чаще контактируют друг с другом при помощи
компьютеров. Компьютеры же, в отличие от большинства людей, в школу не ходили, у
них не было родителей, да и учиться самостоятельно они не в состоянии. Поэтому
компьютеры приходится снабжать формализованными протоколами, чтобы они смогли
делать то, что люди выполняют особо не задумываясь. Например, если в магазине не
окажется кассового аппарата, вы нее равно сможете купить в нем необходимую вещь.
Однако такое кардинальное изменение протокола поставило бы бедный компьютер в
полный тупик.
Большинство протоколов, которые люди используют при общении друг с другом с
глазу на глаз, хорошо себя зарекомендовали только потому, что их участники имеют
возможность вступить в непосредственный контакт. Взаимодействие с другими людьми
через компьютерную сеть, наоборот, подразумевает анонимность. Будете ли вы
играть с незнакомцем в преферанс, не видя, как он тасует колоду и раздает карты?
Доверите ли вы своп деньги совершенно постороннему человеку, чтобы он купил вам
что-нибудь в магазине? Пошлете ли вы свой бюллетень голосования по почте, зная,
что с ним сможет ознакомиться любой из почтовых работников и потом рассказать
всем о ваших нетрадиционных политических пристрастиях? Думаю, что нет.
Глупо считать, что компьютерные пользователи ведут себя более честно, чем
абсолютно случайные люди. То же самое касается и сетевых администраторов, и
проектировщиков компьютерных сетей. Большинство из них и в самом деле честные
люди, однако есть и такие, кто может причинить нам большие неприятности. Поэтому
так нужны криптографические протоколы. использование которых позволяет
защититься от непорядочных людей.
Распределение ролей
Чтобы описание протоколов было более наглядным, имена их участников
однозначно определяют роли, им уготованные (табл. 7.1). Пусть Антон и Борис
принимают участие во всех двухсторонних протоколах. Как правило, начинает
выполнение шагов, предусмотренных протоколом, Антон, а ответные действия
предпринимает Борис. Если протокол является грех- или четырехсторонним,
исполнение соответствующих ролей берут на себя Владимир и Георгий. Об остальных
персонажах подробнее будет рассказано позже.
Таблица 7.1. Роли, которые играют участники протоколов
Участник протокола
|
Роль в протоколе
|
Антон
|
Первый участник протоколов
|
Борис
|
Второй участник протоколов
|
Владимир
|
Участник трех- и четырехсторонних протоколов
|
Георгий
|
Участник четырехсторонних протоколов
|
Дмитрий
|
Доверенное лицо, наделенное правами арбитра
|
Зиновий
|
Злоумышленник
|
Кирилл
|
Контролер
|
Олег
|
Охранник
|
Петр
|
Подслушивает за участниками протоколов
|
Сергей
|
Свидетель
|
Протокол с арбитражем
Арбитр —
участник протокола, которому остальные участники полностью
доверяют, предпринимая соответствующие действия для завершения очередного шага
протокола. Это значит, что у арбитра нет личной заинтересованности в достижении
тех или иных целей, преследуемых участниками протокола, и он не может выступить
на стороне любого из них. Участники протокола также принимают на веру все, что
скажет арбитр, и беспрекословно следуют всем его рекомендациям.
В протоколах, которым мы следуем в повседневной жизни, роль арбитра чаще
играет адвокат. Однако попытки перенести протоколы с адвокатом в качестве
арбитра из повседневной жизни в компьютерные сети наталкиваются на существенные
препятствия.
-
Легко довериться адвокату, про которого известно, что у него незапятнанная
репутация, и с которым можно установить личный контакт. Однако если два участника протокола не доверяют друг другу, арбитр, не
облаченный в телесную оболочку и существующий где-то в недрах компьютерной сети,
вряд ли будет пользоваться у них доверием.
-
Расценки за услуги, оказываемые адвокатом, известны. Кто и каким образом
будет оплачивать издержки за аналогичные услуги арбитра в компьютерной сети?
-
Введение арбитра в любой протокол увеличивает время, затрачиваемое на
реализацию этого протокола.
-
Поскольку арбитр контролирует каждый шаг протокола, его участие и очень
сложных протоколах может стать узким местом при их реализации. Увеличение числа
арбитров позволяет избавиться от данного узкого места, однако одновременно
возрастут и накладные расходы на реализацию протокола.
-
В силу того, что все участники протокола должны пользоваться услугами
одного и того же арбитра, действия злоумышленника, который решит нанести им
ущерб, будут направлены, в первую очередь, против этого арбитра. Следовательно,
арбитр представляет собой слабое звено любого протокола с арбитражем.
Несмотря на отмеченные препятствия, протоколы с арбитражем находи г широкое
применение на практике. В ходе дальнейшего изложения доверенное лицо, наделенное
правами арбитра, будет именоваться Дмитрием.
Протокол с судейством
Чтобы снизить накладные расходы на арбитраж, протокол, в котором участвует
арбитр, часто делится на две части. Первая полностью совпадает с обычным
протоколом без арбитража, а ко второй прибегают только в случае возникновения
разногласий между участниками. Для разрешения конфликтов между ними используется
особый арбитр —
судья.
Подобно арбитру, судья является незаинтересованным участником протокола,
которому остальные участники доверяют. Однако в отличие от арбитра. судья
участвует отнюдь не в каждом шаге протокола. Услугами судьи пользуются, только
если требуется разрешить сомнения относительно правильности действий участников
протокола. Если таких сомнений ни у кою не возникает, судейство не понадобится.
В компьютерных протоколах с судейством предусматривается наличие данных,
проверив которые доверенное третье лицо может решить, не смошенничал ли кто-либо
из участников этого протокола. Хороший протокол с судейством также позволяет
выяснить, кто именно ведет себя нечестно Это служит прекрасным превентивным
средством против мошенничества со стороны участников такого протокола.
Самоутверждающийся протокол
Самоутверждающийся
протокол не требует присутствия арбитра для завершения
каждого шага протокола. Он также не предусматривает наличие судьи для разрешения
конфликтных ситуаций. Самоутверждающийся протокол устроен так, что, если один из
его участников мошенничает, другие смогут моментально распознать нечестность,
проявленную этим участником, и прекратить выполнение дальнейших шагов протокола.
Конечно же, хочется, чтобы существовал универсальный самоутверждающийся
протокол на все случаи жизни. Однако на практике в каждом конкретном случае
приходится конструировать свой специальный самоутверждающийся протокол.
Разновидности атак на протоколы
Атаки на протоколы бывают направлены против криптографических алгоритмов,
которые в них задействованы, против криптографических методов, применяемых для
их реализации, а также против самих протоколов. Для начала предположим, что
используемые криптографические алгоритмы и методы являются достаточно стойкими,
и рассмотрим атаки собственно на протоколы.
Если некто, не являющийся участником протокола, попытается подслушать
информацию, которой обмениваются его участники, — это
пассивная атака
на протокол. Она
так названа потому, что атакующий (будем именовать его Петром) может только
накапливать данные и наблюдать за ходом событий, но не в состоянии влиять на
него. Пассивная атака подобна криптоаналитической атаке со знанием только
шифртекста. Поскольку участники протокола не обладают надежными средствами,
позволяющими им определить, что они стали объектом пассивной атаки, для защиты
от нее используются протоколы, дающие возможность предотвращать возможные
неблагоприятные последствия пассивной атаки, а не распознавать ее.
Атакующий может попытаться внести изменения в протокол ради собственной
выгоды. Он может выдать себя за участника протокола, внести изменения в
сообщения, которыми обмениваются участники протокола, подменить информацию,
которая хранится в компьютере и используется участниками протокола для принятия
решений. Это
активная атака
на протокол, поскольку атакующий (назовем его Зиновием) может вмешиваться в
процесс выполнения шагов протокола его участниками.
Итак, Петр пытается собрать максимум информации об участниках протокола и об
их действиях. У Зиновия же совсем другие интересы — ухудшение производительности
компьютерной сети, получение несанкционированного доступа к ее ресурсам,
внесение искажений в базы данных. При этом и Петр, и Зиновий не обязательно
являются совершенно посторонними лицами. Они могут быть легальными пользователями, системными и сетевыми
администраторами, разработчиками программного обеспечения и даже участниками
протокола, которые ведут себя непорядочно или даже вовсе не соблюдают этот
протокол. В последнем случае атакующий называется
мошенником.
Пассивный мошенник
следует всем правилам, которые определены протоколом, но при этом еще и
пытается узнать о других участниках больше, чем предусмотрено этим протоколом.
Активный мошенник вносит произвольные изменения в протокол, чтобы нечестным
путем добиться для себя наибольшей выгоды.
Защита протокола от действий нескольких активных мошенников представляет
собой весьма нетривиальную проблему. Тем не менее при некоторых условиях эту
проблему удается решить, предоставив участникам протокола возможность вовремя
распознать признаки активного мошенничества. А защиту от пассивного
мошенничества должен предоставлять любой протокол вне зависимости от условий, в
которые поставлены его участники.
Протокол обмена сообщениями с использованием симметричного шифрования
Предположим, что Антон и Борис хотят обмениваться секретными сообщениями по
каналу связи, не защищенному от подслушивания. Естественно. им придется
воспользоваться шифрованием. Однако чтобы Антон успешно зашифровал свое
сообщение Борису, а тот, получив это сообщение, смог его расшифровать, они
должны действовать в соответствии со следующим протоколом:
1. Антон и Борис уславливаются о том, какой криптосистемой они будут
пользоваться.
2. Антон и Борис генерируют ключи для шифрования и расшифрования своих
сообщений и затем обмениваются ими.
3. Антон шифрует сообщение с использованием криптографического алгоритма и
ключа, о которых он заранее договорился с Борисом.
4. Антон отправляет зашифрованное сообщение Борису.
5. Борис расшифровывает полученное сообщение, применяя тот же
криптографический алгоритм и ключ, которыми пользовался Антон.
Если Петр имеет возможность перехватывать сообщения, которые передают друг
другу Антон и Борис, он может попытаться прочесть эти сообщения. Если Антон и
Борис используют стойкий алгоритм шифрования. — они в безопасности. Однако Петр
может оказаться в состоянии подслушивать за Антоном и Борисом, когда они
выполняют шаг 1 и шаг 2
протокола. Поэтому стойкая криптосистема не
должна опираться на сохранение в тайне алгоритма шифрования. Необходимо, чтобы
ее стойкость определялась одной только длиной секретного ключа. Тогда Антон и Борис могут условиться,
каким шифром они будут пользоваться, ничуть не заботясь о том, что их подслушает
Петр. Тем не менее, шаг 2 протокола все равно должен выполняться ими в
обстановке строжайшей секретности. Требуется, чтобы свои сгенерированные ключи
Антон и Борис хранили в секрете до, во время и после процесса выполнения всех
шагов протокола. Иначе Петр сможет прочесть всю их шифрованную переписку.
Что касается Зиновия, то в зависимости от преследуемых целей он может
действовать по-разному. Если Зиновий прервет связь между Антоном и Борисом, они
будут не в состоянии обмениваться сообщениями. Зиновий может заменить
шифрованное сообщение, посланное Антоном, на свое собственное. Попытавшись
расшифровать поддельное сообщение, Борис вместо осмысленного открытого текста
получит абракадабру, и решит, что Антон не слишком серьезно отнесся к шифрованию
своего сообщения или что при передаче оно было просто искажено. Хуже, если
Зиновий узнает ключ, которым пользуются Антон и Борис. Тогда он сможет
зашифровать любое сообщение и отправить его Борису от имени Антона, а у Бориса
не будет возможности распознать подделку.
Если Антон вознамерится навредить Борису, тот будет не в силах ему помешать.
Например, Антон может заставить Бориса отказаться от обмена сообщениями. Для
этого Антону достаточно передать копию ключа Петру с условием, что Петр
опубликует открытые тексты сообщений Бориса в газете для всеобщего обозрения.
Это значит, что, используя приведенный выше протокол, Антон и Борис должны
полностью доверять друг другу.
Подводя итог сказанному, следует еще раз подчеркнуть, что в протоколах обмена
сообщениями с использованием симметричного шифрования ключи должны храниться и
распределяться между участниками протокола в строжайшем секрете. Ключи являются
не менее ценными, чем сама информация, которая шифруется с их использованием,
поскольку знание ключей противником открывает ему неограниченный доступ к этой
информации.
Протокол обмена сообщениями с использованием шифрования с открытым ключом
Симметричную криптосистему можно сравнить с сейфом. Криптографический ключ
соответствует комбинации, отпирающей сейф. Каждый, кто знает комбинацию, может
открыть сейф. Тому, кто комбинацией не владеет, но все равно желает знакомиться
с содержимым сейфа, лучше записаться на курсы медвежатников, если таковые,
конечно, существуют.
В 1976 г. американские криптологи У. Диффи и М. Хеллман изобрели криптографию
с открытым ключом. Они предложили использовать два вида ключей —
открытые
и
тайные.
Вычислить тайный ключ, зная
только открытый, очень сложно. Человек, владеющий открытым ключом, может с его помощью
зашифровать сообщение. Расшифровать это сообщение в состоянии только тот, кто
имеет соответствующий тайный ключ. В отличие от симметричной криптосистемы, для
алгоритма шифрования с открытым ключом больше подходит сравнение с почтовым ящиком. Опустить почту и этот
ящик очень просто, равно как и зашифровать сообщение с применением открытого ключа. А извлечение из почтового ящика находящейся
в нем
корреспонденции сродни расшифрованию сообщения. Желающего сделать это без ключа вряд ли ожидает легкая работа. Обладатель же ключа откроет
почтовый ящик, т. е. расшифрует сообщение, без особого труда.
При зашифровании и расшифровании сообщений
в криптосистеме с
открытым ключом используется однонаправленная
функция с лазейкой. Причем зашифрование соответствует вычислению значения этой
функции, а расшифрование — ее обращению. Поскольку и
открытый ключ, и сама функция не являются секретными, каждый может зашифровать
свое сообщение с их помощью. Однако обратить функцию, чтобы
получить открытый текст зашифрованного сообщение, в разумные сроки не сможет
никто. Для этого необходимо знать лазейку, т. е. тайный
ключ. Тогда расшифрование будет таким же легким, как и зашифрование.
Протокол обмена сообщениями с использованием шифрования с открытым
ключом выглядит следующим образом:
-
Антон и Борис уславливаются о том, какой криптосистемой они будут пользоваться.
-
Борис посылает Антону свой открытый ключ.
-
Антон шифрует открытый текст своего сообщения при помощи открытого ключа,
присланного ему Борисом, и шлет полученный в результате шифртекст Борису.
-
Борис расшифровывает сообщение Антона, используя свой тайный ключ.
Применение криптографии с открытым ключом позволяет решить проблему передачи
ключей, которая присуща симметричным криптосистемам. Без какой-либо
предварительной подготовки Антон может отправить зашифрованное сообщение Борису.
И хотя в распоряжении Петра окажутся и сам алгоритм шифрования, и зашифрованное
Антоном сообщение, и лаже использованный им для этого ключ, Петр все равно не
сможет расшифровать данное сообщение.
Чтобы упростить протокол обмена шифрованными сообщениями, открытые ключи всех
абонентов единой сети связи часто помещаются в справочную базу данных,
находящуюся в общем пользовании этих абонентов. Тогда протокол обмена
сообщениями с использованием шифрования с открытым ключом имеет следующий вид:
1. Антон находит открытый ключ Бориса в базе данных.
2. Антон шифрует открытый текст своего сообщения при помощи открытого ключа
Бориса.
3. Борис расшифровывает сообщение Антона, используя свой тайный ключ.
Второй протокол в большей степени напоминает отправку писем по почте,
поскольку получатель сообщения не является участником протокола до тех самых
пор, пока не захочет ознакомиться с открытым текстом этого сообщения.
Гибридные криптосистемы
На практике криптосистемы с открытым ключом используются для шифрования не
сообщений, а ключей. На это есть две основные причины:
-
Алгоритмы шифрования с открытым ключом в среднем работают в тысячи раз
медленнее, чем алгоритмы с симметричным ключом. И хотя темпы роста компьютерной
производительности очень высоки, требования к скорости шифрования растут не
менее стремительно. Поэтому криптосистемы с открытым ключом вряд ли когда-нибудь
смогут удовлетворить современные потребности в скорости шифрования.
-
Алгоритмы шифрования с открытым ключом уязвимы по отношению к криптоаналитическим
атакам со знанием открытого текста. Пусть С=Е(Р), где С обозначает шифртекст, Р
— открытый текст, Е — функцию шифрования. Тогда, если Р принимает значения из
некоторого конечного множества, состоящего из
n
открытых текстов,
криптоаналитику достаточно зашифровать все эти тексты, используя известный ему
открытый ключ, и сравнить результаты с С. Ключ таким способом ему вскрыть не
удастся, однако открытый текст будет успешно определен.
Чем меньше количество (
n
) возможных открытых текстов, тем эффективнее будет
атака на криптосистему с открытым ключом. Например, если криптоаналитику
известно, что шифрованию подверглась сумма сделки, не превышающая 1 млн долл.,
он может перебрать все числа от 1 до 1 000 000.
В большинстве случаев криптографические алгоритмы с открытым ключом
применяются для шифрования сеансовых ключей при их передаче абонентам сети
связи. Соответствующий протокол выглядит обычно так:
1. Антон генерирует сеансовый ключ К и шифрует его с использованием открытого
ключа В, принадлежащего Борису:
Е
В
(К)
2. Борис расшифровывает сообщение Антона при помощи своего тайного ключа и
получает в результате сеансовый ключ К. сгенерированный Антоном:
K=D
B
(E
B
(K))
3. Антон и Борис обмениваются сообщениями, зашифрованными одним и тем же сеансовым ключом К.
Данный протокол позволяет не хранить ключи в течение неопределенного периода
времени до тех пор, пока они не понадобятся в очередном сеансе
связи. Сеансовый ключ можно сгенерировать
и отправить по требуемому ; адресу непосредственно перед посылкой сообщения,
которое предполагается зашифровать на этом ключе, а потом его сразу
уничтожить. Тем самым уменьшается вероятность компрометации сеансового ключа.
И хотя тайным ключ также
может быть скомпрометирован, риск здесь значительно меньше поскольку тайный
ключ используется очень редко — только для однократного зашифрования
сеансового ключа.
"Шарады" Меркля
Оригинальный протокол обмена ключами был предложен американским криптологом
Р. Мерклем (R.-Merkle) в 1974 г. Данный протокол основывается на так называемых
"шарадах", которые требуется решить для получения ключа. Это гораздо легче
сделать отправителю и получателю шифрованных сообщений, чем криптоаналитику,
перехватывающему их. В результате Антон может послать шифрованное сообщение
Борису, предварительно не передавая ему секретного ключа:
1. Борис генерирует 2
20
(около 1 млн) сообщений вида: "Это шарада под
номером х. Это секретный ключ под номером у", где х — случайное число, у—
случайный секретный ключ. Пара х, у является уникальной для каждого сообщения.
Затем Борис шифрует все эти сообщения при помощи какого-либо симметричного
алгоритма на различных 20-битных ключах и отсылает Антону.
2. Антон случайным образом выбирает одно из шифрованных сообщений, присланных Борисом, и методом
тотального перебора получает открытый текст этого сообщения.
3. Антон шифрует свое собственное секретное сообщение при помощи другого симметричного алгоритма на
ключе у, вскрытом им методом тотального перебора, и посылает это сообщение вместе с соответствующим х.
4. Борис, зная соответствие между х и у, расшифровывает сообщение, пришедшее ему от Антона.
Конечно же, Петр может вскрыть ключ, который был использован Антоном для зашифрования секретного сообщения, однако для этого Петру придется выполнить
значительно больший объем вычислений, чем Антону и Борису Петр должен будет
прочесть все 2
20
шифрованных сообщений, отправленных Борисом, чтобы найти
у, соответствующее значению х, выбранному Антоном. На решение этих "шарад" Петр
потратит примерно квадрат времени. которое потребуется Антону и Борису, чтобы их
составить. И хотя такое отличие в трудоемкости по криптографическим меркам довольно невелико, в
некоторых случаях этого может оказаться достаточно. Например, если Антон и Борис
смогут опробовать по 10 тыс. ключей в секунду, им понадобится немногим более 1
минуты, чтобы ключ шифрования у оказался в руках Антона. В то же время у Петра,
обладающего примерно такой же вычислительной мощью для опробования ключей, как
Антон и Борис, на вскрытие правильного ключа уйдет больше года.
[ Назад ] [ Содержание ] [Вперед ]
|