Одноразовый пароль — различия между версиями

Материал из Power Security Support Wiki
Перейти к: навигация, поиск
(Синхронный алгоритм на базе события)
(Синхронный комбинированные алгоритм (время и событие))
 
(не показано 8 промежуточных версий этого же участника)
Строка 5: Строка 5:
 
Основная цель использования одноразовых паролей — предотвращение атак «запись-воспроизведение», которым подвержены простые статические пароли.
 
Основная цель использования одноразовых паролей — предотвращение атак «запись-воспроизведение», которым подвержены простые статические пароли.
  
Одноразовый пароль — это результат некоторой математической функции (алгоритма), которая может быть реализована в виде портативного устройства (аппаратная реализация, генератор одноразовых паролей, OTP-генератор), программы для компьютера или мобильного телефона (программная реализация) , в виде  микропрограммы для [[EMV]]-чипа банковской карты (технологии CAP/DPA от MasterCard и Visa соответственно) или реализована в микрочипе, встроенным в пластик [[EMV]]-карточки (например, решения [http://powersecurity.ru/ru/solutions/nids/ NagraID])
+
Одноразовый пароль — это результат некоторой математической функции (алгоритма), которая может быть реализована в виде портативного устройства (аппаратная реализация, генератор одноразовых паролей, OTP-генератор), программы для компьютера или мобильного телефона (программная реализация), в виде  микропрограммы для [[EMV]]-чипа банковской карты (технологии CAP/DPA от MasterCard и Visa соответственно) или реализована в микрочипе, встроенным в пластик [[EMV]]-карточки (например, решения [http://powersecurity.ru/ru/solutions/nids/ NagraID]). Пользователю могут и вовсе не требоваться дополнительные аппаратные или программные реализации, например, одноразовый пароль может доставляться пользователю в виде SMS-сообщений или по email.
  
 
==Группы алгоритмов==
 
==Группы алгоритмов==
Строка 24: Строка 24:
  
 
====Алгоритмы на основе события====
 
====Алгоритмы на основе события====
Каждый раз, когда пользователь инициирует генерацию OTP, происходит увеличение счетчика событий в генераторе.  Значение этого счётчика и есть то значение (количество событий генерации), на основе которого рассчитывается одноразовый пароль . Примером такого алгоритма является [[OATH]] [[HOTP]]
+
Каждый раз, когда пользователь инициирует генерацию OTP, происходит увеличение счетчика событий в генераторе.  Значение этого счётчика и есть то значение (количество событий генерации), на основе которого рассчитывается одноразовый пароль. Примером такого алгоритма является [[OATH]] [[HOTP]]
  
 
====Смешанные алгоритмы====
 
====Смешанные алгоритмы====
  
Так как оба алгоритма (основанные и на времени, и на событии) имеют недостатки, были разработаны мешанные алгоритмы, использующие одновременно и дискретное состояние времени, и состояние счетчика событий.
+
Так как оба алгоритма (основанные и на времени, и на событии) имеют недостатки, были разработаны смешанные алгоритмы, использующие одновременно и дискретное состояние времени, и состояние счетчика событий.
 
[[OATH]] еще не разработал и не стандартизовал такой алгоритм, поэтому смешанные алгоритмы следует искать только среди проприетарных, например [http://www.vasco.com Vasco] и [http://www.actividentity.com ActivIdentity]
 
[[OATH]] еще не разработал и не стандартизовал такой алгоритм, поэтому смешанные алгоритмы следует искать только среди проприетарных, например [http://www.vasco.com Vasco] и [http://www.actividentity.com ActivIdentity]
  
 
===Асинхронные===
 
===Асинхронные===
Синоним названия -- "запрос-ответ" (от английского challenge-response). Здесь в качестве переменной, вместо состояния времени или счетчика событий, используется «запрос», получаемый с сервера.
+
Синоним названия - "запрос-ответ" (от английского challenge-response). Здесь в качестве переменной, вместо состояния времени или счетчика событий, используется «запрос», получаемый с сервера.
 
Запрос вводится в генератор, пропускается через алгоритм, результатом которого является «ответ» — он и используется как одноразовый пароль. Примером асинхронного алгоритма генерации OTP является алгоритм [[OATH]] [[OCRA]]
 
Запрос вводится в генератор, пропускается через алгоритм, результатом которого является «ответ» — он и используется как одноразовый пароль. Примером асинхронного алгоритма генерации OTP является алгоритм [[OATH]] [[OCRA]]
  
Строка 41: Строка 41:
 
#OTP использует время, а вернее его дискретное значение, а значит есть временной интервал, равный шагу, в течение которого OTP-значение не может поменяться (так как в течение этого интервала дискретное значение не меняется) — «интервал ожидания» (например, каждые 30 секунд)
 
#OTP использует время, а вернее его дискретное значение, а значит есть временной интервал, равный шагу, в течение которого OTP-значение не может поменяться (так как в течение этого интервала дискретное значение не меняется) — «интервал ожидания» (например, каждые 30 секунд)
 
#OTP имеет параметр «время жизни», в течение которого сервер будет принимать OTP  (например, 2 минуты)
 
#OTP имеет параметр «время жизни», в течение которого сервер будет принимать OTP  (например, 2 минуты)
#Хорошая защита от фишинга, так как одноразовый пароль может быть использовано только в течение «времени жизни»
+
#Хорошая защита от фишинга, так как одноразовый пароль может быть использован только в течение «времени жизни»
 
#Необходимо разрабатывать защиту от повторного использования, так как OTP на базе времени успешно пройдет повторную проверку.
 
#Необходимо разрабатывать защиту от повторного использования, так как OTP на базе времени успешно пройдет повторную проверку.
#Невозможно сгенерировать новое OTP в рамках текущего временного интервала («интервала ожидания») -- пользователь должен ждать окончания текущего временного интервала.  
+
#Невозможно сгенерировать новое OTP в рамках текущего временного интервала («интервала ожидания») - пользователь должен ждать окончания текущего временного интервала.  
  
 
Очевидны следующие ситуации:
 
Очевидны следующие ситуации:
Строка 53: Строка 53:
 
=== Синхронный алгоритм на базе события ===
 
=== Синхронный алгоритм на базе события ===
  
#OTP может быть сгенерировано в любой момент времени (нет «интервала ожидания»)
+
#OTP может быть сгенерирован в любой момент времени (нет «интервала ожидания»)
#OTP может быть использовано в любой момент времени после генерации (нет «времени жизни»)
+
#OTP может быть использован в любой момент времени после генерации (нет «времени жизни»)
 
#Подвержен фишинг-атакам, так как нет ограничения на использования в рамках «времени жизни»
 
#Подвержен фишинг-атакам, так как нет ограничения на использования в рамках «времени жизни»
 
#Простая нативная защита от повторного использования, на базе счетчика событий
 
#Простая нативная защита от повторного использования, на базе счетчика событий
Строка 66: Строка 66:
  
  
Как видно из вышесказанного, с точки зрения надежности комбинированный алгоритм на базе времени и события предпочтительно более предпочтителен. При этом стоит отметить, что при использовании 2х переменных (время и событие) процесс ручной синхронизации генератора одноразовых паролей будет сложнее, так как пользователю придется указывать два параметре, а не один как это происходит в случае алгоритмов на базе времени или события
+
Как видно из вышесказанного, с точки зрения надежности комбинированный алгоритм на базе времени и события более предпочтителен. При этом стоит отметить, что при использовании 2х переменных (время и событие) процесс ручной синхронизации генератора одноразовых паролей будет сложнее, так как пользователю придется указывать два параметра, а не один как это происходит в случае алгоритмов на базе времени или события.

Текущая версия на 11:55, 12 августа 2013

Основное

OTP — one-time password, пароль, который может быть использован в процессе аутентификации только один раз.

Основная цель использования одноразовых паролей — предотвращение атак «запись-воспроизведение», которым подвержены простые статические пароли.

Одноразовый пароль — это результат некоторой математической функции (алгоритма), которая может быть реализована в виде портативного устройства (аппаратная реализация, генератор одноразовых паролей, OTP-генератор), программы для компьютера или мобильного телефона (программная реализация), в виде микропрограммы для EMV-чипа банковской карты (технологии CAP/DPA от MasterCard и Visa соответственно) или реализована в микрочипе, встроенным в пластик EMV-карточки (например, решения NagraID). Пользователю могут и вовсе не требоваться дополнительные аппаратные или программные реализации, например, одноразовый пароль может доставляться пользователю в виде SMS-сообщений или по email.

Группы алгоритмов

Существует две группы алгоритмов генерации одноразовых паролей:

  1. Синхронное
  2. Асинхронное

Синхронные алгоритмы

Название подсказывает, алгоритм генерации одноразового пароля предполагает, что некоторые параметры (на проверяющем сервере и клиентском устройстве, например OTP-генераторе) находятся в синхронном состоянии.

Существует 2 параметра генерации одноразовых паролей: время и событие.

Алгоритмы на основе времени

В качестве элемента, отвечающего за динамику, используется дискретное значение времени. Примером такого алгоритма является OATH TOTP

Алгоритмы на основе события

Каждый раз, когда пользователь инициирует генерацию OTP, происходит увеличение счетчика событий в генераторе. Значение этого счётчика и есть то значение (количество событий генерации), на основе которого рассчитывается одноразовый пароль. Примером такого алгоритма является OATH HOTP

Смешанные алгоритмы

Так как оба алгоритма (основанные и на времени, и на событии) имеют недостатки, были разработаны смешанные алгоритмы, использующие одновременно и дискретное состояние времени, и состояние счетчика событий. OATH еще не разработал и не стандартизовал такой алгоритм, поэтому смешанные алгоритмы следует искать только среди проприетарных, например Vasco и ActivIdentity

Асинхронные

Синоним названия - "запрос-ответ" (от английского challenge-response). Здесь в качестве переменной, вместо состояния времени или счетчика событий, используется «запрос», получаемый с сервера. Запрос вводится в генератор, пропускается через алгоритм, результатом которого является «ответ» — он и используется как одноразовый пароль. Примером асинхронного алгоритма генерации OTP является алгоритм OATH OCRA

Сравнение синхронных алгоритмов

Синхронный алгоритм на базе времени

  1. OTP использует время, а вернее его дискретное значение, а значит есть временной интервал, равный шагу, в течение которого OTP-значение не может поменяться (так как в течение этого интервала дискретное значение не меняется) — «интервал ожидания» (например, каждые 30 секунд)
  2. OTP имеет параметр «время жизни», в течение которого сервер будет принимать OTP (например, 2 минуты)
  3. Хорошая защита от фишинга, так как одноразовый пароль может быть использован только в течение «времени жизни»
  4. Необходимо разрабатывать защиту от повторного использования, так как OTP на базе времени успешно пройдет повторную проверку.
  5. Невозможно сгенерировать новое OTP в рамках текущего временного интервала («интервала ожидания») - пользователь должен ждать окончания текущего временного интервала.

Очевидны следующие ситуации:

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

Синхронный алгоритм на базе события

  1. OTP может быть сгенерирован в любой момент времени (нет «интервала ожидания»)
  2. OTP может быть использован в любой момент времени после генерации (нет «времени жизни»)
  3. Подвержен фишинг-атакам, так как нет ограничения на использования в рамках «времени жизни»
  4. Простая нативная защита от повторного использования, на базе счетчика событий

Синхронный комбинированные алгоритм (время и событие)

  1. OTP имеет параметр «время жизни» (например, 2 минуты)
  2. OTP может быть сгенерирован и использован в любой момент времени после предыдущей генерации (нет «интервала ожидания», так как вместе с дискретным значением времени используется и счетчик событий, который меняется каждый раз при генерации)
  3. Хорошая защита от фишинга, так как может быть использовано только в течение «времени жизни»
  4. Простая нативная защита от повторного использования, на базе счетчика событий


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