Не безопасно ли получить ключ AES в AndroidKeyStore без пароля? - PullRequest
1 голос
/ 24 января 2020

Я создаю небольшое приложение Android (API> 23) и должен обходиться без экрана входа в систему. Тем не менее, данные пользователя должны быть зашифрованы, для этого я генерирую или загружаю ключ AES из AndroidKeyStore:

fun generateSymmetricKey(keyAlias: String): Key {
        val keyStore = KeyStore.getInstance("AndroidKeyStore")
        keyStore.load(null)
        if (!keyStore.containsAlias(keyAlias)) {
            val keyGenerator = KeyGenerator.getInstance(KeyProperties.KEY_ALGORITHM_AES, "AndroidKeyStore")
            val keyGenParameterSpec =
                KeyGenParameterSpec.Builder(
                    keyAlias,
                    KeyProperties.PURPOSE_ENCRYPT or KeyProperties.PURPOSE_DECRYPT
                )
                    .setBlockModes(KeyProperties.BLOCK_MODE_CBC)
                    .setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_PKCS7)
                    .build()
            keyGenerator.init(keyGenParameterSpec)
            return keyGenerator.generateKey()
        }
        return keyStore.getKey(keyAlias,null)
    }

С помощью метода getKey я загружаю сохраненный ключ из хранилища ключей без заданного пароля. Возник вопрос, если это делает хранилище ключей небезопасным. Или же Android сам устанавливает пароль для этого хранилища ключей при создании APK.

...