Защита ключа ECC в приложении Android - PullRequest
0 голосов
/ 20 февраля 2019

Я сделал приложение для Android, используя пару ключей ECC.Когда я разработал его в прошлом году, я хотел создать ключ ECC в Android Keystore.К сожалению, этот ключ ECC используется для генерации ключа сеанса благодаря ECDH , а ECDH не поддерживается Android Keystore (это то, что я здесь сказал: ECDHс ключом в Android Key Store )

Я выполнил рекомендации: я создал ключ AES в Android KeyStore и использовал его для шифрования ключа ECC перед его сохранением в SharedPreferences.Android KeyStore гарантирует, что ключ AES не может быть извлечен, и что только мое приложение может использовать его для расшифровки ключа ECC.

Теперь у меня есть вопрос, по которому я хотел бы получить ваши советы:

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

Использование ECDH в моем случае не подлежит обсуждению так какое решение мне нужно для защиты моей пары ключей ECC?

Спасибо

1 Ответ

0 голосов
/ 21 февраля 2019

Невозможно гарантировать, что ключ не может быть извлечен, если он не защищен безопасным оборудованием.

А для случая с рутированным телефоном злоумышленнику не нужно изменять и переустанавливать APK, чтобыиспользуйте свой ключ.Любое приложение на этом устройстве с правами root может подключиться к вашему приложению и вести себя так же.Даже в доверенной среде они могут использовать ваш аппаратный ключ.Единственное, что они не могут сделать, это извлечь ключ из устройства.

Возможно, вы захотите прочитать относительно старую статью о TEE и AndroidKeyStore: http://www.cs.ru.nl/~joeri/papers/spsm14.pdf.В частности, «Обзор результатов привязки к устройству»

. Чтобы уменьшить поверхность атаки, вы можете:

  • Защитить свой ключ с помощью предоставленного пользователем пароля вместе с AndroidKeyStore AESключ
  • Используйте API SafetyNet для проверки целостности устройства: https://developer.android.com/training/safetynet/attestation
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...