Протоколы, содержащие цифровые подписи, особенно полезны для различных задач аутентификации. Например, при помощи схемы цифровых подписей можно создать подписи, которые сможет идентифицировать только определенный получатель. Это полезно для информаторов или доносчиков, поскольку получивший сообщение в силах установить, кто его отправил, но не сумеет доказать это третьему лицу. (Представьте, что вам на ухо прошептали секрет. Вы знаете, кто вам его сообщил, но никак не можете доказать, что это сделал именно он.) При помощи протоколов цифровых подписей можно подписать программу, и тогда только тот, кто приобрел программный пакет законным образом, сможет проверить подпись и узнать, что это не подделка; обладатели пиратских копий не могут быть в этом уверены. Мы можем создать групповые подписи, так что для людей, не входящих в группу, подпись будет казаться подписью группы в целом, а члены группы различат, чья конкретно эта подпись.
Более сложные протоколы дают криптографии возможность прыгнуть через любые препятствия. Можно предоставлять так называемые доказательства с нулевыми знаниями, когда Алиса способна доказать Бобу, что она что-то знает, не открывая, что именно. Криптографические протоколы также могут обеспечивать систему одновременного подписания контрактов через Интернет. Можно создать цифровой аналог заказных писем, когда Алиса сумеет прочесть письмо, только отослав обратно «расписку в получении».
При помощи протокола, называющегося совместным управлением секретностью (secret sharing), мы можем предписывать требование соглашения о доступе (collusioninaccess) – секрет, который нельзя узнать, если многие люди не действуют сообща. Это – действительно необходимая вещь. Представьте себе ядерную ракетную установку. Для того чтобы запустить ракету, два человека одновременно должны повернуть ключи и разблокировать систему. А замочные скважины (или в данном случае их цифровой аналог) достаточно сложны, чтобы один-единственный солдат не мог повернуть все ключи и убить всех; чтобы запустить ракету, по крайней мере два человека должны действовать сообща. Или представьте себе контроль счетов корпорации, в соответствии с которым для особо ценных чеков требуется две подписи: по крайней мере два из пяти членов правления корпорации должны подписать чек. Мы можем создать что-то подобное при помощи криптографии.
Получится даже еще лучше. Можно создать протокол для тайного голосования в Интернете – такой, что только зарегистрированный избиратель сможет проголосовать, никто не сумеет проголосовать дважды, никто не сможет узнать, кто за кого голосовал, и все будут уверены, что выборы честные. Можно даже создать электронную валюту, однако кто-нибудь попытается использовать эти платежные средства дважды…
Честно говоря… если вы захотите, мы сможем сделать и это.
Однако существуют и проблемы, которым посвящено достаточно места в этой книге.
Криптографические протоколы Интернета
Для Интернета криптография относительно нова и появилась она в нем только благодаря коммерциализации сети. Интернет небезопасен; чтобы обеспечить безопасность в сети, необходима криптография. Вот почему на практике криптографические протоколы являются важнейшей составной частью протоколов Интернета. Примеры, приведенные здесь, характерны для 2000 года, со временем их характер, конечно, будет меняться.
Первой областью применения криптографии в Интернете стала электронная почта. В ней работали два соответствующих протокола: S/MIME и OpenPGP. OpenPGP – это протокол в составе PGP и его разновидностей. S/MIME – стандартный интернет-протокол во всех других случаях.
Netscape изобрела SSL (Secure Sockets Layer – протокол, гарантирующий безопасную передачу данных по сети; комбинирует криптографическую систему с открытым ключом и блочным шифрованием данных) на заре существования Веб, когда люди захотели заниматься безопасной электронной торговлей при помощи своих браузеров. SSL существовал в нескольких воплощениях (он был полем боя во время войны браузеров Netscape и Microsoft и в итоге был назван TLS (Transport Layer Security)). Эти протоколы встроены в браузеры и позволяют людям зашифровать секретную информацию, посылаемую на различные веб-сайты.
Более новые криптографические протоколы разработаны для защиты пакетов IP. Среди них Microsoft Point-to-Point Tunneling Protocol (PPTP, у которого есть грубые дефекты), Layer Two Tunneling Protocol (L2TP) и IPsec (он существенно лучше, хотя и слишком сложен). IKE (Internet Key Exchange) – это, как видно из названия, протокол обмена ключами. Сегодня эти протоколы используются преимущественно для того, чтобы обеспечить работу виртуальных частных сетей (VPN). Тем не менее протоколы безопасности Интернета «умеют» намного больше, чем протоколы VPN. У них есть возможность обеспечивать безопасность большей части трафика. Со временем, может быть, эта возможность реализуется.
Читать дальше