Могу ли я сохранить незашифрованную копию пароля в памяти?

#android #security #encryption #password-protection

Вопрос:

Я хочу защитить паролем доступ к своему приложению для Android. Пользователь может выбрать пароль, хэш которого будет храниться в базе данных. Когда пользователь пытается войти в систему, введенный хэш пароля сравнивается с сохраненным в базе данных. Ничего нового. Но я также хочу использовать пароль пользователя для шифрования данных, например, для сброса базы данных, и в этом случае я не хочу, чтобы пользователя заставляли повторно вводить пароль. Мой вопрос: безопасно ли хранить копию незашифрованного пароля в памяти во время входа пользователя в систему? Извне другой процесс может, например, сбросить память приложения и восстановить пароль?

Спасибо

Комментарии:

1. «Извне другой процесс может, например, сбросить память приложения и восстановить пароль?» — это зависит от того, имеет ли ваш злоумышленник доступ к телефону и сложным инструментам, таким как отладчики ядра. Если это возможно, то есть способы сохранить пароль в памяти. В противном случае, если вы не ошибетесь и не опубликуете пароль где-нибудь в доступном месте (например, Intent дополнительный), вероятно, вы в безопасности. Причина, по которой мы относимся к паролям так, как будто они радиоактивны, заключается в риске появления такого рода ошибок.

2. Хранение хэша пароля в базе данных полезно только для аутентификации (например, на веб-сервере). Если вы хотите зашифровать что-то этим паролем, вам нужен «пароль для получения ключа», который использует пароль и сгенерировал из него крипто-ключ, поэтому вам не нужно сохранять пароль или его хэш. Android включает в себя некоторые классы для шифрования на основе паролей PBE . например, PBEKeySpec. Это было бы хорошей отправной точкой.