2013-08-10 4 views
3

Я создаю и использую общедоступный/закрытый ключ RSA для шифрования/расшифровки некоторого сообщения. Я сохраняю их в sharedpreferences как строку, и когда мне это нужно, я создаю из строки. Все работает отлично, но безопасно хранить мой закрытый ключ в sharedpreferences как строку. С этим вопросом:Сохранить RSA PublicKey/PrivateKey безопасно

SharedPreferences MODE_PRIVATE security

я узнал, что кто-то может достичь моих sharedpreferences и может генерировать свой секретный ключ из строки. Что я могу сделать, чтобы защитить свой секретный ключ, сохранив его на своем телефоне?

+1

Ваше имя запрашивает открытый ключ, но ваш вопрос спрашивает о закрытом ключе. Вам не нужно безопасно хранить открытый ключ. Это публично. Только конфиденциальный ключ должен храниться безопасно. Простой ответ на этот вопрос - 'java.security.Keystore.' – EJP

+0

Спасибо за ваш ответ. Я попробую –

ответ

2

Все зависит от уровня чувствительности пары частных/открытых ключей. Я думаю, что хранить их в sharedpreferences - неплохая идея. Ваша пара ключей хранится относительно каталога приложения и имеет системную защиту от внешнего доступа. Но, поскольку подразумевалось слово «общие» Предпочтения, ваша ключевая пара была разделена между вашими компонентами приложения. Итак, если вам нужна лучшая защита, попробуйте вместо этого сохранить пару ключей в KeyStore class. На данный момент это лучшее решение для защиты пары ключей. Он обеспечивает защиту ключа на основе пароля.

Обновление: Существует отличная статья об использовании хранилища ключей и ключей для android here.

Смежные вопросы