Как осуществить безопасный обмен ключами? Добрый день, вопрос не сложный.
Есть проект в стадии разработки, и так как он представляет собой сервер на локалхосте - прицепить к нему сертификат невозможно.
Для аутентификации пользователя используется что-то похожее на JWT, но отдалённо.
Короче говоря, у пользователя в куках есть зашифрованный со стороны сервера json (EC), а также хеш этого json (CRC32b, потому что он маленький). В ней хранятся ид, время авторизации, рандомное число и прочие поля.
Вернёмся к проблеме, обмен ключами.
Я придумал такую процедуру, но её необходимо дополнить, иначе она вообще не безопасна.
1. Генерация RSA ключей на сервере, если их не было. (openssl)
2. Генерация RSA ключей на клиенте при каждой авторизации. (web cryptography api)
3. Клиент передаёт публичный ключ серверу.
4. Сервер сохраняет полученный ключ в куке клиента.
5. Сервер шифрует полученным ключом свой публичный ключ и отправляет строку клиенту.
6. Клиент расшифровывает приватным ключом полученную строку.
7. Записывает ключ от сервера к себе в localStorage.
Теперь сервер с помощью client_publ_key может отправлять данные клиенту.
А клиент с помощью server_publ_key может отправлять данные серверу.
Таким образом должен работать этот handshake.
Однако всем понятно, что с помощью митм можно отправить клиенту иной открытый ключ и незаметно передавать данные между клиентом и сервером, имея к ним доступ.
Как сделать эту процедуру безопасной?

21 Авг 2019 в 06:44
249 +1
0
Ответы
1

Для сделать эту процедуру безопасной, можно добавить дополнительный уровень защиты, например, использовать цифровые сертификаты.

Вместо генерации RSA ключей на каждой авторизации, можно использовать самоподписанный цифровой сертификат на сервере и на клиенте. Таким образом, передача ключей будет происходить в зашифрованном виде с использованием сертификатов, что обеспечит надежную идентификацию сторон и защиту от атак митм.

Кроме того, можно реализовать проверку цифровой подписи сервера на клиенте при получении публичного ключа, чтобы удостовериться в его подлинности. Также можно использовать механизмы обновления и проверки цифровых сертификатов для соблюдения безопасности обмена ключами.

В целом, добавление цифровых сертификатов и механизмов проверки подлинности ключей поможет усилить безопасность процедуры обмена ключами и защитить данные от возможных атак.

20 Апр 2024 в 13:13
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир