Мое понимание (хотя и ограниченное) асимметричной криптографии с открытым ключом состоит в том, что открытый ключ предназначен для совместного использования со всеми без исключения, в то время как закрытый ключ остается закрытым.
Предположим, я храню открытый ключ своей локальной машины на удаленном веб-сервере, и зашифрованная информация (с помощью моего закрытого ключа), которую я отправляю на этот сервер, перехватывается другой стороной, которая также владеет моим открытым ключом. Разве это не значит, что они также могут расшифровать мою зашифрованную информацию?
Если да, значит ли это, что я должен делиться открытым ключом только с одной стороной - в данном случае с сервером - что противоречит моему пониманию того, для чего нужен открытый ключ? Могу ли я использовать на локальном компьютере разные пары ключей для разных приложений?
Вы не отправляете на сервер информацию, зашифрованную вашим закрытым ключом. Когда вы открываете безопасное соединение с сервером, программное обеспечение на сервере генерирует новый симметричный ключ шифрования, шифрует его вашим открытым ключом и отправляет его вам. Затем вы расшифровываете его своим закрытым ключом и используете этот симметричный ключ шифрования для данных, которые отправляете на сервер. Помимо аспектов безопасности, шифрование с открытым / закрытым ключом требует слишком больших ресурсов ЦП, чтобы использовать его при всех передачах данных - обычно оно используется только для шифрования других ключей шифрования или для цифровых подписей.
Есть три очень разные вещи, которые вы можете делать с системой открытых ключей:
Отправлять личные данные: для этого вы используете не свой открытый ключ, а открытый ключ из предполагаемого пункта назначения. Следовательно, данные можно расшифровать только с помощью их закрытого ключа.
Подпишите общедоступные данные: если вы зашифровываете что-то своим закрытым ключом, любой (с вашим открытым ключом) может расшифровать и прочитать это, но тогда они знать что это вы написали это, и что он не был изменен. На практике все сообщение не шифруется, только контрольная сумма используется в качестве подписи.
Создайте частный канал: это более сложно, наиболее распространенный метод - это Протокол обмена ключами Диффи-Хеллмана. Этот короткий обмен позволяет двум сторонам сгенерировать общий секрет, и даже если кто-то перехватит сообщения, он не получит этот общий секрет, если у него не будет одного из закрытых ключей. Затем общий секрет используется для шифрования остальных сообщений.
Думаю, вы читали описания первых двух случаев, но ваш вопрос (и Ответ Майка Скотта) вроде бы около третьего.
с открытым ключом вы должны зашифровать и отправить держателю частного ключа для расшифровки, вы не можете расшифровать с помощью открытого ключа.
у вас может быть много разных пар ключей на одной машине.
Единственное использование открытого ключа SSH - это определение личности держателя соответствующего закрытого ключа. Единственное, что вы можете сделать с открытым ключом SSH, - это определить, имеет ли взаимодействующий агент аутентификации соответствующий закрытый ключ.