Прежде чем ответить на этот вопрос, стоит пояснить, что из себя в принципе представляет шифрование.
Когда Интернет только создавался, перед его создателями не стояло задачи по защите передаваемой информации. Поэтому архитектура Интернета предполагает, что по умолчанию любая информация делится на небольшие части (пакеты данных) и передается в виде открытого текста. То есть любой, кто имеет доступ к каналу связи, по которому передаются пакеты данных, может эти пакеты перехватить и свободно ознакомиться с их содержимым.
В настоящее время Интернет часто используется для передачи конфиденциальной информации (например, данных банковских карт), поэтому передавать их в виде открытого текста неприемлемо. Для защиты конфиденциальной информации во время передачи используют шифрование — метод обратимого преобразования пакетов данных в нечитаемую форму.
Алгоритм шифрования работает так: на его вход подается блок данных (например, текстовое сообщение) и так называемый ключ, а на выходе получается блок данных той же длины, но состоящий из других, на первый взгляд совершенно случайных символов. Но на самом деле при наличии ключа этот зашифорванный блок данных можно легко вернуть в первоначальную, читабельную форму.
Ключ — это сменный элемент алгоритма шифрования. Можно грубо сравнить его с ключом от обычного дверного замка, а алгоритм шифрования — с самим дверным замком. Конструкция дверного замка едина и всегда неизменна, но для любого замка есть только один ключ, который может его открыть. То же самое и с шифрованием.
Алгоритм шифрования един и известен всем. Но вот ключи всегда используются разные. Как правило, ключ имеет длину около 56-4096 бит и представляет собой набор случайных символов, генерируемых с помощью генератора случайных или псевдослучайных чисел. Отправитель шифрует пакет данных, отправляет его через Интернет получателю, после чего получать расшифровывает полученный пакет. Даже если кто-то перехватит такой пакет во время пересылки, то он не сможет ознакомиться с его содержанием, так как не знает ключа.
Алгоритмы шифрования делятся по разным признакам. Один из этих признаков — является ли шифр симметричным или асимметричным. Единственное их различие состоит в том, что в симметричном шифре для зашифрования и расшифрования информации используется один и тот же ключ, а в асимметричном — разные ключи. При этом асимметричный шифр не позволяет получить ключ зашифрования из ключа расшифрования. Обратное тоже верно.
Симметричные шифры обычно производительнее асимметричных шифров, дают большую стойкость при меньшей длине ключа, однако имеют фундаментальную проблему — установление защищенного сеанса связи. Ведь как уже говорилось, Интернет по умолчанию никак не защищает данные, а чтобы начать шифровать данные, двум субъектам необходимо иметь на руках один и тот же ключ. Если передать ключ через Интернет, то его может перехватить потенциальный противник, и тогда весь смысл шифрования теряется.
Поэтому в простейшем случае одна сторона сначала генерирует пару ключей для асимметричного шифра: открытый и закрытый. Закрытый ключ первая сторона оставляет у себя, а открытый — пересылает второй стороне. Вторая сторона генерирует ключ для симметричного шифра, шифрует его с помощью асимметричного шифра на открытом ключе, который ему передала первая сторона, после чего отправляет зашифрованный ключ для симметричного шифра первой стороне.
Даже если противник перехватит зашифрованный ключ, то он не сможет с ним ничего сделать, так как для его расшифрования нужен закрытый ключ от асимметричного шифра. У первой же стороны имеется этот закрытый ключ, поэтому она расшифровывает ключ для симметричного шифра и обе стороны могут начать шифрованный сеанс связи, используя для обмена данными симметричное шифрование.
Есть и другие задачи, которые невозможно решить на базе симметричных шифров. Сюда, например, относится электронная подпись.