2014-01-29 3 views
4

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

Покушение 1 - ничего не делать

NSString *privateKey = @"a6dedb6096973e4576e1dfc9d048075d; 

Если кто-то получает руку этого приложения и получает передать подписной-материал, который они могут работать strings на двоичный и легко извлечь все строки. (СБОЙ)

Попытка 2 - Сделайте что-нибудь умное

Здесь вы StackOverflow-ребята являются лучшими. Покажи мне волшебство!

+0

Разделите/обфускайте ключ – Volker

+1

Это непростая задача без простого решения. Одним из решений, которое я использовал в прошлом, является создание отдельного выделенного внутреннего веб-сервера, целью которого является (а) сохранение частного ключа и (б) предоставление внутренней веб-службы (простой вызов CURL в PHP) для выполнения любых необходимых функций с помощью закрытого ключа. Только те, у кого разрешен доступ к закрытому ключу, разрешили доступ к исходному коду на * этом * сервере. –

+1

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

ответ

0

Что мы делали для частных ключей доступа Facebook Crystal Shuffle, мы скрывали ключи на веб-сервисе. Приложение iOS попадет в службу, чтобы получить ответы, которые служба могла получить, так как у него был ключ.

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

1

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

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

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

Точка, если вы поместите секретный ключ в приложение, в чем смысл.

 Смежные вопросы

  • Нет связанных вопросов^_^