Android android.credentials.UNLOCK Инициализация хранилища ключей без пароля

Имея случайный ключ для шифрования локальных учетных данных через AES, я следую приведенному ниже руководству, чтобы попытаться надежно сохранить этот ключ, а затем иметь возможность расшифровать его позже:

nelenkov.blogspot.co.uk хранит секреты приложений в андроидах

В этом руководстве объясняется, как получить доступ к системному хранилищу ключей и хранить в нем свои пароли.

Проблема, с которой я столкнулся, связана с вызовом UNLOCK (android.credentials.UNLOCK) хранилища ключей. Устройства (на данный момент с API ниже 14), на которых не инициализировано хранилище ключей, показывают диалоговое окно с запросом 8-значного пароля.

Учебник работает нормально, однако показ этого диалогового окна даже только один раз, это будет беспокоить большинство пользователей.

есть ли способ пропустить этот диалог?

Я был бы еще счастливее, если бы кто-нибудь описал лучший способ локального хранения ключа.


person Jose M Lechon    schedule 26.03.2014    source источник


Ответы (1)


Восьмизначный пароль устанавливается прошивкой вашего устройства или администратором устройства. На большинстве устройств такого требования нет. Если вы хотите что-то надежно хранить, вам нужен PIN-код, Android использует его для получения ключа шифрования. Другие варианты — получить ключ из вашего ввода самостоятельно: вы можете контролировать время диалогов и кэширование ключей, но это тот же процесс. Наконец, вы можете просто сгенерировать главный ключ и сохранить его как закрытый файл, другие приложения не смогут его прочитать, так что вы будете в порядке на устройствах без рута. Это подход, рекомендуемый в блоге разработчиков Android:

http://android-developers.blogspot.jp/2013/02/using-cryptography-to-store-credentials.html

person Nikolay Elenkov    schedule 27.03.2014
comment
У этого подхода есть недостатки в рутированных устройствах. Я уже проверил это, прежде чем читать ваш пост. довольно сложно придумать хорошее решение без взаимодействия с пользователем. Спасибо. - person Jose M Lechon; 27.03.2014