Ответ 1
Из ваших комментариев вам нужно зашифровать данные, используя локальный ключ для текущих версий Android, и старые
Android Keystore предназначен для создания и защиты ваших ключей. Но он недоступен для уровня API ниже 18, и он имеет некоторые ограничения до уровня API 23.
Вам понадобится случайный симметричный ключ шифрования, например AES. Ключ AES используется для шифрования и дешифрования данных. Я собираюсь обобщить ваши варианты для безопасного хранения и хранения в зависимости от уровня API Android.
-
Уровень API <18: Android Keystore нет. Запросить пароль для пользователя, получить ключ шифрования из пароля. Недостатком является то, что вам нужно запросить пароль при запуске приложения. Ключ шифрования не сохраняется в устройстве. Он рассчитывается каждый раз, когда приложение запускается с использованием пароля
-
API Level> = 18 <23: Android Keystore доступен без поддержки AES. Создайте случайный ключ AES с использованием поставщика криптографии по умолчанию (не используя AndroidKeystore). Создайте пару ключей RSA в Android Keystore и закрепите ключ AES с помощью открытого ключа RSA. Храните зашифрованный ключ AES в Android SharedPreferences. Когда приложение запускается, расшифруйте ключ AES с помощью закрытого ключа RSA
-
API Level> = 23: Android Keystore доступен с поддержкой AES. Создайте случайный ключ AES, используя в Keystore Android. Вы можете использовать его напрямую.
Для шифрования можно использовать алгоритм AES/CBC/PKCS7Padding
. Для шифрования данных требуется также случайный вектор инициализации (IV), но он может быть общедоступным.
Альтернативы:
-
Уровень API> 14: Key Key Key: KeyChain - это системное хранилище учетных данных. Вы можете установить сертификаты с закрытыми ключами, которые могут использоваться приложениями. Используйте предварительно установленный ключ для шифрования/расшифровки вашего ключа AES, как показано во втором случае выше.
-
Внешний токен: защищенные ключи не хранятся в устройстве. Вы можете использовать внешний токен, содержащий пару частного/открытого ключа, которая позволяет шифровать ключ AES. Токен можно подключить с помощью bluetooth или NFC