Как работает алгоритм Диффи — Хеллмана для чата

Я хочу сделать безопасную передачу сообщений в закрытой чат-комнате. В руме может быть до 10 человек. Я не могу понять, как мне сделать безопасную передачу ключа другим пользователям?

Увидел алгоритм передачи ключа Диффи — Хеллмана, по сути:

  • пользователь передает зашифрованное сообщения вместе с куском ключом шифрования, на сервер;
  • с сервера сообщения и ключ по вебсокетам переходит другим пользователям;
  • на фронте они получают это сообщение и расшифровывают его с помощью ключа.

Но как сделать эту передачу другим пользователям я не могу понять. Сам сервер видит только зашифрованное сообщения и он его просто передает другим.

Если можно напишите псевдокод или пример, как это можно сделать?


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

Автор решения: Mikhail Babushkin

Если вас интересует именно безопасность передачи по незащищенному каналу - алгоритм Диффи-Хеллмана уязвим для модификации данных. Предполагается, что в процессе обмена ключами отсутствует третья сторона, которая может подменять данные. Поскольку у вас есть сервер, который выолняет роль посредника и клиенты, вы можете добавить дополнительную аутентификацию. Использовать TLS, как вариант. Это необходимо на этапе обмена ключами.

→ Ссылка