#flutter #multiple-databases
Вопрос:
Я заново изобрел колесо (потому что никто еще не создал это колесо) и создал:
- Автономный-первый, который синхронизируется с другими пользователями через сервер
- Многопользовательская синхронизация защищенных автономных и онлайновых баз данных с гибридным шифрованием (это позволяет отправлять и получать только новые записи, за исключением нового пользователя, который получает всю базу данных)
- Это включало обработку автономной аутентификации
Итак, до меня дошло, что у меня здесь есть еще одна архитектурная проблема. У меня все синхронизировано между несколькими пользователями, но как синхронизировать одного пользователя с новым устройством?
Причина, по которой это проблема, заключается в том, что учетные данные локальных пользователей хранятся на локальном устройстве для автономной аутентификации. Закрытый асимметричный ключ также надежно хранится на локальном устройстве. Таким образом, если существующий пользователь входит на новое устройство, вход в систему выполняется успешно, пока есть доступ в Интернет. Но сразу же возникают ошибки, потому что локально нет данных. Поскольку ключи не могут быть отправлены по проводу, возникает загадка.
Я могу представить себе решение этой проблемы таким образом:
Если удаленный вход в систему удален, но нет локальных данных, то пользователь будет заново настроен локально на новом устройстве. Проблема в том, что главная удаленная база данных, которая должна обрабатывать это, содержит зашифрованные данные. Это потребовало бы целой кучи обратной и обратной передачи открытых ключей и повторного шифрования всей основной базы данных с новыми списками управления доступом. Похоже, это большая работа, требующая наличия обоих устройств в руках…
Apple делает это для всех своих устройств и контента. Как мы можем?
Есть ли простой способ сделать это?
Комментарии:
1. Я полагаю, что Apple защищает закрытый ключ паролем Apple ID пользователя. Если это так, возможно, они отправляют ключ по проводу. В противном случае вы могли бы изучить, как сигнал справляется с ситуацией, хотя я думаю, что для «благословения» любых новых синхронизированных устройств требуется основное устройство. Так или иначе, я не думаю, что это может быть как относительно безопасно, так и в основном прозрачно для пользователя.
2. Ваша помощь дала мне точку входа в это ( security.stackexchange.com/questions/246598/… так что, похоже, нет простого способа сделать это.