Р 50.1.115-2016. Рекомендации по стандартизации. Информационная технология. Криптографическая защита информации. Протокол выработки общего ключа с аутентификацией на основе пароля
(утв. и введены в действие Приказом Росстандарта от 28.11.2016 № 1830-ст)
Примечание
Документ введен в действие с 1 июня 2017 года.
Утверждены и введены в действие Приказом Федерального агентства по техническому регулированию и метрологии от 28 ноября 2016 г. № 1830-ст
РЕКОМЕНДАЦИИ ПО СТАНДАРТИЗАЦИИ
КРИПТОГРАФИЧЕСКАЯ ЗАЩИТА ИНФОРМАЦИИ
ПРОТОКОЛ ВЫРАБОТКИ ОБЩЕГО КЛЮЧА С АУТЕНТИФИКАЦИЕЙ НА ОСНОВЕ ПАРОЛЯ
Information technology. Gryptographic data security. Password authenticated key echange protokol
Дата введения 1 июня 2017 года
Предисловие
1 РАЗРАБОТАНЫ подкомитетом № 1 Технического комитета по стандартизации ТК 26 «Криптографическая защита информации»
2 ВНЕСЕНЫ Техническим комитетом по стандартизации ТК 26 «Криптографическая защита информации»
3 УТВЕРЖДЕНЫ И ВВЕДЕНЫ В ДЕЙСТВИЕ Приказом Федерального агентства по техническому регулированию и метрологии от 28 ноября 2016 г. № 1830-ст
Правила применения настоящих рекомендаций установлены в статье 26 Федерального закона от 29 июня 2015 г. № 162-ФЗ «О стандартизации в Российской Федерации». Информация об изменениях к настоящим рекомендациям публикуется в ежегодном (по состоянию на 1 января текущего года) информационном указателе «Национальные стандарты», а официальный текст изменений и поправок — в ежемесячном информационном указателе «Национальные стандарты». В случае пересмотра (замены) или отмены настоящих рекомендаций соответствующее уведомление будет опубликовано в ближайшем выпуске ежемесячного информационного указателя «Национальные стандарты». Соответствующая информация, уведомление и тексты размещаются также в информационной системе общего пользования — на официальном сайте Федерального агентства по техническому регулированию и метрологии в сети Интернет (www.gost.ru)
Введение
Настоящие рекомендации содержат описание протокола выработки общего ключа с аутентификацией на основе пароля. Преобразования данных, выполняемые при реализации протокола, используют операции в группе точек эллиптической кривой, определенной над конечным простым полем. Стойкость протокола основана на сложности вычислительной задачи Диффи-Хеллмана в группе точек эллиптической кривой и свойствах хэш-функций, а также свойствах кодов аутентификации сообщений, использующих хэш-функции.
Необходимость разработки настоящих рекомендаций вызвана потребностью во внедрении процедур взаимодействия сторон, обеспечивающих безопасную выработку общей ключевой информации и взаимную аутентификацию при наличии общих исходных конфиденциальных данных малого объема.
Примечание — Основная часть настоящих рекомендаций дополнена приложениями А и Б.
1 Область применения
Настоящие рекомендации предназначены для применения в информационных системах, использующих механизмы шифрования и защиты аутентичности данных, с реализацией алгоритмов электронной (цифровой) подписи по ГОСТ Р 34.10 и функции хэширования по ГОСТ Р 34.11 в общедоступных и корпоративных сетях для защиты информации, не содержащей сведений, составляющих государственную тайну.
Описанный в данных рекомендациях протокол предназначен для выработки общей ключевой информации с использованием разделяемого сторонами пароля и последующей аутентификации при взаимодействии по каналу, в котором допускается присутствие активного противника. Протокол может применяться для обеспечения защиты каналов связи при обработке информации, не содержащей сведений, составляющих государственную тайну. Выработанная сторонами ключевая информация может быть использована для установления защищенного соединения между ними.
2 Нормативные ссылки
В настоящих рекомендациях использованы нормативные ссылки на следующие документы:
ГОСТ Р 34.10-2012 Информационная технология. Криптографическая защита информации. Процессы формирования и проверки электронной цифровой подписи
ГОСТ Р 34.11-2012 Информационная технология. Криптографическая защита информации. Функция хэширования
Р 50.1.113-2016 Информационная технология. Криптографическая защита информации. Криптографические алгоритмы, сопутствующие применению алгоритмов электронной цифровой подписи и функции хэширования
Р 50.1.114-2016 Информационная технология. Криптографическая защита информации. Параметры эллиптических кривых для криптографических алгоритмов и протоколов
Р 50.1.111-2016 Информационная технология. Криптографическая защита информации. Парольная защита ключевой информации
Примечание - При пользовании настоящими рекомендациями целесообразно проверить действие ссылочных стандартов (рекомендаций) в информационной системе общего пользования — на официальном сайте Федерального агентства по техническому регулированию и метрологии в сети Интернет или по ежегодному информационному указателю «Национальные стандарты», который опубликован по состоянию на 1 января текущего года, и по выпускам ежемесячного информационного указателя «Национальные стандарты» за текущий год. Если заменен ссылочный стандарт (рекомендации), на который дана недатированная ссылка, то рекомендуется использовать действующую версию этого стандарта (рекомендаций) с учетом всех внесенных в данную версию изменений. Если заменен ссылочный стандарт (рекомендации), на который дана датированная ссылка, то рекомендуется использовать версию этого стандарта (рекомендаций) с указанным выше годом утверждения (принятия). Если после утверждения настоящих рекомендаций в ссылочный стандарт (рекомендации), на который дана датированная ссылка, внесено изменение, затрагивающее положение, на которое дана ссылка, то это положение рекомендуется применять без учета данного изменения. Если ссылочный стандарт (рекомендации) отменен без замены, то положение, в котором дана ссылка на него, применяется в части, не затрагивающей эту ссылку.
3 Термины, определения и обозначения
3.1 Термины и определения
В настоящих рекомендациях применены следующие термины с соответствующими определениями:
3.1.1 байтовое представление числа: Вектор \overline{w} = (w_{1},...,w_{I}) \in B_{I} является байтовым представлением числа w, если w = 256I — 1 wI + ... + 2560 w1.
3.1.2 байтовое представление точки эллиптической кривой: Для точки {X, Y} на эллиптической кривой ее байтовым представлением является конкатенация байтовых представлений координат этой точки X||Y. При этом длина байтовых представлений координат X и Y равна минимально возможной длине байтового представления характеристики поля p.
3.2 Обозначения
В настоящих рекомендациях использованы следующие обозначения:
E — эллиптическая кривая, определенная над конечным полем Fp, где p простое, p > 3;
p — модуль эллиптической кривой E;
a, b — коэффициенты уравнения эллиптической кривой E в канонической форме;
m — порядок группы точек эллиптической кривой E;
q — порядок циклической подгруппы группы точек эллиптической кривой;
P — порождающий элемент подгруппы порядка q кривой E;
X, Y — координаты точки эллиптической кривой в канонической форме;
O — нулевая точка эллиптической кривой;
H256 — хэш-функция H с длиной выхода, равной 256 битам, определенная в ГОСТ Р 34.11-2012 (раздел 8);
H512 — хэш-функция H с длиной выхода, равной 512 битам, определенная в ГОСТ Р 34.11-2012 (раздел 8);
HMAC (K, T) — значение кода аутентификации сообщения, вычисленное для сообщения T на ключе K по алгоритму HMAC, определенному в Р 50.1.113-2016. Длина значения равна 256 битам;
F (PW, salt, n) — значение функции PBKDF2 (PW, salt, n, len), определенной в Р 50.1.111-2016, где параметр len считается равным 256, если порядок подгруппы q удовлетворяет неравенству 2254 < q < 2256, и равным 512, если 2508 < q < 2512. Согласно Р 50.1.111-2016, в функции PBKDF2 в качестве PRF всегда используется функция HMAC с длиной выхода, равной 512 битам;
Bn — множество байтовых строк длины n, n >= 0. Строка b = (b1, .., bn) принадлежит множеству Bn, если {}_{b_{1},..,b_{n} \in}{_{0,...,255}} . При n = 0 множество Bn состоит из единственной пустой строки длины 0;
int(\overline{w}) — число w = 256I-1 wI + ... + 2560w1, соответствующее вектору \overline{w} = (w_{1},...,w_{I}) \in B_{I} ;
INT(\overline{w}) — число W = 256I-1 wI + ... + 2560wI, соответствующее вектору \overline{w} = (w_{1},...,w_{I}) \in B_{I} ;
|| — конкатенация двух байтовых строк; для двух байтовых строк \alpha = (\alpha_{1},...,\alpha_{n1}) \in B_{n1} , \beta = (\beta_{1},...,\beta_{n2}) \in \beta_{n2} их конкатенацией \alpha||\beta называется байтовая строка \gamma = (\alpha_{1},...,\alpha_{n1},\beta_{1},...,\beta_{n2}) \in B_{n1 + n2} .
Примечание — В настоящих рекомендациях используют обозначения параметров эллиптических кривых в соответствии с ГОСТ Р 34.10-2012 (раздел 5).
4 Описание протокола
В протоколе участвуют стороны A и B, между которыми осуществляется выработка общего ключа и взаимная аутентификация на основе пароля.
4.1 Параметры протокола
В протоколе могут использоваться несколько эллиптических кривых, для каждой из которых должны быть определены:
- идентификатор кривой IDALG, являющийся байтовой строкой произвольной длины;
- точка P, являющаяся порождающим элементом подгруппы порядка q данной кривой;
- набор различных точек {Q1, Q2, ..., QN} порядка q на данной эллиптической кривой, где количество точек № является параметром протокола. Метод генерации наборов точек {Q1, Q2, ..., QN} описан в разделе 5.
Параметрами протокола, используемыми стороной A, являются:
-
Хранящийся в тайне пароль PW, являющийся байтовой строкой, случайно (псевдослучайно) и равновероятно выбранной из множества мощности не менее 1010 из множества Bk, где k >= 6 — длина пароля.
-
Наборы точек {Q1, Q2, ..., QN}, соответствующие поддерживаемым стороной A кривым.
-
Счетчик C1A, контролирующий количество неуспешных попыток аутентификации, предпринятых подряд, и значение CLim1, равное максимально допустимому числу таких событий.
-
Счетчик C2A, отвечающий за количество неуспешных попыток аутентификации, предпринятых за время использования данного значения PW, и значение CLim2, равное максимально допустимому числу таких событий.
-
Счетчик C3A, отвечающий за количество попыток аутентификации (успешных и неуспешных), предпринятых для данного значения PW, и значение CLim3, равное максимально допустимому числу таких событий.
-
Уникальный идентификатор IDA стороны A (опционально), являющийся байтовой строкой произвольной длины.
Параметрами протокола, используемыми стороной B, являются:
QPW = int (F(PW, salt, 2000))·Qind. (1)
Примечание - Опционально точка QPW может не храниться, а вычисляться из PW перед началом работы протокола. В этом случае стороне B необходимо хранить PW и точки Q1, Q2, ..., QN.
-
Идентификатор используемой в протоколе эллиптической кривой IDALG.
-
Счетчик C1B, отвечающий за количество неуспешных попыток аутентификации, предпринятых подряд, и значение CLim1, равное максимально допустимому числу таких событий.
-
Счетчик C2B, отвечающий за количество неуспешных попыток аутентификации, предпринятых за время использования данного значения PW, и значение CLim2, равное максимально допустимому числу таких событий.
-
Счетчик C3B, отвечающий за количество попыток аутентификации (успешных и неуспешных), предпринятых для данного значения PW, и значение CLim3, равное максимально допустимому числу таких событий.
-
Уникальный идентификатор IDB стороны B (опционально), являющийся байтовой строкой произвольной длины.
4.2 Начальные значения счетчиков протокола
После установки пароля PW значения счетчиков аутентификации должны соответствовать следующим ограничениям:
4.3 Алгоритм протокола
Описываемый в данных рекомендациях протокол состоит из следующих шагов:
-
Если хотя бы один из счетчиков C1A, C2A, C3A равен 0, A завершает протокол, возвращая ошибку, информирующую об исчерпании числа попыток, контролируемых обнулившимся счетчиком.
-
A уменьшает каждый из счетчиков C1A, C2A, C3A на 1, запрашивает открытую информацию аутентификации у B и посылает идентификатор IDA.
-
Если хотя бы один из счетчиков C1B, C2B, C3B равен 0, B завершает протокол, возвращая ошибку, информирующую об исчерпании числа попыток, контролируемых обнулившимся счетчиком.
-
B передает A значения ind, salt и идентификатор IDALG. Также B передает A идентификатор IDB (данная пересылка опциональна). Все дальнейшие вычисления B проводит в группе точек эллиптической кривой, которая задается идентификатором IDALG.
-
A устанавливает в качестве используемой эллиптической кривой ту, которая задается идентификатором IDALG. Все дальнейшие вычисления A проводит в группе точек этой кривой.
-
A случайным образом выбирает величину {}_{\alpha \in}{_{1,...,q - 1}} и осуществляет присваивание zA = 0.
-
B, получив u1, проверяет, что u_{1} \in E . Если это не так, то B завершает взаимодействие, считая аутентификацию невыполненной.
-
B вычисляет значение QB = u1 + QPW, осуществляет присваивание zB = 0 и случайным образом выбирает величину {}_{\beta \in}{_{1,...,q - 1}} .
-
Если \frac{m}{q} Q_{B} = 0 , B осуществляет присваивания Q_{B} = \beta P и zB = 1.
-
B вычисляет K_{B} = H_{256}((\frac{m}{q} \cdot \beta(modq)) \cdot Q_{B}) , где хэш-функция считается от байтового представления вычисленной точки.
-
A, получив u2, проверяет, что u_{2} \in E . Если это не так, то A завершает взаимодействие, считая аутентификацию невыполненной.
-
Если \frac{m}{q} Q_{A} = 0 , то A осуществляет присваивания Q_{A} = \alpha P и zA = 1.
-
A вычисляет K_{A} = H_{256}((\frac{m}{q} \cdot \alpha(modq)) \cdot Q_{A}) , где хэш-функция считается от байтового представления вычисленной точки.
-
A вычисляет MACA = HMAC(KA, 0x01 || IDA || ind || salt || u1 || u2 || DATAA), где DATAA — опционально присутствующая строка, которая аутентифицируется с помощью MACA (если она не используется, то DATAA считается равной строке длины 0).
-
B осуществляет проверку на равенство значений MACA и HMAC(KB, 0x01 || IDA || ind || salt || u1 || u2 || DATAA). Если они не равны, то завершает протокол, считая аутентификацию невыполненной.
-
B завершает протокол, считая аутентификацию невыполненной, если zB = 1.
-
B устанавливает значение счетчика C1B равным CLim1 и увеличивает C2B на 1.
-
B вычисляет MACB = HMAC(KB, 0x02 || IDB || ind || salt || u1 || u2 || DATAA || DATAB), где DATAB — опционально присутствующая строка, которая аутентифицируется с помощью MACB (если она не используется, то DATAB считается равной строке длины 0).
-
A осуществляет проверку на равенство значений MACB и HMAC(KA, 0x02 || IDB || ind || salt || u1 || u2 || DATAA || DATAB). Если они не равны, то завершает протокол, считая аутентификацию невыполненной.
-
A завершает протокол, считая аутентификацию невыполненной, если zA = 1.
-
A устанавливает значение счетчика C1A равным CLim1 и увеличивает C2A на 1.
После успешного завершения протокола стороны A и B взаимно аутентифицированы и каждая сторона имеет общий выработанный ключ K = KA = KB.
1 Процесс формирования ключей KA, KB в пунктах 13 и 18 происходит в соответствии с алгоритмом VKO_GOSTR3410_2012_256, определенным в Р 50.1.113-2016.
2 Использование уникальных идентификаторов IDA и IDB является обязательным в том случае, когда начать процесс взаимодействия может любая из сторон. При этом получатель должен проверить, что полученный им при взаимодействии идентификатор не совпадает с его собственным. В случае совпадения он завершает протокол. В случае, если опциональный параметр IDA (также IDB) не используется в протоколе, следует считать его равным любой фиксированной байтовой строке, в том числе строке длины 0.
3 Параметры ind, IDA, IDB и salt могут быть согласованы до начала выполнения действий, описанных в данном разделе. В том случае, когда параметр согласован заранее, его можно не передавать на соответствующем этапе. Ни один из согласованных заранее параметров не может быть исключен из данных, обрабатываемых функцией HMAC на этапах 19, 21, 24 и 26.
4 Параметр IDALG может быть зафиксирован или согласован заранее.
5 Возобновление взаимодействия по протоколу в случае обнуления одного из счетчиков C1A, C1B возможно без смены пароля. В этом случае указанные счетчики могут использоваться для защиты от атак типа «отказ в обслуживании». Например, взаимодействие может возобновляться только после определенной задержки.
6 Возобновление взаимодействия по протоколу в случае обнуления одного из счетчиков C2A, C3A, C2B, C3B возможно только после смены разделяемого сторонами пароля.
5 Построение точек
Для данной эллиптической кривой E с порождающим элементом P алгоритм построения каждой точки Qi, принадлежащей соответствующему этой кривой набору {Q1, ..., QN}, основывается на выборе координаты точки с известным прообразом относительно хэш-функции H256, если порядок подгруппы q удовлетворяет неравенству с 2254 < q < 2256, и относительно хэш-функции H512, если q удовлетворяет неравенству 2508 < q < 2512, и состоит из следующих шагов:
-
Задать произвольную байтовую строку SEED длины 32 байта или более.
-
Проверить, что значение выражения X3 + aX + b является квадратичным вычетом в поле Fp. Если это не так, то вернуться к шагу 1.
-
Выбрать значение Y произвольным образом из множества { \sqrt[+]{R} \sqrt[, -]{R} } , где R = X3 + aX + b. Здесь \sqrt{R} — элемент поля Fp, для которого выполнено сравнение (\sqrt{R})^{2} = Rmodp .
-
Проверить, что для точки Q с координатами (X, Y) выполнено Q /= 0 и q·Q = 0. Если это не так, то вернуться к шагу 1.
-
С помощью описанного алгоритма для каждой эллиптической кривой E строятся наборы точек {Q1, ..., QN}. Построенные точки в одном наборе должны иметь различные координаты X.
Примечание - Наличие известного прообраза относительно хэш-функции в данном случае гарантирует построение каждой из точек набора {Q1, ..., QN} доказуемо псевдослучайным образом. Таким образом, кратность любой из его точек относительно порождающего элемента P и относительно любой другой точки набора является неизвестной, а задача ее вычисления неосуществима на практике.
Для каждой кривой представлены три точки: Q1, Q2, Q3. Данные точки были построены с помощью метода, описанного в разделе 5. Этот же метод следует использовать для построения, при необходимости, дополнительных точек.
Каждая из точек представлена парой координат X, Y на кривой Вейерштрасса. В соответствии с Р 50.1.114-2016 для кривых, имеющих эквивалентное представление в форме скрученных кривых Эдвардса, также приведены координаты точек U, V на кривой в данном представлении. Для каждой точки приведено значение SEED, с помощью которого она была порождена.
А.1 Кривая id-GostR3410-2001-CryptoPro-A-ParamSet
А.2 Кривая id-GostR3410-2001-CryptoPro-B-ParamSet
А.3 Кривая id-GostR3410-2001-CryptoPro-C-ParamSet
А.4 Кривая id-tc26-gost-3410-2012-512-paramSetA
А.5 Кривая id-tc26-gost-3410-2012-512-paramSetB
А.6 Кривая id-tc26-gost-3410-2012-256-paramSetA
А.7 Кривая id-tc26-gost-3410-2012-512-paramSetC
Для одной из трех точек каждой кривой, указанных в приложении А настоящих рекомендаций, приведены контрольные примеры работы протокола.
Б.1 Кривая id-GostR3410-2001-CryptoPro-A-ParamSet
В данном примере входные параметры протокола принимают следующие значения:
Функция F(PW, salt, 2000) при этом принимает следующее значение:
| F(PW, salt, 2000): bd 04 67 3f 71 49 b1 8e 98 15 5b d1 e2 72 4e 71 d0 09 9a a2 51 74 f7 92 d3 32 6c 6f 18 12 70 67 |
|---|
X = 0x9d339b3396ae4a816388a14c79ab3a8dd495fa4c53f0d4076579022ef2aaeb68
Y = 0xdad91482e208590fd316bf959480f5ec2c17463ec8fc8f63030649b452cddda8
При формировании сообщения u1 на стороне A параметр \alpha , точка \alpha P и сформированное сообщение u1 принимают следующие значения:
При обработке сообщения u1, выработке ключа KB и сообщения u2 на стороне B параметры \beta , src, KB = H256 (src), \beta P и u2 принимают следующие значения:
При обработке сообщения u2 и выработке ключа на стороне A значение KA равно:
| KA: e0 4e e0 14 7f 9f 19 8d e2 5a af 33 a2 84 99 e0 ce 7d 31 6e 47 39 76 2f d5 19 f8 e9 91 d7 fc 00 |
|---|
При формировании сообщения MACA = HMAC(KA, 0x01 || IDA || ind || salt || u1 || u2) на стороне A получаем следующее значение:
| MACA: bd 35 c5 0e 90 60 e6 4f 04 2e 7b e6 cc 02 99 84 0c 8e 27 82 b8 e5 9c 3d d4 47 50 11 16 73 c5 ea |
|---|
Значение MACB = HMAC(KB, 0x02 || IDB || ind || salt || u1 || u2) на стороне B равно:
| MACB: c8 c8 2c 0f ed 8e 4d 1e 41 42 d7 a9 f0 55 b4 5f f6 71 2d 2f 41 bf 26 ef 2f bc 37 c5 56 4b 86 d3 |
|---|
Б.2 Кривая id-GostR3410-2001-CryptoPro-B-ParamSet
В данном примере входные параметры протокола принимают следующие значения:
Функция F(PW, salt, 2000) при этом принимает следующее значение:
| F(PW, salt, 2000): bd 04 67 3f 71 49 b1 8e 98 15 5b d1 e2 72 4e 71 d0 09 9a a2 51 74 f7 92 d3 32 6c 6f 18 12 70 67 |
|---|
X = 0x7a7211a430fd4e31b815e6d2454eea9574f034c5c442dce1723d69555d3ee4c9
Y = 0x2995e857187808e80d3e40a00fb87128e203f2d91c1f15d8193a5aad95964734
При формировании сообщения u1 на стороне A параметр \alpha , точка \alpha P и сформированное сообщение u1 принимают следующие значения:
При обработке сообщения u1, выработке ключа KB и сообщения u2 на стороне B параметры \beta , src, KB = H256 (src), \beta P и u2 принимают следующие значения:
При обработке сообщения u2 и выработке ключа на стороне A значение KA равно:
| KA: a6 26 de 01 b1 68 0f f7 51 30 09 12 2b ce e1 89 68 83 39 4f 96 03 01 72 45 5c 9a e0 60 cc e4 4a |
|---|
При формировании сообщения MACA = HMAC(KA, 0x01 || IDA || ind || salt || u1 || u2) на стороне A получаем следующее значение:
| MACA: 55 7a 59 61 42 60 39 a1 52 c8 23 a7 65 04 59 b0 62 be 3d 47 56 53 03 09 95 57 1c e7 53 40 26 47 |
|---|
Значение MACB = HMAC(KB, 0x02 || IDB || ind || salt || u1 || u2) на стороне B равно:
| MACB: 3b c5 5e 27 07 84 19 94 c4 b9 ca ba 43 e6 ce 6a 09 2d e9 08 83 76 5f b6 c3 44 c6 1d 76 02 96 e9 |
|---|
Б.3 Кривая id-GostR3410-2001-CryptoPro-C-ParamSet
В данном примере входные параметры протокола принимают следующие значения:
Функция F(PW, salt, 2000) при этом принимает следующее значение:
| F(PW, salt, 2000): bd 04 67 3f 71 49 b1 8e 98 15 5b d1 e2 72 4e 71 d0 09 9a a2 51 74 f7 92 d3 32 6c 6f 18 12 70 67 |
|---|
X = 0x8b666917d42c455331358c50c3c12c85b898a2e454b50dd773541da02e1c3068
Y = 0x8a9b6c4703934b7f0dc903f52c16275e1d38b568117c7cff3bd322a99a311fe9
При формировании сообщения u1 на стороне A параметр \alpha , точка \alpha P и сформированное сообщение u1 принимают следующие значения:
При обработке сообщения u1, выработке ключа KB и сообщения u2 на стороне B параметры \beta , src, KB = H256 (src), \beta P и u2 принимают следующие значения:
При обработке сообщения u2 и выработке ключа на стороне A значение KA равно:
| KA: be 7e 7e 47 b4 11 16 f2 c7 7e 3b 8f ce 40 30 72 ca 82 45 0d 65 de fc 71 a9 56 49 e4 de ea ec ee |
|---|
При формировании сообщения MACA = HMAC(KA, 0x01 || IDA || ind || salt || u1 || u2) на стороне A получаем следующее значение:
| MACA: 47 58 fa 64 9f 2e 31 3b f2 70 8b 76 a7 f7 a7 5a 37 ce 9e 7f 55 c3 fc 5a 55 77 e8 77 a7 a2 c1 ea |
|---|
Значение MACB = HMAC(KB, 0x02 || IDB || ind || salt || u1 || u2) на стороне B равно:
| MACB: 2f 33 b9 bf f0 7d cd e3 44 67 bd b0 7f 62 fc a8 b3 52 3a 64 39 ef f1 c9 93 ba 0b 4c e6 c2 ed e4 |
|---|
Б.4 Кривая id-tc26-gost-3410-2012-512-paramSetA
В данном примере входные параметры протокола принимают следующие значения:
Функция F(PW, salt, 2000) при этом принимает следующее значение:
При формировании сообщения u1 на стороне A параметр \alpha , точка \alpha P и сформированное сообщение u1 принимают следующие значения:
При обработке сообщения u1, выработке ключа KB и сообщения u2 на стороне B параметры \beta , src, KB = H256 (src), \beta P и u2 принимают следующие значения:
При обработке сообщения u2 и выработке ключа на стороне A значение KA равно:
| KA: 53 24 de f8 48 b6 63 cc 26 42 2f 5e 45 ee c3 4c 51 d2 43 61 b1 65 60 ca 58 a3 d3 28 45 86 cb 7a |
|---|
При формировании сообщения MACA = HMAC(KA, 0x01 || IDA || ind || salt || u1 || u2) на стороне A получаем следующее значение:
| MACA: 37 e6 1a 43 2d 85 75 9b 30 13 a2 9d d6 82 f1 4d 33 ca 86 89 37 db 4b f2 02 91 ed cf 6b e2 4b 4e |
|---|
Значение MACB = HMAC(KB, 0x02 || IDB || ind || salt || u1 || u2) на стороне B равно:
| MACB: 72 dc de 19 5f 26 4b b8 a8 1d 2a fe 2f d9 da 2d 60 12 81 9c 15 f7 11 db 2b c4 c5 74 85 9e 05 3e |
|---|
Б.5 Кривая id-tc26-gost-3410-2012-512-paramSetB
В данном примере входные параметры протокола принимают следующие значения:
Функция F(PW, salt, 2000) при этом принимает следующее значение:
При формировании сообщения u1 на стороне A параметр \alpha , точка \alpha P и сформированное сообщение u1 принимают следующие значения:
При обработке сообщения u1, выработке ключа KB и сообщения u2 на стороне B параметры \beta , src, KB = H256 (src), \beta P и u2 принимают следующие значения:
При обработке сообщения u2 и выработке ключа на стороне A значение KA равно:
| KA: d5 90 e0 5e f5 ae ce 8b 7c fb fc 71 be 45 5f 29 a5 cc 66 6f 85 cd b1 7e 7c c7 16 c5 9f f1 70 e9 |
|---|
При формировании сообщения MACA = HMAC(KA, 0x01 || IDA || ind || salt || u1 || u2) на стороне A получаем следующее значение:
| MACA: 9e c1 a8 74 93 b2 87 c9 ca c3 da c2 a2 d7 1b 82 8d c5 97 7c b0 03 93 42 c1 5a cd fb 66 c8 0f 89 |
|---|
Значение MACB = HMAC(KB, 0x02 || IDB || ind || salt || u1 || u2) на стороне B равно:
| MACB: a9 b2 f1 9b d9 c1 fd 0f 0c ab fd 09 52 94 c6 e6 3c d5 9f 12 cf 8e fd 01 12 46 0d b7 aa 20 bb 6e |
|---|
Б.6 Кривая id-tc26-gost-3410-2012-256-paramSetA
В данном примере входные параметры протокола принимают следующие значения:
Функция F(PW, salt, 2000) при этом принимает следующее значение:
| F(PW, salt, 2000): bd 04 67 3f 71 49 b1 8e 98 15 5b d1 e2 72 4e 71 d0 09 9a a2 51 74 f7 92 d3 32 6c 6f 18 12 70 67 |
|---|
X = 0xa0fd0bcfaa07f640c802aa95f42e80b28bb758fbcb7ee2aca2cc0a615b567207
Y = 0x52cf0c960f362894bd097d198999e965bd940c7828e0d2ad38a0097f68135047
При формировании сообщения u1 на стороне A параметр \alpha , точка \alpha P и сформированное сообщение u1 принимают следующие значения:
При обработке сообщения u1, выработке ключа KB и сообщения u2 на стороне B параметры \beta , src, KB = H256 (src), \beta P и u2 принимают следующие значения:
При обработке сообщения u2 и выработке ключа на стороне A значение KA равно:
| KA: 7d f7 1a c3 27 ed 51 7d 0d e4 03 e8 17 c6 20 4b c1 91 65 b9 d1 00 2b 9f 10 88 a6 cd a6 ea cf 27 |
|---|
При формировании сообщения MACA = HMAC(KA, 0x01 || IDA || ind || salt || u1 || u2) на стороне A получаем следующее значение:
| MACA: f5 69 f6 e7 68 9e f0 ba 08 46 98 cc 0e bc ac 59 67 8c 93 26 af 21 f5 4d 3e 90 05 29 32 6b 41 ee |
|---|
Значение MACB = HMAC(KB, 0x02 || IDB || ind || salt || u1 || u2) на стороне B равно:
| MACB: 80 d5 f0 3b 48 22 37 76 43 b4 ff 92 05 dd ed b1 9f 22 80 1f b4 de 0b fb e0 74 55 c2 54 32 45 1e |
|---|
Б.7 Кривая id-tc26-gost-3410-2012-512-paramSetC
В данном примере входные параметры протокола принимают следующие значения:
Функция F(PW, salt, 2000) при этом принимает следующее значение:
При формировании сообщения u1 на стороне A параметр \alpha , точка \alpha P и сформированное сообщение u1 принимают следующие значения:
При обработке сообщения u1, выработке ключа KB и сообщения u2 на стороне B параметры \beta , src, KB = H256 (src), \beta P и u2 принимают следующие значения:
При обработке сообщения u2 и выработке ключа на стороне A значение KA равно:
| KA: 84 14 e1 12 6c 56 a1 1e 1f 5e a0 b7 c3 bd ab e9 8b 26 8b 59 d4 08 f9 7c d0 ea d7 c2 7e e4 9c 15 |
|---|
При формировании сообщения MACA = HMAC(KA, 0x01 || IDA || ind || salt || u1 || u2) на стороне A получаем следующее значение:
| MACA: 53 0b 77 63 c5 9e 7c 98 52 59 ad eb af a4 16 41 c6 f4 35 47 85 01 bd c9 7e a9 cf 88 a6 9a 12 8c |
|---|
Значение MACB = HMAC(KB, 0x02 || IDB || ind || salt || u1 || u2) на стороне B равно:
| MACB: 3f 48 65 b8 8c 81 e5 ac 56 1e 31 c1 b3 d1 d9 0c 57 e1 e7 4b ac 77 b1 63 ac 60 74 82 4e 99 d3 cc |
|---|