Замок, который можно показать всем

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

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

Почему замок не открывается в обратную сторону

Математически такой механизм напоминает задачу с «лазейкой»: выполнить действие в одну сторону просто, а обратить его без дополнительной информации — сложно. Секретный ключ и есть эта дополнительная информация. Он даёт владельцу возможность расшифровать данные, не предоставляя такую возможность каждому, кто получил открытый ключ.

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

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