Как работает криптография с открытым ключом на Github? - PullRequest
5 голосов
/ 05 мая 2011

В криптографии с открытым ключом генерируется пара ключей, один закрытый и один открытый, открытый, который я вставил в Github.

Закрытый ключ расшифровывает данные, а открытый ключ шифрует данные,Это означает, что когда я отправляю данные на github, эти данные не шифруются, потому что только личный ключ расшифровывает данные?

Обновление:

Спасибо, ребята, теперь я понимаю.

Я думал, что мои данные шифруются таким образом в github, когда я отправляю push / pull.Этот случай используется для входа / проверки / подписания.Все это полностью отличается от зашифрованного потока передачи, который устанавливает соединение SSH для отправки моих данных.

Спасибо всем за ваши ответы ...

Ответы [ 2 ]

8 голосов
/ 05 мая 2011

Совсем не так, но неправильно.(a) Закрытый ключ расшифровывает данные, зашифрованные открытым ключом, и (b) открытый ключ расшифровывает данные, зашифрованные закрытым ключом.

(a): Каждый может что-то зашифровать, но только владелецзакрытый ключ может расшифровать его.

(b): владелец «шифрует» что-то с помощью своего закрытого ключа, и каждый может расшифровать его, что гарантирует, что это действительно владелец, который шифрует данные, а не кто-то другойelse.

git (hub) использует второй сценарий: если вы что-то нажимаете, оно подписывается вашим личным ключом.Теперь получатель проверяет подпись и возвращает открытый ключ, который он знает от вас.Если он совпадает, все в порядке.

Обновление: (возможно, слишком) упрощенное описание того, что происходит (при использовании github с ssh)

  • Github отправляет вам что-то случайное, то естьзашифрованный его _private_ ключом (возможно, он не такой уж случайный, я не знаю, но это не имеет значения)
  • Вы получаете его и расшифровываете с помощью его _public_ ключ.Если это возможно, вы уверены, что действительно общаетесь с официальным сервером github
  • Затем вы отправляете тот же случайный материал, зашифрованный с помощью ваш _private_ ключ, на сервер github
  • Он пытается зашифровать его вашим _public_ ключом.Если это возможно, и это случайные вещи, которые он отправил вам раньше, он точно знает, что вы - это вы.
  • Затем вы отправляете вам вещи, зашифрованные с помощью его _public_ ключа.Теперь только сервер GitHub может расшифровать.Также он ответит сообщениями / данными, зашифрованными вашим _public_ ключом, потому что только вы можете расшифровать его.

Даже если это не совсем правильно, он должен описать идею.

2 голосов
/ 05 мая 2011

Грубое упрощение состоит в том, что когда вы пытаетесь что-то выдвинуть, GitHub отправит вам вызов, зашифровав некоторые случайные вещи с помощью вашего открытого ключа и посмотрев, сможете ли вы расшифровать его или нет, что вы сможете сделать, только если вы есть закрытый ключ.

...