Я делаю приложение, в котором чат также является функцией, для которой я использую базу данных Firebase в реальном времени. Хотя все данные хранятся в firebase через SSL, но я хочу, чтобы даже администрация не могла видеть эти сообщения. Я думал о реализации сквозного шифрования с использованием архитектуры открытого и закрытого ключей, но хранение закрытого ключа на устройстве не будет хорошо, так как новый закрытый ключ будет создан при удалении телефона или даже когда приложение используется в другом устройстве, а также предыдущие сообщения не будут расшифрованы.
Я также подумал о том, если новые сообщения можно было бы зашифровать с помощью нового закрытого ключа, когда они были сгенерированы, и сохранить предыдущую историю чата в google drive или iCloud в качестве резервной копии, но, поскольку это не совсем приложение чата, я думаю, что это не будет возможно.
http://www.geero.net/2017/05/how-to-encrypt-a-google-firebase-realtime-database/
Я также прошел эту статью, но снова ключи будут с администрацией.
Как мне поступить?
Я рекомендую вам зашифровать ваши сообщения с AES. И вы не должны хранить секретный ключ на устройствах. В противном случае пользователи могут заключить соглашение о ключах для генерации общего секретного ключа, используя алгоритм обмена ключами Диффи-Хеллмана: https://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange
Хотя все данные хранятся в firebase через SSL, но я хочу, чтобы даже администрация не могла видеть эти сообщения.
Уже есть несколько сквозных защищенных протоколов обмена сообщениями (например, Сигнал), вы можете посмотреть, как они работают.
когда приложение используется на другом устройстве, а также предыдущие сообщения не будут расшифрованы
Это цена за сквозное шифрование.
Вы все равно могли бы как-то распределить закрытый ключ между несколькими устройствами, например, зашифровать закрытый ключ с помощью пароля пользователя и расшифровать ключ, когда пользователь аутентифицируется только на пользовательском устройстве (я просто снимаю идеи, вы можете продумать это, если он достаточно безопасен)
сохранение предыдущей истории чата в google drive или iCloud в качестве резервной копии
Viber и WhatsUp делают это, вопрос в том, будут ли пользователи доверять вам настолько, чтобы дать вам разрешения на доступ к своему облачному хранилищу