IOS генерировать ключ приложения - PullRequest
0 голосов
/ 09 января 2012

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

Кто-нибудь какие-либо советы / советы о том, как я могу справиться с этим?

заранее спасибо

Ответы [ 2 ]

1 голос
/ 09 января 2012

Короче говоря, нет 100% безопасного способа убедиться, что запрос поступает из вашего приложения, если ключ доступен для iPhone, его можно извлечь из iPhone.

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

0 голосов
/ 10 января 2012

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

Вот высокоуровневый подход.Создайте самозаверяющий сертификат SSL сервера и разверните его на своем веб-сервере.Для этого вы можете использовать свободно доступные инструменты, такие как keytool, и я думаю (но не знаю точно), что Apple включает инструмент для этого в iOS SDK.Затем создайте самозаверяющий клиент и разверните его в своем приложении в пользовательском хранилище ключей, включенном в ваше приложение, в качестве ресурса.Настройте сервер так, чтобы он требовал SSL-аутентификацию на стороне клиента и принимал только сгенерированный вами сертификат клиента.Настройте клиент для использования этого сертификата на стороне клиента, чтобы идентифицировать себя и принять только один сертификат на стороне сервера, который вы установили на своем сервере для этой его части.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...