Импорт симметричного ключа в Android Keystore (ключ, сгенерированный извне) - PullRequest
1 голос
/ 31 мая 2019

Я импортирую симметричный ключ в хранилище ключей Android со следующим кодом, как показано в этом примере: https://developer.android.com/reference/kotlin/android/security/keystore/KeyProtection

  final SecretKey aesKey = new SecretKeySpec(myKeyByteArray, 0, myKeyByteArray.length, "AES");
  final KeyStore keyStore = KeyStore.getInstance("AndroidKeyStore");
  keyStore.load(null);
  keyStore.setEntry(
          "my_key_alias",
          new KeyStore.SecretKeyEntry(aesKey),
          new KeyProtection.Builder(KeyProperties.PURPOSE_ENCRYPT | KeyProperties.PURPOSE_DECRYPT)
         .setBlockMode(KeyProperties.BLOCK_MODE_GCM)         
         .setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_NONE)
         .build());

Можно также сгенерировать случайный ключ AES со следующим кодом:

final KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");
keyGenerator.init(AES_KEY_LEN);
final SecretKey aesKey = keyGenerator.generateKey();
....

Обратите внимание, что данный KeyGenerator не генерирует ключ в безопасном оборудовании. Он просто генерирует случайный ключ в процессе приложения.

Как я могу импортировать сгенерированные извне симметричные ключи в хранилище ключей Android? Нужно ли прибегать к некоторым обходным путям с парой открытый-закрытый ключ для шифрования симметричного ключа?

РЕДАКТИРОВАТЬ : Обходных путей не требуется. Можно импортировать сгенерированный извне ключ в хранилище ключей Android с помощью приведенного выше кода.

1 Ответ

0 голосов
/ 12 июня 2019

Я тестирую первый фрагмент кода на виртуальном устройстве Android Studio (API 28).Возникает исключение, как показано ниже:

java.security.KeyStoreException: не удалось импортировать секретный ключ.Код ошибки хранилища ключей: -6

Работает ли этот фрагмент на вашей стороне?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...