Хотите создать безопасный телефон? Используйте криптографию с открытым ключом, чтобы сформировать сеансовый ключ, а затем при помощи этого ключа и симметричной криптографии зашифруйте переговоры. Хэш-функция обеспечивает дополнительную безопасность против атак, проводимых человеком. (Подробнее об этом позже.) Чтобы засекретить сообщение электронной почты, воспользуйтесь криптографией с открытым ключом для соблюдения секретности и схемой цифровой подписи для аутентификации. Электронная торговля? Обычно для нее не требуется ничего, кроме цифровых подписей и, иногда, шифрования для секретности. Секретный контрольный журнал? Возьмите хэш-функции, шифрование, может быть, MAC и перемешайте.
То, что мы сейчас делаем, и есть создание протоколов. Протокол – это не сложнее, чем танец. Это последовательность заданных шагов, которую выполняют два (или больше) партнера и которая предназначена для решения поставленной задачи. Представьте себе протокол, которым пользуются продавец и покупатель при покупке мандаринов. Вот необходимые шаги:
1. Покупатель спрашивает у продавца мандарины.
2. Продавец дает ему мандарины.
3. Покупатель платит продавцу.
4. Продавец возвращает ему сдачу.
Все, о ком идет речь в протоколе, должны знать шаги. Например, покупатель знает, что он должен заплатить за мандарины. Все шаги должны быть однозначны: ни продавец, ни покупатель не могут достичь шага, на котором они не знают, что делать. Кроме того, протокол должен обязательно завершаться – в нем не должно быть бесконечных циклов.
Шаг 2 не будет работать как надо, если продавец не поймет семантическое содержание шага 1. Продавец не выполнит шаг 4, если на шаге 3 не признает деньги настоящими. Попробуйте купить мандарины в США на польские злотые и посмотрите, как вам это удастся.
Нас особо волнуют протоколы безопасности. Кроме всех перечисленных выше требований мы хотим, чтобы покупатель и продавец не имели возможности обманывать (что бы ни означало «обманывать» в нашем контексте). Мы не хотим, чтобы продавец мог заглянуть в бумажник покупателя на шаге 3. Мы не хотим, чтобы продавец не отдал покупателю сдачу на шаге 4. Мы не хотим, чтобы покупатель застрелил продавца на шаге 3 и ушел с украденными мандаринами. Такие способы обмана распространены и в материальном мире, а анонимность киберпространства только увеличивает опасность.
Даже в физическом мире были разработаны более сложные протоколы, чтобы снизить опасность всякого рода жульничества. Вот как в общих чертах выглядит протокол продажи автомобиля.
1. Алиса передает Бобу ключи и документы.
2. Боб дает Алисе чек на сумму покупки.
3. Алиса кладет деньги в банк.
Здесь Боб запросто может сжульничать. Он может дать Алисе фальшивый чек. Она не будет знать, что чек фальшивый, и не узнает, пока ей не скажут об этом в банке. К тому времени Боб с ее машиной будет уже далеко.
Когда я продавал машину несколько лет назад, во избежание такой атаки придерживался несколько модифицированного протокола.
1. Боб выписывает чек и идет с ним в банк.
2. Когда на счет Боба поступит достаточно денег, чтобы покрыть чек, банк «заверяет» чек и возвращает его Бобу.
3. Алиса передает Бобу ключи и документы о праве собственности.
4. Боб дает Алисе заверенный чек на сумму покупки.
5. Алиса кладет деньги в банк.
Страницы: