Шифрование сообщений чата, хранящихся в базе данных Firebase

1

Я делаю приложение, в котором чат также является функцией, для которой я использую базу данных Firebase в реальном времени. Хотя все данные хранятся в firebase через SSL, но я хочу, чтобы даже администрация не могла видеть эти сообщения. Я думал о реализации сквозного шифрования с использованием архитектуры открытого и закрытого ключей, но хранение закрытого ключа на устройстве не будет хорошо, так как новый закрытый ключ будет создан при удалении телефона или даже когда приложение используется в другом устройстве, а также предыдущие сообщения не будут расшифрованы.

Я также подумал о том, если новые сообщения можно было бы зашифровать с помощью нового закрытого ключа, когда они были сгенерированы, и сохранить предыдущую историю чата в google drive или iCloud в качестве резервной копии, но, поскольку это не совсем приложение чата, я думаю, что это не будет возможно.

http://www.geero.net/2017/05/how-to-encrypt-a-google-firebase-realtime-database/

Я также прошел эту статью, но снова ключи будут с администрацией.

Как мне поступить?

Теги:
firebase
encryption
firebase-realtime-database

2 ответа

2
Лучший ответ

Я рекомендую вам зашифровать ваши сообщения с AES. И вы не должны хранить секретный ключ на устройствах. В противном случае пользователи могут заключить соглашение о ключах для генерации общего секретного ключа, используя алгоритм обмена ключами Диффи-Хеллмана: https://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange

  • 0
    Так где мне хранить ключ? Я не могу сохранить его на сервере.
  • 0
    Вам не нужно хранить ключ. Алиса и Боб генерируют свой общий секретный ключ. Алиса шифрует сообщение с помощью секретного ключа и отправляет его Бобу. Боб расшифровывает сообщение, используя общий секретный ключ, и может прочитать расшифрованное сообщение. При желании вы можете сохранить расшифрованное сообщение на устройстве Боба. Для следующего сообщения Боб и Алиса сгенерируют следующий общий секретный ключ
Показать ещё 3 комментария
2

Хотя все данные хранятся в firebase через SSL, но я хочу, чтобы даже администрация не могла видеть эти сообщения.

Уже есть несколько сквозных защищенных протоколов обмена сообщениями (например, Сигнал), вы можете посмотреть, как они работают.

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

Это цена за сквозное шифрование.

Вы все равно могли бы как-то распределить закрытый ключ между несколькими устройствами, например, зашифровать закрытый ключ с помощью пароля пользователя и расшифровать ключ, когда пользователь аутентифицируется только на пользовательском устройстве (я просто снимаю идеи, вы можете продумать это, если он достаточно безопасен)

сохранение предыдущей истории чата в google drive или iCloud в качестве резервной копии

Viber и WhatsUp делают это, вопрос в том, будут ли пользователи доверять вам настолько, чтобы дать вам разрешения на доступ к своему облачному хранилищу

Ещё вопросы

Сообщество Overcoder
Наверх
Меню