Как в SSL предотвращается подделка сеансового ключа?

Если я правильно понял, то алгоритм "рукопожатия" следующий:

  1. сервер генерирует публичный (шифрующий) и приватный (дешифрующий) ключи;
  2. сервер отправляет публичный ключ клиенту;
  3. клиент генерирует сеансовый ключ и шифрует его публичным ключом;
  4. клиент отправляет зашифрованный сеансовый ключ серверу;
  5. сервер дешифрует зашифрованный сеансовый ключ приватным ключом.

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

Но представим такую ситуацию:

  1. сервер отправляет публичный ключ клиенту;
  2. злоумышленник перехватывает публичный ключ;
  3. злоумышленник генерирует поддельный сеансовый ключ и шифрует его публичным ключом;
  4. злоумышленник отправляет зашифрованный поддельный сеансовый ключ серверу;
  5. сервер дешифрует зашифрованный поддельный сеансовый ключ приватным ключом.

Трафик между сервером и фейковым клиентом начинает передаваться.

Либо я что-то не до конца понимаю, либо алгоритм работает несколько сложнее, чем я описал выше.


Ответы (0 шт):