Как сохранить секрет клиента OAuth в безопасности и как реагировать на его взлом?

Этот вопрос касается попыток понять риски безопасности, связанные с внедрением oauth на мобильной платформе, такой как Android. Предполагается, что у нас есть приложение для Android, в коде которого есть ключ / секрет потребителя.

Предположим, что секрет потребителя был скомпрометирован, и хакер получил его, каковы последствия этого?

Предположения о взломе секрета потребителя
Правильно ли я заявляю, что скомпрометированный секрет потребителя как таковой не влияет на пользователя? s безопасность, или любые данные, хранящиеся у поставщика с включенным OAuth, с которым взаимодействовал пользователь. Сами данные не скомпрометированы и не могут быть получены хакером.

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

Что хакер может сделать со скомпрометированным секретом потребителя?
Правильно ли я заявляю, что следующее:

  • Хакер может настроить / опубликовать приложение, которое имитирует мое приложение.
  • Хакер может привлечь пользователей, которые пойдут через поток OAuth, получая токен доступа через хакерский OAuth танец (с использованием скомпрометированного потребителя ключ / секрет).
  • Пользователь может подумать он имеет дело с моим приложением, как он будет увидеть знакомое имя (потребительский ключ) во время процесса авторизации.
  • Когда потребитель отправляет запрос через хакер, хакер может легко перехватить токен доступа и в сочетании с секретом потребителя может теперь подписывайте запросы от моего имени на получить доступ к моим ресурсам.

Влияние на конечного пользователя
В предположении, что

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

    Альтернативы
    Есть ли альтернативы этому прокси-серверу? Можно ли хранить секрет потребителя на промежуточном веб-сервере и иметь какой-то механизм, с помощью которого приложение Android (опубликованное на рынке и должным образом подписанное) может выполнять безопасный запрос к промежуточному веб-серверу, чтобы получить секрет потребителя и сохранить его внутри приложения? Можно ли реализовать механизм, при котором промежуточный веб-сервер "знает", что это официальное приложение для Android, которое запрашивает секрет потребителя, и что промежуточный веб-сервер будет передавать секрет потребителя только этому конкретному приложению Android?

75
задан ddewaele 16 December 2010 в 15:41
поделиться