Аутентификация устройства Windows Mobile 6 - PullRequest
2 голосов
/ 17 января 2009

У меня есть приложение, которое работает на устройствах Windows Mobile 6 Professional PDA. Приложение устанавливается путем просмотра URL-адреса с устройства и загрузки кабины.

Пользователи собирают информацию в приложении, а затем реплицируют ее обратно на сервер SQL 2005, используя репликацию слиянием и IIS v6.

Хотя пользователю необходимо войти в приложение на устройстве, любой, кто знает URL-адрес, может загрузить и установить. Также, если вы знаете пароль пользователя, любой пользователь устройства может обновить информацию о нем.

Я бы хотел как-то аутентифицировать устройства на этапе установки или репликации (или на обоих).

Можно ли аутентифицировать устройство на основе серийного номера или номера IMEI (ID мобильного телефона)? Есть ли способ загрузить сертификат на устройство, чтобы разрешить подключение только сертифицированным устройствам?

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

Ответы [ 3 ]

5 голосов
/ 18 января 2009

Одним из возможных решений было бы отправить уникальный идентификатор устройства как часть аутентификации. В блоге группы разработчиков Windows Mobile есть сообщение об использовании GetDeviceUniqueID.

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

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

3 голосов
/ 29 января 2009

У вас есть противоречивые требования:

Пользователи должны иметь возможность обновлять свои собственные устройства и они не очень хорошие при запоминании усложняют процедуры или пароль.

и

Также, если вы знаете пароль пользователя любой с устройством может обновить это информация о пользователях.

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

Не существует «волшебной» аутентификации, которая сообщала бы вам, что конкретный пользователь или устройство является законным по сравнению с тем, что вы предоставляете.

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

Пароль - ваше самое слабое звено, и вы, похоже, указываете, что не можете предоставить более строгий доступ, но он вам как-то нужен?

Если у вас есть другой канал аутентификации (телефон, электронная почта, SMS), вы можете обеспечить более надежную и значимую аутентификацию.

Например, вы можете сделать свою программу зависимой от файла "public.key" с открытым ключом для каждого пользователя, который требуется вашему серверу для использования. После того, как пользователь войдет на ваш сайт, попросите его дать вам свой номер телефона (так что теперь у вас есть номер телефона и пароль) и отправить SMS со ссылкой для временной загрузки ключа. Создайте новый ключ для каждого пользователя, сохраните его закрытый ключ на сервере и зашифруйте (или хотя бы подтвердите подлинность) каждую транзакцию между устройством и сервером, используя эту пару ключей.

Теперь, если кто-то хочет притвориться, что он их пользователь, он должен получить этот файл одним из трех способов:

  • Они снимают его непосредственно с КПК (им также нужен пароль, так как открытый ключ должен быть защищен паролем пользователя)
  • Они заставляют пользователя запрашивать новую SMS-ссылку и каким-то образом получают ссылку, не имея телефона
  • Они меняют номер телефона и запрашивают новую ссылку на SMS

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

Конечно, вы можете сделать то же самое с другими каналами связи, но пользователи все больше и больше привыкли к аутентификации и загрузке SMS, так что это не слишком много хлопот.

-Адам

0 голосов
/ 30 января 2009

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

Вы можете отправлять им SMS с кодом каждый раз, когда они получают доступ к вашему приложению.

...