Совсем не так, но неправильно.(a) Закрытый ключ расшифровывает данные, зашифрованные открытым ключом, и (b) открытый ключ расшифровывает данные, зашифрованные закрытым ключом.
(a): Каждый может что-то зашифровать, но только владелецзакрытый ключ может расшифровать его.
(b): владелец «шифрует» что-то с помощью своего закрытого ключа, и каждый может расшифровать его, что гарантирует, что это действительно владелец, который шифрует данные, а не кто-то другойelse.
git (hub) использует второй сценарий: если вы что-то нажимаете, оно подписывается вашим личным ключом.Теперь получатель проверяет подпись и возвращает открытый ключ, который он знает от вас.Если он совпадает, все в порядке.
Обновление: (возможно, слишком) упрощенное описание того, что происходит (при использовании github с ssh)
- Github отправляет вам что-то случайное, то естьзашифрованный его _private_ ключом (возможно, он не такой уж случайный, я не знаю, но это не имеет значения)
- Вы получаете его и расшифровываете с помощью его _public_ ключ.Если это возможно, вы уверены, что действительно общаетесь с официальным сервером github
- Затем вы отправляете тот же случайный материал, зашифрованный с помощью ваш _private_ ключ, на сервер github
- Он пытается зашифровать его вашим _public_ ключом.Если это возможно, и это случайные вещи, которые он отправил вам раньше, он точно знает, что вы - это вы.
- Затем вы отправляете вам вещи, зашифрованные с помощью его _public_ ключа.Теперь только сервер GitHub может расшифровать.Также он ответит сообщениями / данными, зашифрованными вашим _public_ ключом, потому что только вы можете расшифровать его.
Даже если это не совсем правильно, он должен описать идею.