#java #security #encryption #keystore #android-keystore
#java #Безопасность #шифрование #хранилище ключей #android-хранилище ключей
Вопрос:
Я немного прочитал о хранилище ключей Android. Для меня интересно, что такое хранилище ключей позволяет использовать криптографические операции (например, подпись содержимого и шифрование) без прямого доступа к закрытому ключу, хранящемуся в хранилище ключей. В документе говорится:
Система хранилища ключей Android защищает ключевой материал от несанкционированного использования. Во-первых, хранилище ключей Android уменьшает несанкционированное использование ключевого материала за пределами устройства Android, предотвращая извлечение ключевого материала из процессов приложения и с устройства Android в целом
Я хотел бы иметь аналогичное решение в серверном веб-приложении. Самое важное для меня — запретить прямой доступ к закрытому ключу из Java-процесса. На самом деле моему процессу приложения это не нужно, потому что ему нужно только подписывать содержимое при отправке обратно пользователю.
Я искал в хранилище ключей java api, но ничего не нашел или пропустил что-то важное.
Возможен ли такой подход с использованием стандартного хранилища ключей Java?
Комментарии:
1. Да, это возможно.
KeyStore.getInstance(type, provider)
возвращает объект хранилища ключей с конкретной реализациейProvider
. Использование поставщика, который инкапсулирует использование закрытого ключа без раскрытия содержимого ключа, вполне возможно. Именно так работают поставщики криптографических средств, основанные на оборудовании, таком как USB или HSM. Я не знаю, предоставляет ли какой-либо поставщик программного обеспечения для шифрования этот режим работы2.
process doesn't need it because it only needs to sign content
вам нужен закрытый ключ для подписи любого содержимого. Если вы действительно хотите запретить приложению доступ к самому ключевому материалу в серверной части, вам нужен какой-то HSM (аппаратный модуль безопасности), который будет выполнять подпись самостоятельно.