Ответ 1
AndroidKeyStore, который обычно поддерживается аппаратным обеспечением (но не обязательно), был официально представлен в уровне API 18, как вы можете видеть и описывается здесь: http://developer.android.com/training/articles/keystore.html
Николай Еленков написал небольшое приложение для тестирования AndroidKeyStore, которое вы можете найти здесь: https://github.com/nelenkov/android-keystore
Есть несколько трюков, которые вы можете использовать, чтобы получить работу от уровня API на уровне 17, если вы копаете в AOSP, но нет гарантии, что он будет работать на каждом устройстве, поэтому это будет бессмысленно. Вы определенно не будете работать над чем-либо до этого.
На самом деле нет необходимости использовать AndroidKeyStore для хранения вашего закрытого ключа, если вы не являетесь супер-параноиком по поводу безопасности и требуете, чтобы он поддерживался аппаратным обеспечением или в изолированном процессе (процесс хранилища ключей на устройствах, не поддерживающих аппаратное обеспечение).
Если вы создаете ключевую пару в своем приложении самостоятельно и сохраняете ее в файле хранилища ключей в вашей области данных, никакое другое приложение для Android не сможет прочитать ваш ключ, который достаточно безопасен для большинства приложений. Вы даже можете позволить пользователю защитить хранилище ключей с помощью пароля по своему выбору.
Существует некоторая хорошая информация о создании ключевой пары в программном обеспечении, использующем Java и Android, можно найти здесь:
https://docs.oracle.com/javase/7/docs/api/java/security/KeyStore.html