Обзор системы хранилища ключей Android
хранилище ключей
KeyStore можно определить как базу данных, API или даже класс в зависимости от контекста. Для упрощения KeyStore можно определить как защищенную коллекцию ключей и сертификатов с псевдонимами. Обычно KeyStore хранятся в файловом хранилище, защищенном паролем.
Система хранения ключей Android
Если мы читаем официальную документацию, там говорится
Система Android Keystore позволяет хранить криптографические ключи в контейнере, что затрудняет их извлечение с устройства. Как только ключи находятся в хранилище ключей, их можно использовать для криптографических операций, при этом материал ключа остается неэкспортируемым.
Итак, из приведенного выше утверждения мы можем сделать вывод, что оно позволяет нам,
- Хранить криптографические ключи (закрытые, открытые ключи)
- Выполнять криптографические операции с использованием сохраненных ключей (шифровать, расшифровывать, подписывать, проверять и т. д.)
На самом деле он хранит учетные данные в системном хранилище учетных данных или KeyStore либо с помощью KeyChain API, либо с помощью функции поставщика AndroidKeyStore. Для лучшего понимания, давайте немного узнаем об их истории,
Система KeyStore была представлена в Android 1.6 (Donut). Но, к сожалению, в то время приложения не могли получить к нему доступ, поскольку его доступ был ограничен только VPN и аутентификацией Wi-Fi. Поэтому приложения поддерживали собственное хранилище ключей. Это было нормально, но иногда это вызывало проблемы с управляемостью, когда несколько приложений хотели использовать общие учетные данные между собой. Чтобы решить эту проблему, в Android 4.0 (ICS) был представлен KeyChain API, который позволял приложениям получать доступ к системному хранилищу ключей с разрешения пользователя.
Брелок
С помощью KeyChain API приложения могут запрашивать у пользователя установку или выбор учетных данных, запрашивая системный диалог. Это также позволяет приложениям просматривать разрешенные учетные данные, хранящиеся в системном хранилище ключей, и получать к ним доступ. Самое интересное, что приложениям не нужно использовать отдельный пароль для защиты системного хранилища ключей, поскольку оно защищено экраном блокировки и администрированием устройства. Учетные данные, импортированные любым приложением, могут быть доступны другим приложениям с разрешения пользователя. Вы также можете просмотреть список учетных данных пользователя в настройках системы, перейдя в «Настройки»> «Безопасность и блокировка экрана»> «Шифрование и учетные данные»> «Учетные данные пользователя». (Путь настроек и меню могут различаться в зависимости от производителя устройства и версии ОС. Приведено на основе Oneplus 6)
Функция поставщика AndroidKeyStore
Эта функция была представлена в Android 4.3 (уровень API 18), чтобы приложения могли генерировать и хранить свои учетные данные в системном хранилище ключей, доступ к которому может получить только само приложение. Для выполнения операций не требуется взаимодействия с пользователем.