Почему двух ключей безопаснее, чем одного

При обычном шифровании отправителю и получателю нужен один и тот же секретный ключ. Но тогда возникает неудобный вопрос: как передать его адресату, не дав перехватчику скопировать? Криптография с открытым ключом обходит эту проблему: пара ключей создаётся математически связанной, но открытый ключ не позволяет практически вычислить закрытый.

Это не означает, что письмо обычно целиком «прогоняют» через открытый ключ. Такие вычисления сравнительно затратны. В типичной схеме программа создаёт случайный короткий ключ для быстрого симметричного шифрования, им закрывает текст, а сам ключ шифрует открытым ключом получателя. Получатель сначала восстанавливает короткий ключ своим закрытым ключом, затем читает сообщение. Перехватчику достаётся набор данных, который без секрета остаётся нечитаемым.

Важно знать, чей это открытый ключ

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

Поэтому ключи связывают с личностью через сертификаты — цифровые подтверждения, которым доверяет программа, — либо проверяют отпечаток ключа по независимому каналу. Секретность зависит не только от закрытого ключа, но и от правильного выбора открытого.

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