Криптография – это наука о том, как передать сообщение от одного адресата другому так, чтобы его не смог перехватить кто-то третий. Следуя принятым договоренностям, назовем одного адресата Алисой, а второго Бобом. Злоумышленника же, который будет пытаться перехватить наши сообщения, назовем Евой (от английского слова «eavesdropper» - подслушивающий).
Вообще говоря, Алиса может передать сообщение Бобу разными способами. Например, они могут договориться встретиться в парке, в кофейне, или в метро и там передать листочек с сообщением из рук в руки. Или же, Алиса может оставить чемоданчик с сообщением в условленном месте, а Боб его оттуда заберет. Не сомневаюсь, что каждый из нас может придумать десяток самых изощренных способов передачи сообщения от Алисы к Бобу, но мы сейчас остановимся только на одном, а именно передаче сообщения по информационному каналу. Например, через локальную сеть или Интернет.
Схематично можно представить себе этот канал в виде такой вот схемы:
Причем место людей в данной схеме обычно занимают компьютеры, а информация передается в виде последовательности бит – нулей и единичек. Как же сделать так, чтобы сообщение не попало в руки Евы? Можно, например, проследить, чтобы у Евы не было доступа к каналу передачи на всем его протяжении. Но, если информация передается на десятки километров, сделать это, мягко говоря, проблематично. Да и вообще, всегда может найтись такой участок канала, где злоумышленник сможет незаметно подключиться к нему и перехватывать передаваемые сообщения.
А можно сделать и по-другому – шифровать передаваемые сообщения! Шифры были изобретены еще в эпоху Древнего Мира, несколько тысяч лет назад, и повсеместно использовались для передачи тайной информации. Самыми известными древними шифрами являются Скитала и шифр Цезаря (его онлайн-версию можно посмотреть на http://planetcalc.com/1434/). Процесс шифрования этими шифрами (которые также называются «моноалфавитными») довольно прост: берется исходный текст (сообщение) и преобразовывается в зашифрованный с помощью «ключа». Например, в шифре Цезаря таким ключом является сдвиг одного алфавита относительно другого, что и показано на рисунке ниже.
В данном случае сдвиг равен трём, поэтому: A заменяется на D B заменяется на E … Z заменяется на C Для сообщения “Hello” зашифрованный текст будет выглядеть, как “Khoor”. Что же нужно знать Бобу, чтобы, получив сообщение “Khoor”, понять, что хотела сказать ему Алиса? Правильно, ключ. И здесь у него есть два варианта: либо пытаться «подобрать» ключ самому (благо для шифра Цезаря это сделать не так сложно), либо попросить Алису передать ему ключ.
Получив подобную просьбу от Боба, Алиса столкнется с очередной проблемой – как передать ключ Бобу так, чтобы его не смогла перехватить Ева? Ведь если Ева перехватит и зашифрованное сообщение, и ключ, она без труда сможет восстановить исходное сообщение и все усилия по его шифрованию станут бессмысленными. Из этой ситуации есть несколько выходов. Один из них – передать ключ предварительно встретившись друг с другом лично, а в дальнейшем просто пользоваться им для шифрования и дешифрования сообщений. Но это не очень-то удобно, если Алиса и Боб находятся далеко друг от друга.
Другой способ – использовать так называемые алгоритмы ассиметричного шифрования (или, как их еще называют, криптографию с открытым ключом), когда существуют два ключа – открытый, который доступен и Алисе, и Бобу (и, возможно, Еве), и закрытый, причем свой у Алисы и свой у Боба, которыми они ни с кем не делятся. При этом, даже если Ева перехватит и зашифрованный текст, и открытый ключ, то не сможет восстановить исходный текст, не зная закрытого ключа. Примерами таких шифров служат алгоритмы Диффи-Хеллмана, Эль-Гамаля и RSA, широко используемые в защищенных протоколах передачи данных (например, SSL/TLS). Однако у этих алгоритмов есть фундаментальный недостаток – они легко взламываемы с помощью квантового компьютера, который вот-вот станет реальностью.
Поэтому ученые работают над новыми способами защиты информации, и наиболее важный из них называется квантовой криптографией.
Комментарии: