Предотвращение кражи личных данных клиента мобильного API - PullRequest
4 голосов
/ 14 октября 2010

Мы разрабатываем REST API для использования несколькими мобильными приложениями.Важно, что мы можем доверять личностям этих мобильных приложений.В нашем текущем проекте каждый вызов API проходит проверку подлинности с помощью параметра «API-ключ» и защищается с помощью HTTPS.

Меня беспокоит то, что ключ API встроен в каждую копию мобильного приложения, что означает, что мы не можем сохранить его в секрете.Это будет на тысячах телефонов, и теоретически любой хакер с бинарным редактором или анализатором трафика HTTP может извлечь ключ API и затем «выдать себя» за одно из приложений, посылая нам запросы, которым у нас не будет другого выбора, кроме как доверять.Клиентские сертификаты, как представляется, имеют такой же риск.

Существует ли архитектура, которая решает эту проблему?

1 Ответ

3 голосов
/ 14 октября 2010

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

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

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

...