6

Я ищу, чтобы понять хранилище ключей Google для хранения паролей на устройстве. (https://developer.android.com/training/articles/keystore.html)Как хранить пароль на Android

В этой статье говорится: «Используйте поставщик Keystore для Android, чтобы позволить отдельному приложению хранить собственные учетные данные, доступ к которым может получить только приложение.» Это именно то, чего я хочу.

Так что я думаю, что путь это будет работать, как: 1) Я генерирует RSA ключ

2) Хранить PrivateKey в KeyStore

3) Храните ОткрытыйКлюч в некоторых SharePrefs

4) Шифровать пароль, используя PublicKey

5) Шифровать пароль с помощью PrivateKey.

Однако я думаю, что я что-то недоразумение, потому что эта статья не показывает

1) Как сохранить PrivateKey в KeyStore (я не вижу каких-либо API, показывающий, как добавил ключ хранилища ключей)

2) Не показывает, как дешифровать данные с помощью PrivateKey

Младенец, почему в этой статье говорится о «Использование PrivateKey в KeyStore для создания подписи над некоторыми данными». Что означает создание подписи над некоторыми данными ??? (Я хочу расшифровать данные с помощью PrivateKey). И почему он хочет проверить «подпись, ранее сделанная PrivateKey».

Так что я потерялся в этом пункте ... эта статья начала меня в нужном месте, но затем к концу я смущен тем, чего она пытается достичь.

Может кто-нибудь предположить, что то, что я пытаюсь сделать, имеет смысл вообще? Или я должен просто сохранить открытый и закрытый ключ в моем собственном db? (там не так много безопасности, но это лучшее, что я могу сделать с учетом требований по хранению пароля на устройстве).

Большое спасибо

Rgds !!!!

ответ

2

Я цитирую эту строку из Использование внутренней системы хранения раздел http://developer.android.com/training/articles/security-tips.html По умолчанию файлы, которые вы создаете на внутренней памяти, доступны только для вашего приложения. Эта защита реализована Android и достаточна для большинства приложений.

Теперь о шифровании: Keystore API имеет дело с шифрованием данных. И клавиши используются для безопасной связи, а не для хранения пароля. Пароли обычно являются необратимыми хэшами или картами. И не требует дешифрования, но требует только соответствия.

Например: для связи, если вы отправляете данные, зашифрованная другая сторона, участвующая в общении, должна знать, какие данные необходимы для дешифрования ключа. Поэтому, если вы отправили «Hello I'm Crypted», ресивер должен знать, что вы отправили сообщение «Hello I'm Crypted» в качестве сообщения.

Для ввода пароля, если вы вводите некоторую кодовую фразу или ключ доступа, ее необходимо сопоставить с хранимой копией. Например, если «pass123» - ваш пароль, который хранится как «rdi # $$ [email protected]/b ", то, когда вы вводите пароль, когда процесс проверяет алгоритм, он должен соответствовать сохраненному значению, и вы аутентифицированы, не требуется генерировать« pass123 ».

Итак, для вашего приложения вы можете использовать какой-либо механизм (который генерирует почти уникальный и необратимый хеш), чтобы генерировать уникальный ключ/хеш при вводе пароля, а затем хранить его в ваших данных приложения.