Идентификатор устройства / учетной записи Android для начального числа шифрования

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

Я разрабатываю приложение, которое требует хранения учетных данных сторонних веб-служб на устройстве. Я хочу, чтобы эти учетные данные были зашифрованы, но я также не хочу хранить начальное число в коде / на устройстве, чтобы предотвратить возможный захват. Приложение также поддерживает резервное копирование с использованием функции облачного резервного копирования Googles, что дополнительно требует шифрования.

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

  1. ID ДОЛЖЕН быть уникальным И одинаковым для данной комбинации оборудования / пользователя при любых обстоятельствах.
  2. Он не может быть просто привязан к устройству или пользователю, он должен быть быть комбинацией того и другого.
  3. Он должен быть доступен НЕ ВАЖНО ЧТО; MAC-адреса Wi-Fi и Bluetooth исключены, так как они недоступны на некоторых устройствах, когда они выключены.
  4. Из того, что я читал, идентификаторы TelephonyManager (SIM-карты и т. Д.) Доступны не на всех устройствах. .
  5. Из того, что я читал, ANDROID_ID будет присутствовать не при всех обстоятельствах.
  6. Приложение будет выпущено на нескольких рынках (например, Amazon Appstore), поэтому учетная запись Google не обязательно будет присутствовать. .
  7. Выполнение заводской очистки НЕ должно влиять на что-либо, используемое для создания этого идентификатора (таким образом, пользователь может выполнять резервное копирование, стирание и восстановление без прерывания).
  8. Выполнение обновления OTA НЕ должно влиять на что-либо, используемое для создания этого идентификатора (см. причина, указанная выше).
  9. Это нормально, если им придется пройти повторную аутентификацию после удаления / переустановки.

Я понимаю, что это значение, очевидно, может быть получено другими приложениями, поэтому я намерен хэшировать его, а затем засеять UID приложений, а также <ваше предложение здесь>.

Если кто-то считает, что требования нереалистичны, я бы хотел я тоже это слышу.

Особенно в свете недавних хакерских марафонов, я хочу иметь возможность хотя бы сказать: «Если кто-то может скомпрометировать это, ничто на вашем телефоне не будет безопасным».

6
задан AC2MO 24 June 2011 в 18:26
поделиться