Це питання стосується спроби зрозуміти ризики безпеки, пов’язані з впровадженням aauth на мобільній платформі, як Android. Припущення полягає в тому, що у нас є програма для Android, яка має ключ / секрет споживача, вбудований у код.
Якщо припустити, що споживча таємниця була скомпрометована, і хакер її здобув, які наслідки від цього?
Компрометовані
споживчі таємничі припущення. Чи правильно я стверджую, що компрометована споживча таємниця як така не впливає на безпеку користувача або будь-які дані, що зберігаються у постачальника з підтримкою OAuth, з яким користувач взаємодіяв. Самі дані не скомпрометовані і хакер не може їх отримати.
Хакеру потрібно було б дістати дійсний токен доступу користувача, і це набагато складніше отримати.
Що може зробити хакер із компрометованим споживчим секретом?
Я також правильно зазначив наступне:
- Хакер може налаштувати / опублікувати додаток, що імітує мій додаток.
- Хакер може залучити користувачів, які пройдуть потік OAuth, отримуючи маркер доступу через танець OAuth хакерів (використовуючи компрометований ключ / секрет споживача).
- Користувач може подумати, що має справу з моїм додатком, оскільки під час авторизації він побачить знайоме ім’я (ключ споживача).
- Коли споживач видає запит через хакер, хакер може легко перехопити маркер доступу, і в поєднанні із споживчим секретом тепер може підписувати запити від мого імені, щоб отримати доступ до моїх ресурсів.
Вплив на кінцевого користувача
За умови, що
- хакер встановив програму / сайт, використовуючи мою споживчу таємницю
- одного з моїх користувачів було підмануто дозволити доступ до цієї програми / сайту
Може статися таке:
- кінцевий користувач може помітити, що щось неприємне, і повідомити постачальника послуг (наприклад: Google) про шкідливий додаток
- Потім постачальник послуг може відкликати ключ / секрет споживача
Вплив споживача OAuth (мого додатка):
мій додаток (що містить споживчу таємницю) потребував би оновлення, оскільки в іншому випадку всі мої клієнти більше не зможуть санкціонувати мою програму робити запити від їх імені (оскільки моя споживча таємниця більше не буде бути чинним).
Делегування всього трафіку OAuth
Незважаючи на те, що можна було б делегувати багато взаємодій OAuth через проміжний веб-сервер (виконуючи танець OAuth і надсилаючи токен доступу користувачеві), потрібно було б також проксі-сервер усіх взаємодій служби, як ключ споживача / секрет необхідний для підписання кожного запиту. Це єдиний спосіб зберігати споживчий ключ / таємницю поза мобільним додатком і зберігатись у більш безпечному місці на проміжному веб-сервері?
Альтернативи
Чи існують альтернативи для цього проксі-інгу? Чи можна зберігати споживчу таємницю на проміжному веб-сервері та мати якийсь механізм, за допомогою якого програма Android (опублікована на ринку та належним чином підписана) може зробити надійний запит на проміжний веб-сервер для отримання споживчої таємниці та її збереження внутрішньо в додатку? Чи може бути реалізований механізм, за яким проміжний веб-сервер "знає", що це офіційний додаток для Android, який вимагає отримати споживчу таємницю, і що проміжний веб-сервер буде передавати лише споживчий секрет до цього конкретного додатка для Android?