2013-03-07 1 views
2

Мое мобильное приложение использует сторонний API для доступа к некоторым ресурсам. Он имеет открытый ключ и закрытый ключ. Для каждого запроса я использую закрытый ключ для выполнения некоторых хеш-вычислений с некоторыми конкретными данными и отправки результата на сервер. Сервер будет проверять результат с помощью моего личного ключа, чтобы убедиться, что запрос действителен. Закрытый ключ не будет отправлен через сеть.Что будет делать мое мобильное приложение, использующее сторонний API, если секретный ключ был украден?

Однако закрытый ключ должен быть сохранен на клиенте. Я думаю, что это не сложно найти другим людям с какой-то обратной инженерией. Это более безопасный способ использования закрытого ключа?

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

(настройка Я мой собственный прокси-сервер может решить часть этой проблемы. Существуют ли более эффективные методы?)

ответ

5

Я хотел бы предложить разгрузку 3-й доступа к API участника службе REST, что вы контролируете. С этого момента секретный ключ доступа к API, который вы предоставили, безопасно заблокирован на машине, которой вы владеете, и вряд ли будет подвержен риску.

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

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

1

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

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

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