Несимметричные алгоритмы шифрования

В середине 70-х двое ученых — Винфилд Диффи и Мартин Хеллман — описали принципиально другой подход к шифрованию.

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

Рис. 1. Модель криптосхемы с открытым ключом

В модели криптосхемы с открытым ключом также три участника: отправитель, получатель и злоумышленник (рис. 1). Задача отправителя заключается в том, чтобы по открытому каналу связи передать некоторое сообщение в защищенном виде. Получатель генерирует на своей стороне два ключа: открытый Е и закрытый D. Закрытый ключ D (часто называемый также личным ключом) абонент должен сохранять в защищенном месте, а открытый ключ Е он может передать всем, с кем хочет поддерживать защищенные отношения. Для шифрования текста служит открытый ключ, но расшифровать этот текст можно только с помощью закрытого ключа. Поэтому открытый ключ передается отправителю в незащищенном виде. Отправитель, используя открытый ключ получателя, шифрует сообщение X и передает его получателю. Получатель расшифровывает сообщение своим закрытым ключом D. Очевидно, что числа, одно из которых служит для шифрования текста, а другое — для дешифрирования, не могут быть независимыми друг от друга, а значит, есть теоретическая возможность вычисления закрытого ключа по открытому. Однако это связано с огромным объемом вычислений, которые требуют соответственно огромного времени. Поясним принципиальную связь между закрытым и открытым ключами следующей аналогией.

ПРИМЕР-АНАЛОГИЯ

Пусть руководитель предприятия (на рис. 2 это пользователь 1) решает вести секретную переписку со своими сотрудниками. Рассмотрим вариант, когда требуется обеспечить конфиденциальность потока сообщений только в одну сторону — от сотрудников к руководителю. Для этого руководитель решает использовать какой-либо малоизвестный язык, например санскрит. С этой целью он обзаводится единственной копией санскритско-русского словаря, который оставляет себе, и большим количеством широкодоступных русско-санскритских словарей, которые раздает всем своим сотрудникам.

Рис. 2. Использование шифрования с открытым ключом для обеспечения

Когда у сотрудников возникает необходимость написать секретное сообщение руководителю, они, пользуясь словарем, пишут сообщения на санскрите. Руководитель переводит сообщения на русский язык, пользуясь доступным только ему санскритско-русским словарем. Очевидно, что здесь роль открытого ключа Е и закрытого ключа D руководителя играют русско-санскритский и санскритско-русский словари соответственно. Могут ли пользователи 2, 3 и 4 прочитать чужие сообщения 5г, .¾, .¾, которые посылает каждый из них руководителю? Вообще-то нет, так как для этого им нужен санскритско-русский словарь, обладателем которого является только пользователь 1. Так обеспечивается конфиденциальность потока сообщений в направлении руководителя.

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

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

Рис. 3. Использование шифрования закрытым ключом для подтверждения авторства

Заметим, что в этом случае сообщения первого пользователя S12, S13, S14, адресованные пользователям 2, 3 и 4, не являются секретными, так как все адресаты обладают одним и тем же открытым ключом, с помощью которого они могут расшифровывать все сообщения, поступающие от пользователя 1.

Для того чтобы в сети все n абонентов имели возможность не только принимать зашифрованные сообщения, но и сами посылать таковые, каждый абонент должен обладать собственной парой ключей Е и D. Всего в сети будет 2п ключей: п открытых ключей для шифрования и n секретных ключей для дешифрирования. Таким образом решается проблема масштабируемости — квадратичная зависимость количества ключей от числа абонентов в симметричных алгоритмах заменяется линейной зависимостью в несимметричных алгоритмах. Решается и проблема секретной доставки ключа. Злоумышленнику нет смысла стремиться завладеть открытым ключом, поскольку это не дает возможности расшифровывать текст или вычислить закрытый ключ.

Хотя информация об открытом ключе не является секретной, ее нужно защищать от подлогов, чтобы злоумышленник под именем легального пользователя не навязал свой открытый ключ, после чего с помощью своего закрытого ключа он сможет расшифровывать все сообщения, посылаемые легальному пользователю, и отправлять свои сообщения от его имени. Проще всего было бы распространять списки, связывающие имена пользователей с их открытыми ключами, широковещательно путем публикаций в средствах массовой информации (бюллетени, специализированные журналы и т. п.). Однако при таком подходе мы снова, как и в случае с паролями, сталкиваемся с плохой масштабируемостью. Решением проблемы является технология цифровых сертификатов — электронных документов, которые связывают конкретных пользователей с конкретными открытыми ключами.