Основы безопасного общения - PullRequest
1 голос
/ 30 ноября 2010

До сих пор я не изучал безопасное общение, и у меня есть несколько основных вопросов Предположим, есть браузер (клиент) и сервер. Из того, что я понял, сервер имеет как открытый, так и закрытый ключ. Открытый ключ известен всем, а закрытый ключ - только серверу. Поэтому, когда клиент отправляет сообщение на сервер, оно шифруется открытым ключом сервера, и только сервер может его расшифровать (поскольку только у сервера есть закрытый ключ).

Теперь к моему вопросу: что происходит, когда сервер хочет отправить сообщение клиенту? Сервер шифрует сообщение своим закрытым ключом, а клиент расшифровывает его открытым ключом (это известно всем). Все идет нормально. Но если кто-то прослушивает трафик, он также может расшифровать сообщение, потому что все знают открытый ключ. Насколько это безопасно? Я уверен, что не понимаю чего-то действительно базового: (

Заранее спасибо!

С уважением, Петар

Ответы [ 2 ]

5 голосов
/ 30 ноября 2010

Упрощение много: клиент генерирует ключ для симметричной криптографии и отправляет его на сервер, шифруя его с помощью открытого ключа сервера. Таким образом, происходит безопасный обмен ключами. С этого момента клиент и сервер используют симметричную криптографию с обмененным ключом. Стандартным способом является обмен ключами Диффи-Хелмана , который немного сложнее, чем в данном примере.

3 голосов
/ 30 ноября 2010

Безопасная связь включает в себя не только шифрование (что на самом деле является самой простой частью), но также, что более важно, аутентификацию.

Можно установить зашифрованную связь между двумя сторонами без необходимости обмена ключами заранее (например, см. Обмен ключами Диффи-Хеллмана ).

Самое сложное - убедиться, что тот, с кем вы разговариваете, заслуживает доверия. Здесь вступают открытые и закрытые ключи.

Итак, рабочий процесс выглядит примерно так:

  1. Установлено соединение между клиентом и сервером.
  2. Клиент уже знает открытый ключ сервера (асимметричная криптография), поэтому он может доказать, что другой конечной точкой является тот, кем он себя считает: открытый ключ используется для расшифровки токена, который при проверке показывает, что он действительно зашифрован с помощью закрытого ключа сервера.
  3. Теперь, когда аутентификация завершена, обе стороны используют некоторый метод, такой как описанный выше Диффи-Хеллман, для установления общего секрета .
  4. Этот общий секрет используется как ключ шифрования / дешифрования (симметричная криптография) для всех обменов данными до конца сеанса клиент / сервер.
  5. Когда соединение закрыто, указанный выше ключ шифрования отбрасывается. Если новое соединение установлено, вышеприведенный алгоритм сгенерирует новый ключ шифрования для этого нового сеанса.
...