Одноразовый пароль — различия между версиями
Andrey (обсуждение | вклад) (→Асинхронные) |
Andrey (обсуждение | вклад) |
||
Строка 35: | Строка 35: | ||
Синоним названия -- "запрос-ответ" (от английского challenge-response). Здесь в качестве переменной, вместо состояния времени или счетчика событий, используется «запрос», получаемый с сервера. | Синоним названия -- "запрос-ответ" (от английского challenge-response). Здесь в качестве переменной, вместо состояния времени или счетчика событий, используется «запрос», получаемый с сервера. | ||
Запрос вводится в генератор, пропускается через алгоритм, результатом которого является «ответ» — он и используется как одноразовый пароль. Примером асинхронного алгоритма генерации OTP является алгоритм [[OATH]] [[OCRA]] | Запрос вводится в генератор, пропускается через алгоритм, результатом которого является «ответ» — он и используется как одноразовый пароль. Примером асинхронного алгоритма генерации OTP является алгоритм [[OATH]] [[OCRA]] | ||
+ | |||
+ | ==Сравнение синхронных алгоритмов== | ||
+ | |||
+ | === Синхронный алгоритм на базе времени === | ||
+ | |||
+ | #OTP изменяется на времени, а вернее его дискретного значения, а значит есть временной интервал, равный шагу, в течение которого OTP-значение не может поменяться (так как в течение этого интервала дискретное значение не меняется) — «интервал ожидания» (например, каждые 30 секунд) | ||
+ | #OTP на имеет параметры «время жизни», в течение которого сервер будет принимать OTP (например, 2 минуты) | ||
+ | #Хорошая защита от фишинга, так как одноразовый пароль может быть использовано только в течение «времени жизни» | ||
+ | #Необходимо разрабатывать защиту от повторного использования, так как OTP на базе времени успешно пройдет повторную проверку. | ||
+ | #Невозможно сгенерировать новое OTP в рамках текущего временного интервала («интервала ожидания») -- пользователь должен ждать окончания текущего временного интервала. | ||
+ | |||
+ | Очевидны следующие ситуации: | ||
+ | |||
+ | ##повторная аутентификация невозможна | ||
+ | ##вторичная аутентификация невозможна | ||
+ | ##попытки вторичной и повторной аутентификации могут привести к блокированию учетной записи пользователя. | ||
+ | |||
+ | === Синхронный алгоритм на базе события === | ||
+ | |||
+ | #OTP может быть сгенерировано в любой момент времени (нет «интервала ожидания») | ||
+ | #OTP может быть использовано в любой момент времени после генерации (нет «времени жизни») | ||
+ | #Подвержен фишинг-атакам, так как нет ограничения на использования в рамках «времени жизни» | ||
+ | Простая нативная защита от повторного использования, на базе счетчика событий | ||
+ | |||
+ | === Синхронный комбинированные алгоритм (время и событие) === | ||
+ | |||
+ | #OTP имеет параметр «время жизни» (например, 2 минуты) | ||
+ | #OTP может быть сгенерирован и использован в любой момент времени после предыдущей генерации (нет «интервала ожидания», так как вместе с дискретным значением времени используется и счетчик событий, который меняется каждый раз при генерации) | ||
+ | #Хорошая защита от фишинга, так как может быть использовано только в течение «времени жизни» | ||
+ | #Простая нативная защита от повторного использования, на базе счетчика событий | ||
+ | |||
+ | Как видно из вышесказанного, с точки зрения надежности комбинированный алгоритм на базе времени и события предпочтительно более предпочтителен. При этом стоит отметить, что при использовании 2х переменных (время и событие) процесс ручной синхронизации генератора одноразовых паролей будет сложнее, так как пользователю придется указывать два параметре, а не один как это происходит в случае алгоритмов на базе времени или события |
Версия 20:29, 28 июня 2012
Основное
OTP — one-time password, пароль, который может быть использован в процессе аутентификации только один раз.
Основная цель использования одноразовых паролей — предотвращение атак «запись-воспроизведение», которым подвержены просты статические пароли.
Одноразовый пароль — это результат некоторой математической функции (алгоритма), которая может быть реализована в виде портативного устройства (аппаратная реализация, генератор одноразовых паролей, OTP-генератор), программы для компьютера или мобильного телефона (программная реализация) , в виде микропрограммы для EMV-чипа банковской карты (технологии CAP/DPA от MasterCard и Visa соответственно) или реализована в микрочипе, встроенного в пластик EMV-карточки (например, решения NagraID)
Группы алгоритмов
Существует две группы алгоритмов генерации одноразовых паролей:
- Синхронное
- Асинхронное
Синхронные алгоритмы
Название подсказывает, алгоритм генерации одноразового пароля предполагает, что некоторые параметры (на проверяющем сервере и клиентском устройстве, например OTP-генераторе) находятся в синхронном состоянии.
Существует 2 параметра генерации одноразовых паролей: время и событие.
Алгоритмы на основе времени
В качестве элемента, отвечающего за динамику, используется дискретное значение времени. Примером такого алгоритма является OATH TOTP
Алгоритмы на основе события
Каждый раз, когда пользователь инициирует генерацию OTP, происходит увеличение счетчика событий в генераторе. Значение этого счётчика и есть то значение (количество событий генерации), на основе которого рассчитывается одноразовый пароль . Примеров такого алгоритма является OATH HOTP
Смешанные алгоритмы
Так как оба алгоритма (основанные и на времени, и на событии) имеют недостатки, были разработаны мешанные алгоритмы, использующие одновременно и дискретное состояние времени, и состояние счетчика событий. OATH еще не разработал и не стандартизовал такой алгоритм, поэтому смешанные алгоритмы следует искать только среди проприетарных, например Vasco и ActivIdentity
Асинхронные
Синоним названия -- "запрос-ответ" (от английского challenge-response). Здесь в качестве переменной, вместо состояния времени или счетчика событий, используется «запрос», получаемый с сервера. Запрос вводится в генератор, пропускается через алгоритм, результатом которого является «ответ» — он и используется как одноразовый пароль. Примером асинхронного алгоритма генерации OTP является алгоритм OATH OCRA
Сравнение синхронных алгоритмов
Синхронный алгоритм на базе времени
- OTP изменяется на времени, а вернее его дискретного значения, а значит есть временной интервал, равный шагу, в течение которого OTP-значение не может поменяться (так как в течение этого интервала дискретное значение не меняется) — «интервал ожидания» (например, каждые 30 секунд)
- OTP на имеет параметры «время жизни», в течение которого сервер будет принимать OTP (например, 2 минуты)
- Хорошая защита от фишинга, так как одноразовый пароль может быть использовано только в течение «времени жизни»
- Необходимо разрабатывать защиту от повторного использования, так как OTP на базе времени успешно пройдет повторную проверку.
- Невозможно сгенерировать новое OTP в рамках текущего временного интервала («интервала ожидания») -- пользователь должен ждать окончания текущего временного интервала.
Очевидны следующие ситуации:
- повторная аутентификация невозможна
- вторичная аутентификация невозможна
- попытки вторичной и повторной аутентификации могут привести к блокированию учетной записи пользователя.
Синхронный алгоритм на базе события
- OTP может быть сгенерировано в любой момент времени (нет «интервала ожидания»)
- OTP может быть использовано в любой момент времени после генерации (нет «времени жизни»)
- Подвержен фишинг-атакам, так как нет ограничения на использования в рамках «времени жизни»
Простая нативная защита от повторного использования, на базе счетчика событий
Синхронный комбинированные алгоритм (время и событие)
- OTP имеет параметр «время жизни» (например, 2 минуты)
- OTP может быть сгенерирован и использован в любой момент времени после предыдущей генерации (нет «интервала ожидания», так как вместе с дискретным значением времени используется и счетчик событий, который меняется каждый раз при генерации)
- Хорошая защита от фишинга, так как может быть использовано только в течение «времени жизни»
- Простая нативная защита от повторного использования, на базе счетчика событий
Как видно из вышесказанного, с точки зрения надежности комбинированный алгоритм на базе времени и события предпочтительно более предпочтителен. При этом стоит отметить, что при использовании 2х переменных (время и событие) процесс ручной синхронизации генератора одноразовых паролей будет сложнее, так как пользователю придется указывать два параметре, а не один как это происходит в случае алгоритмов на базе времени или события