ВАШИ ВОПРОСЫ
Чтобы начать работу с мобильным SDK, вам нужна конфигурация aws. json, которая содержит AppClientId и AppClientSecret.
С того момента, как вы отправили секрет в двоичном файле мобильного приложения, вы должны рассматривать его как принадлежащий домену publi c, то есть больше не секрет, потому что он может быть захвачен злоумышленники, и могут подвергаться повторному использованию и злоупотреблению для отправки запросов к вашему бэкэнду от имени вашего мобильного приложения, what в запросе и вашего аутентифицированного пользователя, who в запрос.
Список открытых и платных инструментов, позволяющих легко атаковать ваше мобильное приложение, бесконечен, но список некоторых из них можно найти в моем личном Github gist,
Более того, если бы вы заглянули внутрь файла IPA / APK, вы легко могли бы извлечь эти ключи. Мой вопрос - действительно ли это важно?
Зависит от того, насколько вы цените данные, которые могут быть доставлены через ваши конечные точки бэкэнда, и сколько денег вы готовы заплатить в счетах AWS.
Вы сказали, что секреты легко найти с помощью анализа c бинарного кода вашего мобильного приложения, но вы можете сделать их гораздо труднее найти, и в этом Github репо для простое демонстрационное приложение Android, вы можете увидеть здесь использование собственного C кода для скрытия ключа API. Вы можете найти больше информации в официальных документах Google, здесь и здесь .
Какие риски безопасности? Я знаю, что они используются для подписи запросов, поэтому кто-нибудь может использовать эти ключи для подписи произвольных запросов?
Даже если вышеупомянутая техника JNI может удержать множество менее опытных злоумышленников от кражи ваших секретов AWS, вы должны иметь в виду, что во время выполнения злоумышленник может использовать инструментарий инструментария, как Фрида , чтобы подключиться к вашему коду и извлечь из него любой секрет. Поэтому независимо от того, как вы его скрываете, даже если он зашифрован, злоумышленнику просто нужно найти функцию, которая возвращает или использует незашифрованный секрет, чтобы иметь возможность извлечь его и отправить на сервер удаленного управления, откуда они могут повторно использовать его для подписывайте запросы к вашему AWS бэкенду от имени вашего мобильного приложения, поэтому подделываете что делает запрос, тем самым ответ на ваш вопрос это да .
У меня есть настройка пула пользователей, позволяющая только аутентифицированному пользователю вызывать лямбда-функцию.
Этот пул пользователей будет идентифицировать аутентифицированного пользователя, другими словами who в запросе, но он не сможет идентифицировать / аутентифицировать , что такое выполнение запроса.
Подумайте о what , как если бы запрос был сделан вашим подлинным мобильным приложением, точно так же, как вы загрузили его в магазин приложений, или это его модифицированная версия. один из них инструктируется Frida или подобной платформой, или это запрос от Postman или Curl.
ВОЗМОЖНОЕ РЕШЕНИЕ
Я бы порекомендовал вам использовать шлюз API AWS в сочетании с решением для аттестации мобильных приложений для идентификации / аутентификации , что делает запрос в От имени who , вашего аутентифицированного пользователя, и, как уже предлагалось, я бы использовал токены AWS STS для аутентифицированного пользователя:
Вы можете используйте AWS Security Token Service (AWS STS) для создания и предоставления доверенным пользователям временных учетных данных, которые могут контролировать доступ к вашим AWS ресурсам.
GOING EXTRA MILE
Я всегда хотел бы порекомендовать отличную работу и усилия, которые OW ASP вкладывает в помощь разработчикам в обеспечении безопасности их приложений, поэтому я бы порекомендовал вам Github repo OW ASP - Руководство по тестированию мобильной безопасности :
Руководство по тестированию мобильной безопасности (MSTG) - это всеобъемлющее руководство по разработке, тестированию и реверс-инжинирингу безопасности мобильных приложений.