OCRAOCRA (OATH Challenge-Response Algorithm, RFC 6287 .) — алгоритм, объединяющий в себе возможности аутентификации клиента, взаимной аутентификации и подписи транзакций, использующий одноразовые пароли. Является модификацией алгоритма HOTP. Основным отличием OCRA от HOTP является то, что в качестве входных данных используется случайное значение, принятое от сервера, а не счётчик событий. ИсторияСотрудничество OATH разрабатывало алгоритмы аутентификации на базе одноразовых паролей с 2004 года. Из-за стремительного развития мобильной индустрии эти алгоритмы пользовались большой популярностью. В конце 2005 года был опубликован HOTP. Алгоритм HOTP для создания одноразовых паролей использует счётчик, не зависящий от времени. Это позволяет избежать рассинхронизации при большом расстоянии между клиентом и сервером.[1][2] OATH в 2008 году представила алгоритм TOTP, являющийся модификацией HOTP.[3] TOTP для аутентификации генерирует пароль, зависящий от времени, в отличие от HOTP, где пароль создавался на основе счётчика. Этот пароль действителен лишь в течение некоторого временного промежутка. Благодаря этому частично решается проблема рассинхронизации узлов, находящихся далеко друг от друга, при этом нет потери связи из-за случайного или предумышленного сброса счётчиков.[4] Осенью 2010 года OATH модифицировала TOTP, представив алгоритм OCRA. Основное его преимущество даёт тот факт, что есть возможность прохождения аутентификации сервером. Алгоритм также способен создавать электронную цифровую подпись, причём сервер также можно аутентифицировать.[1] Общая схема
Использованы обозначения:[5]
Типичные режимы работыОдносторонняя аутентификацияВ этом режиме сервер должен отправить случайный запрос клиенту, который, в свою очередь, должен предоставить корректный ответ, чтобы пройти аутентификацию. Обе стороны должны заранее согласовать секретный ключ K.[4] [5] При этом должны использоваться следующие параметры:[5]
Алгоритм действий:[5]
Взаимная аутентификацияВ данном режиме клиент и сервер аутентифицируют друг друга. Клиент посылает случайный запрос серверу, который формирует ответ и отправляет клиенту вместе со своим запросом. Клиент сначала проверяет ответ сервера, чтобы убедиться, что тот корректен. После этого клиент формирует свой ответ и отправляет его серверу. Сервер проверяет ответ клиента и тем самым завершает процесс взаимной аутентификации. Обе стороны должны заранее согласовать секретный ключ K.[4] [5] Параметры сервера для ответа:[5]
Параметры клиента для ответа:[5]
Алгоритм действий:[5]
Простая подписьСервер должен передать клиенту какое-то значение на подпись. Этим значением может быть, например, информация, которую нужно подписать, или хеш-функция от этой информации. Обе стороны должны заранее согласовать секретный ключ K.[5] Используются следующие параметры:[5]
Алгоритм действий:[5]
Подпись с аутентификацией сервераВ этом случае клиент сначала проверяет подлинность сервера, а уже потом вычисляет и отправляет электронную подпись. Клиент сначала отправляет случайное значение в качестве запроса на сервер, после чего сервер посылает клиенту свой ответ на его запрос и информацию на подпись. Обе стороны должны заранее согласовать секретный ключ K.[5] Параметры сервера для ответа:[5]
Параметры клиента для ответа:[5]
Алгоритм действий:[5]
Требования к реализации
Надёжность алгоритмаСистемы аутентификации, построенные на базе одноразовых паролей, являются достаточно надёжными. При этом OCRA обладает рядом преимуществ по сравнению со своими предшественниками, алгоритмами TOTP и HOTP.[4] Один из серьёзных методов атаки — подмена сервера аутентификации, что может оказаться эффективным при атаках на TOTP и HOTP. При этом злоумышленник получает данные от пользователя и может использовать их для связи с сервером. Однако в случае алгоритма OCRA, работающего по методу «запрос-ответ», злоумышленник должен выступать в качестве посредника между пользователем и сервером. Злоумышленнику придётся подменять ещё и адрес клиента, чтобы получать данные с сервера и использовать их для связи с клиентом.[4] Также алгоритм OCRA может быть реализован устойчивым к атаке, основанной на рассинхронизации таймеров или счётчиков, которой подвержены HOTP и TOTP, так как эти параметры в OCRA можно комбинировать. При введении счётчика отправка повторного сообщения злоумышленником, работающим по методу «человек посередине» (Man-in-the-middle), будет неудачной, так как счётчик на стороне сервера (или клиента, смотря кого пытается сымитировать злоумышленник) изменится и сообщение будет проверяться уже не тем значением, с помощью которого оно создавалось. Можно менять и промежуток времени, в течение которого пароль действителен, в зависимости от расстояния между клиентом и сервером, избегая рассинхронизации.[4] Сравнение с аналогамиОсновными конкурентами OCRA среди алгоритмов, работающих по методу «запрос-ответ» являются SCRAM и CHAP. По сравнению с ними, OCRA имеет как преимущества, так и недостатки. Все три алгоритма поддерживают взаимную аутентификацию, но изначально в CHAP эта возможность не задумывалась как важная часть алгоритма. Также в CHAP каждая передача данных осуществляется в виде пакета с указанием предназначения данного пакета, его длины и т. д. Это увеличивает объём пересылаемых данных и может ухудшить работу алгоритма при медленном соединении. Но такая форма сообщений позволяет проводить некоторые дополнительные операции, например, изменение секретного слова, хранящегося и у сервера и у клиента. В OCRA такая возможность отсутствует, алгоритм не поддерживает возможность изменять секрет. В SCRAM у сервера и клиента имеются массивы ключей, защищённые солью. Это позволяет менять ключ при каждом новом сеансе аутентификации. Также в SCRAM есть возможность обнаружения атаки методом «человек посередине». При успешном обнаружении такой атаки связь между клиентом и сервером останавливается. OCRA и SCRAM, в отличие от CHAP, в качестве аргумента криптофункции используют случайное значение, полученное с сервера. OCRA обладает возможностью создания электронной подписи, в то время как в SCRAM с помощью подписи проводится аутентификация. Сервер (клиент) посылает клиенту (серверу) параметры для криптофункции и зашифрованный текст. После этого клиент (сервер) расшифровывает текст, подписывает его и отправляет серверу (клиенту). При подтверждении подлинности подписи аутентификация считается пройденной. OCRA, в отличие от своих конкурентов, обладает возможностью использования счётчиков и таймеров в качестве дополнительной защиты от взлома. [6] [7] Примечания
Источники
|
Portal di Ensiklopedia Dunia