Это могут быть загруженные вопросы, которые задавались в нескольких формах ранее, но я не видел, чтобы они задавались таким образом, и мне хотелось бы получить некоторые мнения о том, как поступить.
Я разрабатываю приложение, которое требует хранения учетных данных сторонних веб-служб на устройстве. Я хочу, чтобы эти учетные данные были зашифрованы, но я также не хочу хранить начальное число в коде / на устройстве, чтобы предотвратить возможный захват. Приложение также поддерживает резервное копирование с использованием функции облачного резервного копирования Googles, что также требует шифрования.
Я думал, что если бы я мог найти уникальный идентификатор, он мог бы использоваться в качестве семени. Есть несколько странных требований, делающих это трудным.
- Идентификатор ДОЛЖЕН быть уникальным и одинаковым для данной комбинации оборудования / пользователя при любых обстоятельствах.
- Он не может быть просто привязан к устройству или пользователю, он должен быть комбинацией обоих.
- Он должен быть доступен, Неважно, что; О MAC-адресах Wi-Fi и Bluetooth не может быть и речи, так как они недоступны на некоторых устройствах, когда они выключены.
- Из того, что я прочитал, идентификаторы TelephonyManager (SIM-карта и т. Д.) Доступны не на всех устройствах.
- Из того, что я прочитал, ANDROID_ID не будет присутствовать при всех обстоятельствах.
- Приложение будет выпущено на нескольких рынках (например, Amazon Appstore), поэтому учетная запись Google не обязательно будет присутствовать.
- Выполнение заводской очистки НЕ должно влиять на все, что использовалось для создания этого идентификатора (таким образом, пользователь может выполнять резервное копирование, стирание и восстановление без перерыва).
- Выполнение OTA-обновления НЕ должно влиять на что-либо, использованное для генерации этого идентификатора (см. Причину выше).
- Это нормально, если они должны повторно пройти проверку подлинности после удаления / переустановки.
Я понимаю, что это значение, очевидно, может быть получено другими приложениями, поэтому я намереваюсь его хешировать, далее добавляя UID приложений, а также <ваше предложение здесь>.
Если кто-то считает, что требования нереалистичны, я бы тоже хотел это услышать.
Особенно в свете недавних хакерских марафонов, я хочу хотя бы сказать: «Если кто-то может скомпрометировать это, ничто на вашем телефоне не безопасно».