Рейтинг:0

Как использовать симметричное шифрование в мессенджере 1 на 1 и групповом чате?

флаг cn

Привет всем, так что в настоящее время я пытаюсь узнать о шифровании для создания безопасного приложения для обмена сообщениями (мобильное приложение, основанное на флаттере). Я хочу, чтобы в приложении было 2 функции обмена сообщениями: обмен сообщениями один на один и обмен сообщениями в групповом чате. Сначала я хотел попробовать использовать симметричное шифрование для приложения, но есть несколько вопросов, которые меня немного смущают:

1. При использовании симметричного шифрования предполагается, что у каждого пользователя есть свой ключ. Когда человек А отправляет сообщение человеку Б, мы должны получить ключ человека А или ключ человека Б для шифрования?

2. Как лучше хранить ключ пользователя? Могу ли я просто сгенерировать ключ и сохранить его в облачной базе данных?

3. Могу ли я использовать какой-нибудь двойной алгоритм шифрования AES? Таким образом, потенциальному хакеру придется проделать больше работы по изменению системы (1 основной ключ приложения, 1 пользовательский ключ).

4. Как работает симметричное шифрование для мессенджера группового чата? Я не понимаю логику потока

Eugene Styer avatar
флаг dz
Есть ли причина, по которой TLS (безопасность транспортного уровня, иногда называемая SSL) не справится с вашей ситуацией?
Kim San avatar
флаг cn
как SSL помогает в моей текущей ситуации? можете ли вы объяснить это мне, пожалуйста?
Eugene Styer avatar
флаг dz
TLS обеспечивает безопасность (например, «S» в «HTTPS») между клиентом и сервером. Если вы используете центральный сервер, получите сертификат для своего сервера, и TLS обрабатывает все детали шифрования между клиентом и сервером. Вам просто нужно будет обработать имя пользователя/пароль для A и B. Закрытый ключ, соответствующий открытому ключу в сертификате, должен быть секретным, но не более того. Если вы хотите, чтобы A отправлял сообщения непосредственно B (одноранговая сеть), тогда рассматривайте A как клиента, а B как сервер. Снова TLS справится с остальными деталями.
Jake Peralta avatar
флаг mx
Просто для разъяснения @KimSan, когда вы изучаете шифрование, ключ симметричного шифрования, используемый обоими пользователями, будет одинаковым. Таким образом, вам нужен другой ключ для каждого разговора, но не для пользователя.
Рейтинг:0
флаг jp
Lev

Вот некоторые ресурсы, которые могут помочь вам понять вашу проблему.

Такой вариант использования поддается использованию криптографии с открытым ключом. Защищенные протоколы обмена сообщениями такой формы уже существуют — см. Сигнал протокол.

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

  1. Могу ли я использовать какой-нибудь двойной алгоритм AES для шифрования? Таким образом, потенциальному хакеру придется проделать больше работы по изменению системы (1 основной ключ приложения, 1 пользовательский ключ).

На этот вопрос есть много ответов. Например, здесь.

  1. Как работает симметричное шифрование для мессенджера группового чата? Я не понимаю логику потока

Это не тривиальная вещь для построения. Это короткое видео, которое объясняет, почему.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.