Этот вопрос связан с попыткой понять риски безопасности, связанные с внедрением oauth на мобильной платформе, такой как Android. Предположим, что у нас есть приложение для Android, в которое встроен ключ/секретный код потребителя.
Предполагая, что секрет потребителя был скомпрометирован, и хакер овладел им, каковы последствия этого?
Понятия о компромиссном потребительском секретности
Правильно ли я утверждаю, что скомпрометированный секрет потребителя как таковой не влияет на безопасность пользователя или какие-либо данные, хранящиеся в поставщике, поддерживающем OAuth, с которым пользователь взаимодействует. Сами данные не подвергаются риску и не могут быть получены хакером.
Хакеру нужно будет получить доступный токен доступа пользователя, и это намного сложнее получить.
Что может сделать хакер со скомпрометированным секретом потребителя?
Правильно ли я также излагаю следующее:
- Хакер может настроить/опубликовать приложение, которое имитирует мое приложение.
- Хакер может привлечь пользователей, которые пойдут через поток OAuth, извлечение токен доступа через хакеров OAuth танец (использование скомпрометированного потребителя ключ/секретный).
- Пользователь может подумать он имеет дело с моим приложением, так как он будет см. знакомое имя (потребительский ключ) во время процесса авторизации.
- Когда потребитель выдает запрос через хакер, хакер может легко перехватить токен доступа и в сочетании с секретом потребителя может теперь подписываю запросы от моего имени получить доступ к моим ресурсам.
Влияние конечных пользователей
В предположении, что
- У хакера есть приложение/ сайт, используя мою потребительскую тайну.
- Один из моих пользователей был обманут в авторизацию доступ к этому приложению/сайту
Возможно следующее:
- конечный пользователь может заметить, что происходит что-то подозрительное, и сообщить поставщику услуг (например: Google) о вредоносном приложении
- поставщик услуг может затем отменить ключ/секрет пользователя
Влияние пользователя OAuth (мое приложение):
Мое приложение (содержащее секрет потребителя) необходимо будет обновить, так как в противном случае все мои клиенты не смогут разрешить моему приложению делать запросы от их имени больше (поскольку мой потребительский секрет больше не будет действительным).
Делегирование всего трафика OAuth
Хотя было бы возможно делегировать большое количество взаимодействий OAuth через промежуточный веб-сервер (выполняя танец OAuth и отправляя токен доступа пользователю), нужно было бы также проксировать все сервисные взаимодействия, поскольку требуется ключ/секрет пользователя для подписания каждого запроса. Это единственный способ сохранить ключ/секрет клиента за пределами мобильного приложения и сохранен в более безопасном месте на промежуточном веб-сервере?
Альтернативы
Существуют ли альтернативы для этого проксирования? Можно ли хранить секрет пользователя на промежуточном веб-сервере и иметь какой-то механизм, который приложение Android (опубликованное на рынке и должным образом подписанное) может сделать безопасный запрос промежуточному веб-серверу для получения секретности потребителя и его сохранения внутри приложения? Может ли быть реализован механизм, что промежуточный веб-сервер "знает", что это официальное приложение для Android, которое запрашивает получение секретности потребителя, и что промежуточный веб-сервер будет выдавать только секрет потребителя в этом конкретном приложении для Android?