У нас есть приложение, которое хранит некоторые конфиденциальные данные на устройстве, которое позволяет приложению выполнять определенные конфиденциальные действия. Пользователь получает эти данные через процедуру покупки в приложении, и мы хотим, чтобы они были тесно привязаны к реальному устройству. Если пользователь покупает другое устройство, у нас есть функциональность, поэтому пользователь может отключить это на первом устройстве, а затем включить его на втором. Таким образом, пользователь может продолжать использовать то, за что он заплатил на новом устройстве, но затем не может использовать его на своем старом. Тем не менее, мы хотели бы сделать его более приятным для пользователя, если ему нужно перезагрузить телефон.
Что мы хотим и уже имеем:
- Если пользователю по какой-то причине необходимо перезагрузите телефон, мы бы хотели, чтобы пользователь мог восстановить данные приложения и продолжать использовать приложение без необходимости повторного включения этих данных. Это уже работает.
Что мы не хотим, но на самом деле имеем:
- Если пользователь восстанавливает свой телефон до другой На устройстве он получает эти конфиденциальные данные на оба телефона, а затем может выполнять эти конфиденциальные действия с обоих телефонов. Это было бы похоже на пользовательскую копию: что-то, что он купил, и теперь, имея что-то 2, он платил только один раз. Это было проверено и, к сожалению, но логически работает.
Есть ли простой способ включить резервное копирование данных приложения в Google, но только для того же устройства?
В противном случае мы подумали бы о следующих решениях:
Хранение конфиденциальных данных, зашифрованных с использованием хранилища ключей устройства. Таким образом, только это приложение может расшифровать данные. Но будет ли это также успешно скопировано на новое устройство, чтобы новое устройство также могло его расшифровать, или оно может только быть расшифровано приложением на фактическом устройстве, которое его сгенерировало?
Включение производителя и модели в конфиденциальные данные, по крайней мере, помешает пользователю выполнить резервное копирование на другой тип телефона, но если пользователь приобретет много телефонов одного типа, он может «скопировать» свое приложение на все эти телефоны и используйте их все.
Включение «идентификатора устройства» в конфиденциальные данные. Вплоть до Android 9 (если я не ошибаюсь) мы можем получить фактический IMEI устройства, поэтому мы знаем, что этот идентификатор никогда не изменится на этом телефоне. Однако, начиная с Android 10, мы больше не можем получить IMEI, а вместо этого получим «уникальный идентификатор приложения». Кто-нибудь знает, останется ли этот «уникальный идентификатор приложения» прежним, если пользователь восстановит свой телефон из резервной копии? Потенциально Android будет генерировать новые, и в этом случае конфиденциальные данные не будут работать, если пользователь создает резервную копию того же телефона из собственной резервной копии.
Любые мысли об этих или потенциальных другие решения?