Как я могу создать и использовать псевдослучайный пароль?

У меня есть приложение для Android, которое позволяет пользователям вводить пароль и "блокировать" приложение, чтобы их друзья не могли заглянуть внутрь без их пароля. Он не использует веб-службу или что-либо еще, а пароль хранится в личном файле в приложении. Проблема в том, что пользователям нравится забывать свой пароль, а затем пишите мне по электронной почте с просьбой что-то с этим сделать. Прямо сейчас я не могу. Так что я хочу сделать что-то, что создает и использует случайный пароль. Пользователь мог отправить мне электронное письмо, и я мог дать им какой-нибудь случайный ключ, который приложение могло бы распознать, и позволить им войти, чтобы они могли изменить свой пароль.

Это не должно быть чем-то супер безопасным. Любая помощь приветствуется.

3 ответа

Решение

Я не думаю, что это хорошая идея для реализации "черного хода" в вашем приложении. Это создаст очень плохой вкус.

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

Все (хорошие) сейфы, которые я знаю, полагаются на пользователя, чтобы заботиться о своих ключах. Они хотят безопасности, и они несут ответственность.

РЕДАКТИРОВАТЬ

Вы можете предоставить "секретный вопрос".

Все, что я пытался создать для "автономного" сброса пароля, вызывает серьезные вопросы безопасности (какова механика аутентификации / авторизации)

РЕДАКТИРОВАТЬ

Как далеко вы готовы пойти? Обеспечение владения чем-либо (например, учетной записью SMS или электронной почты) может уменьшить проблемы и создать впечатление безопасности. Таким образом, вы можете перехватывать SMS или почту с учетной записи PREDEFINED (настройки приложения), скажем, с ключевым словом "разблокировать". Если не установлено, эта функция отключена. Перехват SMS не должен быть таким сложным.

Почему бы вам просто не встроить функцию сброса пароля в самом приложении? Если он не использует веб-сервис, зачем вам или вашему серверу вообще участвовать?

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

Пара мыслей:

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

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

Вы обязательно что-нибудь знаете о своих пользователях? Например, вы могли бы сгенерировать пароль из номера их кредитной карты, адреса или чего-то подобного? Конечно, это делает вас уязвимым для любого хакера, который может обнаружить любую информацию о потенциальной цели.

Что бы вы ни делали, вы собираетесь создать большую потенциальную дыру в безопасности: что, если кто-то украдет чужое устройство, отправит вам электронное письмо и сообщит, что он потерял свой пароль? Откуда ты знаешь, что это законный владелец данных? Если кто-нибудь может позвонить или написать по электронной почте и сказать: "Эй, я потерял свой пароль, пожалуйста, впустите меня в черный ход, тогда у вас больше нет безопасности".

Другие вопросы по тегам