Хеллмана, в 1976 году к нескольким принципиально новым идеям.
Разработчики поставили во главу угла способ обмена открытыми ключами и предложили новый, принципиально отличающийся от традиционной схемы получения пользователем общего секретного ключа. Теперь обмен открытыми ключами мог производиться по любому доступному каналу связи в открытом виде.
Предполагая, что пользователи имеют некоторую общеизвестную надежную процедуру шифрования и преобразования исходных ключей, можно изобразить схему формирования парой пользователей общего секретного ключа (назовем его К) для шифрования и расшифровки.
При этом должна быть гарантия, что по перехваченным в канале открытым ключам практически невозможно получить общий ключ К, не зная хотя бы один из исходных секретных ключей. В качестве такой гарантии в данном случае выступает сложность известной математической задачи, которую приходится решать в ходе вычисления К по секретным ключам, полученным, в свою очередь, из открытых.
Если в качестве секретных ключей выбираются случайные 512-разрядные целые числа, то для вычисления К по формуле с 512-разрядными коэффициентами необходимо проделать не менее чем 10^24 операций, что потребовало бы более 1000 лет работы любой современной супер-ЭВМ.
Таким образом, вычисление общего секретного ключа К только по открытым ключам оказывается практически невыполнимой задачей, что позволяет применять ключ К для надежного зашифровывания информации.
Другой принцип, предложенный У.Диффи и М.Хеллманом для снабжения пользователей сети ключами шифрования, получил название открытое шифрование.
Для зашифровывания и расшифровывания информации используются различные ключи, которые, хотя и связаны между собой, устроены так, что вычислить по одному из них (открытому) второй (секретный) практически невозможно (в том же смысле, что и выше).
Первое практическое воплощение принцип открытого шифрования получил в системе RSA, разработанной в 1977 году в Массачусетском Технологическом институте (США) и получившей свое название от первых букв фамилий авторов: R.Rivest, A.Shamir, L.Adelman.
Кроме системы RSA, известен целый ряд систем открытого шифрования. Они основаны на таких математических задачах, как задача об укладке ранца, декодировании линейных кодов и других. Однако все они не получили достаточно широкого распространения и являются в основном теоретическими разработками.
Принципиальной разницы между системами открытого распределения ключей и открытого шифрования нет: каждая из них при небольшой модификации может использоваться как для шифрования, так и для распространения секретных ключей по открытым каналам связи.
Переход от открытого шифрования к открытому распределению ключей достаточно прозрачен: отправитель шифрует и передает с помощью системы открытого шифрования секретный ключ, при помощи которого будет традиционным способом шифроваться информация. Общий секретный ключ, получаемый при открытом распределении ключей, можно использовать непосредственно для шифрования, складывая его поразрядно с передаваемым сообщением, в результате чего получается система открытого шифрования.
Дополнительным соображением в пользу единого именования систем является то, что с практической точки зрения их эффективнее использовать лишь для распределенных секретных ключей, осуществляя шифрование информации традиционным способом. Дело в том, что основной операцией в этих системах является возведение в степень 500-1000-разрядных чисел, что при программной реализации происходит в несколько десятков раз медленнее, чем шифрование того же размера данных стандартным алгоритмом (например, DES). Поэтому для быстрой обработки большого потока сообщений применяют специализированные процессы, которые, к примеру, используют системы с открытым ключом только для получения секретного ключа шифрования.
По материалам статьи А.Н. Лебедева "Открытые системы для "закрытой" информации" в журнале "Открытые Системы" #3, 1993 г.