Я хочу хранить конфиденциальную информацию, например, PIN-код для входа. Сегодня с EncryptedSharedPreferences (ESP) можно утверждать, что этого достаточно. Но скажем, я хочу предложить возможность использовать Биометрия . В этом примере Google показано, как использовать BiometricPrompt.CryptoObject
для шифрования и дешифрования данных.
Но возникает один вопрос:
Должен ли я сохранить ПИН-код в ESP без добавления еще одного уровня безопасности?
В этом случае приглашение Biometri c будет действовать как более быстрый и удобный способ ввода PIN-кода. Мне просто нужно прослушать onAuthenticationSucceeded
, игнорируя result: BiometricPrompt.AuthenticationResult
, и предположить, что пользователь вошел в систему (или выполнить вход в API с использованием значения PIN, сохраненного в ESP). Если я сохраню ПИН-код в ESP, но с дополнительным уровнем безопасности, обеспечиваемым шифрованием CryptographyManager
(cryptographyManager.encryptData
/ cryptographyManager.decryptData
), у меня возникнут проблемы, когда пользователь вставит ПИН-код вручную, потому что я не имеют возможности зашифровать вставленные данные и сравнить с зашифрованными сохраненными. В этом сценарии у меня не будет объекта Cipher
, поскольку в нем нет BiometricPrompt
(допустим, я хочу предложить возможность автономного входа в систему).
Может быть, я здесь пропускаю шаг, но достаточно ли хранить ПИН-код в ESP и использовать только «Биометрию» для «удобного входа»?