Сброс алгоритма пароля - PullRequest
3 голосов
/ 27 февраля 2012

Я хотел бы реализовать какую-то функцию сброса пароля для тех пользователей, которые забыли свой пароль (по сути 4-значный пин-код) для приложения для iPhone, которое я пишу, но я не хочу, чтобы это было возможно для каких-либо Пользователь просто отключить его. Я думаю о том, чтобы поставить какую-то проверку на место, и хочу знать, что такое лучший метод для такого рода вещей.

Я планирую что-то вроде этого:

  1. Пользователь связывается со мной, чтобы сказать, что он забыл свой пароль
  2. Я отправляю им по электронной почте код или последовательность кодов для ввода на экран пароля
  3. Приложение генерирует число на основе какого-то секретного алгоритма, и пользователь отправляет его мне
  4. Я отправляю им другой код (сгенерированный алгоритмом сопоставления), который они вводят для удаления пароля

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

Это кажется хорошей идеей? Существуют ли какие-либо подходящие алгоритмы / библиотеки хеширования для генерации такого типа двухэтапного кода проверки (предпочтительно, цель С)? Есть ли лучшие подходы к такого рода вещам?

Любая помощь или совет будет принята с благодарностью.

1 Ответ

1 голос
/ 27 февраля 2012

Вы должны быть в состоянии использовать комбинацию хеширования и RSA для решения этой проблемы.

Предположим, у вас есть закрытый ключ (K1) и открытый ключ (K2) распространяется вместе с приложением.

Шаг 2. Отправьте случайный код C и шифрование C с помощью закрытого ключа K1. Приложение расшифровывает шифрование и проверяет, соответствует ли оно введенному пользователем коду C

Шаг 3: приложение создает случайный 4-значный код (новый пароль P), шифрует его с помощью открытого ключа и отправляет вам (или, вероятно, передает его пользователю, который отправляет его вам)

Шаг 4: Вы расшифровываете новый пароль с помощью своего закрытого ключа и отправляете его пользователю

...