2013-08-22 2 views
1

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

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

Возникает вопрос:

  • Как я могу защитить эту частную тайну от реинжиниринга?
  • Могу ли я защитить секретный секрет, инкапсулируя процесс запросов в андроиде NDK?
  • Есть ли другой лучший способ выполнить мою основную цель: аутентифицировать мои запросы sdk? Как это делает другой?

Спасибо.

ответ

1

Если вы пытаетесь запретить третьим лицам использовать свое собственное программное обеспечение, а не предоставляемое вами программное обеспечение, it's not possible.

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

Нормального использование способа API ограничен в два раза:

  1. аутентификация пользователя - каждый пользователь, который хочет использовать ваш сервис создает учетную запись пользователя и необходимо установить авторизованную сессию, чтобы иметь возможность использовать его.
  2. Ключи API - каждому стороннему разработчику, который хочет получить доступ к вашему API, предоставляется ключ API, и для них требуется защита их ключа. Ключ API используется для аутентификации запросов, например, appending a MAC over the request.
+0

Спасибо. Для уточнения: я пытаюсь предотвратить атаку моего api-сервера, способ, которым я занимаюсь, зависит от того, какой секретный ключ хранится (что небезопасно) в моем sdk, который будет использоваться другими приложениями. Поэтому он не основан на пользователе, и все сторонние приложения просто внедряют мой sdk, теперь все мои sdk используют тот же секретный ключ для аутентификации. К сожалению, я не могу получить прямое решение из вашего ответа, я продолжу копаться в ссылках, предложенных вами, тем временем, надеюсь, что вы сможете объяснить больше, спасибо еще раз. –

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