Поиск безопасного способа аутентификации из мобильного приложения

Я унаследовал мобильное приложение, которое отправляет учетные данные аутентификации (идентификатор пользователя / пароль) в открытом виде.

Я представляю, что у меня есть 2 варианта: а) использовать TLS. б) написать собственный протокол авторизации.

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

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
230
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Если вы используете b), ключевые рекомендации следующие: Не делайте этого. Если вы хотите, чтобы это было безопасно.

Попробуйте придерживаться а).

Я не смотрел новые телефоны, но раньше у меня были проблемы с установленными сертификатами SSL.

Jacques René Mesrine 13.10.2008 11:04

Для (б) я полагаю, вы занимаетесь вопросом «вызов-ответ».

Сервер генерирует случайную строку, отправляет ее клиенту. Клиент добавляет его к паролю и хеширует все это, отправляет хеш обратно на сервер. Сервер делает тот же расчет, сравнивает результат с тем, что он получил от клиента. Если они совпадают, клиент отправил правильный пароль.

Наиболее очевидная уязвимость заключается в том, что если кто-то отслеживает обе стороны обмена, он может запустить автономную атаку по словарю против пароля.

Ответ принят как подходящий

Для обоих определений слова «безопасный» "вы не можете получить за это в суд" и "разумно защищенный" для мобильного приложения вы можете предположить, что линия защищена от атак типа «человек посередине» и широко открыта для подслушивания. SSL / TLS кажется самым простым способом, но это может зависеть от вашего оператора и целевого телефона.

Если вы не можете заставить TLS работать и вам нужно использовать свой собственный, используйте обмен ключами Диффи-Хеллман и установленную криптографическую библиотеку (Легион Надувного Замка имеет упрощенную реализацию, совместимую с J2ME).

Да, мое мобильное приложение - J2ME. И да, у меня уже были проблемы с SSL. Спасибо.

Jacques René Mesrine 13.10.2008 12:56

Предполагается, что линия безопасна, так как для организации атаки «человек посередине» третьей стороной требуется вставка прокси-ячейки в сеть. Это значительный объем работы, и ее относительно легко обнаружить оператором связи. Я предполагаю, что оператор связи является надежной третьей стороной, поскольку у них в любом случае есть ваши данные.

ddimitrov 13.10.2008 13:30

Вы действительно доверяете своему оператору связи (например, их сотрудникам, которые не передают ваши данные в различные агентства)? Даже если вы это сделаете, как насчет следующего этапа пути: оператор -> Интернет -> целевой сервер? Я бы не стал сбрасывать со счетов прокси / ретрансляционные вышки сотовой связи и мошеннические сети Wi-Fi.

Alexander 13.10.2008 13:38

Нет, я им так не доверяю, но мой работодатель чертовски уверен. В конце концов, доверие в бизнесе - это не добро и зло, а прикрытие задницы. Перевозчик (обычно) по контракту обязан гарантировать целостность ваших данных. То же самое и для крупных телекоммуникационных компаний.

ddimitrov 13.10.2008 17:16

Написание собственного протокола безопасности не обязательно, и это плохая идея. У него почти наверняка будут недостатки, которые можно использовать. Если все, что вам нужно, это защитить конфиденциальность учетных данных для входа, тогда вам следует использовать SSL / TLS. Это также позволяет упростить переход на аутентификацию на основе сертификатов клиента в будущем.

Другие вопросы по теме