У вас есть противоречивые требования:
Пользователи должны иметь возможность обновлять свои
собственные устройства и они не очень хорошие
при запоминании усложняют процедуры
или пароль.
и
Также, если вы знаете пароль пользователя
любой с устройством может обновить это
информация о пользователях.
Если от ваших пользователей можно только (едва) ожидать использования пароля, вы не можете рассчитывать на защиту в любом случае от кого-либо, кто имеет свой пароль.
Не существует «волшебной» аутентификации, которая сообщала бы вам, что конкретный пользователь или устройство является законным по сравнению с тем, что вы предоставляете.
Вы можете защитить паролем загрузку, вы можете загрузить сертификаты, вы можете получить информацию о КПК (и даже информацию о сотовой связи), но если вы не добавите другой механизм аутентификации, в конце концов, все, что у вас есть, это пароль.
Пароль - ваше самое слабое звено, и вы, похоже, указываете, что не можете предоставить более строгий доступ, но он вам как-то нужен?
Если у вас есть другой канал аутентификации (телефон, электронная почта, SMS), вы можете обеспечить более надежную и значимую аутентификацию.
Например, вы можете сделать свою программу зависимой от файла "public.key" с открытым ключом для каждого пользователя, который требуется вашему серверу для использования. После того, как пользователь войдет на ваш сайт, попросите его дать вам свой номер телефона (так что теперь у вас есть номер телефона и пароль) и отправить SMS со ссылкой для временной загрузки ключа. Создайте новый ключ для каждого пользователя, сохраните его закрытый ключ на сервере и зашифруйте (или хотя бы подтвердите подлинность) каждую транзакцию между устройством и сервером, используя эту пару ключей.
Теперь, если кто-то хочет притвориться, что он их пользователь, он должен получить этот файл одним из трех способов:
- Они снимают его непосредственно с КПК (им также нужен пароль, так как открытый ключ должен быть защищен паролем пользователя)
- Они заставляют пользователя запрашивать новую SMS-ссылку и каким-то образом получают ссылку, не имея телефона
- Они меняют номер телефона и запрашивают новую ссылку на SMS
В любом случае вы проверяете не только пароль, но и соответствующий номер телефона. Вы можете затруднить пользователям замену номера телефона (также проверьте свою электронную почту, когда они просят изменить номер телефона, попросить их позвонить и т. Д.).
Конечно, вы можете сделать то же самое с другими каналами связи, но пользователи все больше и больше привыкли к аутентификации и загрузке SMS, так что это не слишком много хлопот.
-Адам