Криптография с открытым ключом является асимметричной, а это означает, что для шифрования и расшифровки применяются разные ключи. В отличие от симметричного шифрования, где любая произвольная последовательность байтов подходящей длины может служить ключом, асимметричная криптография требует специально созданных пар ключей. Пара ключей содержит компоненты открытого ключа и секретного ключа, которые работают вместе следующим образом:
- открытый ключ шифрует сообщения;
- секретный ключ расшифровывает сообщения.
Участник, «создающий» пару ключей, хранит секретный ключ вдали от глаз, а открытый ключ распространяет свободно. Особая характеристика этого типа криптографии заключается в том, что вычислить секретный ключ на основе открытого ключа невозможно. Таким образом, в случае утери секретного ключа зашифрованные с его помощью данные не могут быть восстановлены; и наоборот, если произошла утечка секретного ключа, что вся система шифрования становится бесполезной.
Предоставление открытого ключа позволяет двум компьютерам взаимодействовать защищенным образом через публичную сеть без предварительного контакта и без существующего общего секрета. Чтобы посмотреть, как это работает, предположим, что компьютер Origin должен отправить конфиденциальное сообщение компьютеру Target.
- Компьютер Target генерирует пару открытого и секретного ключей и затем отправляет открытый ключ компьютеру Origin.
- Компьютер Origin шифрует конфиденциальное сообщение с использованием открытого ключа компьютера Target, после чего отправляет его Target.
- Компьютер Target расшифровывает конфиденциальное сообщение с помощью своего секретного ключа.
Перехватчик сможет увидеть следующее:
- открытый ключ компьютера Target,
- конфиденциальное сообщение, зашифрованное посредством открытого ключа компьютера Target.
Однако без секретного ключа компьютера Target сообщение не может быть расшифровано.
Это не предотвращает атаку «человек посередине»: другими словами, компьютер Origin не может знать, является компьютер Target злоумышленным участником или нет. Для аутентификации получателя отправитель уже должен знать открытый ключ получателя либо иметь возможность проверить достоверность ключа через цифровой сертификат сайта.
Конфиденциальное сообщение, отправленное из Origin в Target, обычно содержит новый ключ для последующего симметричного шифрования. Это позволяет прекратить шифрование с открытым ключом для оставшейся части сеанса и отдать предпочтение симметричному алгоритму, способному обработать более крупные сообщения. Такой протокол особенно безопасен, если для каждого сеанса генерируется новая пара открытого и секретного ключей, так что ни на одном из компьютеров никаких ключей хранить не требуется.
Алгоритмы шифрования с открытым ключом полагаются на то, что сообщение меньше, чем ключ. Это делает их пригодными для шифрования только небольших объемов данных, таких как ключ для последующего симметричного шифрования. Если вы попытаетесь зашифровать сообщение, которое намного больше половины размера ключа, поставщик криптографии сгенерирует исключение.