Я читал о создании 2 ключей (частного и открытого) на хосте клиента и копировании открытого ключа на хост сервера.
Насколько я понимаю, (поправьте меня, если я ошибаюсь): сервер шифрует данные открытым ключом и отправляет их клиенту, клиент расшифровывает их закрытым ключом.
Но если мне нужно зашифровать данные на клиенте для отправки на сервер, как это происходит?
Открытый ключ шифрует данные на клиенте? Но как сервер может его расшифровать, если он имеет только открытый ключ?
Как работает шифрование SSH?
источник
Вот несколько практических примеров. Предположим, что ключ A держался в секрете и поэтому является закрытым ключом, а ключ B был опубликован в общедоступном месте, и поэтому является открытым ключом.
Поэтому, если вы хотите отправить сообщение всем, и вы хотите, чтобы они убедились, что оно пришло от вас и не было изменено во время его доставки, вы отправите свое сообщение и включите хеш сообщения, зашифрованный с помощью ключа A. Затем любой, кто имеет ключ B, может дешифровать хеш, сравнить его с полученным сообщением и убедиться, что сообщение пришло от вас (из-за того, что только человек с ключом A мог сгенерировать зашифрованную полезную нагрузку, которая успешно расшифровала хеш, а также потому, что вы являются единственным человеком с ключом A, который может прийти только от вас). Это называется Подписание .
Теперь допустим, что кто-то хочет отправить вам секретное сообщение, но не хочет раскрывать, кто он. Они могут зашифровать свое сообщение симметричным ключом (как упомянул Zoredache, симметричный гораздо дешевле сделать), затем взять этот ключ и зашифровать его ключом B и отправить его вам. Поскольку только ключ A может расшифровать то, что было зашифровано ключом B, никто другой не сможет увидеть, что находится в сообщении, которое было отправлено вам. Вот как работает нормальное шифрование и как SSH обменивается данными.
источник
Вот сравнительно доступное описание математики, лежащей в основе работы шифрования закрытым-открытым ключом.
Еще более простое описание от BBC здесь .
источник
ты пишешь
Я не очень много знаю об этом, но думаю, что могу ответить на этот вопрос довольно четко.
Если A хочет отправить сообщение B, A использует открытый ключ B. Таким образом, B может расшифровать его.
Если бы А использовал свой собственный открытый ключ для шифрования сообщения, то действительно, Б не смог бы его расшифровать.
Это объясняется здесь
http://www.comodo.com/resources/small-business/digital-certificates2.php
источник