Как страница говорит:
Используйте KeyChain API, если вы хотите общесистемные полномочия
Целью KeyChain API является использование учетных данных имя пользователя/пароль, чтобы получить «маркер ', что это приложение (и потенциальные другие приложения) может использовать. KeyChain также используется для синхронизации личной информации (например, почты) в фоновом режиме.
Но в вашем случае кажется, что вы просто хотите сохранить закрытый ключ RSA. В этом случае Keystore - лучшее решение. Обратите внимание, что Keystore работает только на устройствах 4.3+, потому что для хранения его закрытых ключей (если имеется аппаратный модуль) используется безопасное хранилище, поддерживающее аппаратное обеспечение (например, ARM Trustzone и другие безопасные среды выполнения). Эта функция была добавлена в Android 4.3.
Чтобы использовать Keystore, вам необходимо сгенерировать сертификат с открытым ключом и сохранить его с помощью закрытого ключа в Keystore. Keystore использует шаблон блокировки экрана/pin/etc. (если имеется) для шифрования закрытого ключа. Обратите внимание, что это иногда приводит к раздражающему факту, что пользователь больше не может отключить свой экран блокировки, пока пользователь не уничтожит его хранилище сертификатов или не удалит приложение (под Android < = 5), поэтому обязательно удалите сертификат когда ключ больше не нужен. Keystore сохранит закрытый ключ в аппаратном модуле (если он есть), поэтому гораздо сложнее извлечь закрытый ключ или другие приложения для шифрования данных с помощью закрытого ключа. Тем не менее, он не является на 100% безупречным, так как новый exploits are found и корень могут обойти (каким-то образом) этот дополнительный уровень защиты. Но это все же лучше, чем сохранение личного ключа в файле.
Также, если вы хотите более глубокое понимание того, как все это работает под капотом, я бы рекомендовал прочитать this paper, который подробно рассказывает о Keystore и других механизмах безопасности в Android.
Отличный пост, спасибо! Один вопрос, поскольку цитируемый документ относится к изменениям в Lollipop: знаете ли вы, было ли улучшено шифрование хранилища ключей в более поздних версиях Android? Доступная информация, которую я нашел, не очень ясна в этом вопросе. – Frank