Android - Безопасное хранение - PullRequest
7 голосов
/ 04 марта 2011

Как мне сделать, чтобы сохранить секретный ключ на устройстве Android с единственной возможностью использовать ключ, а не получить его. Например: я импортирую частную / сгенерированную пару ключей RSA или симметричный ключ из приложения в это «безопасное хранилище». Теперь НИКТО не сможет получить секретный ключ, даже оригинальное приложение. (Несекретная часть ключа - открытый ключ пары ключей RSA - но не часть симметричного ключа - все равно должна быть извлекаема, особенно если ключ генерируется в безопасном хранилище)

Хранилище ключей теперь должно действовать как черный ящик, обеспечивая ввод для зашифрованных данных и вывод для дешифрованных данных, например, я передаю свои зашифрованные значения, которые хочу расшифровать, и возвращает дешифрованные значения обратно.

Это большой плюс, если он реализован в чипе аппаратной защиты устройства Android, например, в чипе смарт-карты, который защищен от несанкционированного доступа, что также обеспечит безопасность ключей, даже если устройство укоренено и клонировано.

Есть идеи, какие андроид мобильные телефоны, у которых есть такой устойчивый к взлому чип? Любые идеи о том, как использовать такое хранилище?

Нашел похожий вопрос: Android Secure Storage , но это не отвечает на мои вопросы.

Ответы [ 4 ]

6 голосов
/ 11 июля 2016

Я отвечу на это, но с оговоркой.

https://developer.android.com/training/articles/keystore.html

"Материал ключа может быть связан с безопасным оборудованием (например, Trusted Execution Environment (TEE),Защитный элемент (SE) устройства Android. Когда эта функция включена для ключа, материал ключа никогда не раскрывается вне защищенного оборудования . "

Таким образом, вы включаетеособенность для ключа.Однако

"Если операционная система Android скомпрометирована или злоумышленник может прочитать внутреннюю память устройства, злоумышленник может использовать ключи хранилища ключей Android любого приложения на устройстве Android , но не извлекайте их из устройства. "

Это связано с тем, что Android позволяет использовать ключи без секрета, который по своей сути небезопасен.Отсюда и мое бронирование.

В ответ на андроид устройства с защищенным чипом я бы сказал поиск.Кажется, что TEE soc уже давно.

секрет: [______________]

4 голосов
/ 06 марта 2014

Выяснили, что нужно сделать, чтобы получить безопасное хранилище на Android:

Вам необходимо купить карту Secure MicroSD, которая соответствует спецификации ASSD (Advanced Security SD).Это карта MicroSD, которая содержит защищенный элемент, часто решение PKI, где вы можете сгенерировать закрытый ключ на карте, чтобы личный ключ невозможно было извлечь, но открытый ключ можно извлечь и использовать его для шифрования вещей, которые толькоКарта MicroSD может расшифровываться.

Два примера - это CertGate MicroSD (который доступен в качестве потребительской версии под названием «SmartCard-HSM Android») и один, который больше не доступен в потребительской версии, - это карта G & D Mobile Security.

Это делает его безопасным хранилищем, которое НЕ МОЖЕТ быть взломано рутированным телефоном, и оно НЕ МОЖЕТ быть скопировано, что невозможно по определению.Единственный способ - это взломать закрытый ключ, используя открытый ключ в качестве проверки, если вы нажмете правильно.Но если вы используете RSA-2048, это тоже технически невозможно.

Причина в том, что производители телефонов, похоже, блокируют встроенный элемент защиты телефона для приложений, одобренных производителем, поэтому вы не можете использовать его произвольно.Единственный способ на самом деле добавить в телефон безопасный элемент в виде карты MicroSD.

(Этот ответ действителен только для версий Android до 5.0)

0 голосов
/ 04 марта 2011

То, что вы спрашиваете, невозможно. Пользователь с поврежденным устройством имеет больше контроля над устройством, чем вы. Там нет места, чтобы скрыть что-либо, и никогда не будет. То, что вы ищете, это "(в) Безопасность, хотя Obscurity ".

0 голосов
/ 04 марта 2011

Вы можете проверить CertStore или KeyStore, хотя я не знаю, как они реализованы на Android. Я немного искал вокруг, но не смог найти многообещающих примеров, и на самом деле нашел сообщение в группе Android-Security-Discussions, указывающее, что это может даже не работать на Android.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...