Меня попросили изучить сроки действия текстовых сообщений, отправленных пользователю, содержащих код входа.

В этом путешествии пользователь идентифицирует себя на веб-сайте, а затем попросит отправить на его телефон текстовое сообщение, содержащее временный код доступа. Они введут этот код доступа на веб-сайт и войдут в систему.

Мой вопрос: как долго этот текстовый код должен оставаться в силе до истечения срока его действия?

5 минут? 20 мин? какое-нибудь руководство?

3
colmcq 26 Окт 2017 в 12:10
3
Лучший UX «действителен вечно», но также с «идеальной безопасностью». К сожалению, что-то должно уступить, поскольку это невозможно с современными технологиями. Понятно, что ответы ниже расходятся. Было бы полезно лучше указать цели и ограничения.
 – 
Jason A.
13 Дек 2017 в 16:50

3 ответа

Наиболее распространенные временные рамки составляют от 5 до 10 минут. В зависимости от того, для чего предназначен ваш код, вы можете изменить время истечения срока действия. Например, коды подтверждения, как правило, активны дольше (Google использует 30 дней), чем код входа. Я думаю, что хорошим правилом является то, что чем более конфиденциальна служба, тем короче код должен быть действительным.

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

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

Google добавляет таймер истечения срока действия в свои коды Google добавляет таймер в свои коды приложений Google Authenticator.

3
Wendy Wojenka 26 Окт 2017 в 12:35

Это был бы хороший вопрос для совета по безопасности данных.

Срок действия кода аутентификации должен полностью зависеть от требуемого в настоящее время уровня безопасности и должен варьироваться от пользователя к пользователю индивидуально. Периоды времени также будут зависеть от уровня безопасности. Если вы установите уровни безопасности 1, 2, 4, 8, 10 и т. д., вы можете разделить числа в моем примере на уровень безопасности.

Примеры:

уровень 1 — 20 минут. Работа в обычном режиме, угроз не обнаружено. Запрос нового кода разрешен.

уровень 2 — 10 минут. Обнаружена угроза, потенциальная уязвимость. Запрос нового кода разрешен по истечении срока действия старого кода.

уровень 4 — 5 минут. Возможна атака методом грубой силы. Запрос нового кода разрешен по истечении срока действия старого кода + требуется дополнительное время ожидания (например, дополнительные 5 минут).

уровень 8 – 2,5 минуты — атака грубой силы подтверждена. Пользователь не может запросить новый код, пока атака не прекратится.

уровень 10 – 0 минут – Аккаунт заблокирован, требуется дополнительная помощь.

Имейте в виду, что это всего лишь черновик для примера, и его следует изменить, если он когда-либо будет использоваться в реальной системе.

В качестве примера подобного подхода вы можете изучить систему аутентификации http://store.steampowered.com/.

2
Ivan Venediktov 13 Дек 2017 в 12:43

Все коды доступа являются одноразовыми. Самая важная проблема заключается в том, что эти коды не должны быть действительными после использования. Можно использовать два алгоритма: HOTP и TOTP. HOTP (одноразовый пароль на основе HMAC) означает, что сгенерированный пароль действителен до тех пор, пока он не будет использован. TOTP (одноразовый пароль на основе времени) означает, что сгенерированный пароль является временным и истекает через определенный период времени. Использование всех остальных алгоритмов считается ненадежным, так как следующий OTP можно предсказать на основе предыдущих.

Срок действия OTP должен быть:

  • как можно короче;
  • удобно для пользователя (достаточно проверить СМС и ввести OTP).

Например, для аппаратных или программных токенов обычно используется срок действия 30 или 60 секунд.

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

Таким образом, срок действия OTP, отправляемого пользователю, зависит от множества факторов и должен быть выяснен практическим путем.

1
Christian 13 Дек 2017 в 12:24