Я хочу использовать AndroidKeyStore, чтобы сохранить пару ключей RSA только на устройстве Samsung с Lollipop. Я знаю, что по умолчанию у android-реализации есть ошибка (https://code.google.com/p/android/issues/detail?id=61989), но кажется, что на устройствах Samsung Lollipop это исправлено. Но я вижу еще два странных поведения. ЭОС пара ключей создается с помощью следующего кода:AndroidKeyStore странное поведение
KeyPairGeneratorSpec spec = new KeyPairGeneratorSpec.Builder(ctx)
.setAlias(ALIAS)
.setSubject(
new X500Principal(String.format("CN=%s, OU=%s", ALIAS,
ctx.getPackageName())))
.setSerialNumber(BigInteger.ONE).setStartDate(notBefore.getTime())
.setEndDate(notAfter.getTime()).build();
KeyPairGenerator kpGenerator = KeyPairGenerator.getInstance("RSA", "AndroidKeyStore");
kpGenerator.initialize(spec);
kpGenerator.generateKeyPair();
И это код, открыть хранилище ключей
KeyStore.PrivateKeyEntry keyEntry = (KeyStore.PrivateKeyEntry) ks.getEntry(ALIAS, null);
if (keyEntry != null) {
return (RSAPrivateKey) keyEntry.getPrivateKey();
}
Issue N.1: на Android эмулятора и на CyanogenMod 12.1 устройства к хранилищу разблокируется при загрузке устройства. ДАЖЕ ЕСЛИ пользователь не вставил разблокировку PIN-PASSWORD-PATTERN, и мое тестовое приложение может получить доступ к хранилищу ключей. На устройствах Samsung вместо хранилища ключей заблокировано до тех пор, пока пользователь не отпустит блокировку клавиатуры в первый раз. Ключ должен быть зашифрован с использованием ключа AES, полученного из PIN-кода или PASSWORD, и без взаимодействия пользователя хранилище ключей должно быть заблокировано
Проблема n.2: на всех устройствах можно вставить пару ключей, даже если экран защищенной блокировки не включен , без какого-либо предупреждения, например: «Вы должны настроить метод блокировки экрана» операционной системой. Как и выше, ключ должен быть зашифрован и без блокировки экрана может быть невозможно сделать это.
Что случилось с моим кодом?
Какие устройства являются «всеми устройствами» (версия устройства и ОС)? Включено ли устройство Samsung KNOX? – Robert
С «всеми устройствами» я имею в виду все устройства Samsung с Lollipop + некоторые Samsung с kk + LG с Lollipop + симулятор с леденцом. Knox никогда не включался – Sarbyn