2012-02-15 1 views
0

Я ищу различные способы для аутентификации клиента, как андроид, Iphone, окно и ежевики приложение и какой из них лучше и почемуРазличных способов аутентифицировать приложения для смартфонов, как Android

Согласно моим исследованиям, я знаю 2 способа аутентификации клиента 1. Закрытый ключ встроен в приложение смартфон, который будет использоваться для подписи сообщения: Проблема с этим его легким для хакера, чтобы получить доступ к секретному ключу сертификата 2. клиент

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

+0

Это на самом деле один метод - клиент аутентифицирован, не используя сертификат, но используя закрытый ключ сертификата. –

ответ

0

Оба варианта, которые вы перечисляете здесь, действительно одинаковы. Сертификат клиента - это просто часть открытого ключа частной/открытой пары ключей, которая подписывается каким-то объектом вместе с некоторой идентификационной информацией.

Лучший способ аутентификации клиента - использовать SSL с взаимной аутентификацией. Вы можете использовать самозаверяющие сертификаты здесь, поэтому вам не нужно покупать какой-либо из ЦС, предполагая, что вы контролируете всех клиентов, которым вы хотите разрешить доступ, и управляете серверами, с которыми они будут разговаривать. Это гарантирует, что ваши клиенты получат данные только с вашего законного сервера (настройте систему SSL для вашего приложения, чтобы принимать только самозаверяющий сертификат, который используется вашим сервером), и ваш сервер принимает данные только от ваших авторизованных клиентов (настройте ваш сервер на используйте только самозаверяющие сертификаты, развернутые в вашем приложении, в качестве ресурса для проверки подлинности клиента). Существует полное пошаговое описание того, как это сделать для Android в Application Security for the Android Platform, опубликованном O'Reilly.

Вы правы в том, что вам нужно вставить секретную информацию (закрытый ключ) в свое клиентское приложение, и злоумышленник сможет скомпрометировать ее. Лучшее решение, которое у вас есть в Android прямо сейчас, - это поставить сертификат и закрытый ключ в Keystore, который вы включите в свое приложение APK в качестве ресурса, и приложите ваше приложение к Keystore, когда ему нужно использовать ключ. Это означает, что вашему приложению потребуется пароль в Keystore. Итак, как вы защищаете этот пароль, становится важным. Вы можете запутать свой код, чтобы сделать его более трудным для злоумышленника, чтобы определить этот пароль, но это только замедлит определение злоумышленника, который обращает ваше приложение в обратную сторону. Однако, не требуя от пользователя устройства вводить этот пароль в каждый раз, когда он хочет использовать ваше приложение, это лучшее, что вы можете сделать. Если ваше клиентское приложение, работающее на устройстве, нуждается в доступе к тому, что оно хранит, человек с доступом к этому устройству также сможет получить к нему доступ. Все, что вы можете сделать, усложняет ситуацию.

+0

Спасибо, очень подробный ответ. Как часть полного решения, что вы рекомендуете, нужно делать, если сертификат клиента взломан? – Farm

+1

Существует не так много, что вы можете сделать, кроме развертывания нового клиента APK для ваших авторизованных клиентов, а затем настроить сервер, чтобы больше не доверять старому сертификату клиента. – jeffsix