У меня есть android приложение, которое при первом открытии после сканирования qr кода получает от сервера токен. Где/как можно сохранить этот токен, чтобы не утруждать пользователя при каждом открытии вводом мастер-пароля, а, например, использовать биометрическую аутентификацию?
P.S. я знаю о существовании AccountManager и SharedPref, но они не шифруют данные и к ним можно получить доступ свободно на устройстве с root. Мне надо сохранить токен максимально безопасно, потому что с помощью него с сервера можно получить важные данные
Как бы ты не зашифровал пароль, для использования тебе придется его как-то расшифровать. А если твоё приложение может расшифровать автоматически, значит и кто угодно с root доступом к устройству это сделает.
Тебе нужно найти правильный баланс между удобством и безопасностью. Невозможно предоставить удобство (отсутствие необходимости ввода пароля) и максимальную непробиваемую безопасность одновременно. Нужны компромиссы и понимание, насколько вероятно, что нечто получит рут доступ к системе и утащит пароль с устройства (подсказка: это крайне маловероятно)
Хранить секреты в SharedPref с MODE_PRIVATE вполне нормальная практика.
SharedPreferences шифрует в режиме PRIVATE_MODE.
Ещё можно использовать SqlCipher.
И нужно понимать, что мобильное приложение - это фронтэнд, а значит код приложения можно декомпилировать через реверс-инжиниринг.