Я создаю службу обмена сообщениями для разрабатываемого приложения.Из-за характера сообщений важно не только проверять пользователей, но и проверять, к какому разговору относится сообщение.Поэтому сейчас я создаю пару открытый / закрытый ключ для каждого разговора и использую ее для шифрования / дешифрования сообщений.В основном, когда пользователь вошел в систему, он имеет доступ к парам ключей разговоров, к которым он принадлежит, но эти пары ключей работают только для этого конкретного диалога.Это позволяет предоставлять / запрещать доступ к конкретным разговорам, сохраняя при этом другие разговоры между теми же сторонами нетронутыми.В данный момент поток данных выглядит следующим образом:
Отправка:
сообщение отправлено на сервер => сообщение зашифровано на основе открытого ключа пользователя и подписано с использованием секретного ключа => зашифрованное сообщение сохранено в базе данных
Получение:
сервер получает сообщение из базы данных => сервер проверяет подпись с помощью открытого ключа и дешифрует сообщение с помощью секретного ключа => дешифрованное сообщение отправляется клиенту
Все шифрование / дешифрование включеносервер зависит от аутентификации токена JWT пользователя.
У меня есть два основных вопроса: 1.) Можно ли шифровать на сервере, поскольку связь между ним и клиентом использует TLS?2.) Должны ли ключи храниться на сервере или в базе данных?
Кроме того, если этот метод небезопасен, неправильный или просто тупой, сообщите мне.
Спасибо завперед.