OCRA — различия между версиями

Материал из Power Security Support Wiki
Перейти к: навигация, поиск
(DataInput)
 
(не показано 7 промежуточных версий 2 участников)
Строка 1: Строка 1:
 
==Основное==
 
==Основное==
  
ORCA (OATH Challenge-Response Algorithm, стандартизован как RFC 6287) это развитие алгоритма [[HOTP]]. В общих чертах – это алгоритм генерации одноразового значения на основании случайного значения (запроса), то есть вместо счетчика событий на вход подается случайное значение, полученное с сервера.
+
OCRA (OATH Challenge-Response Algorithm, стандартизован как RFC 6287) это развитие алгоритма [[HOTP]]. В общих чертах – это алгоритм генерации одноразового значения на основании случайного значения (запроса), то есть вместо счетчика событий на вход подается случайное значение, полученное с сервера.
В дополнение аутентификации клиента здесь добавлены такие возможности как взаимная аутентификация, подпись транзакций
+
В дополнение аутентификации клиента здесь добавлены такие возможности как взаимная аутентификация, подпись транзакций
  
 
== Требования, предъявляемые к реализации==
 
== Требования, предъявляемые к реализации==
Строка 13: Строка 13:
 
# Запрос может генерироваться с проверкой целостности, с вставкой контрольного бита. Это позволит убедиться в том, что запрос введен верно
 
# Запрос может генерироваться с проверкой целостности, с вставкой контрольного бита. Это позволит убедиться в том, что запрос введен верно
 
# Каждый токен (генератор) программный или аппаратный должен иметь уникальный секрет (ключ), значение которого генерируется случайным образом или рассчитывается по специальным алгоритма генерации колючей.   
 
# Каждый токен (генератор) программный или аппаратный должен иметь уникальный секрет (ключ), значение которого генерируется случайным образом или рассчитывается по специальным алгоритма генерации колючей.   
# Алгоритм может поддерживать дополнительные атрибуты, такие штамп времени или информация о сессии.
+
# Алгоритм может поддерживать дополнительные атрибуты, такие как штамп времени или информация о сессии.
  
 
==Математика процесса==
 
==Математика процесса==
Строка 35: Строка 35:
 
00 – разделитель
 
00 – разделитель
  
С – беззнаковый 8-байтный счетчик, синхронезированный между обоими частниками (клиент и сервер). Опциональный параметр
+
С – беззнаковый 8-байтный счетчик, синхронизированный между обоими участниками (клиент и сервер). Опциональный параметр
  
 
Q – 128-байтный запрос, если он короче, то значение дополняется нулями
 
Q – 128-байтный запрос, если он короче, то значение дополняется нулями
P – хэш-функция (поддерживается SHA-1 RFC 3174, SHA-256 и SHA-512 SHA2) от [[PIN]]-кода, который известен обеим сторонам (клиент и сервер)
 
  
S – строка, длиной до 512 байт, описывающая параметры о сессии
+
P – хэш-функция (поддерживается SHA-1 RFC 3174, SHA-256 и SHA-512) от [[PIN]]-кода, который известен обеим сторонам (клиент и сервер)
 +
 
 +
S – строка, длиной до 512 байт, описывающая параметры сессии
  
 
T – 8-байтное значение временных интервалов (секунд, минут, часов, дней – зависит от конкретной реализации), прошедших с 1 января 1 1970 (UT), используется для простановки штампа времени
 
T – 8-байтное значение временных интервалов (секунд, минут, часов, дней – зависит от конкретной реализации), прошедших с 1 января 1 1970 (UT), используется для простановки штампа времени
  
При расчете значения, состояние счетчика (С) на стороне клиента всегда увеличивается на 1, а на стороне сервера только в случае успешного прохождения аутентификации (подтверждения транзакции)  
+
При расчете значения, состояние счетчика (С) на стороне клиента всегда увеличивается на 1, а на стороне сервера только в случае успешного прохождения аутентификации (подтверждения транзакции)
  
 
=== CryptoFunction===
 
=== CryptoFunction===
Строка 50: Строка 51:
 
Рассматривается семейство [[HOTP]]-функций, как расширение [[HOTP]]:
 
Рассматривается семейство [[HOTP]]-функций, как расширение [[HOTP]]:
 
# HOTP-H-t , где варьируются H – алгоритм хэш-функции, t – длина значения, то есть обрезки
 
# HOTP-H-t , где варьируются H – алгоритм хэш-функции, t – длина значения, то есть обрезки
# HOTP-H-t, если t=0, то обрезка не выполняется и в качестве значения используется полное значение [‘i-функции.
+
# HOTP-H-t, если t=0, то обрезка не выполняется и в качестве значения используется полное значение хэш-функции.
 
Рекомендуемые варианты:
 
Рекомендуемые варианты:
 
# HOTP-SHA1-4
 
# HOTP-SHA1-4
Строка 57: Строка 58:
 
# HOTP-SHA256-6
 
# HOTP-SHA256-6
 
# HOTP-SHA512-6
 
# HOTP-SHA512-6
 +
 +
===OCRASuite===
 +
 +
Это текстовая строка, представленная в виде:
 +
<Algorithm>:<CryptoFunction>:<DataInput>

Текущая версия на 09:29, 25 июля 2013

Основное

OCRA (OATH Challenge-Response Algorithm, стандартизован как RFC 6287) это развитие алгоритма HOTP. В общих чертах – это алгоритм генерации одноразового значения на основании случайного значения (запроса), то есть вместо счетчика событий на вход подается случайное значение, полученное с сервера. В дополнение аутентификации клиента здесь добавлены такие возможности как взаимная аутентификация, подпись транзакций

Требования, предъявляемые к реализации

  1. Алгоритм должен поддерживать аутентификацию на основе запрос-ответ (что собственно и является основной целью данного алгоритма)
  2. Алгоритм должен поддерживать подпись данных на основе симметричного ключа
  3. Алгоритм должен поддерживать аутентификацию сервера, для возможности подтвердить, что клиент взаимодействует с доверенным сервером
  4. Длина и формат запроса должны быть настраиваемыми
  5. Длина и формат ответа должны быть настраиваемыми
  6. Запрос может генерироваться с проверкой целостности, с вставкой контрольного бита. Это позволит убедиться в том, что запрос введен верно
  7. Каждый токен (генератор) программный или аппаратный должен иметь уникальный секрет (ключ), значение которого генерируется случайным образом или рассчитывается по специальным алгоритма генерации колючей.
  8. Алгоритм может поддерживать дополнительные атрибуты, такие как штамп времени или информация о сессии.

Математика процесса

Если описывать алгоритм, то можно использовать следующее представление:

OCRA = CryptoFunction(K, DataInput)

где,

К — общий секрет

DataInput — структура данных, названная выше случайным значением

CryptoFunction — функция расчета


DataInput

DataInput = {OCRASuite | 00 | C | Q | P | S | T}

где, 00 – разделитель

С – беззнаковый 8-байтный счетчик, синхронизированный между обоими участниками (клиент и сервер). Опциональный параметр

Q – 128-байтный запрос, если он короче, то значение дополняется нулями

P – хэш-функция (поддерживается SHA-1 RFC 3174, SHA-256 и SHA-512) от PIN-кода, который известен обеим сторонам (клиент и сервер)

S – строка, длиной до 512 байт, описывающая параметры сессии

T – 8-байтное значение временных интервалов (секунд, минут, часов, дней – зависит от конкретной реализации), прошедших с 1 января 1 1970 (UT), используется для простановки штампа времени

При расчете значения, состояние счетчика (С) на стороне клиента всегда увеличивается на 1, а на стороне сервера только в случае успешного прохождения аутентификации (подтверждения транзакции)

CryptoFunction

По умолчанию, в качестве функции используется HOTP-SHA1-6, то есть алгоритм HOTP на базе SHA1 c длиной значения 6 цифр. Рассматривается семейство HOTP-функций, как расширение HOTP:

  1. HOTP-H-t , где варьируются H – алгоритм хэш-функции, t – длина значения, то есть обрезки
  2. HOTP-H-t, если t=0, то обрезка не выполняется и в качестве значения используется полное значение хэш-функции.

Рекомендуемые варианты:

  1. HOTP-SHA1-4
  2. HOTP-SHA1-6
  3. HOTP-SHA1-8
  4. HOTP-SHA256-6
  5. HOTP-SHA512-6

OCRASuite

Это текстовая строка, представленная в виде: <Algorithm>:<CryptoFunction>:<DataInput>