Я работаю над системой, которая потребует от пользователя входа на устройство с использованием учетной записи, созданной на веб-сайте. Аутентификация будет проходить через HTTPS, так что это не проблема. Приложение, запущенное на устройстве, позволит совершать покупки внутри приложения с использованием кредитной карты, связанной с их учетной записью, поэтому важно, чтобы учетные данные для входа были достаточно безопасными, что было бы трудно атаковать с использованием грубой силы. Единственная проблема заключается в том, что устройство, которое пользователь будет использовать, будет иметь ограниченные возможности ввода пользователя (по существу, клавиши со стрелками и кнопка выбора).Как создать криптографически безопасную аутентификацию без ввода клавиатуры?
В этом случае типичное имя пользователя/пароль может быть слишком громоздким для ввода, что также требует разработки экранной клавиатуры, которая доступна с помощью клавиш со стрелками. Пользователи, вероятно, в конечном итоге создадут простые пароли, которые легко взломать. Однако после входа в систему пользователь будет использовать токен доступа за кулисами, поэтому им может не понадобиться вводить пароль очень много раз.
Первым шагом является то, что пользователю необходимо будет ввести свое имя пользователя или идентификационный номер. Использование номера может быть проще входить, но и легче угадать. Я открыт для предложений в этой области.
Далее следует процесс ввода пароля. Итак, вот несколько идей, которые у меня есть, но я не специалист по криптографии, поэтому я не знаю, как оценить уровень безопасности.
Пользователь должен сначала зарегистрировать устройство. Это может быть шагом, который я требую в любом случае, для дополнительной безопасности. Устройство будет генерировать ключ, который будет отправлен на сервер и сохранен с учетной записью. Ключ потребуется при выполнении будущих запросов на аутентификацию. Пользователю необходимо будет войти на веб-сайт для утверждения устройства. У устройства не будет никакого идентификатора, поэтому, если вы не входите в систему в ближайшее время, вы не узнаете, было ли это ваше устройство или кто-то еще пытается подделать вас. Было бы неплохо создать какой-то дополнительный идентификатор, возможно, будет показан короткий код, фраза или изображение, чтобы вы знали, что это то же устройство, которое вы только что пытались зарегистрировать.
Поскольку ввод текстового пароля может быть слишком сложным, если устройство зарегистрировано, возможно, при подтверждении покупок в приложении может использоваться четырехзначный код доступа. В любом случае, это может быть приятно предотвратить, если другие пользователи устройства не смогут использовать вашу учетную запись без вашего разрешения. Однако, если они наблюдают, как вы вводите свой код доступа, тогда это не очень хорошо для этой цели.
Если регистрация устройства не требуется, вместо входа в систему с текстовым паролем, возможно, пользователю предоставляются изображения или фразы в качестве параметров, и они должны выбрать правильную комбинацию изображений/фраз, соответствующих их учетной записи.
Это все, что у меня есть. Что ты думаешь? Как я могу создать простой, но безопасный вход в систему при покупке приложений в приложении?
Мне нравится, как я делаю покупки в Steam и Xbox Live. В обоих случаях мне не нужно использовать клавиатуру. Я бы проверял их, был ли я вами. Банкоматы также проверяют, они более ограничены, чем ваше устройство. Кроме того, аутентификация пользователя, позволяя ему выбирать фотографии, - это верный способ позволить хакерам украсть учетные записи ваших пользователей. Мне не нужно ничего делать, кроме как взглянуть на чье-то плечо, чтобы открыть свой пиктографический пароль, и быть снимками, которые я мог бы сделать дальше, чем мне нужно, с простыми персонажами. – Renan
@Renan Спасибо, я не знаком с потоком аутентификации Steam или Xbox Live. Не могли бы вы описать процесс? – Andrew
Этот вопрос относится к другим сайтам в сети Stack Exchange: security.stackexchange.com Пожалуйста, пожалуйста, введите другой сайт для обмена файлами в «Этот вопрос принадлежит другому сайту в сети Stack Exchange». Это сводит меня с ума. –