Элементы протоколов

2.1 Введение в протоколы

Смысл криптографии - в решении проблем. (По сути, в этом состоит и смысл использования компьютеров, о чем многие пытаются забыть.) Криптография решает проблемы секретности, проверки подлинности, целости о-сти и человеческой нечестности. Вы можете выучить все о криптографических алгоритмах и методах, но они представляют только академический интерес, если не используются для решения какой-нибудь проблемы . Именно поэтому мы собираемся сначала взглянуть на протоколы .

Протокол- это порядок действий, предпринимаемых двумя или более сторонами, предназначенный для р е-шения определенной задачи. Это важное определение. "Порядок действий" означает, протокол выполняется в определенной последовательности, с начала до конца. Каждое действие должно выполняться в свою очередь и только после окончания предыдущего. "Предпринимаемых двумя или более сторонами" означает, что для реа­лизации протокола требуется по крайней мере два человека, один человек не сможет реализовать протокол . Че­ловек в одиночку может выполнить некоторые действия, решая задачу (например, покупая торт), но это не пр о-токол. (Для того, чтобы получился настоящий протокол, кто-то должен съесть торт.) Наконец, "предназначенный для решения определенной задачи" означает, что протокол должен приводить к какому-то результату. Что-то, похожее на протокол, но не решающее никакой задачи - это не протокол, это потеря времени. У протоколов есть также и другие характеристики :

— Каждый участник протокола должен знать протокол и последовательность составляющих его действий .

— Каждый участник протокола должен согласиться следовать протоколу .

— Протокол должен быть непротиворечивым, каждое действие должно быть определено так, чтобы не было возможности непонимания.

— Протокол должен быть полным, каждой возможной ситуации должно соответствовать определенное де й-ствие.

В этой книге каждый протокол организован как некоторый порядок действий . Выполнение протокола проис­ходит по действиям, линейно, пока не будет команды перейти к следующему действию . Каждое действие включает по крайней мере одно из двух: вычисления, выполняемые одной или несколькими сторонами, или сообщения, которыми обмениваются стороны.

Криптографический протокол- это протокол, использующий криптографию. Стороны могут быть друзья­ми и слепо доверять друг другу или врагами и не верить друг другу даже при сообщении времени суток . Крип­тографический протокол включает некоторый криптографический алгоритм, но, вообще говоря, предназначение протокола выходит за рамки простой безопасности. Участники протокола могут захотеть поделиться секретом друг с другом, совместно генерировать случайную последовательность, подтвердить друг другу свою подли н-ность или подписать контракт в один и тот же момент времени. Смысл использования криптографии в проток о-ле - в предотвращении или обнаружении вредительства и мошенничества. Если вы никогда не сталкивались с подобными протоколами, они могут радикально изменить ваше представление о том, что недоверяющие друг другу стороны могут выполнить, используя компьютерную сеть. Общее правило можно сформулировать сле­дующим образом:

— Невозможно сделать или узнать больше, чем определено в протоколе .

Это гораздо сложнее, чем кажется. В следующих нескольких главах я рассматриваю множество протоколов . В некоторых из них один из участников может обмануть другого . В других, злоумышленник может взломать протокол или узнать секретную информацию. Ряд протоколов проваливаются, так как их разработчики недост а-точно тщательно определяли требования. Другие проваливаются из-за того, что их разработчики недостаточно тщательно анализировали свои протоколы. Как и для алгоритмов, гораздо легче доказать возможную небезо­пасность протокола, чем его полную безопасность.

Смысл протоколов

В повседневной жизни почти для всего существуют неформальные протоколы : заказ товаров по телефону, игра в покер, голосование на выборах. Никто не задумывается об этих протоколах, они вырабатывались в теч е-ние длительного времени, все знают, как ими пользоваться и они работают достаточно хорошо .

Сегодня все больше и больше людей общаются не лично, а используя компьютерную сеть . Для тех же ве­щей, которые люди делают не задумываясь, компьютерам нужны формальные протоколы . Когда вы переезжае­те из государства в государство и обнаруживаете кабинку, совершенно отличающуюся от той, к которой вы пр и-


выкли, вы легко адаптируетесь. Компьютеры далеко не так гибки .

Честность и безопасность многих протоколов человеческого общения основаны на личном присутствии . Раз­ве вы дадите незнакомцу кучу денег, чтобы он купил для вас что-нибудь в бакалее ? Сядете ли вы играть в покер с тем, кто жульничает, сдавая карты? Пошлете ли вы свой избирательный бюллетень правительству, не будучи уверенным в тайности такого голосования?

Наивно считать, что пользователи компьютерных сетей всегда честны. Также наивно считать, что всегда ч е-стны разработчики компьютерных сетей. Для большинства из них это именно так, но даже несколько жуликов могут принести много вреда. Формализируя протоколы, можно проверить способы, используемые жуликами для взлома протоколов. Так мы можем разработать протоколы, устойчивые к взлому.

Кроме формализации действий, протоколы позволяют абстрагироваться при решении задачи от способа р е-шения. Протокол связи один и тот же и на PC, и на VAX. Можно проверить протокол, не вдаваясь в детали его реализации. Когда мы убедимся в надежности протокола, его можно будет реализовать где угодно от компьют е-ров до телефонов и интеллектуальных тостеров.