Главная // Актуальные документы // Приказ
СПРАВКА
Источник публикации
М.: ФГБУ "РСТ", 2022
Примечание к документу
Документ введен в действие с 01.01.2023.
Название документа
"Р 1323565.1.043-2022. Рекомендации по стандартизации. Информационная технология. Криптографическая защита информации. Контрольные примеры использования российских криптографических алгоритмов в протоколе безопасности транспортного уровня (TLS 1.3)"
(утв. и введены в действие Приказом Росстандарта от 15.11.2022 N 1286-ст)

"Р 1323565.1.043-2022. Рекомендации по стандартизации. Информационная технология. Криптографическая защита информации. Контрольные примеры использования российских криптографических алгоритмов в протоколе безопасности транспортного уровня (TLS 1.3)"
(утв. и введены в действие Приказом Росстандарта от 15.11.2022 N 1286-ст)


Содержание


Утверждены и введены в действие
Приказом Федерального агентства
по техническому регулированию
и метрологии
от 15 ноября 2022 г. N 1286-ст
РЕКОМЕНДАЦИИ ПО СТАНДАРТИЗАЦИИ
ИНФОРМАЦИОННАЯ ТЕХНОЛОГИЯ
КРИПТОГРАФИЧЕСКАЯ ЗАЩИТА ИНФОРМАЦИИ
КОНТРОЛЬНЫЕ ПРИМЕРЫ ИСПОЛЬЗОВАНИЯ РОССИЙСКИХ
КРИПТОГРАФИЧЕСКИХ АЛГОРИТМОВ В ПРОТОКОЛЕ
БЕЗОПАСНОСТИ ТРАНСПОРТНОГО УРОВНЯ (TLS 1.3)
Information technology. Cryptographic data security.
Examples with intermediate values for the use of the Russian
cryptographic algorithms in the Transport Layer Security
protocol (TLS 1.3)
Р 1323565.1.043-2022
ОКС 35.030
Дата введения
1 января 2023 года
Предисловие
1 РАЗРАБОТАНЫ Обществом с ограниченной ответственностью "Код Безопасности" (ООО "Код Безопасности") с участием Общества с ограниченной ответственностью "КРИПТО-ПРО" (ООО "КРИПТО-ПРО"), Федерального государственного унитарного предприятия "Научно-технический центр "Атлас" (ФГУП "НТЦ "Атлас"), Пензенского филиала ФГУП "НТЦ "Атлас" и Акционерного общества "Информационные технологии и коммуникационные системы" (АО "ИнфоТеКС")
2 ВНЕСЕНЫ Техническим комитетом по стандартизации ТК 26 "Криптографическая защита информации"
3 УТВЕРЖДЕНЫ И ВВЕДЕНЫ В ДЕЙСТВИЕ Приказом Федерального агентства по техническому регулированию и метрологии от 15 ноября 2022 г. N 1286-ст
4 ВВЕДЕНЫ ВПЕРВЫЕ
Правила применения настоящих рекомендаций установлены в статье 26 Федерального закона от 29 июня 2015 г. N 162-ФЗ "О стандартизации в Российской Федерации". Информация об изменениях к настоящим рекомендациям публикуется в ежегодном (по состоянию на 1 января текущего года) информационном указателе "Национальные стандарты", а официальный текст изменений и поправок - в ежемесячном информационном указателе "Национальные стандарты". В случае пересмотра (замены) или отмены настоящих рекомендаций соответствующее уведомление будет опубликовано в ближайшем выпуске ежемесячного информационного указателя "Национальные стандарты". Соответствующая информация, уведомление и тексты размещаются также в информационной системе общего пользования - на официальном сайте Федерального агентства по техническому регулированию и метрологии в сети Интернет (www.rst.gov.ru)
Введение
Настоящие рекомендации разработаны в дополнение к Р 1323565.1.030 и содержат контрольные примеры использования криптоалгоритмов протокола безопасности транспортного уровня, описанного в них.
Необходимость разработки настоящего документа вызвана потребностью в обеспечении совместимости реализаций протокола TLS 1.3 с использованием российских государственных криптографических стандартов.
Настоящие рекомендации разработаны ООО "Код Безопасности" по сценариям работы протокола TLS 1.3, предоставленным ООО "КРИПТО-ПРО". Основу документа составляют контрольные значения, полученные специалистами ФГУП "НТЦ "Атлас" и независимо верифицированные разработчиками следующих организаций: ПФ ФГУП "НТЦ "Атлас", АО "ИнфоТеКС" и ООО "КРИПТО-ПРО". Эталонная реализация контрольных примеров разработана ООО "Код Безопасности" с использованием материалов ФГУП "НТЦ "Атлас" и АО "ИнфоТеКС" и на основе эталонной реализации протокола TLS 1.3, предоставленной ТК 26.
Примечание - Основная часть настоящих рекомендаций дополнена приложением А.
1 Область применения
Настоящие рекомендации предназначены для проверки корректности реализации протокола безопасности транспортного уровня TLS 1.3, описанного в Р 1323565.1.030, с алгоритмами, определяемыми российскими государственными криптографическими стандартами. Документ содержит описание сценариев работы протокола, необходимых для проверки возможных режимов работы протокола, а также соответствующие данным сценариям контрольные примеры.
2 Нормативные ссылки
В настоящих рекомендациях использованы нормативные ссылки на следующие документы:
ГОСТ Р 34.10-2012 Информационная технология. Криптографическая защита информации. Процессы формирования и проверки электронной цифровой подписи
Р 1323565.1.026 "Информационная технология. Криптографическая защита информации. Режимы работы блочных шифров, реализующие аутентифицированное шифрование"
Р 1323565.1.030 "Информационная технология. Криптографическая защита информации. Использование российских криптографических алгоритмов в протоколе безопасности транспортного уровня (TLS 1.3)"
Примечание - При пользовании настоящими рекомендациями целесообразно проверить действие ссылочных документов в информационной системе общего пользования - на официальном сайте Федерального агентства по техническому регулированию и метрологии в сети Интернет или по ежегодному информационному указателю "Национальные стандарты", который опубликован по состоянию на 1 января текущего года, и по выпускам ежемесячного информационного указателя "Национальные стандарты" за текущий год. Если заменен ссылочный документ, на который дана недатированная ссылка, то рекомендуется использовать действующую версию этого документа с учетом всех внесенных в данную версию изменений. Если заменен ссылочный документ, на который дана датированная ссылка, то рекомендуется использовать версию этого документа с указанным выше годом утверждения (принятия). Если после утверждения настоящих рекомендаций в ссылочный документ, на который дана датированная ссылка, внесено изменение, затрагивающее положение, на которое дана ссылка, то это положение рекомендуется применять без учета данного изменения. Если ссылочный документ отменен без замены, то положение, в котором дана ссылка на него, применяется в части, не затрагивающей эту ссылку.
3 Описание сценариев работы протокола TLS 1.3
При обозначении сценариев работы протокола TLS 1.3 используется следующий шаблон:
Криптонабор_Тип хэндшейка_Схема выработки ключа_
[Кривая для ECDHE]_Тип аутентификации_
[Кривые при использовании сертификатов]_
[Доп сообщения]_[Есть ли Record],
где [ ] обозначает опциональные блоки.
3.1 KUZN_S_FULL_ECDHE_ED512_1AUTH_W256_NST_RECORD. Сценарий 1
В работе протокола TLS 1.3 по Сценарию 1 используется полная (Full Handshake) схема работы протокола Handshake со следующими настройками:
1) схема аутентифицированной выработки общего ключевого материала - ecdhe_ke (режим ECDHE-only);
2) односторонняя аутентификация сервера с использованием сертификата открытого ключа (алгоритм подписи ГОСТ Р 34.10-2012_256, эллиптическая кривая с параметрами id-tc26-gost-3410-2012-256-paramSetB);
3) для выработки общего секретного значения ECDHE согласование эллиптической кривой с параметрами id-tc26-gost-3410-2012-512-paramSetC осуществляется без передачи сообщения HelloRetryRequest;
4) согласование сторонами взаимодействия криптонабора с номером {0xC1, 0x05} TLS_GOSTR341112_256_WITH_KUZNYECHIK_MGM_S;
5) прикладные данные Application Data пересылаются со стороны сервера до получения первого сообщения Finished со стороны клиента.
После успешного установления защищенного соединения:
1) сервер посылает клиенту сообщение NewSessionTicket;
2) в рамках протокола Record пересылаются записи, содержащие прикладные данные типа Application Data, состоящие из нулевых данных размера 210 байт с дополнением нулями каждой до максимальной длины записи. Номера записей выбираются исходя из выбранного криптонабора для демонстрации работы алгоритма TLSTREE;
3) в рамках протокола Alert стороны обмениваются сообщениями о закрытии соединения с помощью передачи соответствующих оповещений.
3.2 KUZN_S_RESUMP_POSTHANDSHAKE_W512_KEYUPDATE. Сценарий 2
В работе протокола TLS 1.3 по Сценарию 2 используется схема "Возобновление соединения" (Resumption) работы протокола Handshake со следующими настройками:
1) восстановление сессии осуществляется на базе соединения "TLS_GOSTR341112_256_WITH_KUZNYECHIK_MGM_S. Сценарий 1" (см. 3.1);
2) восстановление параметров соединения с помощью внутреннего предварительно распределенного секрета iPSK (выработанного в рамках предыдущего соединения через NST);
3) схема аутентифицированной выработки общего ключевого материала - psk_ke (режим iPSK-only);
4) согласование сторонами взаимодействия криптонабора с номером {0xC1, 0x05} TLS_GOSTR341112_256_WITH_KUZNYECHIK_MGM_S;
5) использование расширения post_handshake_auth для поддержки механизма post-handshake аутентификации.
После успешного установления защищенного соединения:
1) осуществление post-handshake аутентификации клиента с использованием сертификата открытого ключа (алгоритм подписи ГОСТ Р 34.10-2012_512, эллиптическая кривая с параметрами id-tc26-gost-3410-12-512-paramSetA);
2) передача сообщения KeyUpdate с запросом смены ключа у принимающей стороны.
3.3 MAGMA_L_FULL_PSKECDHE_W256_EPSK_HRR_RECORD. Сценарий 3
В работе протокола TLS 1.3 по Сценарию 3 используется полная (Full Handshake) схема работы протокола Handshake со следующими настройками:
1) схема аутентифицированной выработки общего ключевого материала - psk_ecdhe_ke (режим ePSK-ECDHE);
2) для установления защищенного соединения между клиентом и сервером используется общий секрет ePSK, предварительно распределенный вне протокола TLS 1.3;
3) согласование сторонами взаимодействия криптонабора с номером {0xC1, 0x04} TLS_GOSTR341112_256_WITH_MAGMA_MGM_L;
4) для выработки общего секретного значения ECDHE согласование эллиптической кривой с параметрами id-tc26-gost-3410-2012-256-paramSetB осуществляется с помощью передачи сообщения HelloRetryRequest. В расширении supported_groups дополнительно пересылаются параметры эллиптической кривой id-tc26-gost-3410-2012-512-paramSetC, расширение key_share пересылается пустым.
После успешного установления защищенного соединения:
1) в рамках протокола Record пересылаются 4 (четыре) записи, содержащие прикладные данные типа Application Data, состоящие из нулевых данных размера 210 байт без дополнения нулями каждой до максимальной длины записи. Номера записей выбираются исходя из выбранного криптонабора для демонстрации работы алгоритма TLSTREE;
2) в рамках протокола Alert стороны обмениваются сообщениями о закрытии соединения с помощью передачи соответствующих оповещений.
3.4 KUZN_L_FULL_ECDHE_ED256_2AUTH_W256_W512. Сценарий 4
В работе протокола TLS 1.3 по Сценарию 4 используется полная (Full Handshake) схема работы протокола Handshake со следующими настройками:
1) схема аутентифицированной выработки общего ключевого материала - ecdhe_ke (режим ECDHE-only);
2) двухсторонняя аутентификация сервера и клиента с использованием сертификатов открытых ключей:
а) сервер - алгоритм подписи ГОСТ Р 34.10-2012_512, эллиптическая кривая с параметрами id-tc26-gost-3410-12-512-paramSetA,
б) клиент - алгоритм подписи ГОСТ Р 34.10-2012_256, эллиптическая кривая с параметрами - id-tc26-gost-3410-2012-256-paramSetB;
3) для выработки общего ECDHE секретного значения согласование эллиптической кривой с параметрами id-tc26-gost-3410-2012-256-paramSetA осуществляется без передачи сообщения HelloRetryRequest;
4) согласование сторонами взаимодействия криптонабора с номером {0xC1, 0x03} TLS_GOSTR341112_256_WITH_KUZNYECHIK_MGM_L.
4 Контрольные примеры работы алгоритма хэширования Transcript-Hash()
4.1 KUZN_S_FULL_ECDHE_ED512_1AUTH_W256_NST_RECORD
Предполагается, что байтовая строка HM является упорядоченным множеством значений, указанных в таблице ниже.
Значения элементов байтовой строки HM приведены в следующих соответствующих пунктах:
- ClientHello в 8.1.2;
- ServerHello в 8.1.3;
- EncryptedExtensions в 8.1.5;
- Certificate в 8.1.6;
- CertificateVerify в 8.1.7;
- Server Finished в 8.1.8;
- Client Finished в 8.1.9.
Байтовая строка HM
Хэш-значение Transcript-Hash (HM)
HM1 =
ClientHello
ServerHello
99 3B A7 22 12 4A F3 CB FD 47 71 E7 FA E3 2A C1
D0 E9 27 8C F7 84 3F CB C6 20 E1 A0 08 5A 87 A1
HMCertificateVerify =
ClientHello
ServerHello
EncryptedExtensions
Certificate
E0 CC 4B C1 4B EC 5D 13 19 2C DC 66 22 B4 FD A9
67 6A 1B 50 E4 56 83 0B B5 F0 7E 01 21 22 73 06
HMFinished =
ClientHello
ServerHello
EncryptedExtensions
Certificate
CertificateVerify
03 EC 9B 1D 0B 37 41 42 45 72 BA C9 DF 3A A5 2C
03 EF E9 E9 58 07 69 43 AF D8 58 19 BC 60 2F 46
HM2 =
ClientHello
ServerHello
EncryptedExtensions
Certificate
CertificateVerify
Server Finished
9E BC 5F BE 32 D9 F4 0D 48 F8 EE CE BB 62 31 A5
33 C2 C0 EF 24 32 77 B9 6D 6F 7A D3 BB FD 14 94
HM3 =
ClientHello
ServerHello
EncryptedExtensions
Certificate
CertificateVerify
Server Finished
Client Finished
D6 C4 49 D6 49 92 62 7F 98 DB 5F 5E 57 0B 24 A6
5A 60 A5 14 70 C6 DA 31 7E E4 AE FC AB 62 30 23
4.2 KUZN_S_RESUMP_POSTHANDSHAKE_W512_KEYUPDATE
Предполагается, что байтовая строка HM является упорядоченным множеством значений, указанных в таблице ниже.
Значения элементов байтовой строки HM приведены в следующих соответствующих пунктах:
- ClientHello в 8.2.2;
- ServerHello в 8.2.3;
- EncryptedExtensions в 8.2.4;
- Server Finished в 8.2.5;
- Client Finished в 8.2.6;
- CertificateRequest в 8.2.8;
- Certificate в 8.2.10;
- CertificateVerify в 8.2.11.
Байтовая строка HM
Хэш-значение Transcript-Hash (HM)
HM1 =
ClientHello
ServerHello
22 2C AD 9C 8B 18 E2 64 5E 41 5D 5B 23 90 3F B0
11 6E 38 00 EC 61 9E 94 69 99 26 0C 68 A8 EA 05
HMFinishedServer =
ClientHello
ServerHello
EncryptedExtensions
37 E5 C7 CD 08 37 4C 12 35 53 00 F1 7A 41 0A 76
DE 7A 66 C7 E9 5B 33 00 1C 67 73 55 B5 29 67 C3
HM2 =
ClientHello
ServerHello
EncryptedExtensions
Server Finished
2A 3E DC AB 54 4C 00 12 A9 68 66 60 BD FD AB 89
53 05 7B 86 8C 7D 02 88 2D 0E DA D9 D2 EB 92 BD
HMCertificateVerify =
ClientHello
ServerHello
EncryptedExtensions
Server Finished
Client Finished
CertificateRequest
Certificate
54 B9 44 B5 7A 56 30 C2 0E C9 E9 0B F3 8B BA DF
84 88 13 5C 29 9D F7 F5 26 54 31 00 8C D9 9D F6
HMFinishedClient =
ClientHello
ServerHello
EncryptedExtensions
Server Finished
Client Finished
CertificateRequest
Certificate
CertificateVerify
13 F9 2B 2C DD 68 5E 14 28 00 04 D7 D0 1F AC DA
AB 70 F3 29 AD B5 E8 E3 AF FE CE 86 01 E5 63 E0
4.3 MAGMA_L_FULL_PSKECDHE_W256_EPSK_HRR_RECORD
Предполагается, что байтовая строка HM является упорядоченным множеством значений, указанных в таблице ниже.
Значения элементов байтовой строки HM приведены в следующих соответствующих пунктах:
- ClientHello1 в 8.3.1;
- HelloRetryRequest в 8.3.2;
- ClientHello2 в 8.3.3;
- ServerHello в 8.3.4;
- EncryptedExtensions в 8.3.6;
- Server Finished в 8.3.7;
- Client Finished в 8.3.8.
Байтовая строка HM
Хэш-значение Transcript-Hash (HM)
HM1 =
FE 00 00 20 | | Hash(ClientHello1)
HelloRetryRequest
ClientHello2
ServerHello
88 8D 5D 1E 15 98 65 05 97 3E F2 0F 9A FA F5 71
20 A3 66 C2 D2 19 91 D1 5E 25 07 0C 3D 07 D5 E9
HMFinished =
FE 00 00 20 | | Hash(ClientHello1)
HelloRetryRequest
ClientHello2
ServerHello
EncryptedExtensions
E0 5D D6 C9 DE BA 09 3D 72 AD 6F 4A 7D 0E 11 95
FC E7 AE 31 93 F2 FF 5B 2D 0B F6 14 8E CB E7 B9
HM2 =
FE 00 00 20 | | Hash(ClientHello1)
HelloRetryRequest
ClientHello2
ServerHello
EncryptedExtensions
Server Finished
53 06 24 EE 07 6F FF E1 04 DC 15 EB B4 2D 78 8F
1E 4F EB 3E 8C 2D CF A5 CB 85 D7 2F 81 D0 6D 15
HM3 =
FE 00 00 20 | | Hash(ClientHello1)
HelloRetryRequest
ClientHello2
ServerHello
EncryptedExtensions
Server Finished
Client Finished
B7 4C 73 4B B7 EC B1 48 8C F5 E5 45 F3 85 FA 9C
AC 91 F6 F7 AE 5C C7 81 53 43 7E 9D C7 76 8F 41
4.4 KUZN_L_FULL_ECDHE_ED256_2AUTH_W256_W512
Предполагается, что байтовая строка HM является упорядоченным множеством значений, указанных в таблице ниже.
Значения элементов байтовой строки HM приведены в следующих соответствующих пунктах:
- ClientHello в 8.4.3;
- ServerHello в 8.4.4;
- EncryptedExtensions в 8.4.6;
- CertificateRequest в 8.4.7;
- Server Certificate в 8.4.8;
- Server CertificateVerify в 8.4.9;
- Server Finished в 8.4.10;
- Client Certificate в 8.4.11;
- Client CertificateVerify в 8.4.12.
Байтовая строка HM
Хэш-значение Transcript-Hash (HM)
HM1 =
ClientHello
ServerHello
49 E0 A2 AF D3 14 BE BC B1 F0 4C F1 B3 B6 3B 00
84 9D 87 58 C8 CE B4 F2 45 AD 8D 53 DC E0 D2 F2
HMCertificateVerifyServer =
ClientHello
ServerHello
EncryptedExtensions
CertificateRequest
Server Certificate
59 4F 0A 8B DF 19 B9 B2 2B 16 6A 70 E5 64 9B FE
F9 55 6F 28 E5 2B 19 95 D1 F3 3A 8E 12 7D F4 20
HMFinishedServer =
ClientHello
ServerHello
EncryptedExtensions
CertificateRequest
Server Certificate
Server CertificateVerify
A0 D2 40 CD F8 10 1A F6 12 AA 7C 67 F0 96 0C 7D
36 35 22 82 60 BF 66 0F E1 24 D2 08 2B E1 B3 AE
HM2 =
ClientHello
ServerHello
EncryptedExtensions
CertificateRequest
Server Certificate
Server CertificateVerify
Server Finished
9E 55 9A AB 59 9B 33 2E 84 E9 DD 73 4A F5 F9 0C
10 A3 25 B4 C9 77 1F 56 0 E0 BC 0D 11 15 F1 7C
HMCertificateVerifyClient =
ClientHello
ServerHello
EncryptedExtensions
CertificateRequest
Server Certificate
Server CertificateVerify
Server Finished
Client Certificate
69 7E 35 DD 25 B7 8D EB 0A 16 46 F5 00 D2 C9 91
C1 56 FD 8F 52 7E 3D AF 2C 6A 0A B9 2B 15 64 9D
HMFinishedClient =
ClientHello
ServerHello
EncryptedExtensions
CertificateRequest
Server Certificate
Server CertificateVerify
Server Finished
Client Certificate
Client CertificateVerify
EF BD 06 4B FF F2 90 56 10 CC 8B 67 EB 22 AC B2
E9 AF 0B 2D 69 A4 D3 5D 26 59 6B 6B B6 98 0D 15
5 Контрольные примеры формирования ключевого материала
5.1 KUZN_S_FULL_ECDHE_ED512_1AUTH_W256_NST_RECORD
5.1.1 Выработка предварительного ключевого материала
В рамках Сценария 1 протокола TLS 1.3 значения HandshakeSecret и MasterSecret вырабатываются с помощью энтропийных данных ECDHE (см. 8.1.4):
EarlySecret =
HKDF-Extract(Salt: 0^Hlen, IKM: 0^Hlen) =
FB DE FB E5 27 FE EA 66 5A AB 92 77 A2 16 3B 83
43 08 4F D1 91 C4 60 66 26 0F AC 6F D1 43 6C 72
Derived #0 = Derive-Secret(EarlySecret, "derived", "") =
HKDF-Expand-Label(EarlySecret, "derived", Transcript-Hash(""), 32) =
DB C3 C8 26 D8 77 A3 B7 D2 D2 45 3D BF DC 6C FB
FB 11 51 B3 E8 4F 0C 8F 26 01 1D 8D 5B F3 ED F7
HandshakeSecret =
HKDF-Extract(Salt: Derived #0, IKM: ECDHE) =
44 24 5E 2C 43 32 D1 F7 8B 0F 8D 16 F4 03 EB 69
ED 2A 40 53 84 7C DC 39 FA 8B 3D 29 74 F7 45 E7
Выработка ключевого материала MasterSecret с использованием HandshakeSecret:
Derived #1 = Derive-Secret(HandshakeSecret, "derived", "") =
HKDF-Expand-Label(HandshakeSecret, "derived", Transcript-Hash(""), 32) =
EA 3C 54 BB D1 4E F9 D7 50 77 6F AB E3 95 BE 2A
BD DB BB B7 1C 13 C2 BD 60 9E 35 15 79 4A FA 02
MasterSecret =
HKDF-Extract(Salt: Derived #1, IKM: 0^Hlen) =
31 BB 1D 61 2C CD 53 32 68 8A 55 1A 48 CA 25 0F
24 78 3D 4A B0 B4 A7 6D 3F E5 06 7A 26 16 A4 A3
5.1.2 Выработка секретных значений на этапе согласования параметров соединения и аутентификации
На этапе выработки параметров соединения и аутентификации вырабатываются секретные значения на основе HandshakeSecret и HM1 (см. 5.1.1 и 4.1):
- client_handshake_traffic_secret клиента (обозначение - CHTS):
CHTS =
Derive-Secret(HandshakeSecret, "c hs traffic", HM1) =
HKDF-Expand-Label(HandshakeSecret, "c hs traffic", Transcript-Hash(HM1), 32) =
B3 F7 11 3D 35 26 55 4F E6 55 E5 6F AB 79 B1 A0
3D E3 35 96 E3 30 88 C7 78 37 19 A9 A4 B0 DC CD
- server_handshake_traffic_secret сервера (обозначение - SHTS):
SHTS =
Derive-Secret(HandshakeSecret, "s hs traffic", HM1) =
HKDF-Expand-Label(HandshakeSecret, "s hs traffic", Transcript-Hash(HM1), 32) =
70 A5 F2 46 3D F6 0D BA A2 36 8B 67 FD 45 AE FF
7C 1A 0B A4 2D 8A BD 72 41 5E CD 1D 94 E9 EF 54
5.1.3 Выработка ключевого материала трафика для защиты записей Handshake в протоколе Record
Вычисляется ключевой материал трафика Handshake:
- client_write_key_hs клиента с использованием CHTS (см. 5.1.2):
client_write_key_hs =
HKDF-Expand-Label(CHTS, "key", "", 32) =
58 16 88 D7 6E FE 12 2B B5 5F 62 B3 8E F0 1B CC
8C 88 DB 83 E9 EA 4D 55 D3 89 8C 53 72 1F C3 84
client_write_iv_hs =
HKDF-Expand-Label(CHTS, "iv", "", 16) =
43 9A 07 45 3D 0B EA 0C 1D 1B EB 73 8E B5 B8 DD
- server_write_key_hs сервера с использованием SHTS (см. 5.1.2):
server_write_key_hs =
HKDF-Expand-Label(SHTS, "key", "", 32) =
E1 37 64 B5 4B 9E 1B 47 D4 33 98 D6 D2 16 DF 24
C2 89 A3 96 AB 6C 5B 52 4B BB 9C 06 F3 9F EF 01
server_write_iv_hs =
HKDF-Expand-Label(SHTS, "iv", "", 16) =
69 69 FF AA A4 52 52 81 EE BB EB 4C BD 0B 64 0E
Примечание - Векторы инициализации client_write_iv_hs на стороне клиента и server_write_iv_hs на стороне сервера, полученные после преобразования HKDF-Expand-Label, перед использованием в режиме MGM для формирования Nonce XORed (см. 8.1.5 - 8.1.9) модифицируются путем обнуления старшего бита. Более подробно см. Р 1323565.1.026.
5.1.4 Выработка ключей для формирования данных verify_data сообщения Finished
Ключи вычисления кода аутентификации:
- client_finished_key клиента с использованием CHTS (см. 5.1.2):
client_finished_key = HKDF-Expand-Label(CHTS, "finished", "", 32) =
2F 21 54 8C F5 27 78 69 AE 49 0D E7 BC 15 AC E6
39 F6 57 E3 58 2A 5A 63 4B 0A 91 56 95 D5 4C 42
- server_finished_key сервера с использованием SHTS (см. 5.1.2):
server_finished_key = HKDF-Expand-Label(SHTS, "finished", "", 32) =
53 F1 C0 38 8F 8A 70 C0 BC A0 DD 21 A0 30 F2 38
1C 34 37 CD 0E 7E C9 3D 0A 96 5E 25 63 2D D7 9A
5.1.5 Выработка ключевого материала трафика прикладных данных Application Data и post-handshake сообщений
Вычисляется ключевой материал трафика прикладных данных Application Data с использованием MasterSecret и HM2 (см. 5.1.1 и 4.1):
- client_application_traffic_secret клиента (обозначение - CATS):
CATS =
Derive-Secret(MasterSecret, "c ap traffic", HM2) =
HKDF-Expand-Label(MasterSecret, "c ap traffic", Transcript-Hash(HM2), 32) =
8A CF 74 6B EC 31 17 6C BD 14 2C 75 80 6C 27 0A
0A EF 6F C3 8E 0D 8F DC B5 A8 85 25 36 3A DE 81
- server_application_traffic_secret сервера (обозначение - SATS):
SATS =
Derive-Secret(MasterSecret, "s ap traffic", HM2) =
HKDF-Expand-Label(MasterSecret, "s ap traffic", Transcript-Hash(HM2), 32) =
87 73 4F 4B 4C FD 17 B9 7B 83 4D 82 2D 9D 73 79
F6 F5 E0 3B 80 B5 2A EB 2A FF 51 0E DD 83 DB D2
5.1.6 Выработка ключевого материала возобновления соединения в рамках NewSession-Ticket
Выработка ключевого материала resumption_master_secret для возобновления соединения (обозначение - RMS) с использованием MasterSecret и HM3 (см. 4.1 и 5.1.1):
RMS =
Derive-Secret(MasterSecret, "res master", HM3) =
HKDF-Expand-Label(MasterSecret, "res master", Transcript-Hash(HM3), 32) =
26 02 F9 6F 63 5C C8 B8 6C EA ED 79 20 89 20 66
4C 76 19 E9 B1 4A CF 24 87 C5 B9 94 E0 4B 0A 59
Выработка значения внутреннего предварительно распределенного секрета iPSK, который ассоциируется с тикетом, пересылаемым в сообщении NewSessionTicket (см. 8.1.10), с использованием RMS:
Nonce = 00 00 00 00 00 00 00 00
iPSK =
HKDF-Expand-Label(RMS, "resumption", Nonce, 32) =
94 E3 EA 30 04 B3 39 ED FE FB F1 69 6F 1A 58 7D
17 0B 92 BC F1 40 F3 16 7A A1 51 5F DF B0 85 6E
5.1.7 Выработка ключевого материала трафика для защиты записей Application Data в протоколе Record
Вычисляется ключевой материал трафика Application Data:
- client_write_key_ap клиента с использованием CATS (см. 5.1.5):
client_write_key_ap =
HKDF-Expand-Label(CATS, "key", "", 32) =
7B E6 4E 2C 12 78 7B 5B 8C 87 56 C4 3D 92 FA EF
64 F1 5A 3A 3C 10 81 AD 34 BC A5 06 F0 32 24 15
client_write_iv_ap =
HKDF-Expand-Label(CATS, "iv, "", 16) =
31 09 57 EF 71 31 44 33 F5 76 CC 9B 00 AD 93 54
- server_write_key_ap клиента с использованием SATS (см. 5.1.5):
server_write_key_ap =
HKDF-Expand-Label(SATS, "key", "", 32) =
47 5E 4C 51 4C C6 31 8C 3A 5F 00 0F 12 65 BD 1A
B5 F0 DE 1A F3 57 ED 00 79 EC 5F F0 AF BD 03 0C
server_write_iv_ap =
HKDF-Expand-Label(SATS, "iv", "", 16) =
AF E9 1F 71 18 35 40 26 31 7E 1A B4 D8 22 17 B8
Примечание - Векторы инициализации client_write_iv_ap на стороне клиента и server_write_iv_ap на стороне сервера, полученные после преобразования HKDF-Expand-Label, перед использованием в режиме MGM для формирования Nonce XORed (см. 8.1.10 - 8.1.12) модифицируются путем обнуления старшего бита. Более подробно см. Р 1323565.1.026.
5.2 KUZN_S_RESUMP_POSTHANDSHAKE_W512_KEYUPDATE
5.2.1 Начальный ключевой материал возобновления сессии
В рамках Сценария 1 (см. 3.1) протокола TLS 1.3 выработано значение ключевого материала resumption_master_secret для возобновления соединения (обозначение - RMS) (см. 5.1.6):
RMS =
26 02 F9 6F 63 5C C8 B8 6C EA ED 79 20 89 20 66
4C 76 19 E9 B1 4A CF 24 87 C5 B9 94 E0 4B 0A 59
Также выработано значение внутреннего предварительно распределенного секрета iPSK с использованием RMS:
Nonce = 00 00 00 00 00 00 00 00
iPSK =
HKDF-Expand-Label(RMS, "resumption", Nonce, 32) =
94 E3 EA 30 04 B3 39 ED FE FB F1 69 6F 1A 58 7D
17 0B 92 BC F1 40 F3 16 7A A1 51 5F DF B0 85 6E
5.2.2 Выработка предварительного ключевого материала
В рамках Сценария 2 протокола TLS 1.3 значения EarlySecret, HandshakeSecret и MasterSecret вырабатываются с помощью энтропийных данных iPSK (см. 5.2.1):
EarlySecret =
HKDF-Extract(Salt: 0^Hlen, IKM: PSK) =
87 39 5F F2 D2 BB 8A EE BC B4 19 88 4E DC 9E 6C
0E 38 48 2C 5A 8E 20 F3 5D 07 C2 B4 0E 85 19 3E
Derived #0 = Derive-Secret(EarlySecret, "derived", "") =
HKDF-Expand-Label(EarlySecret, "derived", Transcript-Hash(""), 32) =
BE DB B6 BF E9 9D 1E 9D 30 FD AA 05 C7 DD 0F 74
68 AB 4D EB D7 80 FF 01 94 7E 58 C2 57 4A 32 8A
HandshakeSecret =
HKDF-Extract(Salt: Derived #0, IKM: 0^Hlen) =
94 1A E2 2F 05 12 4A 56 DC 6A E8 D5 1E 42 D3 2B
93 98 DE 40 6F B0 18 35 51 A0 8C 8E 37 63 95 4A
Выработка ключевого материала MasterSecret с использованием HandshakeSecret:
Derived #1 = Derive-Secret(HandshakeSecret, "derived", "") =
HKDF-Expand-Label(HandshakeSecret, "derived", Transcript-Hash(""), 32) =
02 89 97 3A F2 D7 FA B1 A6 C2 9C 52 6C F4 EA 83
D4 F5 4B 8D 74 59 88 B1 BB 79 4A E5 7C 02 2E FD
MasterSecret =
HKDF-Extract(Salt: Derived #1, IKM: 0^Hlen) =
96 76 EF 79 C9 34 70 94 AD 21 AD 2D 18 94 D3 1D
D0 05 BC DB A6 92 97 92 DE FA A4 36 7A BB DD 96
5.2.3 Выработка секретного значения связи инициализирующего соединения с текущим соединением
Вырабатывается секретное значение binder_secret (обозначение - BS) с использованием значения EarlySecret (см. 5.2.2):
BS =
Derive-Secret(EarlySecret, "res binder", "") =
HKDF-Expand-Label(EarlySecret, "res binder", Transcript-Hash(""), 32) =
B2 5B 4F 99 E5 C9 DE 89 07 D7 30 D4 31 B0 78 83
FE B6 48 1A 09 43 48 22 5C BD D6 9D 2B 81 44 37
5.2.4 Выработка контрольного значения проверки предварительно распределенного секрета
Ключевой материал HMAC_binder_key вырабатывается с использованием секретного значения BS (см. 5.2.3) для формирования binder-значений, содержащих контрольные данные, сформированные с помощью функции HMAC и предназначенные для проверки корректности значения iPSK, соответствующего данному binder-значению:
HMAC_binder_key =
HKDF-Expand-Label(BS, "finished", "", 32) =
5A 54 28 AE 4D E9 B9 D1 8A 04 0B 16 27 B0 E6 DA
FD F5 19 61 08 C5 74 B2 76 2B 1F 45 1B 4C B4 C5
5.2.5 Выработка секретных значений на этапе согласования параметров соединения и аутентификации
На этапе выработки параметров соединения и аутентификации вырабатываются секретные значения на основе HandshakeSecret и HM1 (см. 4.2 и 5.2.2):
- client_handshake_traffic_secret клиента (обозначение - CHTS):
CHTS =
Derive-Secret(HandshakeSecret, "c hs traffic", HM1) =
HKDF-Expand-Label(HandshakeSecret, "c hs traffic", Transcript-Hash(HM1), 32 ) =
21 E8 3E CF 6A F5 39 F2 DA 1A 8F F1 E0 D1 E6 F1
4F DC 47 14 DD E4 F4 38 11 CE 8E 56 3C FA DA CD
- server_handshake_traffic_secret сервера (обозначение - SHTS):
SHTS =
Derive-Secret(HandshakeSecret, "s hs traffic", HM1) =
HKDF-Expand-Label(HandshakeSecret, "s hs traffic", Transcript-Hash(HM1), 32 ) =
C5 EC 21 B3 16 32 B0 3C D9 AB 50 71 20 3D EF FB
0C A0 BF A0 28 D8 72 63 17 EF 0A FB 5E CC DF 35
5.2.6 Выработка ключевого материала трафика для защиты записей Handshake в протоколе Record
Вычисляется ключевой материал трафика Handshake:
- client_write_key_hs клиента с использованием CHTS (см. 5.2.5):
client_write_key_hs =
HKDF-Expand-Label(CHTS, "key", "", 32) =
FD 65 E3 D3 44 B0 D6 82 35 7B 85 13 DF 9F 4C 7D
93 B8 B6 5C 04 6F B1 66 B7 C3 F5 41 63 49 2D 10
client_write_iv_hs =
HKDF-Expand-Label(CHTS, "iv", "", 16) =
CC 3A 6C 73 E1 AD 4E 14 7E F2 42 22 C4 0E 90 3C
- server_write_key_hs сервера с использованием SHTS (см. 5.2.5):
server_write_key_hs =
HKDF-Expand-Label(SHTS, "key", "", 32) =
ED 50 70 10 31 33 4D C1 BC E2 43 72 90 F3 4A A6
38 A0 31 13 24 C2 E9 A7 AD 83 2C A1 AE 0A FD 22
server_write_iv_hs =
HKDF-Expand-Label(SHTS, "iv", "", 16) =
7A CF F0 C8 FD FA F3 06 84 18 15 A1 34 A7 75 20
Примечание - Векторы инициализации client_write_iv_hs на стороне клиента и server_write_iv_hs на стороне сервера, полученные после преобразования HKDF-Expand-Label, перед использованием в режиме MGM для формирования Nonce XORed (см. 8.1.5 - 8.1.9) модифицируются путем обнуления старшего бита. Более подробно см. Р 1323565.1.026.
5.2.7 Выработка ключей для формирования данных verify_data main-сообщения Finished
Ключи вычисления кода аутентификации:
- client_finished_key клиента с использованием CHTS (см. 5.2.5):
client_finished_key = HKDF-Expand-Label(CHTS, "finished", "", 32) =
9C A7 A4 E3 39 7C 96 B7 5E F5 D4 DD 32 D3 45 23
B9 CA BE 85 A7 DF A4 FD 89 C6 DA EB 1B 4D 62 03
- server_finished_key сервера с использованием SHTS (см. 5.2.5):
server_finished_key = HKDF-Expand-Label(SHTS, "finished", "", 32) =
A6 38 96 22 C0 24 A6 EE A0 21 B9 4B 0D 5E 45 C8
F6 D1 B4 BC 6B 9C 5B 3A DB A5 D1 98 37 C6 63 FC
5.2.8 Выработка ключевого материала трафика прикладных данных Application Data и post-handshake сообщений
Вычисляется ключевой материал трафика прикладных данных Application Data с использованием MasterSecret и HM2 (см. 5.2.2 и 4.2):
- client_application_traffic_secret клиента (обозначение - CATS):
CATS =
Derive-Secret(MasterSecret, "c ap traffic", HM2) =
HKDF-Expand-Label(MasterSecret, "c ap traffic", Transcript-Hash(HM2), 32) =
3E 0E B0 F7 F8 D3 80 02 03 54 A7 66 2F 4F DD B3
4E 8F 17 E0 1A 62 18 5A 34 9F 73 D2 D7 FA A9 19
- server_application_traffic_secret сервера (обозначение - SATS):
SATS =
Derive-Secret(MasterSecret, "s ap traffic", HM2) =
HKDF-Expand-Label(MasterSecret, "s ap traffic", Transcript-Hash(HM2), 32) =
67 64 28 D3 8A DC 25 D1 F0 D6 D0 0A F5 F7 5C 8A
C5 7B EA 9E E2 42 E6 60 32 90 A0 3F 90 5E AC F2
5.2.9 Выработка ключевого материала трафика для защиты записей Application Data в протоколе Record
Вычисляется ключевой материал трафика Application Data:
- client_write_key_ap клиента с использованием CATS (см. 5.2.8):
client_write_key_ap =
HKDF-Expand-Label(CATS, "key", "", 32) =
8E 1D FA 06 71 F2 4A 2C 27 21 AB 3E EC 07 77 CF
4B 24 D2 03 53 97 36 DE 5C 42 3F D6 16 3B 64 88
client_write_iv_ap =
HKDF-Expand-Label(CATS, "iv", "", 16) =
18 DA F6 CE A6 F5 A9 F4 98 44 AC A1 01 0B DB BD
- server_write_key_ap клиента с использованием SATS (см. 5.2.8):
server_write_key_ap =
HKDF-Expand-Label(SATS, "key", "", 32) =
62 74 1D 20 92 51 56 CF 05 96 42 64 58 74 0E EB
E2 95 9F 65 76 3A 9A 85 F6 C4 11 7E FD 87 FE A5
server_write_iv_ap =
HKDF-Expand-Label(SATS, "iv", "", 16) =
96 E1 4D 6F 63 41 91 37 7C 56 71 A4 6B 8E 25 40
Примечание - Векторы инициализации client_write_iv_ap на стороне клиента и server_write_iv_ap на стороне сервера, полученные после преобразования HKDF-Expand-Label, перед использованием в режиме MGM для формирования Nonce XORed (см. 8.2.7, 8.2.9) модифицируются путем обнуления старшего бита. Более подробно см. Р 1323565.1.026.
5.2.10 Обновление секретных значений и ключевого материала в рамках KeyUpdate
После завершения работы протокола main-Handshake инициализируется обновление текущих секретных значений трафика (см. 5.2.8) прикладных данных Application Data:
- client_application_traffic_secret_2 клиента (обозначение - CATS2):
CATS2 =
HKDF-Expand-Label(CATS, "traffic upd", "", 32) =
5B E8 FD 79 81 0A 0E 3E 73 4C EC 5F 17 A5 30 6C
29 B7 D6 76 F7 FB B1 5C E6 CE ED 90 15 EE 01 54
- server_application_traffic_secret_2 клиента (обозначение - SATS2):
SATS2 =
HKDF-Expand-Label(SATS, "traffic upd", "", 32) =
C5 45 9A 98 83 21 97 45 A7 6C 0F BF D8 E8 B1 87
83 72 31 2A 98 12 08 E6 E4 19 30 66 AB 4C 28 6A
Инициализируется обновление ключа client_finished_key (см. 5.2.9) с использованием CATS2 для формирования данных verify_data (см. 5.2.7) в рамках post-handshake сообщения Finished (см. 8.2.12):
client_finished_key2 = HKDF-Expand-Label(CATS2, "finished", "", 32) =
D3 F3 B9 95 D4 A3 5E 3A 00 6D F1 A9 3F 41 5F 0C
B1 DA FC 6F C6 25 F6 18 17 5D DF 8A 67 A3 AA AB
А также инициализируется обновление ключевого материала трафика для защиты записей Application Data:
- client_write_key_ap2 клиента с использованием CATS2:
client_write_key_ap2 =
HKDF-Expand-Label(CATS2, "key", "", 32) =
BE 7A 51 36 C3 6F CE 85 BE A3 C1 4E 4F FC 46 FD
CF 39 CF BA 81 81 6D FD 62 B8 27 3E 1F A4 BE 70
client_write_iv_ap2 =
HKDF-Expand-Label(CATS2, "iv", "", 16) =
88 98 11 AD 22 A5 94 06 A4 4F 7B 3D B4 75 C8 37
- server_write_key_ap2 клиента с использованием SATS2:
server_write_key_ap2 =
HKDF-Expand-Label(SATS2, "key", "", 32) =
16 25 33 E3 6E 2D AB B7 BE D9 D4 3D 46 1F 7B 64
48 54 C2 80 D7 66 45 E7 A5 9F 24 E2 30 77 17 0E
server_write_iv_ap2 =
HKDF-Expand-Label(SATS2, "iv", "", 16) =
D2 0F 58 1D C3 40 B1 B8 CD 58 22 EA 5C 58 2E 76
Примечание - Векторы инициализации client_write_iv_hs на стороне клиента и server_write_iv_hs на стороне сервера, полученные после преобразования HKDF-Expand-Label, перед использованием в режиме MGM для формирования Nonce XORed (см. 8.1.5 - 8.1.9) модифицируются путем обнуления старшего бита. Более подробно см. Р 1323565.1.026.
5.3 MAGMA_L_FULL_PSKECDHE_W256_EPSK_HRR_RECORD
5.3.1 Начальный ключевой материал
В рамках Сценария 3 (см. 3.3) протокола TLS 1.3 используется общий секрет ePSK, предварительно распределенный вне протокола TLS 1.3:
ePSK =
80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80
80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80
5.3.2 Выработка предварительного ключевого материала
В рамках Сценария 3 протокола TLS 1.3 значения EarlySecret, HandshakeSecret и MasterSecret вырабатываются с помощью энтропийных данных ePSK (см. 5.3.1) и ECDHE (см. 8.3.5):
EarlySecret =
HKDF-Extract(Salt: 0^Hlen, IKM: ePSK) =
42 30 7A 99 68 18 34 0D D0 56 2F 7F EB E6 2A B5
70 F3 BC 88 9C A9 29 3A 89 0D F2 09 B9 1B BB F3
Derived #0 = Derive-Secret(EarlySecret, "derived", "") =
HKDF-Expand-Label (EarlySecret, "derived", Transcript-Hash (""), 32) =
6B 4E 9C 49 C5 C6 F1 7F 60 B2 B8 4B 55 0A 16 38
14 09 5B 80 88 8E C0 B0 CA 52 E4 09 0C B3 F8 BE
HandshakeSecret =
HKDF-Extract(Salt: Derived #0, IKM: ECDHE) =
A9 CB E6 58 50 2F 3F D1 18 66 51 5F D6 15 E9 88
0D 1E 61 B5 28 34 BB FD 5F 19 C2 4C 53 C8 79 7F
Выработка ключевого материала MasterSecret с использованием HandshakeSecret:
Derived #1 = Derive-Secret(HandshakeSecret, "derived", "") =
HKDF-Expand-Label(HandshakeSecret, "derived", Transcript-Hash(""), 32) =
BC 4D 6F E3 D9 43 78 21 1D 3D 64 1C 75 92 EB AA
7A A2 96 47 9C 57 BD D1 E1 4C 7B 04 9F 6D F1 CD
MasterSecret =
HKDF-Extract(Salt: Derived #1, IKM: 0^Hlen) =
DB FF 82 86 2E 54 A1 41 3E 6C 2E D8 2C 6D A5 AF
FD BF DE 12 30 2E 49 75 5B 61 F2 06 32 E1 0A 42
5.3.3 Выработка секретного значения связки начального ключевого материала с текущим соединением
Секретное значение связки binder_secret (обозначение - BS) начального ключевого материала ePSK (см. 5.3.1) с протоколом Handshake текущего соединения с использованием EarlySecret (см. 5.3.2).
BS =
Derive-Secret(EarlySecret, "ext binder", "") =
HKDF-Expand-Label(EarlySecret, "ext binder", Transcript-Hash(""), 32) =
A4 37 62 C3 5E 75 54 1A 15 58 A0 8D 15 50 D3 29
4C C3 F9 0C 73 99 EC C0 50 B9 15 37 A2 4C D5 E4
5.3.4 Выработка ключевого материала для формирования binder-значения
Ключевой материал HMAC_binder_key вырабатывается с использованием секретного значения BS (см. 5.3.3) для формирования binder-значений, содержащих контрольные данные, сформированные с помощью функции HMAC и предназначенные для проверки корректности значения ePSK, соответствующего данному binder-значению.
HMAC_binder_key =
HKDF-Expand-Label(BS, "finished", "", 32) =
F5 6F 59 C2 E2 F8 E7 7C 69 80 1F B1 7D B4 C1 8B
ED 96 EB 32 FC D7 AB 95 AD D6 B1 CF F1 73 E6 65
5.3.5 Выработка секретных значений на этапе согласования параметров соединения и аутентификации
На этапе выработки параметров соединения и аутентификации вырабатываются секретные значения на основе HandshakeSecret и HM1 (см. 5.3.2 и 4.3):
- client_handshake_traffic_secret клиента (обозначение - CHTS):
CHTS =
Derive-Secret(HandshakeSecret, "c hs traffic", HM1) =
HKDF-Expand-Label(HandshakeSecret, "c hs traffic", Transcript-Hash(HM1), 32 ) =
DF 00 4B 79 A1 D3 51 55 97 1B 0E 84 C8 91 99 7F
FE E6 D0 1B 27 04 23 CC 74 64 4B 25 47 3E 78 60
- server_handshake_traffic_secret сервера (обозначение - SHTS):
SHTS =
Derive-Secret(HandshakeSecret, "s hs traffic", HM1) =
HKDF-Expand-Label(HandshakeSecret, "s hs traffic", Transcript-Hash(HM1), 32 ) =
4E F8 68 E5 5B 27 F8 88 8A 6F 82 DA A7 0B 01 1B
DA B1 77 95 10 F0 88 78 A0 22 2B 3E 2C 76 E6 83
5.3.6 Выработка ключевого материала трафика для защиты записей Handshake в протоколе Record
Вычисляется ключевой материал трафика Handshake:
- client_write_key_hs клиента с использованием CHTS (см. 5.3.5):
client_write_key_hs =
HKDF-Expand-Label(CHTS, "key", "", 32) =
DF 66 60 1E DD D6 4E 96 1D FC 7D D0 21 2E F2 25
C0 05 33 E6 DA A4 AD 24 18 5E BE B2 24 B5 46 B8
client_write_iv_hs =
HKDF-Expand-Label(CHTS, "iv", "", 8) =
E8 94 3c 9f A2 88 56 A1
- server_write_key_hs сервера с использованием SHTS (см. 5.3.5):
server_write_key_hs =
HKDF-Expand-Label(SHTS, "key", "", 32) =
DB 61 9B 58 F4 41 1E 33 4F 07 EA C7 7C EF EF CA
78 41 F5 40 88 B8 D0 D5 CE 6A 62 C9 82 85 C6 81
server_write_iv_hs =
HKDF-Expand-Label(SHTS, "iv", "", 8) =
FC 9E 2A C6 63 04 C2 5B
Примечание - Векторы инициализации client_write_iv_hs на стороне клиента и server_write_iv_hs на стороне сервера, полученные после преобразования HKDF-Expand-Label, перед использованием в режиме MGM для формирования Nonce XORed (см. 8.1.5 - 8.1.9) модифицируются путем обнуления старшего бита. Более подробно см. Р 1323565.1.026.
5.3.7 Выработка ключей для формирования данных verify_data сообщения Finished
Ключи вычисления кода аутентификации в рамках main-сообщений:
- client_finished_key клиента с использованием CHTS (см. 5.3.5):
client_finished_key = HKDF-Expand-Label(CHTS, "finished", "", 32) =
1F A6 7D 28 9F F2 A6 85 C7 BE 13 FD F5 60 A6 D5
A9 F5 EA 85 63 AD 6C C7 B4 85 30 76 59 A5 55 81
- server_finished_key сервера с использованием SHTS (см. 5.3.5):
server_finished_key = HKDF-Expand-Label(SHTS, "finished", "", 32) =
AF 41 F7 7A CB 18 B4 C5 9D E0 F7 8D 46 D5 AE 95
7A A4 92 A7 D8 D8 2A 36 F4 B2 09 B8 20 7C 79 03
5.3.8 Выработка ключевого материала трафика прикладных данных Application Data и post-handshake сообщений
Вычисляется ключевой материал трафика прикладных данных Application Data с использованием MasterSecret и HM2 (см. 5.3.2 и 4.3):
- client_application_traffic_secret клиента (обозначение - CATS):
CATS =
Derive-Secret(MasterSecret, "c ap traffic", HM2) =
HKDF-Expand-Label(MasterSecret, "c ap traffic", Transcript-Hash(HM2), 32) =
20 D9 85 D5 B8 4D 9D 8D 4E 5E CF CD BC DD 67 41
55 F1 82 F7 28 7B 18 4D A5 53 42 5C 6C 64 57 83
- server_application_traffic_secret сервера (обозначение - SATS):
SATS =
Derive-Secret(MasterSecret, "s ap traffic", HM2) =
HKDF-Expand-Label(MasterSecret, "s ap traffic", Transcript-Hash(HM2), 32) =
52 91 26 2B EC B5 22 69 34 3A E8 27 9B 43 54 B1
89 22 D5 15 04 60 8B A7 21 C4 72 46 7E EE E8 78
5.3.9 Выработка ключевого материала трафика для защиты записей Application Data в протоколе Record
Вычисляется ключевой материал трафика Application Data:
- client_write_key_ap клиента с использованием CATS (см. 5.3.8):
client_write_key_ap =
HKDF-Expand-Label(CATS, "key", "", 32) =
EB D2 71 DE 19 FE E1 8B B1 99 8F 69 AF 5B 6A E1
89 58 E8 D3 70 2F 12 FB B5 B0 3F 6F D6 91 FE FA
client_write_iv_ap =
HKDF-Expand-Label(CATS, "iv", "", 8) =
18 Fb 03 8d Bf 72 41 E6
- server_write_key_ap клиента с использованием SATS (см. 5.3.8):
server_write_key_ap =
HKDF-Expand-Label(SATS, "key", "", 32) =
15 D9 2C 51 47 B2 13 10 ED ED F5 5B 3D 7A B7 76
81 7D 6F E2 FC F2 30 D7 E3 F2 92 75 F6 E2 41 EC
server_write_iv_ap =
HKDF-Expand-Label(SATS, "iv", "", 8) =
71 2E 2F 11 CD 50 6E B9
Примечание - Векторы инициализации client_write_iv_ap на стороне клиента и server_write_iv_ap на стороне сервера, полученные после преобразования HKDF-Expand-Label, перед использованием в режиме MGM для формирования Nonce XORed (см. 8.3.9 - 8.3.10) модифицируются путем обнуления старшего бита. Более подробно см. Р 1323565.1.026.
5.4 KUZN_L_FULL_ECDHE_ED256_2AUTH_W256_W512
5.4.1 Выработка предварительного ключевого материала
В рамках Сценария 4 протокола TLS 1.3 значения HandshakeSecret и MasterSecret вырабатываются с помощью энтропийных данных ECDHE (см. 8.4.5):
EarlySecret =
HKDF-Extract(Salt: 0^Hlen, IKM: 0^Hlen) =
FB DE FB E5 27 FE EA 66 5A AB 92 77 A2 16 3B 83
43 08 4F D1 91 C4 60 66 26 0F AC 6F D1 43 6C 72
Derived #0 = Derive-Secret(EarlySecret, "derived", "") =
HKDF-Expand-Label(EarlySecret, "derived", Transcript-Hash(""), 32) =
DB C3 C8 26 D8 77 A3 B7 D2 D2 45 3D BF DC 6C FB
FB 11 51 B3 E8 4F 0C 8F 26 01 1D 8D 5B F3 ED F7
HandshakeSecret =
HKDF-Extract(Salt: Derived #0, IKM: ECDHE) =
32 76 28 11 29 71 30 4F 7C 3D EF 73 F9 F3 0B 30
75 7E 65 53 DB 28 4F 2F 52 5C EF 5F 26 E4 F3 D0
Выработка ключевого материала MasterSecret с использованием HandshakeSecret:
Derived #1 = Derive-Secret(HandshakeSecret, "derived", "") =
HKDF-Expand-Label(HandshakeSecret, "derived", Transcript-Hash(""), 32) =
D6 6E B5 C4 93 FE 88 60 57 B3 06 1A E6 17 FC CD
3A 16 EC 04 A8 F3 A8 EB 69 EC 48 2C B7 06 1E 91
MasterSecret =
HKDF-Extract(Salt: Derived #1, IKM: 0^Hlen) =
C4 F9 A4 95 5D 3D 7F CE 51 68 33 97 10 28 41 9A
3C 85 09 1C 1F 7E 7B 33 6C 35 63 CF FF 24 CC 7E
5.4.2 Выработка секретных значений на этапе согласования параметров соединения и аутентификации
На этапе выработки параметров соединения и аутентификации вырабатываются секретные значения на основе HandshakeSecret и HM1 (см. 5.4.1 и 4.4):
- client_handshake_traffic_secret клиента (обозначение - CHTS):
CHTS =
Derive-Secret(HandshakeSecret, "c hs traffic", HM1) =
HKDF-Expand-Label(HandshakeSecret, "c hs traffic", Transcript-Hash(HM1), 32 ) =
28 00 24 18 3F D5 B4 BF 4B A4 91 A0 60 D9 C2 06
26 9B 10 69 67 42 B7 3B 22 16 1C 42 DF 20 08 19
- server_handshake_traffic_secret сервера (обозначение - SHTS):
SHTS =
Derive-Secret(HandshakeSecret, "s hs traffic", HM1) =
HKDF-Expand-Label(HandshakeSecret, "s hs traffic", Transcript-Hash(HM1), 32 ) =
C2 97 B6 7A 84 8C C8 72 3C C8 75 17 66 E2 45 2F
F6 01 06 EB 4B 1E 75 98 DC FD A6 83 F4 70 A9 8E
5.4.3 Выработка ключевого материала трафика для защиты записей Handshake в протоколе Record
Вычисляется ключевой материал трафика Handshake:
- client_write_key_hs клиента с использованием CHTS (см. 5.4.2):
client_write_key_hs =
HKDF-Expand-Label(CHTS, "key", "", 32) =
27 22 9E 34 2C 64 D9 8B F9 0F 39 4F 7E DA 30 2F
6C D6 F4 0C 66 E6 C5 D9 24 FB A7 FA 99 8E FB 88
client_write_iv_hs =
HKDF-Expand-Label(CHTS, "iv", "", 16) =
EA 9C E0 2C 82 17 B0 15 F2 29 BA 3E AD F5 4C D1
- server_write_key_hs сервера с использованием SHTS (см. 5.4.2):
server_write_key_hs =
HKDF-Expand-Label(SHTS, "key", "", 32) =
A1 4D 12 D6 14 A6 EF EF 88 DC CF 88 CC 9C E1 54
18 69 76 70 CD 38 C5 00 66 53 85 F1 0F C3 87 60
server_write_iv_hs =
HKDF-Expand-Label(SHTS, "iv", "", 16) =
AE 7D D7 0D DD 83 09 A7 DA E2 DB 3E BD 9D 65 B4
Примечание - Векторы инициализации client_write_iv_hs на стороне клиента и server_write_iv_hs на стороне сервера, полученные после преобразования HKDF-Expand-Label, перед использованием в режиме MGM для формирования Nonce XORed (см. 8.1.5 - 8.1.9) модифицируются путем обнуления старшего бита. Более подробно см. Р 1323565.1.026.
5.4.4 Выработка ключей для формирования данных verify_data сообщения Finished
Ключи вычисления кода аутентификации:
- client_finished_key клиента с использованием CHTS (см. 5.4.2):
client_finished_key = HKDF-Expand-Label(CHTS, "finished", "", 32) =
9D B9 3D 0A 34 A7 9A 61 D0 3B 71 F1 EC AA 74 73
29 56 17 44 52 72 21 58 65 B4 27 7F DC BC AC F1
- server_finished_key сервера с использованием SHTS (см. 5.4.2):
server_finished_key = HKDF-Expand-Label(SHTS, "finished", "", 32) =
72 EA 1C B4 86 FF 2A D8 46 43 EA 97 B4 F6 93 48
D8 B3 24 87 71 91 05 7E F2 10 8D A0 53 63 35 65
5.4.5 Выработка ключевого материала трафика прикладных данных Application Data и post-handshake сообщений
Вычисляется ключевой материал трафика прикладных данных Application Data с использованием MasterSecret и HM2 (см. 5.4.1 и 4.4):
- client_application_traffic_secret клиента (обозначение - CATS):
CATS =
Derive-Secret(MasterSecret, "c ap traffic", HM2) =
HKDF-Expand-Label(MasterSecret, "c ap traffic", Transcript-Hash(HM2), 32) =
8F 0A 63 FE 09 33 DE 9E 28 A8 EF BB 3D 2C CB E7
A0 DE CF 4D DE 67 37 55 47 51 95 54 F0 18 4D 07
- server_application_traffic_secret сервера (обозначение - SATS):
SATS =
Derive-Secret(MasterSecret, "s ap traffic", HM2) =
HKDF-Expand-Label(MasterSecret, "s ap traffic", Transcript-Hash(HM2), 32) =
5F 12 31 56 FE CA 64 FB AB 90 19 36 F3 12 99 01
B1 8E 33 C4 86 E5 57 47 22 E8 17 15 CC D6 EA C5
5.4.6 Выработка ключевого материала трафика для защиты записей Application Data в протоколе Record
Вычисляется ключевой материал трафика Application Data:
- client_write_key_ap клиента с использованием CATS (см. 5.4.5):
client_write_key_ap =
HKDF-Expand-Label(CATS, "key", "", 32) =
02 B2 B3 11 24 64 38 F9 6B 7F CB 52 F7 F5 7E 17
10 EF 0D E3 5C 2A 02 A8 12 48 F9 9A DF 58 FC 01
client_write_iv_ap =
HKDF-Expand-Label(CATS, "iv", "", 16) =
AD 91 B5 F9 21 62 F1 6A B8 98 71 15 7B 43 42 48
- server_write_key_ap клиента с использованием SATS (см. 5.4.5):
server_write_key_ap =
HKDF-Expand-Label(SATS, "key", "", 32) =
42 A3 E8 95 5D 06 3A AB BF 84 22 10 0F 29 98 7C
1F BB 33 F5 1A 17 84 BD C3 7E A0 4D 97 68 BC F7
server_write_iv_ap =
HKDF-Expand-Label(SATS, "iv", "", 16) =
DE 94 44 7E 8A 1C B3 4E 0D 52 94 38 6C 13 A5 F9
6 Контрольные примеры работы алгоритма TLSTREE() выработки ключей защиты записей
Алгоритм TLSTREE() порождает из корневого ключа Kroot ключи защиты записей Handshake (на основе [sender]_write_key_hs) и Application Data (на основе [sender]_write_key_ap).
6.1 KUZN_S_FULL_ECDHE_ED512_1AUTH_W256_NST_RECORD
В таблице ниже приведены значения ключевых последовательностей, используемые в рамках работы протокола TLS 1.3 в соответствии со Сценарием 1 (см. 3.1).
Kroot
Seqnum
TLSTREE(Kroot)
client_write_key_hs =
58 16 88 D7 6E FE 12 2B B5 5F 62 B3 8E F0 1B CC
8C 88 DB 83 E9 EA 4D 55 D3 89 8C 53 72 1F C3 84
0 - 7
E1 C5 9B 41 69 D8 96 10 7F 78 45 68 93 A3 75 1E
15 73 54 3D AD 8C B7 40 69 E6 81 4A 51 3B BB 1C
server_write_key_hs =
E1 37 64 B5 4В 9E 1B 47 D4 33 98 D6 D2 16 DF 24
C2 89 A3 96 AB 6C 5B 52 4B BB 9C 06 F3 9F EF 01
0 - 7
56 EE 18 13 72 72 49 C9 DC DF 35 13 78 7E DB 93
DF 62 C6 1E E7 B1 26 C5 0F 26 C0 AA AF AE 00 E1
client_write_key_ap =
7B E6 4E 2C 12 78 7B 5B 8C 87 56 C4 3D 92 FA EF
64 F1 5A 3A 3C 10 81 AD 34 BC A5 06 F0 32 24 15
0 - 7
D4 9A 57 15 49 E7 48 94 9F A2 4B 88 34 23 2C A8
75 D3 7A 26 C4 BB 5C 62 A2 61 DA B3 72 65 05 26
8 - 15
B8 2D 78 25 D1 5F AE 18 A7 01 32 28 B3 1C B0 C5
97 52 C6 40 9C 5F 78 99 EC C6 95 0F 74 63 C0 90
server_write_key_ap =
47 5E 4C 51 4C C6 31 8C 3A 5F 00 0F 12 65 BD 1A
B5 F0 DE 1A F3 57 ED 00 79 EC 5F F0 AF BD 03 0C
0 - 7
C8 FC 93 D7 C5 86 F2 B0 A3 10 1B AA 6A 97 9E 4E
38 86 70 65 51 E8 11 87 E9 78 80 40 9C 7E 8E E9
8 - 15
D3 CD 87 D5 68 74 07 82 39 78 34 4C 06 B9 28 A8
58 98 B7 39 A3 1D 3D E5 FF 2B 78 8E F3 91 96 ED
6.2 KUZN_S_RESUMP_POSTHANDSHAKE_W512_KEYUPDATE
В таблице ниже приведены значения ключевых последовательностей, используемые в рамках работы протокола TLS 1.3 в соответствии со Сценарием 2 (см. 3.2).
Kroot
Seqnum
TLSTREE(Kroot)
client_write_key_hs =
FD 65 E3 D3 44 B0 D6 82 35 7B 85 13 DF 9F 4C 7D
93 B8 B6 5C 04 6F B1 66 B7 C3 F5 41 63 49 2D 10
0 - 7
9C 3A BE C3 5F 72 9E 78 E5 1C 3F FF DE AC 61 4A
43 EB DF AC 18 BF 47 59 B7 0E 83 A6 56 83 29 33
server_write_key_hs =
ED 50 70 10 31 33 4D C1 BC E2 43 72 90 F3 4A A6
38 A0 31 13 24 C2 E9 A7 AD 83 2C A1 AE 0A FD 22
0 - 7
0E DA 97 83 7E 2F 00 FC 7D DA CB C4 B8 B6 F6 A8
A0 49 B6 A6 9B F6 91 32 E9 76 36 5D 8D C7 C8 DA
client_write_key_ap =
8E 1D FA 06 71 F2 4A 2C 27 21 AB 3E EC 07 77 CF
4B 24 D2 03 53 97 36 DE 5C 42 3F D6 16 3B 64 88
0 - 7
AA D5 E5 F4 2D 36 90 60 B7 12 86 D7 50 93 1F 63
E8 24 68 57 BE 4C 6F 50 A6 55 4B E6 CC 3D 68 43
client_write_key_ap2 =
BE 7A 51 36 C3 6F CE 85 BE A3 C1 4E 4F FC 46 FD
CF 39 CF BA 81 81 6D FD 62 B8 27 3E 1F A4 BE 70
0 - 7
EE 62 99 FB 1C 84 16 C2 A8 33 6A 0C 14 2F D4 29
14 D6 24 53 7F 2A 5F 3E 3E 72 62 E1 40 E0 3C AD
server_write_key_ap =
62 74 1D 20 92 51 56 CF 05 96 42 64 58 74 0E EB
E2 95 9F 65 76 3A 9A 85 F6 C4 11 7E FD 87 FE A5
0 - 7
C7 D8 1C A5 6E A9 60 B8 05 1C A6 43 60 A0 DB 51
C2 7B 30 D7 CA DC F1 38 94 A9 C3 B2 4D 8E 6D AA
server_write_key_ap2 =
16 25 33 E3 6E 2D AB B7 BE D9 D4 3D 46 1F 7B 64
48 54 C2 80 D7 66 45 E7 A5 9F 24 E2 30 77 17 0E
0 - 7
58 3E CE 13 35 B3 79 30 CE 2C F4 AB FF 6C BE BD
75 43 C4 8A 09 4D 12 ED 30 7D B1 47 02 C3 52 94
6.3 MAGMA_L_FULL_PSKECDHE_W256_EPSK_HRR_RECORD
В таблице ниже приведены значения ключевых последовательностей, используемые в рамках работы протокола TLS 1.3 в соответствии со Сценарием 3 (см. 3.3).
Kroot
Seqnum
TLSTREE(Kroot)
client_write_key_hs =
DF 66 60 1E DD D6 4E 96 1D FC 7D D0 21 2E F2 25
C0 05 33 E6 DA A4 AD 24 18 5E BE B2 24 B5 46 B8
0 - 127
BD 00 9F FC 04 A0 52 9E 60 78 EB A5 A0 7A DE 74
93 7F F3 A1 AB 75 F7 AE 05 19 04 78 51 9B 6D F3
server_write_key_hs =
DB 61 9B 58 F4 41 1E 33 4F 07 EA C7 7C EF EF CA
78 41 F5 40 88 B8 D0 D5 CE 6A 62 C9 82 85 C6 81
0 - 127
3C 7D F3 5E AC F4 FE 71 EA 6A DC E0 DC 44 5D D3
A9 29 EF CD 08 3F 18 2F BD 51 42 BA 68 6D 38 84
client_write_key_ap =
EB D2 71 DE 19 FE E1 8B B1 99 8F 69 AF 5B 6A E1
89 58 E8 D3 70 2F 12 FB B5 B0 3F 6F D6 91 FE FA
0 - 127
86 2A 74 18 0B 4A E4 C2 D1 5F 4A 62 ED 8A 4A 75
B0 8D 72 B0 46 AF DE CB 3A 8E F0 C2 67 F4 56 BD
server_write_key_ap =
15 D9 2C 51 47 B2 13 10 ED ED F5 5B 3D 7A B7 76
81 7D 6F E2 FC F2 30 D7 E3 F2 92 75 F6 E2 42 EC
0 - 127
7B B8 81 55 35 98 DE F5 34 FC AF 9B 77 A3 35 5B
C3 BC A3 87 4D 67 40 F6 CB F5 C1 B6 D3 5C 65 ED
128 - 255
93 D5 D6 E1 03 6F DF B3 EF BF 31 E6 DA 5E EC E6
85 17 1C 97 7F F9 CD 6C 3A 3F 67 C0 22 4A B6 EB
6.4 KUZN_L_FULL_ECDHE_ED256_2AUTH_W256_W512
В таблице ниже приведены значения ключевых последовательностей, используемые в рамках работы протокола TLS 1.3 в соответствии со Сценарием 4 (см. 3.4).
Kroot
Seqnum
TLSTREE(Kroot)
client_write_key_hs =
27 22 9E 34 2C 64 D9 8B F9 0F 39 4F 7E DA 30 2F
6C D6 F4 0C 66 E6 C5 D9 24 FB A7 FA 99 8E FB 88
0 - 8191
1D 8B 7B 1C 7A 32 32 BB D0 26 17 2D 14 BE 2E 2F
4C D4 62 66 62 BD 6F F5 47 DF 6D B1 0E F5 C1 7C
server_write_key_hs =
A1 4D 12 D6 14 A6 EF EF 88 DC CF 88 CC 9C E1 54
18 69 76 70 CD 38 C5 00 66 53 85 F1 0F C3 87 60
0 - 8191
09 C0 3D 9A 7E 45 E7 AD FE E8 DF 83 58 66 F3 D3
E6 60 94 3A 82 2D C4 96 53 79 51 78 EA A3 DC EA
client_write_key_ap =
02 B2 B3 11 24 64 38 F9 6B 7F CB 52 F7 F5 7E 17
10 EF 0D E3 5C 2A 02 A8 12 48 F9 9A DF 58 FC 01
0 - 8191
6B B7 3A 38 15 EC 7E D5 BB AB 53 51 7A B1 7A 99
5C FF 37 63 40 24 F8 E6 69 EC 8F A0 9E 3B CB 75
server_write_key_ap =
42 A3 E8 95 5D 06 3A AB BF 84 22 10 0F 29 98 7C
1F BB 33 F5 1A 17 84 BD C3 7E A0 4D 97 68 BC F7
0 - 8191
7B 2F C4 EE B8 6F BE 53 97 1E 69 52 F1 7C FC 8C
7F F9 D1 84 7A 58 7E C4 14 8F DA F2 D7 1E 99 85
7 Контрольные примеры для работы протокола Record
Процесс обработки данных во время работы протокола Record одинаков для сервера и клиента. Способ фрагментации данных, длина данных и количество записей выбраны из условий удобства и наглядности.
Для выработки ключей защиты записей используется алгоритм TLSTREE в соответствии со Сценарием (см. раздел 6).
Для наглядности данные, которыми оперируют клиент и сервер, представлены слева и справа от вертикальной черты соответственно. При этом обозначения "------->" и "<-------" используются для указания на данные, пересылаемые по каналу связи клиентом и сервером соответственно.
7.1 KUZN_S_FULL_ECDHE_ED512_1AUTH_W256_NST_RECORD
7.1.1 Формирование защищенного Pre-handshake Application Data на стороне сервера
Отсылаются данные (23 байта) до ожидания Finished сообщения от клиента: "HELO gost.example.com\r\n".
Формирование защищенной записи с Application Data на стороне сервера:
<-------
ContentType: 23 (0x17)
ProtocolVersion: 0x0303
Length: 23 (0x0017)
Data: [...]
Формирование ключа защиты записи (см. 5.1.7 и 6.1):
Key: TLSTREE(server_write_key_ap, 0)
Nonce: 00 00 00 00 00 00 00 00
Значение nonce, сложенное с синхропосылкой server_write_iv_ap (см. 5.1.7):
Nonce XORed:
2F Е9 1F 71 18 35 40 26 31 7E 1A B4 D8 22 17 B8
Additional Data:
17 03 03 00 28
Незащищенная запись, представленная в виде структуры TLSInnerPlaintext:
Plaintext: 24 (0x0018) bytes
48 45 4C 4F 20 67 6F 73 74 2E 65 78 61 6D 70 6C |HELO gost.exampl|
65 2E 63 6F 6D 0D 0A 17 |e.com...|
Защищенная запись, представленная в виде структуры TLSCiphertext:
TLSCiphertext: 45 (0x002D) bytes
17 03 03 00 28 AB B8 C3 72 C7 96 81 DC E5 C3 C9
09 DD 03 9D 59 81 61 FD 3E 6C E5 D6 F9 CA 57 15
BD 6B 5C 18 24 7F B2 6A C1 AB 39 6A 4E
7.1.2 Формирование защищенной записи Application data с номером 2 на стороне сервера
Сервером отсылаются сообщения размером 1 Кбайт, состоящие из нулевых данных. Поле TLSInnerPlaintext дополнено до (214 + 1) байт.
Формирование защищенной записи на стороне сервера:
ContentType: 23 (0x17)
ProtocolVersion: 0x0303
Length: 1024 (0x0400) bytes
Фрагмент данных длины 1024 байта (1 Кбайт), передающийся в рамках протокола Application Data в записи с номером seqnum = 2:
Data:
00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[...]
000003F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Pad: 15360 bytes
Формирование ключа защиты записи (см. 5.1.7 и 6.1):
Key: TLSTREE(server_write_key_ap, 2)
Nonce: 00 00 00 00 00 00 00 02
Значение nonce, сложенное с синхропосылкой server_write_iv_ap (см. 5.1.7):
Nonce XORed:
2F Е9 1F 71 18 35 40 26 31 7E 1A B4 D8 22 17 BA
Additional Data:
17 03 03 40 11
Незащищенная запись, представленная в виде структуры TLSInnerPlaintext:
Plaintext: 16385 (0x4001) bytes
00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[...]
000003F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000400: 17 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000410: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[...]
00004000: 00
Защищенная запись, представленная в виде структуры TLSCiphertext:
TLSCiphertext: 16406 (0x4016) bytes
00000000: 17 03 03 40 11 9B 3A D6 93 9F 05 A4 03 EE B1 A6
00000010: 36 E1 39 89 D9 1C CA 6A 45 BE 5B 7C B5 C9 80 02
00000020: 06 27 A1 B2 AD 34 AC 4B 5A AE 5B D4 45 C9 1C 28
00000030: 32 5E 4C 71 49 18 8D 55 EF 27 01 6D 80 AF 44 07
00000040: 04 82 0B CE 22 CE 50 1E A6 19 A4 FF 7C D9 F7 22
00000050: A2 83 91 CE 8B B8 6B F8 7D 5A 85 55 5B EF 59 A9
00000060: C9 A1 57 2F 38 11 4E 64 FD 04 A0 DB 2E 17 87 A5
00000070: 85 EA 51 DC AB B9 5D AF B7 3D 0B 3F E3 F0 70 2C
00000080: 5E 1A A0 15 71 17 D8 84 78 3E 5E 61 13 F6 CA 83
00000090: 52 F6 CF 49 F9 DB 3B 3D AB 38 0B FD 7B E0 4B 0A
[...]
00003F80: 64 E7 02 7D 92 6E 0F 95 AB 7F 13 3B 59 21 F9 96
00003F90: A8 1E B6 7B 78 44 9D D3 2F 45 11 E0 13 20 65 24
00003FA0: AD 4A FA CF 0B 1C 16 22 28 2C B2 0A 96 5E 67 0C
00003FB0: C9 A1 7E 13 F3 43 AF 38 25 AF D5 8B 06 91 5B DC
00003FC0: 9E 49 47 7F 02 83 06 94 F5 AC 7C C9 9C 88 7F 62
00003FD0: CD AA EF 00 53 76 6F B1 2B C9 A0 82 C1 57 C3 47
00003FE0: 21 C5 40 0C 37 60 88 A6 60 EE 43 29 ED 64 5D 7C
00003FF0: 07 D4 DA 1A BD F6 F9 A1 B9 D5 1B F3 E0 9C FC C1
00004000: A5 9C D9 6F 07 FC 9A CF 00 4E A1 B2 0E 6B BD AD
00004010: 7B BF 0C 9E 2A 1B
<-------
7.1.3 Формирование защищенной записи Application data с номером 3 на стороне сервера
Сервером отсылаются сообщения размером 1 Кбайт, состоящие из нулевых данных. Поле TLSInnerPlaintext дополнено до (214 + 1) байт.
Формирование защищенной записи на стороне сервера:
ContentType: 23 (0x17)
ProtocolVersion: 0x0303
Length: 1024 (0x0400) bytes
Фрагмент данных длины 1024 байта (1 Кбайт), передающийся в рамках протокола Application Data в записи с номером seqnum = 3:
Data:
00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[...]
000003F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Pad: 15360 bytes
Формирование ключа защиты записи (см. 5.1.7 и 6.1):
Key: TLSTREE(server_write_key_ap, 3)
Nonce: 00 00 00 00 00 00 00 03
Значение nonce, сложенное с синхропосылкой server_write_iv_ap (см. 5.1.7):
Nonce XORed:
2F Е9 1F 71 18 35 40 26 31 7E 1A B4 D8 22 17 BB
Additional Data:
17 03 03 40 11
Незащищенная запись, представленная в виде структуры TLSInnerPlaintext:
Plaintext: 16385 (0x4001) bytes
00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[...]
000003F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000400: 17 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000410: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[...]
00004000: 00
Защищенная запись, представленная в виде структуры TLSCiphertext:
TLSCiphertext: 16406 (0x4016) bytes
00000000: 17 03 03 40 11 F0 6C 50 32 F8 A7 AD 58 CE D1 4D
00000010: 53 83 ED 96 9E 62 8D E4 F3 5C F9 B6 FC F5 04 7D
00000020: 9B 02 26 1F 56 F7 24 DE 96 1F 8F F9 C2 7A E7 6F
00000030: BA C0 A1 8E 96 AA 30 CA 7D 8E BA D5 B5 13 5A 09
00000040: 62 51 5C C4 F2 A1 6E BA B9 A0 88 86 ED 4E FD 9D
00000050: FA EC 15 8F 94 EF B0 F9 07 25 C9 11 4D 9D 8D 90
00000060: 4A 18 AB F1 84 E7 4B 07 15 0B 2F 2F 27 CB 80 32
00000070: 06 49 43 C9 57 11 E4 80 E4 F4 FC E8 E9 F0 20 D5
00000080: C9 04 89 E7 34 AE A1 0D 91 C7 09 7A EC 8C D6 D5
00000090: E3 EE C7 64 B0 CD 44 7F C0 77 35 F0 F8 D9 D4 90
[...]
00003F80: 3A 79 E7 B3 BC FD 2B 24 78 09 29 11 07 3A 7C C9
00003F90: 6A C6 26 C3 0D D0 A5 61 2D BB FF 26 E3 5A F0 BB
00003FA0: 5C EC 24 EE D3 91 10 05 33 FB 99 9D 48 73 ED 5D
00003FB0: 5E 46 93 C5 EE DC 3E CC 3C 6E FF 04 1B 0A 7F 42
00003FC0: 25 A1 09 2F 4A AD D9 A5 08 C7 A5 6C B1 3A 3F 33
00003FD0: E8 44 E2 8C 8A DC D4 52 50 F4 EE 29 83 4C 5C AA
00003FE0: C5 0B 5E BF 94 50 17 85 66 4E 78 AE 9B 5F DB FA
00003FF0: DF 73 0D ED 97 98 5D 65 91 35 F5 DA BA D8 83 FF
00004000: AC 60 46 A0 F6 29 88 1F 76 14 76 46 D8 E2 A8 67
00004010: 3B 14 29 56 21 F7
<-------
7.1.4 Формирование защищенной записи Application data с номером 8 на стороне сервера
Сервером отсылаются сообщения размером 1 Кбайт, состоящие из нулевых данных. Поле TLSInnerPlaintext дополнено до (214 + 1) байт.
Формирование защищенной записи на стороне сервера:
ContentType: 23 (0x17)
ProtocolVersion: 0x0303
Length: 1024 (0x0400) bytes
Фрагмент данных длины 1024 байта (1 Кбайт), передающийся в рамках протокола Application Data в записи с номером seqnum = 8:
Data:
00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[...]
000003F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Pad: 15360 bytes
Формирование ключа защиты записи (см. 5.1.7 и 6.1):
Key: TLSTREE(server_write_key_ap, 8)
Nonce: 00 00 00 00 00 00 00 08
Значение nonce, сложенное с синхропосылкой server_write_iv_ap (см. 5.1.7):
Nonce XORed:
2F E9 1F 71 18 35 40 26 31 7E 1A B4 D8 22 17 B0
Additional Data:
17 03 03 40 11
Незащищенная запись, представленная в виде структуры TLSInnerPlaintext:
Plaintext: 16385 (0x4001) bytes
00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[...]
000003F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000400: 17 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000410: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[...]
00004000: 00
Защищенная запись, представленная в виде структуры TLSCiphertext:
TLSCiphertext: 16406 (0x4016) bytes
00000000: 17 03 03 40 11 E3 DF 00 F1 69 A7 6F A1 9F E5 5F
00000010: A3 04 E0 A5 52 5A 28 FD BD 3D D4 CA 65 4B 89 14
00000020: 0E FD 69 E2 63 28 A6 5A 77 F5 D8 B2 E2 F7 35 68
00000030: F7 A6 77 E5 DF 8D 22 5F AA 8E D5 FE D9 8F 09 96
00000040: 3F F1 E8 21 61 81 59 5E 9F A6 98 9C CA BC 21 50
00000050: CA 66 8D 70 EA 8C B6 F6 2B CC 52 8D 26 B5 2F B2
00000060: 7A B7 0F 19 4A 30 E5 C9 08 5D 93 23 D3 87 45 09
00000070: 30 70 D1 56 50 52 46 80 45 F3 39 8D C5 BF 93 D6
00000080: A9 83 95 6E 1D 30 77 33 7B 77 3D AF 4B 9A 6B A5
00000090: BC 56 9A 25 1D 34 FE 23 DF 7B 93 43 A0 55 00 94
[...]
00003F80: 2B 51 6E E4 A4 97 1F D2 6E FB 92 93 98 14 35 E9
00003F90: FC C5 60 B6 18 B8 ED 0A 52 58 9E 73 42 C2 53 25
00003FA0: 11 C3 D7 C1 45 55 9B 81 19 BC 02 CB 22 CB F1 EB
00003FB0: 91 55 78 E8 46 88 06 B2 D0 72 8C 59 1B 61 73 54
00003FC0: CC 47 D5 1F F2 36 31 97 A5 59 01 8A D3 49 88 46
00003FD0: AD 16 7D D0 86 BD 12 EF 52 17 9D 45 AB F0 6C 28
00003FE0: 97 B0 C1 D8 AA D4 94 13 E0 CC C0 86 58 6D 53 7A
00003FF0: 29 6F 9C EE B7 E7 E1 DD 25 37 54 02 32 C6 BD 71
00004000: 61 9F C9 3B AE 3F D8 B0 C9 5E A9 91 5B 61 27 B9
00004010: 9F 87 88 45 41 F7
<-------
7.1.5 Формирование защищенной записи Application data с номером 9 на стороне сервера
Сервером отсылаются сообщения размером 1 Кбайт, состоящие из нулевых данных. Поле TLSInnerPlaintext дополнено до (214 + 1) байт.
Формирование защищенной записи на стороне сервера:
ContentType: 23 (0x17)
ProtocolVersion: 0x0303
Length: 1024 (0x0400) bytes
Фрагмент данных длины 1024 байта (1 Кбайт), передающийся в рамках протокола Application Data в записи с номером seqnum = 9:
Data:
00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[...]
000003F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Pad: 15360 bytes
Формирование ключа защиты записи (см. 5.1.7 и 6.1):
Key: TLSTREE(server_write_key_ap, 9)
Nonce: 00 00 00 00 00 00 00 09
Значение nonce, сложенное с синхропосылкой server_write_iv_ap (см. 5.1.7):
Nonce XORed:
2F E9 1F 71 18 35 40 26 31 7E 1A B4 D8 22 17 B1
Additional Data:
17 03 03 40 11
Незащищенная запись, представленная в виде структуры TLSInnerPlaintext:
Plaintext: 16385 (0x4001) bytes
00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[...]
000003F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000400: 17 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000410: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[...]
00004000: 00
Защищенная запись, представленная в виде структуры TLSCiphertext:
TLSCiphertext: 16406 (0x4016) bytes
00000000: 17 03 03 40 11 4A FC D1 25 7E 2C 8D 46 26 BC 0B
00000010: FB B3 0F 2F 9C A5 7A 9D 0D EC 09 0B 42 48 CA AD
00000020: DF E7 AA 4A EB 77 0F 28 53 84 FE A3 08 CA DE 2E
00000030: EF 31 81 48 C2 BE D4 87 0A BE E1 95 5C CA 41 CE
00000040: 83 44 C3 ED A4 7C 25 12 CD D1 9F D5 4C 7E 02 60
00000050: BB C7 BD 8D D1 EE 9D 4E BA DD 3D 79 15 D0 A0 29
00000060: D7 84 7C A0 5D 07 80 68 CC 8A 79 2F ED 69 A4 E6
00000070: 55 A6 E6 D2 2D A1 34 EC A2 BD EC A1 E5 9D 3A E7
00000080: 31 3E 45 E7 85 AF 89 A8 F1 89 0B FC C5 9F 03 F3
00000090: 9C 4F B2 33 7C 32 6D 94 FA 04 F5 54 86 19 D6 DC
[...]
00003F80: 79 B6 F5 6B 6E BF 8B 88 60 43 6E FF 9D 8F 03 CC
00003F90: 73 BD F4 46 D3 0F 91 8A F8 FF 8B A2 D0 78 D2 43
00003FA0: 1A C0 46 57 D7 87 12 03 F1 59 69 F1 60 82 0D 7D
00003FB0: FC A7 8F 65 FF 95 4C E5 54 9F 2C 78 AA 3A 08 85
00003FC0: 04 52 7F C5 61 B6 AE 06 02 0A 87 72 B7 5C E9 33
00003FD0: 6C AC 35 B5 36 A5 0D B2 69 30 BF A2 1E 9E B5 6E
00003FE0: A2 0E 39 CC 2B BB A6 6D 41 C2 E8 72 0A A0 14 3D
00003FF0: 29 8D 80 36 D7 B0 09 0A 02 14 F5 8C 5B 18 90 A7
00004000: 5B 47 83 82 03 95 E3 94 21 F4 35 7A 49 59 7E B0
00004010: 64 12 38 18 EA CE
<-------
7.1.6 Формирование защищенной записи Application data с номером 0 на стороне клиента
Клиентом отсылаются сообщения размером 1 Кбайт, состоящие из нулевых данных. Поле TLSInnerPlaintext дополнено до (214 + 1) байт.
Формирование защищенной записи на стороне клиента:
ContentType: 23 (0x17)
ProtocolVersion: 0x0303
Length: 1024 (0x0400) bytes
Фрагмент данных длины 1024 байта (1 Кбайт), передающийся в рамках протокола Application Data в записи с номером seqnum = 0:
Data:
00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[...]
000003F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Pad: 15360 bytes
Формирование ключа защиты записи (см. 5.1.7 и 6.1):
Key: TLSTREE(client_write_key_ap, 0)
Nonce: 00 00 00 00 00 00 00 00
Значение nonce, сложенное с синхропосылкой client_write_iv_ap (см. 5.1.7):
Nonce XORed:
31 09 57 EF 71 31 44 33 F5 76 CC 9B 00 AD 93 54
Additional Data:
17 03 03 40 11
Незащищенная запись, представленная в виде структуры TLSInnerPlaintext:
Plaintext: 16385 (0x4001) bytes
00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[...]
000003F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000400: 17 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000410: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[...]
00004000: 00
Защищенная запись, представленная в виде структуры TLSCiphertext:
TLSCiphertext: 16406 (0x4016) bytes
00000000: 17 03 03 40 11 EA 6C B6 52 C7 CB E6 B5 05 60 D0
00000010: 36 4D C9 4D 90 25 60 DF E5 5D 8B 83 C8 AA 91 9F
00000020: 5A 1E 54 92 E7 4C A5 15 6F 18 BE C8 EA B6 97 1C
00000030: AA 2D 2C 1F F1 46 EA 5F EF 5D 62 68 26 01 86 8F
00000040: FC D2 68 8F 34 83 89 9C 31 F6 BA 87 53 86 82 E7
00000050: F8 95 F6 53 C0 9B FE 95 AB F3 EE DF 7E BB 26 1C
00000060: CC 59 3D FC B0 04 F0 51 19 56 71 48 BB 35 F3 C7
00000070: B4 F0 97 13 A6 24 7A 04 7E F2 9B 05 F7 72 0E 37
00000080: 5A 6E 32 64 F4 79 22 EA EB E3 AA 6D 1E 80 83 28
00000090: 06 D5 F2 0E 7C 56 66 2A 71 28 B1 91 82 95 97 DB
[...]
00003F80: 6A 51 84 90 7D 9F F8 D3 FC 09 94 A3 C8 50 DD BC
00003F90: 2D 04 20 EB 66 EA 17 7F CD D7 8F 16 24 6E 20 76
00003FA0: 03 9C 52 56 04 F7 9A 00 7F 47 2A C7 A2 0A 45 74
00003FB0: 1B 9D 96 E3 8E 56 58 99 D4 0A 72 4B 8A 37 FF 68
00003FC0: 70 2B F9 A6 45 D0 49 62 BB C9 C6 6A 35 FF D2 19
00003FD0: A0 8A 38 5F E4 CD D0 A1 F3 F0 80 BE CD F0 1E 45
00003FE0: 68 C3 38 FA D2 C8 50 DF EA A9 8A 7F 1B 95 EC A1
00003FF0: 72 BA 7F 75 26 E3 BF F2 EF F2 39 5C E4 56 18 67
00004000: DC 9D E8 FD 10 F3 8B CA 1E 44 B0 20 7A F4 CC E8
00004010: 81 55 83 63 30 BC
<-------
7.1.7 Формирование защищенной записи Application data с номером 1 на стороне клиента
Клиентом отсылаются сообщения размером 1 Кбайт, состоящие из нулевых данных. Поле TLSInnerPlaintext дополнено до (214 + 1) байт.
Формирование защищенной записи на стороне клиента:
ContentType: 23 (0x17)
ProtocolVersion: 0x0303
Length: 1024 (0x0400) bytes
Фрагмент данных длины 1024 байта (1 Кбайт), передающийся в рамках протокола Application Data в записи с номером seqnum = 1:
Data:
00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[...]
000003F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Pad: 15360 bytes
Формирование ключа защиты записи (см. 5.1.7 и 6.1):
Key: TLSTREE(client_write_key_ap, 1)
Nonce: 00 00 00 00 00 00 00 01
Значение nonce, сложенное с синхропосылкой client_write_iv_ap (см. 5.1.7):
Nonce XORed:
31 09 57 EF 71 31 44 33 F5 76 CC 9B 00 AD 93 55
Additional Data:
17 03 03 40 11
Незащищенная запись, представленная в виде структуры TLSInnerPlaintext:
Plaintext: 16385 (0x4001) bytes
00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[...]
000003F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000400: 17 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000410: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[...]
00004000: 00
Защищенная запись, представленная в виде структуры TLSCiphertext:
TLSCiphertext: 16406 (0x4016) bytes
00000000: 17 03 03 40 11 0D 48 6A 03 D0 3A 02 02 96 EA 0A
00000010: D1 D6 84 A9 F4 AE 35 82 41 29 14 1D 34 34 CE E0
00000020: 64 FD 5E 96 6F 88 D6 E8 90 39 13 41 76 58 E4 6C
00000030: 49 B1 8B B0 CC B2 9B 66 3D 3F 38 0A 2C F9 E5 23
00000040: 4B CD 27 F3 A4 E1 2E BF 3A 3C 69 DB 76 61 B0 8F
00000050: C1 68 5F AD DE 50 F6 80 28 A6 E8 5E E1 27 29 D6
00000060: F9 CA D7 62 FF A6 BA B5 FC 94 AC 65 BA A3 68 85
00000070: DA F8 5C 9B 27 C6 8F 9E 97 AB 85 EC FA 76 0C DD
00000080: 22 F9 A8 C0 BA 60 97 D7 96 05 87 CA 70 88 34 51
00000090: 6D 95 88 59 2D D1 B8 E0 52 10 BA A6 40 FE 65 40
[...]
00003F80: 55 A9 C5 A6 55 7D 35 B8 F1 A9 80 4B FA 0F 27 89
00003F90: 3E DC 6A A0 35 0E 96 30 AF F6 C9 B0 6C 3C E0 1D
00003FA0: 5B E5 1E 87 EB FF AC 58 23 0D 07 4B E1 21 F0 77
00003FB0: 9D 08 F8 17 7A FF FB B3 6D CE FD D0 D0 69 68 73
00003FC0: A7 72 B9 A1 DA 73 C6 81 B0 F8 35 9E C1 C7 4B 6E
00003FD0: 04 52 09 5C 62 2C 4C 79 7F 45 0C AA 4F 26 97 5A
00003FE0: 31 1F 41 F3 1C 6A 61 77 47 29 8C C0 52 A6 37 6F
00003FF0: A4 61 91 65 8F EE 5B D8 D7 A9 98 E7 F1 2E 88 38
00004000: 73 65 BA AD 4B A4 90 11 47 33 FC 15 A5 81 48 E6
00004010: 18 64 84 82 1A 94
<-------
7.1.8 Формирование защищенной записи Application data с номером 8 на стороне клиента
Клиентом отсылаются сообщения размером 1 Кбайт, состоящие из нулевых данных. Поле TLSInnerPlaintext дополнено до (214 + 1) байт.
Формирование защищенной записи на стороне клиента:
ContentType: 23 (0x17)
ProtocolVersion: 0x0303
Length: 1024 (0x0400) bytes
Фрагмент данных длины 1024 байта (1 Кбайт), передающийся в рамках протокола Application Data в записи с номером seqnum = 8:
Data:
00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[...]
000003F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Pad: 15360 bytes
Формирование ключа защиты записи (см. 5.1.7 и 6.1):
Key: TLSTREE(client_write_key_ap, 8)
Nonce: 00 00 00 00 00 00 00 08
Значение nonce, сложенное с синхропосылкой client_write_iv_ap (см. 5.1.7):
Nonce XORed:
31 09 57 EF 71 31 44 33 F5 76 CC 9B 00 AD 93 5C
Additional Data:
17 03 03 40 11
Незащищенная запись, представленная в виде структуры TLSInnerPlaintext:
Plaintext: 16385 (0x4001) bytes
00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[...]
000003F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000400: 17 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000410: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[...]
00004000: 00
Защищенная запись, представленная в виде структуры TLSCiphertext:
TLSCiphertext: 16406 (0x4016) bytes
00000000: 17 03 03 40 11 F8 B5 73 2A 30 0C 8E F0 5F B7 12
00000010: A2 97 2F 4D B8 4B E7 83 A9 59 09 03 98 E9 89 51
00000020: 6B 6A 54 F3 33 33 10 49 28 31 86 BD 1C 42 EF D9
00000030: 80 03 A4 76 A2 40 8E AC E0 D7 04 7F B5 36 97 93
00000040: 86 C2 6B 55 23 F9 33 A4 F5 BD 70 48 B0 94 EC 5F
00000050: 56 27 ED FA 98 99 DE 1A F8 D9 A4 93 E4 81 BA 5D
00000060: A0 85 7B E1 5A 3F 21 CA 01 E2 20 92 15 9B AA 77
00000070: 05 69 CF BE 54 F6 53 BE FB 4A 8B 32 29 5D EF E9
00000080: 92 25 8F 45 81 25 7E 93 6A F5 49 E8 2D 54 EA 6C
00000090: 09 EF 0D 98 7B F3 A3 E8 45 3C 15 48 CE F1 C3 49
[...]
00003F80: 0E F4 E8 88 99 AA 34 81 AE DA E0 E2 57 44 9F 80
00003F90: A2 0C BD F0 70 EC 02 21 1B 6B 9C BA 92 48 B1 92
00003FA0: CF 75 C8 8A 08 5D BF F7 7A BC FB 1D 82 DA A4 21
00003FB0: 1B 48 7A 48 23 03 50 CB A4 F3 38 DD 0B FD 36 D8
00003FC0: AA C5 EE 70 94 56 B7 E3 17 C7 8E 71 98 FB 72 64
00003FD0: 5B 45 EE FD 3F 93 BF 1C 02 1F 9E 74 A2 ED 2B CC
00003FE0: 1C F5 D3 67 B5 53 C7 E7 E9 D8 0D D2 44 7C 7D 13
00003FF0: D0 34 5F EF 29 76 69 6D FE 57 9E 5F 71 74 0C 71
00004000: 31 24 CF BA D6 6C 7B B5 BC 21 AA AE 2F 1E 08 60
00004010: 5C 24 8A DA F8 BA
<-------
7.1.9 Формирование защищенной записи Application data с номером 9 на стороне клиента
Клиентом отсылаются сообщения размером 1 Кбайт, состоящие из нулевых данных. Поле TLSInnerPlaintext дополнено до (214 + 1) байт.
Формирование защищенной записи на стороне клиента:
ContentType: 23 (0x17)
ProtocolVersion: 0x0303
Length: 1024 (0x0400) bytes
Фрагмент данных длины 1024 байта (1 Кбайт), передающийся в рамках протокола Application Data в записи с номером seqnum = 9:
Data:
00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[...]
000003F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Pad: 15360 bytes
Формирование ключа защиты записи (см. 5.1.7 и 6.1):
Key: TLSTREE(client_write_key_ap, 9)
Nonce: 00 00 00 00 00 00 00 09
Значение nonce, сложенное с синхропосылкой client_write_iv_ap (см. 5.1.7):
Nonce XORed:
31 09 57 EF 71 31 44 33 F5 76 CC 9B 00 AD 93 5D
Additional Data:
17 03 03 40 11
Незащищенная запись, представленная в виде структуры TLSInnerPlaintext:
Plaintext: 16385 (0x4001) bytes
00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[...]
000003F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000400: 17 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000410: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[...]
00004000: 00
Защищенная запись, представленная в виде структуры TLSCiphertext:
TLSCiphertext: 16406 (0x4016) bytes
00000000: 17 03 03 40 11 C1 71 9B 62 D4 F5 E2 95 AB 8A 4A
00000010: 2C BD 6B BE F3 0F 07 29 7D 96 00 4E BA BE 31 50
00000020: 90 24 75 10 A6 BE E6 39 56 76 95 6B 42 49 B1 6B
00000030: 52 CE 9F E1 71 B1 F4 69 3F 48 B3 44 6D 48 A9 9B
00000040: 62 24 53 7F BB 9B C8 BF 54 AE A6 88 D2 1E 39 F1
00000050: 78 40 DB 9F 33 63 2E A1 96 92 2B 7E 15 D6 AE 08
00000060: 0F 9F 3B 33 F2 FA BE 63 BB 66 E2 1C 59 07 85 EF
00000070: AE BE 75 BB 1E 17 C9 E5 F5 8A 1B 1D 11 01 DE 95
00000080: F9 BF 34 6C 62 1C 63 CA BE B6 D7 24 5D B7 5F 18
00000090: DA 49 5F 12 9A 65 2C E6 B7 E0 FE 47 FB 21 0D 6A
[...]
00003F80: 2A F9 D5 15 B2 6C 3D 8F 37 F9 BF 5F 3A 76 6D 8B
00003F90: 03 18 9A 78 60 50 69 17 9F B9 CF 9B 1A 44 9D C0
00003FA0: 4F 0F E3 7E 67 FD F9 A0 34 1B 1F 0D 64 AA 28 71
00003FB0: D4 DF EF 10 EC 7D FE 74 75 CF E3 64 BB 4D 94 53
00003FC0: A9 F1 76 82 98 87 14 8F 3E 8C 0E EE 85 8F 9C 17
00003FD0: C0 B7 53 C1 45 D1 3B D2 A9 6B 23 82 2F 73 DC 6C
00003FE0: FD 62 3D E3 CB 70 F8 D5 07 E4 36 C2 0E 39 39 40
00003FF0: F3 A3 6C 91 3C 0B CD FE 67 2C 90 3C 55 22 AA 41
00004000: 0B 31 8D D1 26 8D 03 5C 59 D3 E1 1F F2 73 B1 D7
00004010: 71 5E 2F BF 3A CA
<-------
7.2 KUZN_S_RESUMP_POSTHANDSHAKE_W512_KEYUPDATE
Контрольные примеры для работы протокола Record в рамках соединения "KUZN_S_RESUMP_POSTHANDSHAKE_W512_KEYUPDATE по Сценарию 2" в настоящем документе не приводятся по причине специфики Сценария 2: "возобновление соединения" осуществляется на базе соединения "KUZN_S_FULL_ECDHE_ED512_1AUTH_W256_NST_RECORD. Сценарий 1" (см. 3.1).
7.3 MAGMA_L_FULL_PSKECDHE_W256_EPSK_HRR_RECORD
Сервером отсылаются сообщения размером 1 Кбайт, состоящие из нулевых данных. Поле TLSInnerPlaintext нулями не дополняется.
7.3.1 Формирование защищенной записи Application data с номером 0 на стороне сервера
Формирование защищенной записи на стороне сервера:
ContentType: 23 (0x17)
ProtocolVersion: 0x0303
Length: 1024 (0x0400) bytes
Фрагмент данных длины 1024 байта (1 Кбайт), передающийся в рамках протокола Application Data в записи с номером seqnum = 0:
Data:
00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[...]
000003F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Формирование ключа защиты записи (см. 5.3.9 и 6.3):
Key: TLSTREE(server_write_key_ap, 0)
Nonce: 00 00 00 00 00 00 00 00
Значение nonce, сложенное с синхропосылкой server_write_iv_ap (см. 5.3.9):
Nonce XORed:
71 2E 2F 11 CD 50 6E B9
Additional Data:
17 03 03 04 09
Незащищенная запись, представленная в виде структуры TLSInnerPlaintext:
Plaintext: 1025 (0x0401) bytes
00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[...]
000003F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000400: 17
Защищенная запись, представленная в виде структуры TLSCiphertext:
TLSCiphertext: 1038 (0x040E) bytes
00000000: 17 03 03 04 09 7C AA 82 03 9F 67 32 6C 2D 73 5E
00000010: E8 09 B5 77 50 94 5F 5C E2 B0 C4 7B 8E F1 EC AD
00000020: A3 D3 F1 AD 9E 3F BA 59 26 FD B2 B6 11 97 D0 8B
00000030: 8B 13 99 16 7B 6C 24 9C 90 C0 A3 10 14 52 FD 72
00000040: 07 8F BF B0 57 31 E0 62 15 01 93 95 DD CF 44 AA
00000050: 76 3D CB 1A CA 8B 3F 47 D0 33 FB A1 2E 7C 0F BB
00000060: 4D FB DA BD 8B 97 E9 96 E8 E3 62 31 BE 80 15 41
00000070: 2B 90 CC CF BB E2 BC 96 7E 59 7F C2 E7 B2 51 A9
00000080: BB EB AA 24 5B 63 13 93 87 20 3D B9 0B D1 BF 53
00000090: 00 A5 B5 77 BF 46 79 3D B1 AA 30 FE DF D1 E6 A5
[...]
00000370: E1 D5 58 16 BF D6 BF FB F6 E6 FB 23 D8 61 17 D2
00000380: 47 44 1B C2 11 D0 78 19 9C 1F 83 40 BE 80 8B A6
00000390: E5 BE 09 2B 9E 08 1E 95 D4 A5 76 72 A0 79 70 A6
000003A0: 1F EF 2F 4B 12 A0 F4 01 FA 30 B8 13 FE 7C D1 BF
000003B0: 88 14 85 15 73 81 B8 48 9E C3 62 96 C6 EE 75 38
000003C0: 0F B1 DA A1 B1 47 33 58 FD 87 AA 41 D5 DB A0 89
000003D0: F5 28 BD 5F 3B 41 B3 40 02 D9 45 D7 E0 C4 9E FA
000003E0: 54 A4 EF B0 DA 40 49 F5 F2 48 B3 F7 D4 6F EC 05
000003F0: A2 5B BE 0A 51 20 10 6B C2 1C 1E A2 5E FF 31 25
00000400: E0 79 CA 0F 7F FA 56 FD 89 C1 A8 0D A0 A3
<-------
7.3.2 Формирование защищенной записи Application data с номером 1 на стороне сервера
Формирование защищенной записи на стороне сервера:
ContentType: 23 (0x17)
ProtocolVersion: 0x0303
Length: 1024 (0x0400) bytes
Фрагмент данных длины 1024 байта (1 Кбайт), передающийся в рамках протокола Application Data в записи с номером seqnum = 1:
Data:
00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[...]
000003F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Формирование ключа защиты записи (см. 5.3.9 и 6.3):
Key: TLSTREE(server_write_key_ap, 1)
Nonce: 00 00 00 00 00 00 00 01
Значение nonce, сложенное с синхропосылкой server_write_iv_ap (см. 5.3.9):
Nonce XORed:
71 2E 2F 11 CD 50 6E B8
Additional Data:
17 03 03 04 09
Незащищенная запись, представленная в виде структуры TLSInnerPlaintext:
Plaintext: 1025 (0x0401) bytes
00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[...]
000003F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000400: 17
Защищенная запись, представленная в виде структуры TLSCiphertext:
TLSCiphertext: 1038 (0x040E) bytes
00000000: 17 03 03 04 09 DC 59 3F C6 FA FC 51 91 24 2B 63
00000010: 2E 14 45 04 A2 61 AE F3 32 97 0F F8 31 6F A4 DE
00000020: 50 7B FB 47 1E A8 3C 71 3F F9 50 79 10 78 FD 9A
00000030: 31 78 D0 26 82 66 E1 2B C9 70 FF B1 EE 4A 56 60
00000040: 0D F3 2A BF 9F A3 18 FF 45 C9 1C DE F4 2E 1C 1D
00000050: 45 00 59 72 9B 1B B6 92 5F 77 3A 1E 8F 30 4E 7A
00000060: B1 43 F0 FC 16 EF 16 BC 4E 0D F6 0D 76 DE 43 39
00000070: 0F 9C D2 57 DE D2 56 20 9B 16 75 37 8F E6 82 2C
00000080: BB 19 A5 36 20 BD 5B 24 02 82 CF 49 77 F1 C5 72
00000090: AB 3B 1D D6 CF 49 7F 27 57 28 6B 7E 49 CF 80 C7
[...]
00000370: EE 2E 29 D3 F7 96 40 D9 CA 3C 35 18 1B 9C E9 39
00000380: CA 16 A8 62 AC 46 04 24 B6 AE F6 B8 9D 53 34 06
00000390: 77 24 CC F2 46 6A 80 4F 09 FA B3 EB E7 37 F9 9C
000003A0: 64 98 EF F2 37 9C AD 65 96 C3 C3 52 F4 42 68 76
000003B0: 95 AC BC 4F B4 4B 5D 06 9F B6 66 05 E4 79 45 FE
000003C0: 2F 11 50 9F F7 B5 96 1B E8 AB 43 EC 20 60 D8 22
000003D0: A9 94 D9 7C 59 C8 05 8C 95 17 08 02 9A E0 BE DA
000003E0: 80 45 EC A0 25 FE 02 E6 D2 EF AF 13 20 20 12 E9
000003F0: E3 43 58 DE 79 E5 61 CC EC 8F 54 9E 70 07 3E E6
00000400: 93 8F 4A 1A AE 97 46 59 70 D6 52 60 60 4C
<-------
7.3.3 Формирование защищенной записи Application data с номером 128 на стороне сервера
Формирование защищенной записи на стороне сервера:
ContentType: 23 (0x17)
ProtocolVersion: 0x0303
Length: 1024 (0x0400) bytes
Фрагмент данных длины 1024 байта (1 Кбайт), передающийся в рамках протокола Application Data в записи с номером seqnum = 128:
Data:
00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[...]
000003F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Формирование ключа защиты записи (см. 5.3.9 и 6.3):
Key: TLSTREE(server_write_key_ap, 128)
Nonce: 00 00 00 00 00 00 00 80
Значение nonce, сложенное с синхропосылкой server_write_iv_ap (см. 5.3.9):
Nonce XORed:
71 2E 2F 11 CD 50 6E 39
Additional Data:
17 03 03 04 09
Незащищенная запись, представленная в виде структуры TLSInnerPlaintext:
Plaintext: 1025 (0x0401) bytes
00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[...]
000003F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000400: 17
Защищенная запись, представленная в виде структуры TLSCiphertext:
TLSCiphertext: 1038 (0x040E) bytes
00000000: 17 03 03 04 09 56 A7 E2 F3 25 41 DB 0E E1 56 3F
00000010: 8C A7 9E B1 29 31 92 E2 12 2B A8 A8 9A 6C F0 5B
00000020: 15 1D 20 5A EC EB 60 32 1D 0F 63 7A 98 88 08 14
00000030: BE F6 39 FC 08 A1 E8 22 2D 95 A5 4E 55 93 F8 BB
00000040: 9C F5 20 D3 FA 7D 38 D9 60 E0 06 65 BB 73 6A 7A
00000050: FF 49 D7 A7 BA D0 92 DD B1 71 46 55 ED F1 A9 A2
00000060: 4F 47 27 DA 7E 87 31 35 F2 A0 53 4F AF 78 25 EA
00000070: 99 40 1F E1 F0 1E 8C 42 46 D2 B5 5C EB E7 68 FA
00000080: 20 5B 3F 78 90 98 27 B9 12 C6 AA 9F DD E3 CF CA
00000090: 47 F2 D9 E2 E2 0F BE E9 60 6D 0E 01 05 A7 C9 7A
[...]
00000370: A7 2D 5F 8E 43 AB C1 39 84 59 3F 16 DC EC BE 7B
00000380: 26 AF 73 FD C8 2D 7B E1 F9 13 B8 46 D2 61 25 31
00000390: BA 0F 05 FF 0C 52 DE FC 86 74 AF 3A 1A E2 73 93
000003A0: FC 09 2D 45 DC D0 F7 1E 2B 54 B6 0E C6 18 C2 A4
000003B0: 5B E7 2E C1 9B 5F B2 63 C2 DC 78 0F F3 09 3F D5
000003C0: D2 F7 51 85 E4 37 BE 8B B3 E5 C2 6F 9E 0E 71 B3
000003D0: C5 D6 CC A2 E0 D2 F4 4B B1 AC DA 17 B1 89 F2 1E
000003E0: C9 7C 74 85 02 A2 15 5E 3A DC 3C CC 1B A1 4E EB
000003F0: 7C DA A0 18 25 3F CB 57 D5 3A 12 F5 48 C5 45 6C
00000400: DD A0 03 85 EE 1C 08 26 AB 58 E9 64 00 7C
<-------
7.3.4 Формирование защищенной записи Application data с номером 129 на стороне сервера
Формирование защищенной записи на стороне сервера:
ContentType: 23 (0x17)
ProtocolVersion: 0x0303
Length: 1024 (0x0400) bytes
Фрагмент данных длины 1024 байта (1 Кбайт), передающийся в рамках протокола Application Data в записи с номером seqnum = 129:
Data:
00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[...]
000003F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Формирование ключа защиты записи (см. 5.3.9 и 6.3):
Key: TLSTREE(server_write_key_ap, 129)
Nonce: 00 00 00 00 00 00 00 81
Значение nonce, сложенное с синхропосылкой server_write_iv_ap (см. 5.3.9):
Nonce XORed:
71 2E 2F 11 CD 50 6E 38
Additional Data:
17 03 03 04 09
Незащищенная запись, представленная в виде структуры TLSInnerPlaintext:
Plaintext: 1025 (0x0401) bytes
00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[...]
000003F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000400: 17
Защищенная запись, представленная в виде структуры TLSCiphertext:
TLSCiphertext: 1038 (0x040E) bytes
00000000: 17 03 03 04 09 EE 73 C4 CA E6 9F D3 0B C4 B3 A6
00000010: 6C A5 71 CD 9F 3C 7A A2 C2 BA 9F 42 8A 82 24 97
00000020: 20 F7 17 73 8F 8C 35 AC 77 45 B7 01 F3 B0 CE E9
00000030: 93 EB 2C FD AB 44 68 B2 22 97 A8 28 6C 25 72 DE
00000040: 36 6A C3 8B 70 47 1B 26 A1 EC 4F 19 D6 8E 7E DA
00000050: 0A 23 1C 3B D1 98 01 3F A0 5B AC 92 E7 74 A3 70
00000060: EB 10 C0 CB D9 15 BA CD 01 17 A8 85 80 4B 9A 47
00000070: 5B 44 A6 F3 E8 7D 7B CA 40 F3 F5 2E F4 AB 62 4B
00000080: 6E DD 30 94 F9 86 26 9E 40 9F 8B B7 6C EB 4B E2
00000090: 6D 4B 1A F5 4C 0A 14 D4 1C 29 1E B8 E1 81 F7 9A
[...]
00000370: 10 C4 01 A9 42 3D 02 80 4B 51 DD BF E5 92 52 94
00000380: AD EE 00 67 19 3F ED 8F 66 CB EE D9 47 58 73 B8
00000390: 8A 73 04 96 48 7E 8E 7F 45 FC 05 EE E9 C6 28 AF
000003A0: E9 23 66 96 F4 1A 15 05 AA 73 92 BF 71 C7 EE D3
000003B0: 78 03 50 13 AD E1 EF 07 DE 5A 02 30 66 9E 13 3E
000003C0: 0D 18 B6 C9 77 A7 FE 94 F4 D2 2A B2 9C BA A6 B5
000003D0: CD DB F4 B3 55 98 C0 00 7F 3B A6 9D 3F A2 73 0D
000003E0: F5 1D 86 7E 1E 47 CF DE 22 CA EA CD 4C 5A FD 97
000003F0: 08 8A EB 92 D1 2C E3 C6 85 C4 E5 17 73 0B 83 39
00000400: 4F C8 51 42 64 E2 F1 5E 51 CE 43 9D ED 1D
<-------
7.4 KUZN_L_FULL_ECDHE_ED256_2AUTH_W256_W512
Контрольные примеры для работы протокола Record в рамках соединения "KUZN_L_FULL_ECDHE_ED256_2AUTH_W256_W512 по Сценарию 4" в настоящих рекомендациях не приводятся.
8 Контрольные примеры для работы протокола TLS 1.3
Для наглядности данные, которыми оперируют клиент и сервер, представлены слева и справа от вертикальной черты соответственно. При этом обозначения "------->" и "<-------" используются для указания на данные, пересылаемые по каналу связи клиентом и сервером соответственно.
8.1 KUZN_S_FULL_ECDHE_ED512_1AUTH_W256_NST_RECORD
8.1.1 Сертификат сервера
Алгоритм проверки электронной цифровой подписи - в соответствии с ГОСТ Р 34.10-2012 и длиной ключа - 256 бит.
Идентификатор кривой сертификата сервера:
id-tc26-gost-3410-2012-256-paramSetB, OID "1.2.643.7.1.2.1.1.2".
Закрытый ключ сервера:
80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80
80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80
Certificate SEQUENCE
tbsCertificate: TBSCertificate SEQUENCE
version: [0] EXPLICIT Version INTEGER v3 (02) OPTIONAL
serialNumber: CertificateSerialNumber INTEGER 12345 (30:39)
signature: AlgorithmIdentifier SEQUENCE
algorithm: OBJECT IDENTIFIER 1.2.643.7.1.1.3.2 (id_tc26_signwithdigest_
gost3410_2012_256)
issuer: Name CHOICE rdnSequence
rdnSequence: RDNSequence SEQUENCE OF
0: RelativeDistinguishedName SET OF
0: AttributeTypeAndValue SEQUENCE
type: AttributeType OBJECT IDENTIFIER 2.5.4.3 (id_at_commonName)
value: [UNIV 19] AttributeValue ANY
13:10:67:6F:73:74:2E:65:78:61:6D:70:6C:65:2E:63
6F:6D
DEFINED BY id_at_commonName: CommonName CHOICE printableString
printableString: PrintableString gost.example.com
validity: Validity SEQUENCE
notBefore: Time CHOICE utcTime
utcTime: UTCTime 2020-02-28T11:08:37
notAfter: Time CHOICE utcTime
utcTime: UTCTime 2030-02-25T11:08:37
subject: Name CHOICE rdnSequence
rdnSequence: RDNSequence SEQUENCE OF
0: RelativeDistinguishedName SET OF
0: AttributeTypeAndValue SEQUENCE
type: AttributeType OBJECT IDENTIFIER 2.5.4.3 (id_at_commonName)
value: [UNIV 19] AttributeValue ANY
13:10:67:6F:73:74:2E:65:78:61:6D:70:6C:65:2E:63
6F:6D
DEFINED BY id_at_commonName: CommonName CHOICE printableString
printableString: PrintableString gost.example.com
subjectPublicKeyInfo: SubjectPublicKeyInfo SEQUENCE
algorithm: AlgorithmIdentifier SEQUENCE
algorithm: OBJECT IDENTIFIER 1.2.643.7.1.1.1.1 (id_tc26_gost3410_2012_256)
parameters: [UNIV 16] ANY OPTIONAL
30:0B:06:09:2A:85:03:07:01:02:01:01:02
DEFINED BY id_tc26_gost3410_2012_256: GostR34102012PublicKeyParameters
SEQUENCE
publicKeyParamSet: OBJECT IDENTIFIER 1.2.643.7.1.2.1.1.2 (id_tc26_
gost3410_2012_256_paramSetB)
subjectPublicKey: BIT STRING 528 bits
04:40:F3:83:CE:E8:30:48:B4:EB:14:C7:1A:7F:6D:E4
4A:37:CE:11:A6:AC:17:50:F1:CF:B8:DA:D8:A3:8C:CD
D8:FD:06:65:6F:7C:FC:07:5F:40:83:C3:71:62:21:47
8F:1E:E2:4C:6B:1B:70:CC:E3:C7:2A:FD:2A:CE:65:C7
75:BC
extensions: [3] EXPLICIT Extensions SEQUENCE OF OPTIONAL
0: Extension SEQUENCE
extnID: OBJECT IDENTIFIER 2.5.29.14 (id_ce_subjectKeyIdentifier)
extnValue: OCTET STRING 22 bytes
04:14:F3:30:FA:71:66:DF:09:5A:F3:A0:73:BC:3B:8E
A3:56:D7:DF:AC:71
DEFINED BY id_ce_subjectKeyIdentifier: SubjectKeyIdentifier OCTET
STRING 20 bytes
F3:30:FA:71:66:DF:09:5A:F3:A0:73:BC:3B:8E:A3:56
D7:DF:AC:71
signatureAlgorithm: AlgorithmIdentifier SEQUENCE
algorithm: OBJECT IDENTIFIER 1.2.643.7.1.1.3.2 (id_tc26_signwithdigest_
gost3410_2012_256)
signatureValue: BIT STRING 512 bits
AB:2E:DA:23:F4:9B:48:62:3B:0C:FF:59:06:B7:DD:3C
23:B4:73:57:0B:29:6A:08:71:DD:15:EF:9A:33:20:1B
97:90:4A:5C:FA:6C:93:1C:54:73:DC:0C:5A:5F:2F:BB
2E:50:CF:58:7A:E2:7C:4D:8E:52:EB:80:18:9D:D0:8B
Итоговое представление данных:
30 82 01 44 30 81 F2 A0 03 02 01 02 02 02 30 39
30 0A 06 08 2A 85 03 07 01 01 03 02 30 1B 31 19
30 17 06 03 55 04 03 13 10 67 6F 73 74 2E 65 78 |0...U....gost.ex|
61 6D 70 6C 65 2E 63 6F 6D 30 1E 17 0D 32 30 30 |ample.com0...200|
32 32 38 31 31 30 38 33 37 5A 17 0D 33 30 30 32 |228110837Z..3002|
32 35 31 31 30 38 33 37 5A 30 1B 31 19 30 17 06 |25110837Z0.1.0..|
03 55 04 03 13 10 67 6F 73 74 2E 65 78 61 6D 70 |.U....gost.examp|
6C 65 2E 63 6F 6D 30 5E 30 17 06 08 2A 85 03 07 |le.com0^0...*...|
01 01 01 01 30 0B 06 09 2A 85 03 07 01 02 01 01
02 03 43 00 04 40 F3 83 CE E8 30 48 B4 EB 14 C7
1A 7F 6D E4 4A 37 CE 11 A6 AC 17 50 F1 CF B8 DA
D8 A3 8C CD D8 FD 06 65 6F 7C FC 07 5F 40 83 C3
71 62 21 47 8F 1E E2 4C 6B 1B 70 CC E3 C7 2A FD
2A CE 65 C7 75 BC A3 21 30 1F 30 1D 06 03 55 1D
0E 04 16 04 14 F3 30 FA 71 66 DF 09 5A F3 A0 73
BC 3B 8E A3 56 D7 DF AC 71 30 0A 06 08 2A 85 03
07 01 01 03 02 03 41 00 AB 2E DA 23 F4 9B 48 62
3B 0C FF 59 06 B7 DD 3C 23 B4 73 57 0B 29 6A 08
71 DD 15 EF 9A 33 20 1B 97 90 4A 5C FA 6C 93 1C
54 73 DC 0C 5A 5F 2F BB 2E 50 CF 58 7A E2 7C 4D
8E 52 EB 80 18 9D D0 8B
8.1.2 Формирование сообщения ClientHello на стороне клиента
Формирование сообщения ClientHello:
ClientHello: 0x01
ProtocolVersion: 0x0303
Строка данных длины 32 байта, выработанная клиентом случайным образом:
Random: 32 bytes
03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03
03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03
SessionId: 0 bytes (0x00)
Выбранный криптонабор:
CipherSuite: 2 bytes (0x0002)
0xC105 (TLS_GOSTR341112_256_WITH_KUZNYECHIK_MGM_S)
CompressionMethods: 1 bytes (0x01)
00 (No compression)
Расширения:
Extension: supported_groups (0x000A)
Length: 4 bytes (0x0004)
0x0028 (GC512C)
Extension: signature_algorithms (0x000D)
Length: 16 bytes (0x0010)
0x0709 (GOSTR34102012256A)
0x070A (GOSTR34102012256B)
0x070B (GOSTR34102012256C)
0x070C (GOSTR34102012256D)
0x070D (GOSTR34102012512A)
0x070E (GOSTR34102012512B)
0x070F (GOSTR34102012512C)
Extension: supported_versions (0x002B)
Length: 3 bytes (0x0003)
0x0304 (TLS 1.3)
Extension: psk_key_exchange_modes (0x002D)
Lengths: 0x0002 0x01
Modes: 00 (psk_ke)
Открытый ключ клиента:
Extension: key_share (0x0033)
Length: 134 bytes (0x0086)
Group: 0x0028 (GC512C)
05 EE BD F3 DD C1 D2 F5 F3 82 24 33 24 12 84 E7
76 41 48 79 38 EA 88 72 1F 26 20 3E 97 92 B5 CB
97 EB 70 EF 02 E8 F7 2B 74 91 D4 F2 CF DC 33 2A
DF 7F 17 78 E8 54 A8 8D DC 21 13 FE C5 27 A1 51
71 A0 4C B0 C5 73 79 3A 7A EF 9B BC A4 86 B6 B0
46 B2 14 9B 46 F4 33 29 03 E5 B7 C4 38 AD D0 5E
18 5E FB F4 55 57 47 5A 8C CB F6 AC ED 1A 2E B4
16 F9 16 72 9D 7C EF 9C BD 83 34 98 93 04 AF AE
Итоговое сообщение ClientHello:
01 00 00 DE 03 03 03 03 03 03 03 03 03 03 03 03
03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03
03 03 03 03 03 03 00 00 02 C1 05 01 00 00 B3 00
0A 00 04 00 02 00 28 00 0D 00 10 00 0E 07 09 07
0A 07 0B 07 0C 07 0D 07 0E 07 0F 00 2B 00 03 02
03 04 00 2D 00 02 01 00 00 33 00 86 00 84 00 28
00 80 05 EE BD F3 DD C1 D2 F5 F3 82 24 33 24 12
84 E7 76 41 48 79 38 EA 88 72 1F 26 20 3E 97 92
B5 CB 97 EB 70 EF 02 E8 F7 2B 74 91 D4 F2 CF DC
33 2A DF 7F 17 78 E8 54 A8 8D DC 21 13 FE C5 27
A1 51 71 A0 4C B0 C5 73 79 3A 7A EF 9B BC A4 86
B6 B0 46 B2 14 9B 46 F4 33 29 03 E5 B7 C4 38 AD
D0 5E 18 5E FB F4 55 57 47 5A 8C CB F6 AC ED 1A
2E B4 16 F9 16 72 9D 7C EF 9C BD 83 34 98 93 04
AF AE
Формирование записи на стороне клиента:
ContentType: 22 (0x16)
ProtocolVersion: 0x0301
Length: 226 (0x00E2) bytes
Data: [...]
Итоговая запись на стороне клиента:
16 03 01 00 E2 01 00 00 DE 03 03 03 03 03 03 03
03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03
03 03 03 03 03 03 03 03 03 03 03 00 00 02 C1 05
01 00 00 B3 00 0A 00 04 00 02 00 28 00 0D 00 10
00 0E 07 09 07 0A 07 0B 07 0C 07 0D 07 0E 07 0F
00 2B 00 03 02 03 04 00 2D 00 02 01 00 00 33 00
86 00 84 00 28 00 80 05 EE BD F3 DD C1 D2 F5 F3
82 24 33 24 12 84 E7 76 41 48 79 38 EA 88 72 1F
26 20 3E 97 92 B5 CB 97 EB 70 EF 02 E8 F7 2B 74
91 D4 F2 CF DC 33 2A DF 7F 17 78 E8 54 A8 8D DC
21 13 FE C5 27 A1 51 71 A0 4C B0 C5 73 79 3A 7A
EF 9B BC A4 86 B6 B0 46 B2 14 9B 46 F4 33 29 03
E5 B7 C4 38 AD D0 5E 18 5E FB F4 55 57 47 5A 8C
CB F6 AC ED 1A 2E B4 16 F9 16 72 9D 7C EF 9C BD
83 34 98 93 04 AF AE
------->
8.1.3 Формирование сообщения ServerHello на стороне сервера
Формирование сообщения ServerHello:
ServerHello: 0x02
ProtocolVersion: 0x0303
Строка данных длины 32 байта, выработанная сервером случайным образом:
Random: 32 bytes
83 83 83 83 83 83 83 83 83 83 83 83 83 83 83 83
83 83 83 83 83 83 83 83 83 83 83 83 83 83 83 83
SessionId: 0 bytes (0x00)
Установленный криптонабор:
CipherSuite: 0xC105 (TLS_GOSTR341112_256_WITH_KUZNYECHIK_MGM_S)
CompressionMethod: 0x00 No compression
Extension: supported_versions (0x002B)
Length: 2 bytes (0x0002)
0x0304 (TLS 1.3)
Открытый ключ сервера:
Extension: key_share (0x0033)
Length: 132 bytes (0x0084)
Group: 0x0028 (GC512C)
2F 3C 66 3F E7 47 35 A1 C4 21 16 0D F0 F4 32 66
18 5F D3 0B 6E 5D 6E 88 FC 40 61 FA EA CA B3 38
B1 0A 1B D2 0C B0 B4 EE 75 7E 74 A0 02 7D 40 9F
E9 37 F0 16 33 A1 E3 F9 A5 51 8D EF D0 F8 9F 9D
3D 9F 6C C6 51 41 3D EC 2C 74 36 6D 83 C4 7E E1
DE 4E 42 1F 65 CD 11 63 E9 4E A0 C2 E1 9E D4 5D
35 55 8B 93 7D 9B FD C5 EC C2 B2 A2 1B 4E C3 D5
3B 29 57 9A 8F D5 E0 74 81 10 28 FB CF 17 99 4F
Итоговое сообщение ServerHello:
02 00 00 B6 03 03 83 83 83 83 83 83 83 83 83 83
83 83 83 83 83 83 83 83 83 83 83 83 83 83 83 83
83 83 83 83 83 83 00 C1 05 00 00 8E 00 2B 00 02
03 04 00 33 00 84 00 28 00 80 2F 3C 66 3F E7 47
35 A1 C4 21 16 0D F0 F4 32 66 18 5F D3 0B 6E 5D
6E 88 FC 40 61 FA EA CA B3 38 B1 0A 1B D2 0C B0
B4 EE 75 7E 74 A0 02 7D 40 9F E9 37 F0 16 33 A1
E3 F9 A5 51 8D EF D0 F8 9F 9D 3D 9F 6C C6 51 41
3D EC 2C 74 36 6D 83 C4 7E E1 DE 4E 42 1F 65 CD
11 63 E9 4E A0 C2 E1 9E D4 5D 35 55 8B 93 7D 9B
FD C5 EC C2 B2 A2 1B 4E C3 D5 3B 29 57 9A 8F D5
E0 74 81 10 28 FB CF 17 99 4F
Формирование записи на стороне сервера:
ContentType: 22 (0x16)
ProtocolVersion: 0x0303
Length: 186 (0x00BA) bytes
Data: [...]
<-------
Итоговая запись на стороне сервера:
16 03 03 00 BA 02 00 00 B6 03 03 83 83 83 83 83
83 83 83 83 83 83 83 83 83 83 83 83 83 83 83 83
83 83 83 83 83 83 83 83 83 83 83 00 C1 05 00 00
8E 00 2B 00 02 03 04 00 33 00 84 00 28 00 80 2F
3C 66 3F E7 47 35 A1 C4 21 16 0D F0 F4 32 66 18
5F D3 0B 6E 5D 6E 88 FC 40 61 FA EA CA B3 38 B1
0A 1B D2 0C B0 B4 EE 75 7E 74 A0 02 7D 40 9F E9
37 F0 16 33 A1 E3 F9 A5 51 8D EF D0 F8 9F 9D 3D
9F 6C C6 51 41 3D EC 2C 74 36 6D 83 C4 7E E1 DE
4E 42 1F 65 CD 11 63 E9 4E A0 C2 E1 9E D4 5D 35
55 8B 93 7D 9B FD C5 EC C2 B2 A2 1B 4E C3 D5 3B
29 57 9A 8F D5 E0 74 81 10 28 FB CF 17 99 4F
8.1.4 Формирование общего ECDHE-значения
ECDHE-ключ клиента и сервера формируется в соответствии с id-tc26-gost-3410-2012-512-paramSetC.
Закрытый ключ клиента для формирования ECDHE:
04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
Открытый ключ клиента для формирования ECDHE (см. 8.1.2):
05 EE BD F3 DD C1 D2 F5 F3 82 24 33 24 12 84 E7
76 41 48 79 38 EA 88 72 1F 26 20 3E 97 92 B5 CB
97 EB 70 EF 02 E8 F7 2B 74 91 D4 F2 CF DC 33 2A
DF 7F 17 78 E8 54 A8 8D DC 21 13 FE C5 27 A1 51
71 A0 4C B0 C5 73 79 3A 7А EF 9B BC A4 86 B6 B0
46 B2 14 9B 46 F4 33 29 03 E5 B7 C4 38 AD D0 5E
18 5E FB F4 55 57 47 5A 8C CB F6 AC ED 1A 2E B4
16 F9 16 72 9D 7C EF 9C BD 83 34 98 93 04 AF AE
Закрытый ключ сервера для формирования ECDHE:
AA 3C A4 F4 A5 0A C0 5B 37 42 B1 35 B5 30 A9 F2
2A E4 F5 E1 85 30 1D EC 83 2E 77 BA 3B CD 6A F1
84 84 84 84 84 84 84 84 84 84 84 84 84 84 84 84
84 84 84 84 84 84 84 84 84 84 84 84 84 84 84 04
Открытый ключ сервера для формирования ECDHE (см. 8.1.3):
2F 3C 66 3F E7 47 35 A1 C4 21 16 0D F0 F4 32 66
18 5F D3 0B 6E 5D 6E 88 FC 40 61 FA EA CA B3 38
B1 0A 1B D2 0C B0 B4 EE 75 7E 74 A0 02 7D 40 9F
E9 37 F0 16 33 A1 E3 F9 A5 51 8D EF D0 F8 9F 9D
3D 9F 6C C6 51 41 3D EC 2C 74 36 6D 83 C4 7E E1
DE 4E 42 1F 65 CD 11 63 E9 4E A0 C2 E1 9E D4 5D
35 55 8B 93 7D 9B FD C5 EC C2 B2 A2 1B 4E C3 D5
3B 29 57 9A 8F D5 E0 74 81 10 28 FB CF 17 99 4F
Выработанный общий ECDHE-ключ: на стороне клиента - на основе закрытого ключа клиента и открытого ключа сервера, на стороне сервера - на основе закрытого ключа сервера и открытого ключа клиента:
ECDHE =
4D E6 0D 21 EA 8F В9 22 0D 14 64 23 B4 90 DA 40
CC EB C4 3B C5 89 DB 79 B8 31 A4 7D 6B 06 30 07
DD 03 40 5A 1B 79 76 B6 23 DC AA 69 B0 11 AE 10
6E 7E 41 74 38 5F 86 26 E1 21 B5 99 43 63 C9 9F
8.1.5 Формирование защищенного сообщения EncryptedExtensions на стороне сервера
Далее на стороне сервера формируются сообщения, защищенные на ключах, выработанных из секретного значения server_handshake_traffic_secret (см. 5.1.2 и 5.1.3).
Формирование сообщения EncryptedExtensions:
EncryptedExtensions: 0x08
Empty
Итоговое сообщение EncryptedExtensions:
08 00 00 02 00 00
Формирование защищенной записи на стороне сервера:
ContentType: 22 (0x16)
ProtocolVersion: 0x0303
Length: 6 (0x0006)
Data: [...]
Формирование ключа защиты записи (см. 5.1.3 и 6.1):
Key: TLSTREE(server_write_key_hs, 0)
Nonce: 00 00 00 00 00 00 00 00
Значение nonce, сложенное с синхропосылкой server_write_iv_hs (см. 5.1.3):
Nonce XORed:
69 69 FF AA A4 52 52 81 EE BB EB 4C BD 0B 64 0E
Additional Data:
17 03 03 00 17
Незащищенная запись, представленная в виде структуры TLSInnerPlaintext:
Plaintext: 7 (0x0007) bytes
08 00 00 02 00 00 16
Защищенная запись, представленная в виде структуры TLSCiphertext:
TLSCiphertext: 28 (0x001C) bytes
17 03 03 00 17 94 0E 5D 2C 75 3A E5 FE BD 20 01
2C C9 E3 EB 24 A3 79 84 1E 02 AB BE
<-------
8.1.6 Формирование защищенного сообщения Certificate на стороне сервера
Формирование сообщения Certificate:
Certificate: 0x0B
Length: 328 (0x000148) bytes
30 82 01 44 30 81 F2 A0 03 02 01 02 02 02 30 39
30 0A 06 08 2A 85 03 07 01 01 03 02 30 1B 31 19
30 17 06 03 55 04 03 13 10 67 6F 73 74 2E 65 78 |0...U....gost.ex|
61 6D 70 6C 65 2E 63 6F 6D 30 1E 17 0D 32 30 30 |ample.com0...200|
32 32 38 31 31 30 38 33 37 5A 17 0D 33 30 30 32
32 35 31 31 30 38 33 37 5A 30 1B 31 19 30 17 06
03 55 04 03 13 10 67 6F 73 74 2E 65 78 61 6D 70 |.U....gost.examp|
6C 65 2E 63 6F 6D 30 5E 30 17 06 08 2A 85 03 07 |le.com0^0...*...|
01 01 01 01 30 0B 06 09 2A 85 03 07 01 02 01 01
02 03 43 00 04 40 F3 83 CE E8 30 48 B4 EB 14 C7
1A 7F 6D E4 4A 37 CE 11 A6 AC 17 50 F1 CF B8 DA
D8 A3 8C CD D8 FD 06 65 6F 7C FC 07 5F 40 83 C3
71 62 21 47 8F 1E E2 4C 6B 1B 70 CC E3 C7 2A FD
2A CE 65 C7 75 BC A3 21 30 1F 30 1D 06 03 55 1D
0E 04 16 04 14 F3 30 FA 71 66 DF 09 5A F3 A0 73
BC 3B 8E A3 56 D7 DF AC 71 30 0A 06 08 2A 85 03
07 01 01 03 02 03 41 00 AB 2E DA 23 F4 9B 48 62
3B 0C FF 59 06 B7 DD 3C 23 B4 73 57 0B 29 6A 08
71 DD 15 EF 9A 33 20 1B 97 90 4A 5C FA 6C 93 1C
54 73 DC 0C 5A 5F 2F BB 2E 50 CF 58 7A E2 1C 4D
8E 52 EB 80 18 9D D0 8B
No extensions: 0x0000
Итоговое сообщение Certificate:
0B 00 01 51 00 00 01 4D 00 01 48 30 82 01 44 30
81 F2 A0 03 02 01 02 02 02 30 39 30 0A 06 08 2A
85 03 07 01 01 03 02 30 1B 31 19 30 17 06 03 55
04 03 13 10 67 6F 73 74 2E 65 78 61 6D 70 6C 65 |....gost.example|
2E 63 6F 6D 30 1E 17 0D 32 30 30 32 32 38 31 31 |.com0...20022811|
30 38 33 37 5A 17 0D 33 30 30 32 32 35 31 31 30
38 33 37 5A 30 1B 31 19 30 17 06 03 55 04 03 13
10 67 6F 73 74 2E 65 78 61 6D 70 6C 65 2E 63 6F |.gost.example.co|
6D 30 5E 30 17 06 08 2A 85 03 07 01 01 01 01 30 |m0^0...*.......0|
0B 06 09 2A 85 03 07 01 02 01 01 02 03 43 00 04
40 F3 83 CE E8 30 48 B4 EB 14 C7 1A 7F 6D E4 4A
37 CE 11 A6 AC 17 50 F1 CF B8 DA D8 A3 8C CD D8
FD 06 65 6F 7C FC 07 5F 40 83 C3 71 62 21 47 8F
1E E2 4C 6B 1B 70 CC E3 C7 2A FD 2A CE 65 C7 75
BC A3 21 30 1F 30 1D 06 03 55 1D 0E 04 16 04 14
F3 30 FA 71 66 DF 09 5A F3 A0 73 BC 3B 8E A3 56
D7 DF AC 71 30 0A 06 08 2A 85 03 07 01 01 03 02
03 41 00 AB 2E DA 23 F4 9B 48 62 3B 0C FF 59 06
B7 DD 3C 23 B4 73 57 0B 29 6A 08 71 DD 15 EF 9A
33 20 1B 97 90 4A 5C FA 6C 93 1C 54 73 DC 0C 5A
5F 2F BB 2E 50 CF 58 7A E2 7C 4D 8E 52 EB 80 18
9D D0 8B 00 00
Формирование защищенной записи на стороне сервера:
ContentType: 22 (0x16)
ProtocolVersion: 0x0303
Length: 341 (0x0155) bytes
Data: [...]
Формирование ключа защиты записи (см. 5.1.3 и 6.1):
Key: TLSTREE(server_write_key_hs, 1)
Nonce: 00 00 00 00 00 00 00 01
Значение nonce, сложенное с синхропосылкой server_write_iv_hs (см. 5.1.3):
Nonce XORed:
69 69 FF AA A4 52 52 81 EE BB EB 4C BD 0B 64 0F
Additional Data:
17 03 03 01 66
Незащищенная запись, представленная в виде структуры TLSInnerPlaintext:
Plaintext: 342 (0x0156) bytes
0B 00 01 51 00 00 01 4D 00 01 48 30 82 01 44 30
81 F2 A0 03 02 01 02 02 02 30 39 30 0A 06 08 2A
85 03 07 01 01 03 02 30 1B 31 19 30 17 06 03 55
04 03 13 10 67 6F 73 74 2E 65 78 61 6D 70 6C 65 |....gost.example|
2E 63 6F 6D 30 1E 17 0D 32 30 30 32 32 38 31 31 |.com0...20022811|
30 38 33 37 5A 17 0D 33 30 30 32 32 35 31 31 30
38 33 37 5A 30 1B 31 19 30 17 06 03 55 04 03 13
10 67 6F 73 74 2E 65 78 61 6D 70 6C 65 2E 63 6F |.gost.example.co|
6D 30 5E 30 17 06 08 2A 85 03 07 01 01 01 01 30 |m0^0...*.......0|
0B 06 09 2A 85 03 07 01 02 01 01 02 03 43 00 04
40 F3 83 CE E8 30 48 B4 EB 14 C7 1A 7F 6D E4 4A
37 CE 11 A6 AC 17 50 F1 CF B8 DA D8 A3 8C CD D8
FD 06 65 6F 7C FC 07 5F 40 83 C3 71 62 21 47 8F
1E E2 4C 6B 1B 70 CC E3 C7 2A FD 2A CE 65 C7 75
BC A3 21 30 1F 30 1D 06 03 55 1D 0E 04 16 04 14
F3 30 FA 71 66 DF 09 5A F3 A0 73 BC 3B 8E A3 56
D7 DF AC 71 30 0A 06 08 2A 85 03 07 01 01 03 02
03 41 00 AB 2E DA 23 F4 9B 48 62 3B 0C FF 59 06
B7 DD 3C 23 B4 73 57 0B 29 6A 08 71 DD 15 EF 9A
33 20 1B 97 90 4A 5C FA 6C 93 1C 54 73 DC 0C 5A
5F 2F BB 2E 50 CF 58 7A E2 7C 4D 8E 52 EB 80 18
9D D0 8B 00 00 16
Защищенная запись, представленная в виде структуры TLSCiphertext:
TLSCiphertext: 363 (0x016B) bytes
17 03 03 01 66 F5 79 44 FE 9A 59 9A 76 E7 FE 9C
26 E3 FC E5 BB AC 4D DC F6 8E F2 E7 76 24 E3 3E
80 B6 74 3E 39 10 50 2E E4 19 A2 19 B3 BB 6A 17
12 D1 54 58 BB 89 7D 3D AC 7A 48 76 99 45 C8 92
37 DF B8 66 20 CC 31 C4 56 B4 37 4B 07 59 05 E4
2A B5 33 37 42 34 63 81 99 82 DC 6D 76 A0 67 C4
FD 83 BD 3E 47 9C D9 B7 FD 29 26 A5 A6 3B 1E 88
B1 52 5D B9 76 C7 F4 09 19 0F 95 5A E9 F0 AC 5F
97 6A 47 1F 23 67 5D EB 9B 24 E1 62 D2 4F 49 4E
CD C4 83 A0 70 71 29 F3 BD 17 D0 FA C4 94 4F 2B
3B F1 40 D6 16 D6 54 70 92 97 49 5B 23 89 88 93
B2 11 50 58 56 EE C1 A9 6B C4 DC F7 8A 01 67 98
E5 50 0D 66 2C 54 A7 4B DF 6A 7F 30 0A C9 B7 22
99 B4 F1 5F 6F 44 9F 39 6C E1 D0 C9 24 3C BC 1C
86 BE CD 5C AB BF DF 50 19 7B 7A FF 4B E9 03 D7
E3 31 1B 72 9B C3 2D 09 D2 D0 DC E0 66 22 98 5A
E0 37 DC 2F 87 CB 0C 49 2F 2D 51 06 B2 59 CC 86
E2 27 CC 83 38 C1 DF 6C 63 57 6B 17 DB 96 55 FD
25 5F 15 6E 1F 4F 76 7F AF B7 44 71 73 1E 42 25
25 68 18 DE 94 64 21 82 63 D7 CF 7B 87 EB 52 22
E7 6D E6 C9 51 E4 62 CC CC C5 3E 06 38 7B B4 FE
DE FD 34 B9 C1 3A B4 EE 3D 49 05 7C D2 67 2F 85
2A 5F 69 24 08 29 B9 23 41 CD C9
<-------
8.1.7 Формирование защищенного сообщения CertificateVerify на стороне сервера
Подписываются данные HMCertificateVerify (см. 4.1):
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
54 4C 53 20 31 2E 33 2C 20 73 65 72 76 65 72 20 |TLS 1.3, server |
43 65 72 74 69 66 69 63 61 74 65 56 65 72 69 66 |CertificateVerif|
79 00 |y.|
E0 CC 4B C1 4B EC 5D 13 19 2C DC 66 22 B4 FD A9
67 6A 1B 50 E4 56 83 0B B5 F0 7E 01 21 22 73 06
Случайные данные, использованные при подписи сертификата:
85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85
85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85
Формирование сообщения CertificateVerify:
CertificateVerify: 0x0F
SignatureScheme: 0x070A (GOSTR34102012256B)
Значение подписи:
Signature: 64 (0x0040) bytes
A0 AA 13 91 5C 5B 80 C6 02 E2 FD 85 80 4F 99 2C
77 15 97 AD 37 85 7A D6 BC 2A 9D 7B C5 FE BE C3
7C 72 94 BA A2 3C F6 9D 03 E4 71 0B D7 08 13 FD
AC 59 6B C1 58 E7 56 BD 37 1C 44 2E 95 22 DE 87
Итоговое сообщение CertificateVerify:
0F 00 00 44 07 0A 00 40 A0 AA 13 91 5C 5B 80 C6
02 E2 FD 85 80 4F 99 2C 77 15 97 AD 37 85 7A D6
BC 2A 9D 7B C5 FE BE C3 7C 72 94 BA A2 3C F6 9D
03 E4 71 0B D7 08 13 FD AC 59 6B C1 58 E7 56 BD
37 1C 44 2E 95 22 DE 87
Формирование защищенной записи на стороне сервера:
ContentType: 22 (0x16)
ProtocolVersion: 0x0303
Length: 72 (0x0048) bytes
Data: [...]
Формирование ключа защиты записи (см. 5.1.3 и 6.1):
Key: TLSTREE(server_write_key_hs, 2)
Nonce: 00 00 00 00 00 00 00 02
Значение nonce, сложенное с синхропосылкой server_write_iv_hs (см. 5.1.3):
Nonce XORed:
69 69 FF AA A4 52 52 81 EE BB EB 4C BD 0B 64 0C
Additional Data:
17 03 03 00 59
Незащищенная запись, представленная в виде структуры TLSInnerPlaintext:
Plaintext: 73 (0x0049) bytes
0F 00 00 44 07 0A 00 40 A0 AA 13 91 5C 5B 80 C6
02 E2 FD 85 80 4F 99 2C 77 15 97 AD 37 85 7A D6
BC 2A 9D 7B C5 FE BE C3 7C 72 94 BA A2 3C F6 9D
03 E4 71 0B D7 08 13 FD AC 59 6B C1 58 E7 56 BD
37 1C 44 2E 95 22 DE 87 16
Защищенная запись, представленная в виде структуры TLSCiphertext:
TLSCiphertext: 94 (0x005E) bytes
17 03 03 00 59 52 63 1D 5B FD F4 82 54 BD FB 5F
9E 02 A6 A5 27 01 63 BC E1 E0 D8 18 E8 D7 41 76
53 5C 6C DD 25 2D E0 65 AE 77 98 4A 65 AD BA 03
6D 59 CF 45 B9 A0 04 7B AB CC D0 B2 80 44 D3 4B
CF D0 9E 6E 46 27 04 4B 26 FE 5C A7 34 FC B0 86
07 14 6F 41 A8 71 C3 F9 53 84 B4 8A DA BC
<-------
8.1.8 Формирование защищенного сообщения Finished на стороне сервера
Вычисляется значение (см. 5.1.4):
FinishedHash =
HMAC(server_finished_key,Transcript-Hash(HMFinished)) =
E0 BA A3 36 14 E0 69 69 7E 4D FA B0 71 B9 72 57
73 F8 FE 1A 32 6A 66 2D 0F 52 30 9B 45 B6 E0 31
Формирование сообщения Finished на стороне сервера:
Finished: 0x14
verify_data: 32 (0x000020) bytes
E0 BA A3 36 14 E0 69 69 7E 4D FA B0 71 B9 72 57
73 F8 FE 1A 32 6A 66 2D 0F 52 30 9B 45 B6 E0 31
Итоговое сообщение Finished:
14 00 00 20 E0 BA A3 36 14 E0 69 69 7E 4D FA B0
71 B9 72 57 73 F8 FE 1A 32 6A 66 2D 0F 52 30 9B
45 B6 E0 31
Формирование защищенной записи на стороне сервера:
ContentType: 22 (0x16)
ProtocolVersion: 0x0303
Length: 36 (0x0024) bytes
Data: [...]
Формирование ключа защиты записи (см. 5.1.3 и 6.1):
Key: TLSTREE(server_write_key_hs, 3)
Nonce: 00 00 00 00 00 00 00 03
Значение nonce, сложенное с синхропосылкой server_write_iv_hs (см. 5.1.3):
Nonce XORed:
69 69 FF AA A4 52 52 81 EE BB EB 4C BD 0B 64 0D
Additional Data:
17 03 03 00 35
Незащищенная запись, представленная в виде структуры TLSInnerPlaintext:
Plaintext: 37 (0x0025) bytes
14 00 00 20 E0 BA A3 36 14 E0 69 69 7E 4D FA B0
71 B9 72 57 73 F8 FE 1A 32 6A 66 2D 0F 52 30 9B
45 B6 E0 31 16
Защищенная запись, представленная в виде структуры TLSCiphertext:
TLSCiphertext: 58 (0x003A) bytes
17 03 03 00 35 57 B1 70 6C 49 18 F6 7E AC CA 45
7F 7D 5B 53 7C CE 50 36 B4 00 4C 77 80 22 B9 7E
E8 02 32 03 98 11 94 04 50 66 80 AD D7 D6 А6 CD
7C 81 53 B7 55 3C 6E 64 6A D6
<-------
8.1.9 Формирование защищенного сообщения Finished на стороне клиента
При формировании сообщения Finished на стороне клиента вычисляется значение:
FinishedHash =
HMAC(client_finished_key,Transcript-Hash(HM2)) =
08 5F C7 FD 79 B6 D1 11 CD 8D 3F F6 B2 3A 06 5A
7A F7 A6 38 73 42 A5 F3 57 68 14 CD 00 47 19 D2
Формирование сообщения Finished:
Finished: 0x14
verify_data: 32 (0x000020) bytes
08 5F C7 FD 79 B6 D1 11 CD 8D 3F F6 B2 3A 06 5A
7A F7 A6 38 73 42 A5 F3 57 68 14 CD 00 47 19 D2
Итоговое сообщение Finished:
14 00 00 20 08 5F C7 FD 79 B6 D1 11 CD 8D 3F F6
B2 3A 06 5A 7A F7 A6 38 73 42 A5 F3 57 68 14 CD
00 47 19 D2
Формирование защищенной записи на стороне клиента:
ContentType: 22 (0x16)
ProtocolVersion: 0x0303
Length: 36 (0x0024) bytes
Data: [...]
Формирование ключа защиты записи (см. 5.1.3 и 6.1):
Key: TLSTREE(client_write_key_hs, 0)
Nonce: 00 00 00 00 00 00 00 00
Значение nonce, сложенное с синхропосылкой client_write_iv_hs (см. 5.1.3):
Nonce XORed:
43 9A 07 45 3D 0B EA 0C 1D 1B EB 73 8E B5 B8 DD
Additional Data:
17 03 03 00 35
Незащищенная запись, представленная в виде структуры TLSInnerPlaintext:
Plaintext: 37 (0x0025) bytes
14 00 00 20 08 5F C7 FD 79 B6 D1 11 CD 8D 3F F6
B2 3A 06 5A 7A F7 A6 38 73 42 A5 F3 57 68 14 CD
00 47 19 D2 16
Защищенная запись, представленная в виде структуры TLSCiphertext:
TLSCiphertext: 58 (0x003A) bytes
17 03 03 00 35 C9 C6 5E AA B4 A8 0E 04 84 9A 12
2E B0 CC 26 A9 CA 6B 5D D4 DB 7А D6 81 39 49 F6
29 FC 09 E0 52 2F F7 AC DB BA 93 92 6C 20 00 8B
8C CE 86 54 22 7B 31 D4 39 F8
------->
8.1.10 Формирование защищенного сообщения NewSessionTicket на стороне сервера
Формирование сообщения NewSessionTicket:
NewSessionTicket: 0x04
ticket_lifetime: 604800 sec (0x00093A80)
ticket_age_add: 2256963206 (0x86868686)
ticket_nonce: 8 (0x08) bytes
00 00 00 00 00 00 00 00
ticket: 32 (0x0020) bytes
88 88 88 88 88 88 88 88 88 88 88 88 88 88 88 88
88 88 88 88 88 88 88 88 88 88 88 88 88 88 88 88
No extensions: (0x0000)
Итоговое сообщение NewSessionTicket:
04 00 00 35 00 09 3A 80 86 86 86 86 08 00 00 00
00 00 00 00 00 00 20 88 88 88 88 88 88 88 88 88
88 88 88 88 88 88 88 88 88 88 88 88 88 88 88 88
88 88 88 88 88 88 88 00 00
Формирование защищенной записи на стороне сервера:
ContentType: 22 (0x16)
ProtocolVersion: 0x0303
Length: 57 (0x0039) bytes
Data: [...]
Формирование ключа защиты записи (см. 5.1.7 и 6.1):
Key: TLSTREE(server_write_key_ap, 1)
Nonce: 00 00 00 00 00 00 00 01
Значение nonce, сложенное с синхропосылкой server_write_iv_ap (см. 5.1.7):
Nonce XORed:
2F E9 1F 71 18 35 40 26 31 7E 1A B4 D8 22 17 B9
Additional Data:
17 03 03 00 4A
Незащищенная запись, представленная в виде структуры TLSInnerPlaintext:
Plaintext: 58 (0x003A) bytes
04 00 00 35 00 09 3A 80 86 86 86 86 08 00 00 00
00 00 00 00 00 00 20 88 88 88 88 88 88 88 88 88
88 88 88 88 88 88 88 88 88 88 88 88 88 88 88 88
88 88 88 88 88 88 88 00 00 16
Защищенная запись, представленная в виде структуры TLSCiphertext:
TLSCiphertext: 79 (0x004F) bytes
17 03 03 00 4A CA 66 88 A5 DC 22 20 8D C8 A8 DE
7E 59 72 92 E3 CB 5D 45 49 45 B8 F0 6C 7C 50 F1
82 3D 7B 6B B0 02 11 78 AE 3A DB 2D E3 99 45 39
FD 69 69 45 CF AA 69 19 F3 F1 29 4C D4 1E D2 A8
EA 75 30 28 69 AC B9 94 F3 92 0B 09 D6 71 86
<-------
8.1.11 Формирование оповещения Alert на стороне сервера
ИС МЕГАНОРМ: примечание.
Здесь и далее в официальном тексте документа, видимо, допущена опечатка: имеется в виду п. 5.1.7, а не 5.1.8.
Формирование записи на стороне сервера:
ContentType: 21 (0x15)
ProtocolVersion: 0x0303
Length: 2 (0x0002)
Data:
01 00
Формирование ключа защиты записи (см. 5.1.7 и 6.1):
Key: TLSTREE(server_write_key_ap, 10)
Nonce: 00 00 00 00 00 00 00 0A
Значение nonce, сложенное с синхропосылкой server_write_iv_ap (см. 5.1.8):
Nonce XORed:
2F E9 1F 71 18 35 40 26 31 7E 1A B4 D8 22 17 B2
Additional Data:
17 03 03 00 13
Незащищенная запись, представленная в виде структуры TLSInnerPlaintext:
Plaintext: 3 (0x0003) bytes
01 00 15
Защищенная запись, представленная в виде структуры TLSCiphertext:
TLSCiphertext: 24 (0x0018) bytes
17 03 03 00 13 7C BC 00 AD 5D 29 E3 01 73 93 94
D3 19 42 C6 A1 66 58 E9
<-------
8.1.12 Формирование оповещения Alert на стороне клиента
Формирование записи на стороне клиента:
ContentType: 21 (0x15)
ProtocolVersion: 0x0303
Length: 2 (0x0002)
Data:
01 00
Формирование ключа защиты записи (см. 5.1.8 и 6.1):
Key: TLSTREE(client_write_key_ap, 10)
Nonce: 00 00 00 00 00 00 00 0A
Значение nonce, сложенное с синхропосылкой client_write_iv_ap (см. 5.1.8):
Nonce XORed:
31 09 57 EF 71 31 44 33 F5 76 CC 9B 00 AD 93 5E
Additional Data:
17 03 03 00 13
Незащищенная запись, представленная в виде структуры TLSInnerPlaintext:
Plaintext: 3 (0x0003) bytes
01 00 15
Защищенная запись, представленная в виде структуры TLSCiphertext:
TLSCiphertext: 24 (0x0018) bytes
17 03 03 00 13 CB 19 F3 06 C3 64 17 54 BE 4F C9
53 90 DF 06 F9 CD 44 AA
------->
8.2 KUZN_S_RESUMP_POSTHANDSHAKE_W512_KEYUPDATE
8.2.1 Сертификат клиента
Алгоритм проверки электронной цифровой подписи - в соответствии с ГОСТ Р 34.10-2012 и длиной ключа - 512 бит.
Идентификатор кривой сертификата клиента:
id-tc26-gost-3410-12-512-paramSetA, OID "1.2.643.7.1.2.1.2.1".
Закрытый ключ клиента:
01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
Certificate SEQUENCE
. tbsCertificate: TBSCertificate SEQUENCE
. . version: [0] EXPLICIT Version INTEGER v3 (02) OPTIONAL
. . serialNumber: CertificateSerialNumber INTEGER 12345 (30:39)
. . signature: AlgorithmIdentifier SEQUENCE
. . . algorithm: OBJECT IDENTIFIER 1.2.643.7.1.1.3.3 (id_tc26_signwithdigest_
gost3410_2012_512)
. . issuer: Name CHOICE rdnSequence
. . . rdnSequence: RDNSequence SEQUENCE OF
. . . . 0: RelativeDistinguishedName SET OF
. . . . . 0: AttributeTypeAndValue SEQUENCE
. . . . . . type: AttributeType OBJECT IDENTIFIER 2.5.4.3 (id_at_commonName)
. . . . . . value: [UNIV 19] AttributeValue ANY
. . . . . . . 13:06:63:6C:69:65:6E:74
. . . . . . . DEFINED BY id_at_commonName: CommonName CHOICE printableString
. . . . . . . . printableString: PrintableString client
. . validity: Validity SEQUENCE
. . . notBefore: Time CHOICE utcTime
. . . . utcTime: UTCTime 2020-02-28T11:08:37
. . . notAfter: Time CHOICE utcTime
. . . . utcTime: UTCTime 2030-02-25T11:08:37
. . subject: Name CHOICE rdnSequence
. . . rdnSequence: RDNSequence SEQUENCE OF
. . . . 0: RelativeDistinguishedName SET OF
. . . . . 0: AttributeTypeAndValue SEQUENCE
. . . . . . type: AttributeType OBJECT IDENTIFIER 2.5.4.3 (id_at_commonName)
. . . . . . value: [UNIV 19] AttributeValue ANY
. . . . . . . 13:06:63:6C:69:65:6E:74
. . . . . . . DEFINED BY id_at_commonName: CommonName CHOICE printableString
. . . . . . . . printableString: PrintableString client
. . subjectPublicKeyInfo: SubjectPublicKeyInfo SEQUENCE
. . . algorithm: AlgorithmIdentifier SEQUENCE
. . . . algorithm: OBJECT IDENTIFIER 1.2.643.7.1.1.1.2 (id_tc26_gost3410_2012_512_signature)
. . . . parameters: [UNIV 16] ANY OPTIONAL
. . . . . 30:0B:06:09:2A:85:03:07:01:02:01:02:01
. . . . . DEFINED BY id_tc26_gost3410_2012_512_signature: GostR34102012PublicKe
yParameters SEQUENCE
. . . . . . publicKeyParamSet: OBJECT IDENTIFIER 1.2.643.7.1.2.1.2.1 (id_tc26_
gost3410_12_512_paramSetA)
. . . subjectPublicKey: BIT STRING 1048 bits
. . . . 04:81:80:20:A8:58:87:29:BF:24:72:F6:42:A8:6B:22
. . . . 40:85:E3:79:A5:75:35:FF:08:AF:74:2D:0A:80:C0:86
. . . . 30:2E:88:22:78:21:FA:34:D1:48:6E:DE:1B:89:4D:52
. . . . 69:1E:12:07:A2:DF:E0:C9:7B:CF:73:1B:36:89:3C:83
. . . . 2A:04:27:F6:B6:AA:EC:09:AC:1A:05:5C:62:FD:D3:FE
. . . . 04:DF:19:EA:89:92:44:D6:38:40:26:50:2F:11:8E:A4
. . . . F9:7E:A4:28:2E:15:CF:43:9E:0E:44:65:5F:39:BE:E1
. . . . 93:97:46:29:84:FA:15:8B:3D:7B:E5:E5:D5:FB:71:73
. . . . 9D:4B:C9
. . extensions: [3] EXPLICIT Extensions SEQUENCE OF OPTIONAL
. . . 0: Extension SEQUENCE
. . . . extnID: OBJECT IDENTIFIER 2.5.29.14 (id_ce_subjectKeyIdentifier)
. . . . extnValue: OCTET STRING 22 bytes
. . . . . 04:14:85:30:D9:D8:B6:8B:FC:24:88:4F:5F:5A:A0:8A
. . . . . D3:A5:41:37:6A:C4
. . . . . DEFINED BY id_ce_subjectKeyIdentifier: SubjectKeyIdentifier OCTET
STRING 20 bytes
. . . . . . 85:30:D9:D8:B6:8B:FC:24:88:4F:5F:5A:A0:8A:D3:A5
. . . . . . 41:37:6A:C4
. signatureAlgorithm: AlgorithmIdentifier SEQUENCE
. . algorithm: OBJECT IDENTIFIER 1.2.643.7.1.1.3.3 (id_tc26_signwithdigest_
gost3410_2012_512)
. signatureValue: BIT STRING 1024 bits
. . 69:63:DB:E9:97:43:6B:48:08:1B:44:7B:DD:7A:65:C4
. . 43:92:DD:1A:CE:66:06:63:AB:E3:79:CF:6A:02:4D:4C
. . DE:CE:95:5B:89:82:5A:16:C4:55:11:2E:CF:22:D2:54
. . EF:8D:59:7D:DC:9B:C8:74:70:C9:D6:86:C4:06:EA:74
. . 3A:47:0C:E7:F6:FA:56:C0:FA:03:3B:CE:EF:E7:17:BB
. . 49:CE:0B:94:17:5D:53:4C:60:6A:9F:0E:1A:B3:81:BE
. . 3B:9B:51:6E:FC:57:1A:66:DD:46:45:35:4D:89:F4:91
. . 70:C6:1B:6E:CF:7F:8A:08:32:61:8E:FE:20:D8:C8:0D
Итоговое представление данных:
30 82 01 B5 30 82 01 21 A0 03 02 01 02 02 02 30
39 30 0A 06 08 2A 85 03 07 01 01 03 03 30 11 31
0F 30 0D 06 03 55 04 03 13 06 63 6C 69 65 6E 74 |.0...U....client|
30 1E 17 0D 32 30 30 32 32 38 31 31 30 38 33 37 |0...200228110837
5A 17 0D 33 30 30 32 32 35 31 31 30 38 33 37 5A |Z..300225110837Z|
30 11 31 0F 30 0D 06 03 55 04 03 13 06 63 6C 69 |Z..300225110837Z|
65 6E 74 30 81 A0 30 17 06 08 2A 85 03 07 01 01 |0.1.0...U....cli|
01 02 30 0B 06 09 2A 85 03 07 01 02 01 02 01 03 |ent0..0...*.....|
81 84 00 04 81 80 20 A8 58 87 29 BF 24 72 F6 42
A8 6B 22 40 85 E3 79 A5 75 35 FF 08 AF 74 2D 0A
80 C0 86 30 2E 88 22 78 21 FA 34 D1 48 6E DE 1B
89 4D 52 69 1E 12 07 A2 DF E0 C9 7B CF 73 1B 36
89 3C 83 2A 04 27 F6 B6 AA EC 09 AC 1A 05 5C 62
FD D3 FE 04 DF 19 EA 89 92 44 D6 38 40 26 50 2F
11 8E А4 F9 7E A4 28 2E 15 CF 43 9E 0E 44 65 5F
39 BE E1 93 97 46 29 84 FA 15 8B 3D 7B E5 E5 D5
FB 71 73 9D 4B C9 A3 21 30 1F 30 1D 06 03 55 1D
0E 04 16 04 14 85 30 D9 D8 B6 8B FC 24 88 4F 5F
5A A0 8A D3 A5 41 37 6A C4 30 0A 06 08 2A 85 03
07 01 01 03 03 03 81 81 00 69 63 DB E9 97 43 6B
48 08 1B 44 7B DD 7A 65 C4 43 92 DD 1A CE 66 06
63 AB E3 79 CF 6A 02 4D 4C DE CE 95 5B 89 82 5A
16 C4 55 11 2E CF 22 D2 54 EF 8D 59 7D DC 9B C8
74 70 C9 D6 86 C4 06 EA 74 3A 47 0C E7 F6 FA 56
C0 FA 03 3B CE EF E7 17 BB 49 CE 0B 94 17 5D 53
4C 60 6A 9F 0E 1A B3 81 BE 3B 9B 51 6E FC 57 1A
66 DD 46 45 35 4D 89 F4 91 70 C6 1B 6E CF 7F 8A
08 32 61 8E FE 20 D8 C8 0D
8.2.2 Формирование сообщения ClientHello на стороне клиента
Формирование сообщения ClientHello:
ClientHello: 0x01
ProtocolVersion: 0x0303
Строка данных длины 32 байта, выработанная клиентом случайным образом:
Random: 32 (0x0020) bytes:
05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05
05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05
SessionId: 0 bytes (0x00)
Выбранный криптонабор:
CipherSuite: 2 bytes (0x0002)
0xC105 (TLS_GOSTR341112_256_WITH_KUZNYECHIK_MGM_S)
CompressionMethods: 1 bytes (0x01)
00 (No compression)
Расширения:
Extension: post_handshake_auth (0x0031)
Length: 0x00
Extension: supported_versions (0x002B)
Length: 3 bytes (0x0003)
0x0304 (TLS 1.3)
Extension: psk_key_exchange_modes (0x002D)
Lengths: 0x0002 0x01
Modes: 00 (psk_ke)
Extension: pre_shared_key (0x0029)
identities: 38 bytes (0x0026)
PskIdentity:
identity: 32 bytes (0x0020)
88 88 88 88 88 88 88 88 88 88 88 88 88 88 88 88
88 88 88 88 88 88 88 88 88 88 88 88 88 88 88 88
obfuscated_ticket_age: 0x86868872
Итоговое представление Truncate (ClientHello):
01 00 00 8B 03 03 05 05 05 05 05 05 05 05 05 05
05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05
05 05 05 05 05 05 00 00 02 C1 05 01 00 00 60 00
31 00 00 00 2B 00 03 02 03 04 00 2D 00 02 01 00
00 29 00 4B 00 26 00 20 88 88 88 88 88 88 88 88
88 88 88 88 88 88 88 88 88 88 88 88 88 88 88 88
88 88 88 88 88 88 88 88 86 86 88 72
Вычисление binder с использованием HMAC_binder_key (см. 5.2.4):
Hash(Truncate(ClientHello)) =
5C 1E 83 50 FC F5 4C B0 53 C2 53 5F F7 36 B2 23
44 6A 4B E3 47 AC 87 75 F9 7C A4 17 F8 0D 1D 0E
binder = HMAC(HMAC_binder_key, Hash(Truncate(ClientHello))) =
C3 6F 32 09 E3 25 97 56 7A C9 17 E2 7F 2A B3 7C
8C 4F A6 78 22 25 47 E1 AD CC 2C 41 38 DA 5F 3E
Дополнение расширений:
binders: 33 bytes (0x0021)
PskBinderEntry:
C3 6F 32 09 E3 25 97 56 7A C9 17 E2 7F 2A B3 7C
8C 4F A6 78 22 25 47 E1 AD CC 2C 41 38 DA 5F 3E
Итоговое сообщение ClientHello:
01 00 00 8B 03 03 05 05 05 05 05 05 05 05 05 05
05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05
05 05 05 05 05 05 00 00 02 C1 05 01 00 00 60 00
31 00 00 00 2B 00 03 02 03 04 00 2D 00 02 01 00
00 29 00 4B 00 26 00 20 88 88 88 88 88 88 88 88
88 88 88 88 88 88 88 88 88 88 88 88 88 88 88 88
88 88 88 88 88 88 88 88 86 86 88 72 00 21 20 C3
6F 32 09 E3 25 97 56 7A C9 17 E2 7F 2A B3 7C 8C
4F A6 78 22 25 47 E1 AD CC 2C 41 38 DA 5F 3E
Формирование записи на стороне клиента:
ContentType: 22 (0x16)
ProtocolVersion: 0x0301
Length: 143 (0x008F) bytes
Data: [...]
Итоговая запись на стороне клиента:
16 03 01 00 8F 01 00 00 8B 03 03 05 05 05 05 05
05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05
05 05 05 05 05 05 05 05 05 05 05 00 00 02 C1 05
01 00 00 60 00 31 00 00 00 2B 00 03 02 03 04 00
2D 00 02 01 00 00 29 00 4B 00 26 00 20 88 88 88
88 88 88 88 88 88 88 88 88 88 88 88 88 88 88 88
88 88 88 88 88 88 88 88 88 88 88 88 88 86 86 88
72 00 21 20 C3 6F 32 09 E3 25 97 56 7A C9 17 E2
7F 2A B3 7C 8C 4F A6 78 22 25 47 E1 AD CC 2C 41
38 DA 5F 3E
------->
8.2.3 Формирование сообщения ServerHello на стороне сервера
Формирование сообщения ServerHello:
ServerHello: 0x02
ProtocolVersion: 0x0303
Строка данных длины 32 байта, выработанная сервером случайным образом:
Random: 32 (0x0020) bytes
89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89
89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89
SessionId: 0 bytes (0x00)
Установленный криптонабор:
CipherSuite: 0xC105 (TLS_GOSTR341112_256_WITH_KUZNYECHIK_MGM_S)
CompressionMethod: 0x00 (No compression)
Расширения:
Extension: supported_versions (0x002B)
Length: 2 bytes (0x0002)
0x0304 (TLS 1.3)
Extension: pre_shared_key (0x0029)
Length: 2 (0x0002)
Selected identity: 0x0000
Итоговое сообщение ServerHello:
02 00 00 34 03 03 89 89 89 89 89 89 89 89 89 89
89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89
89 89 89 89 89 89 00 C1 05 00 00 0C 00 2B 00 02
03 04 00 29 00 02 00 00
Формирование записи на стороне сервера:
ContentType: 22 (0x16)
ProtocolVersion: 0x0303
Length: 56 (0x0038) bytes
Data: [...]
Итоговая запись на стороне сервера:
16 03 03 00 38 02 00 00 34 03 03 89 89 89 89 89
89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89
89 89 89 89 89 89 89 89 89 89 89 00 C1 05 00 00
0C 00 2B 00 02 03 04 00 29 00 02 00 00
<-------
8.2.4 Формирование защищенного сообщения EncryptedExtensions на стороне сервера
Далее на стороне сервера формируются сообщения, защищенные на ключах, выработанных из секретного значения server_handshake_traffic_secret.
Формирование сообщения EncryptedExtensions:
EncryptedExtensions: 0x08
Empty
Итоговое сообщение EncryptedExtensions:
08 00 00 02 00 00
<-------
Формирование защищенной записи на стороне сервера:
ContentType: 22 (0x16)
ProtocolVersion: 0x0303
Length: 6 (0x0006)
Data: [...]
Используемый ключ защиты записи (см. 5.2.6 и 6.2):
Key: TLSTREE(server_write_key_hs, 0)
Nonce: 00 00 00 00 00 00 00 00
Значение nonce, сложенное с синхропосылкой server_write_iv_hs (см. 5.2.6):
Nonce XORed:
7a Cf F0 C8 Fd Fa F3 06 84 18 15 A1 34 A7 75 20
Additional Data:
17 03 03 00 17
Незащищенная запись, представленная в виде структуры TLSInnerPlaintext:
Plaintext: 7 (0x0007) bytes
08 00 00 02 00 00 16
Защищенная запись, представленная в виде структуры TLSCiphertext:
TLSCiphertext: 28 (0x001C) bytes
17 03 03 00 17 A1 82 76 8C 59 07 1F 0B FD 80 5E
C8 49 4F 44 0B 83 73 AD 05 FE 22 FB
8.2.5 Формирование защищенного main-сообщения Finished на стороне сервера
Вычисляется значение (см. 5.2.7):
FinishedHash =
HMAC(server_finished_key,Transcript-Hash(HMFinishedServer)) =
E3 61 00 01 66 98 2B A6 68 3D 14 E9 30 DB 24 86
12 AF F7 C3 54 6B F7 BA 88 0D B6 0D C3 36 0A B2
Формирование сообщения Finished на стороне сервера:
Finished: 0x14
Verify_data: 32 (0x000020) bytes
E3 61 00 01 66 98 2B A6 68 3D 14 E9 30 DB 24 86
12 AF F7 C3 54 6B F7 BA 88 0D B6 0D C3 36 0A B2
Итоговое сообщение Finished:
14 00 00 20 E3 61 00 01 66 98 2B A6 68 3D 14 E9
30 DB 24 86 12 AF F7 C3 54 6B F7 BA 88 0D B6 0D
C3 36 0A B2
Формирование защищенной записи на стороне сервера:
ContentType: 22 (0x16)
ProtocolVersion: 0x0303
Length: 36 (0x0024) bytes
Data: [...]
Используемый ключ защиты записи (см. 5.2.6 и 6.2):
Key: TLSTREE(server_write_key_hs, 1)
Nonce: 00 00 00 00 00 00 00 01
Значение nonce, сложенное с синхропосылкой server_write_iv_hs (см. 5.2.6):
Nonce XORed:
7a Cf F0 C8 Fd Fa F3 06 84 18 15 A1 34 A7 75 21
Additional Data:
17 03 03 00 35
Незащищенная запись, представленная в виде структуры TLSInnerPlaintext:
Plaintext: 37 (0x0025) bytes
14 00 00 20 E3 61 00 01 66 98 2B A6 68 3D 14 E9
30 DB 24 86 12 AF F7 C3 54 6B F7 BA 88 0D B6 0D
C3 36 0A B2 16
Защищенная запись, представленная в виде структуры TLSCiphertext:
TLSCiphertext: 58 (0x003A) bytes
17 03 03 00 35 39 F6 CF A0 A5 AB 1F 99 31 F5 FA
97 23 C7 4C B7 B6 49 95 AB D2 01 0E 40 E6 02 28
02 E9 5C CB 09 BB 98 86 A9 D1 92 FA BB 2E CC 1C
A6 3D 8A E3 52 99 D8 BC 94 06
<-------
8.2.6 Формирование защищенного main-сообщения Finished на стороне клиента
Вычисляется значение (см. 5.2.7):
FinishedHash =
HMAC(client_finished_key,Transcript-Hash(HM2)) =
47 A6 DA E7 CF 92 40 AC C7 7A E5 BA BA 96 B0 D3
AB 6D 50 0A 44 58 84 24 FD 33 3F E3 FC 4A D9 0C
Формирование сообщения Finished на стороне клиента:
Finished: 0x14
Verify_data: 32 (0x000020) bytes
47 A6 DA E7 CF 92 40 AC C7 7A E5 BA BA 96 B0 D3
AB 6D 50 0A 44 58 84 24 FD 33 3F E3 FC 4A D9 0C
Итоговое сообщение Finished:
14 00 00 20 47 A6 DA E7 CF 92 40 AC C7 7A E5 BA
BA 96 B0 D3 AB 6D 50 0A 44 58 84 24 FD 33 3F E3
FC 4A D9 0C
Формирование защищенной записи на стороне клиента:
Используемый ключ защиты записи (см. 5.2.6 и 6.2):
Key: TLSTREE(client_write_key_hs, 0)
Nonce: 00 00 00 00 00 00 00 00
Значение nonce, сложенное с синхропосылкой client_write_iv_hs (см. 5.2.6):
Nonce XORed:
4C 3A 6C 73 E1 AD 4E 14 7E F2 42 22 C4 0E 90 3C
Additional Data:
17 03 03 00 35
Незащищенная запись, представленная в виде структуры TLSInnerPlaintext:
Plaintext: 37 (0x0025) bytes
14 00 00 20 47 A6 DA E7 CF 92 40 AC C7 7A E5 BA
BA 96 B0 D3 AB 6D 50 0A 44 58 84 24 FD 33 3F E3
FC 4A D9 0C 16
Защищенная запись, представленная в виде структуры TLSCiphertext:
TLSCiphertext: 58 (0x003A) bytes
17 03 03 00 35 E3 E4 69 BE 61 77 8B C4 0C D6 66
96 14 FF FB 03 5F F0 C2 11 52 CD 69 FD B0 37 6E
B0 55 95 8C A1 30 6A 1E B1 3C 13 98 E5 72 00 E7
F0 64 D9 07 65 AE ED E6 63 5E
------->
8.2.7 Формирование защищенного сообщения KeyUpdate на стороне сервера
Формирование сообщения KeyUpdate:
KeyUpdate: 0x18
Length: 1 (0x000001)
update_requested: 0x01
Итоговое сообщение KeyUpdate:
18 00 00 01 01
<-------
Формирование защищенной записи на стороне сервера:
ContentType: 22 (0x16)
Protocol Version: 0x0303
Length: 5 (0x0005)
Data: [...]
Используемый ключ защиты записи (см. 5.2.9 и 6.2):
Key: TLSTREE(server_write_key_ap, 0)
Nonce: 00 00 00 00 00 00 00 00
Значение nonce, сложенное с синхропосылкой server_write_iv_ap (см. 5.2.9):
Nonce XORed:
16 E1 4D 6F 63 41 91 37 7C 56 71 A4 6B 8E 25 40
Additional Data:
17 03 03 00 16
Незащищенная запись, представленная в виде структуры TLSInnerPlaintext:
Plaintext: 6 (0x0006) bytes
18 00 00 01 01 16
Защищенная запись, представленная в виде структуры TLSCiphertext:
TLSCiphertext: 27 (0x001B) bytes
17 03 03 00 16 98 84 28 3E 87 7C 47 84 29 66 52
13 9F 1D 46 B6 46 B2 79 2A 83 F8
8.2.8 Формирование защищенного сообщения CertificateRequest на стороне сервера
Формирование сообщения CertificateRequest:
CertificateRequest: 0x0D
certificate_request_context: 32 (0x0020) bytes
8A 8A 8A 8A 8A 8A 8A 8A 8A 8A 8A 8A 8A 8A 8A 8A
8A 8A 8A 8A 8A 8A 8A 8A 8A 8A 8A 8A 8A 8A 8A 8A
Extension: signature_algorithms (0x000D)
Length: 16 bytes (0x0010)
0x0709 (GOSTR34102012256A)
0x070A (GOSTR34102012256B)
0x070B (GOSTR34102012256C)
0x070C (GOSTR34102012256D)
0x070D (GOSTR34102012512A)
0x070E (GOSTR34102012512B)
0x070F (GOSTR34102012512C)
Итоговое сообщение CertificateRequest:
0D 00 00 37 20 8A 8A 8A 8A 8A 8A 8A 8A 8A 8A 8A
8A 8A 8A 8A 8A 8A 8A 8A 8A 8A 8A 8A 8A 8A 8A 8A
8A 8A 8A 8A 8A 00 14 00 0D 00 10 00 0E 07 09 07
0A 07 0B 07 0C 07 0D 07 0E 07 0F
<-------
Формирование защищенной записи на стороне сервера:
ContentType: 22 (0x16)
ProtocolVersion: 0x0303
Length: 59 (0x003B) bytes
Data: [...]
Используемый ключ защиты записи (см. 5.2.10 и 6.2):
Key: TLSTREE(server_write_key_ap2, 0)
Nonce: 00 00 00 00 00 00 00 00
Значение nonce, сложенное с синхропосылкой server_write_iv_ap2 (см. 5.2.10):
Nonce XORed:
52 0F 58 1D C3 40 B1 B8 CD 58 22 EA 5C 58 2E 76
Additional Data:
17 03 03 00 4C
Незащищенная запись, представленная в виде структуры TLSInnerPlaintext:
Plaintext: 60 (0x003C) bytes
0D 00 00 37 20 8A 8A 8A 8A 8A 8A 8A 8A 8A 8A 8A
8A 8A 8A 8A 8A 8A 8A 8A 8A 8A 8A 8A 8A 8A 8A 8A
8A 8A 8A 8A 8A 00 14 00 0D 00 10 00 0E 07 09 07
0A 07 0B 07 0C 07 0D 07 0E 07 0F 16
Защищенная запись, представленная в виде структуры TLSCiphertext:
TLSCiphertext: 81 (0x0051) bytes
17 03 03 00 4C 18 EB 66 37 20 3B B9 6B 2D E9 64
27 D7 84 6F F4 A1 60 98 30 B6 2C E8 B1 C7 7B 93
C6 7B FF 41 C6 3A F2 9E 77 5E FD 6B 36 63 A8 37
4C 9B C2 2B AC E4 D5 3A 39 3D EF FA 55 35 65 DD
31 71 F2 CA 32 27 75 98 4F A5 DA AE BA 23 56 D8
17
8.2.9 Формирование защищенного сообщения KeyUpdate на стороне клиента
Формирование сообщения KeyUpdate:
KeyUpdate: 0x18
Length: 1 (0x000001)
update_not_requested: 0x00
Итоговое сообщение KeyUpdate:
18 00 00 01 00
Формирование защищенной записи на стороне клиента:
ContentType: 22 (0x16)
ProtocolVersion: 0x0303
Length: 5 (0x0005)
Data: [...]
Используемый ключ защиты записи (см. 5.2.9 и 6.2):
Key: TLSTREE(client_write_key_ap, 0)
Nonce: 00 00 00 00 00 00 00 00
Значение nonce, сложенное с синхропосылкой client_write_iv_ap (см. 5.2.9):
Nonce XORed:
18 DA F6 CE A6 F5 A9 F4 98 44 AC A1 01 0B DB BD
Additional Data:
17 03 03 00 16
Незащищенная запись, представленная в виде структуры TLSInnerPlaintext:
Plaintext: 6 (0x0006) bytes
18 00 00 01 00 16
Защищенная запись, представленная в виде структуры TLSCiphertext:
TLSCiphertext: 27 (0x001B) bytes
17 03 03 00 16 BB E5 34 67 2B B2 75 7E A9 B4 A8
1F 50 12 FA 5D 4F D2 97 41 6F D8
------->
8.2.10 Формирование защищенного сообщения Certificate на стороне клиента
Формирование сообщения Certificate:
Certificate: 0x0B
certificate_request_context: 32 (0x0020) bytes
8A 8A 8A 8A 8A 8A 8A 8A 8A 8A 8A 8A 8A 8A 8A 8A
8A 8A 8A 8A 8A 8A 8A 8A 8A 8A 8A 8A 8A 8A 8A 8A
certificate_list, length=446
Certificate: 441 (0x0001B9) bytes
30 82 01 B5 30 82 01 21 A0 03 02 01 02 02 02 30
39 30 0A 06 08 2A 85 03 07 01 01 03 03 30 11 31
0F 30 0D 06 03 55 04 03 13 06 63 6C 69 65 6E 74
30 1E 17 0D 32 30 30 32 32 38 31 31 30 38 33 37
5A 17 0D 33 30 30 32 32 35 31 31 30 38 33 37 5A
30 11 31 0F 30 0D 06 03 55 04 03 13 06 63 6C 69
65 6E 74 30 81 A0 30 17 06 08 2A 85 03 07 01 01
01 02 30 0B 06 09 2A 85 03 07 01 02 01 02 01 03
81 84 00 04 81 80 20 A8 58 87 29 BF 24 72 F6 42
A8 6B 22 40 85 E3 79 A5 75 35 FF 08 AF 74 2D 0A
80 C0 86 30 2E 88 22 78 21 FA 34 D1 48 6E DE 1B
89 4D 52 69 1E 12 07 A2 DF E0 C9 7B CF 73 1B 36
89 3C 83 2A 04 27 F6 B6 AA EC 09 AC 1A 05 5C 62
FD D3 FE 04 DF 19 EA 89 92 44 D6 38 40 26 50 2F
11 8E A4 F9 7E A4 28 2E 15 CF 43 9E 0E 44 65 5F
39 BE E1 93 97 46 29 84 FA 15 8B 3D 7B E5 E5 D5
FB 71 73 9D 4B C9 A3 21 30 1F 30 1D 06 03 55 1D
0E 04 16 04 14 85 30 D9 D8 B6 8B FC 24 88 4F 5F
5A A0 8A D3 A5 41 37 6A C4 30 0A 06 08 2A 85 03
07 01 01 03 03 03 81 81 00 69 63 DB E9 97 43 6B
48 08 1B 44 7B DD 7A 65 C4 43 92 DD 1A CE 66 06
63 AB E3 79 CF 6A 02 4D 4C DE CE 95 5B 89 82 5A
16 C4 55 11 2E CF 22 D2 54 EF 8D 59 7D DC 9B C8
74 70 C9 D6 86 C4 06 EA 74 3A 47 0C E7 F6 FA 56
C0 FA 03 3B CE EF E7 17 BB 49 CE 0B 94 17 5D 53
4C 60 6A 9F 0E 1A B3 81 BE 3B 9B 51 6E FC 57 1A
66 DD 46 45 35 4D 89 F4 91 70 C6 1B 6E CF 7F 8A
08 32 61 8E FE 20 D8 C8 0D
Trailing zero length: 0x0000
Итоговое сообщение Certificate:
0B 00 01 E2 20 8A 8A 8A 8A 8A 8A 8A 8A 8A 8A 8A
8A 8A 8A 8A 8A 8A 8A 8A 8A 8A 8A 8A 8A 8A 8A 8A
8A 8A 8A 8A 8A 00 01 BE 00 01 B9 30 82 01 B5 30
82 01 21 A0 03 02 01 02 02 02 30 39 30 0A 06 08
2A 85 03 07 01 01 03 03 30 11 31 0F 30 0D 06 03
55 04 03 13 06 63 6C 69 65 6E 74 30 1E 17 0D 32
30 30 32 32 38 31 31 30 38 33 37 5A 17 0D 33 30
30 32 32 35 31 31 30 38 33 37 5A 30 11 31 0F 30
0D 06 03 55 04 03 13 06 63 6C 69 65 6E 74 30 81
A0 30 17 06 08 2A 85 03 07 01 01 01 02 30 0B 06
09 2A 85 03 07 01 02 01 02 01 03 81 84 00 04 81
80 20 A8 58 87 29 BF 24 72 F6 42 A8 6B 22 40 85
E3 79 A5 75 35 FF 08 AF 74 2D 0A 80 C0 86 30 2E
88 22 78 21 FA 34 D1 48 6E DE 1B 89 4D 52 69 1E
12 07 A2 DF E0 C9 7B CF 73 1B 36 89 3C 83 2A 04
27 F6 B6 AA EC 09 AC 1A 05 5C 62 FD D3 FE 04 DF
19 EA 89 92 44 D6 38 40 26 50 2F 11 8E A4 F9 7E
A4 28 2E 15 CF 43 9E 0E 44 65 5F 39 BE E1 93 97
46 29 84 FA 15 8B 3D 7B E5 E5 D5 FB 71 73 9D 4B
C9 A3 21 30 1F 30 1D 06 03 55 1D 0E 04 16 04 14
85 30 D9 D8 B6 8B FC 24 88 4F 5F 5A A0 8A D3 A5
41 37 6A C4 30 0A 06 08 2A 85 03 07 01 01 03 03
03 81 81 00 69 63 DB E9 97 43 6B 48 08 1B 44 7B
DD 7A 65 C4 43 92 DD 1A CE 66 06 63 AB E3 79 CF
6A 02 4D 4C DE CE 95 5B 89 82 5A 16 C4 55 11 2E
CF 22 D2 54 EF 8D 59 7D DC 9B C8 74 70 C9 D6 86
C4 06 EA 74 3A 47 0C E7 F6 FA 56 C0 FA 03 3B CE
EF E7 17 BB 49 CE 0B 94 17 5D 53 4C 60 6A 9F 0E
1A B3 81 BE 3B 9B 51 6E FC 57 1A 66 DD 46 45 35
4D 89 F4 91 70 C6 1B 6E CF 7F 8A 08 32 61 8E FE
20 D8 C8 0D 00 00
Формирование защищенной записи на стороне клиента:
ContentType: 22 (0x16)
ProtocolVersion: 0x0303
Length: 486 (0x01E6) bytes
Data: [...]
Используемый ключ защиты записи (см. 5.2.10 и 6.2):
Key: TLSTREE(client_write_key_ap2, 0)
Nonce: 00 00 00 00 00 00 00 00
Значение nonce, сложенное с синхропосылкой client_write_iv_ap2 (см. 5.2.10):
Nonce XORed:
08 98 11 AD 22 A5 94 06 A4 4F 7B 3D B4 75 C8 37
Additional Data:
17 03 03 01 F7
Незащищенная запись, представленная в виде структуры TLSInnerPlaintext:
Plaintext: 487 (0x01E7) bytes
0B 00 01 E2 20 8A 8A 8A 8A 8A 8A 8A 8A 8A 8A 8A
8A 8A 8A 8A 8A 8A 8A 8A 8A 8A 8A 8A 8A 8A 8A 8A
8A 8A 8A 8A 8A 00 01 BE 00 01 B9 30 82 01 B5 30
82 01 21 A0 03 02 01 02 02 02 30 39 30 0A 06 08
2A 85 03 07 01 01 03 03 30 11 31 0F 30 0D 06 03
55 04 03 13 06 63 6C 69 65 6E 74 30 1E 17 0D 32
30 30 32 32 38 31 31 30 38 33 37 5A 17 0D 33 30
30 32 32 35 31 31 30 38 33 37 5A 30 11 31 0F 30
0D 06 03 55 04 03 13 06 63 6C 69 65 6E 74 30 81
A0 30 17 06 08 2A 85 03 07 01 01 01 02 30 0B 06
09 2A 85 03 07 01 02 01 02 01 03 81 84 00 04 81
80 20 A8 58 87 29 BF 24 72 F6 42 A8 6B 22 40 85
E3 79 A5 75 35 FF 08 AF 74 2D 0A 80 C0 86 30 2E
88 22 78 21 FA 34 D1 48 6E DE 1B 89 4D 52 69 1E
12 07 A2 DF E0 C9 7B CF 73 1B 36 89 3C 83 2A 04
27 F6 B6 AA EC 09 AC 1A 05 5C 62 FD D3 FE 04 DF
19 EA 89 92 44 D6 38 40 26 50 2F 11 8E A4 F9 7E
A4 28 2E 15 CF 43 9E 0E 44 65 5F 39 BE E1 93 97
46 29 84 FA 15 8B 3D 7B E5 E5 D5 FB 71 73 9D 4B
C9 A3 21 30 1F 30 1D 06 03 55 1D 0E 04 16 04 14
85 30 D9 D8 B6 8B FC 24 88 4F 5F 5A A0 8A D3 A5
41 37 6A C4 30 0A 06 08 2A 85 03 07 01 01 03 03
03 81 81 00 69 63 DB E9 97 43 6B 48 08 1B 44 7B
DD 7A 65 C4 43 92 DD 1A CE 66 06 63 AB E3 79 CF
6A 02 4D 4C DE CE 95 5B 89 82 5A 16 C4 55 11 2E
CF 22 D2 54 EF 8D 59 7D DC 9B C8 74 70 C9 D6 86
C4 06 EA 74 3A 47 0C E7 F6 FA 56 C0 FA 03 3B CE
EF E7 17 BB 49 CE 0B 94 17 5D 53 4C 60 6A 9F 0E
1A B3 81 BE 3B 9B 51 6E FC 57 1A 66 DD 46 45 35
4D 89 F4 91 70 C6 1B 6E CF 7F 8A 08 32 61 8E FE
20 D8 C8 0D 00 00 16
Защищенная запись, представленная в виде структуры TLSCiphertext:
TLSCiphertext: 508 (0x01FC) bytes
17 03 03 01 F7 FD 30 F5 7A AE CF E9 E9 04 31 AF
BD 6B B2 00 B0 48 58 0F F5 63 81 A6 5C 36 68 04
8C 88 25 54 4A 0C 2B B9 CD 29 8D A4 60 6A F1 AE
44 07 3C BE 04 30 7E C4 71 55 D0 BE 5C 73 A3 31
71 68 C9 32 C1 93 3B 6B 5F 69 49 AA A7 6E 58 44
62 0C 75 B9 A1 47 19 B9 EE 7B 91 8C DA 53 60 67
1C AA F5 FA 4B A1 7A 78 7F 14 82 29 83 3A F8 30
0B C6 01 4E BC 4B F1 71 5A 9E 57 E2 3E 02 BD 6A
CE 6D BB E0 2E 11 98 99 3F D9 F9 D8 BA 5F 2A 62
CA 7B 0A 39 B3 AB 90 6C 54 BB 94 CF 16 D3 B9 D5
67 81 1B 66 78 18 61 25 08 FC 3B E4 DB E0 C5 8C
F7 64 B7 66 D5 2B C2 93 4C 50 A6 42 7F D3 3A E2
AF B1 74 DB 39 B3 5C DF 44 6D D6 9A 22 C5 48 DB
B4 54 09 7B 26 DA 73 A9 3B CF E4 3B 81 82 8B 24
F4 DE 75 71 D2 0E 56 FD 7C A8 14 B3 74 47 1F 1E
A9 53 05 04 29 68 57 58 E1 CC EB C5 61 E2 AA EA
DF 77 EA 60 BC 09 AA 8C 75 C9 10 6D 72 37 60 6C
6F 4E 82 09 B7 E5 C1 AC 30 04 0E 9F B3 86 5A 8A
F7 A5 B4 D1 92 BE C4 43 F7 0E 0E 62 D7 F8 BC 10
F9 59 41 5B 06 D3 86 25 05 CC 23 E8 D1 01 E1 93
D9 5F 1E D2 D8 65 CD 58 3D 6B BD 2C 1D D5 8D DF
3A EB 44 40 66 25 68 7A 97 99 B6 64 94 45 F0 D1
D6 A0 88 CB 96 8D 49 7B ED 5D 34 07 B1 E6 A0 BA
22 2D D2 0D E0 17 3B 07 30 D4 8C 70 0A 5F 39 00
3D D4 68 5E 99 58 E2 DF DF 5E 06 65 AE D0 4F 59
3B 43 D4 68 41 F2 75 00 3C 13 8B 43 98 7B 7B 53
CC B1 25 21 0D E0 C1 CC 8D 77 3B B2 A8 3A 89 40
42 AA 83 CF 75 8F 01 AC C8 AA 40 A2 3E 9A 9F 0F
FA B0 3A 61 FA 1A EC 5E C3 C8 60 4D 3C 81 63 E4
1C D9 74 9A 84 0F 2D 71 9E 67 E4 D7 6F E0 FD 59
1C 83 FB 0A A9 D3 15 66 B1 D0 13 9E 2D AE 7E 85
A3 88 32 62 DD 55 E1 99 32 B3 EC 34
------->
8.2.11 Формирование защищенного сообщения CertificateVerify на стороне клиента
Подписываются данные HMCertificateVerify (см. 4.2):
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
54 4C 53 20 31 2E 33 2C 20 63 6C 69 65 6E 74 20 |TLS 1.3, client |
43 65 72 74 69 66 69 63 61 74 65 56 65 72 69 66 |CertificateVerif|
79 00 |y.|
54 B9 44 B5 7A 56 30 C2 0E C9 E9 0B F3 8B BA DF
84 88 13 5C 29 9D F7 F5 26 54 31 00 8C D9 9D F6
Случайные данные, использованные при подписи сертификата:
07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07
07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07
07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07
07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07
Формирование сообщения CertificateVerify:
CertificateVerify: 0x0F
SignatureScheme: 0x070D (GOSTR34102012512A)
Signature: 128 (0x0080) bytes
02 D6 54 D4 E1 AD 72 8E 7B 68 48 E0 32 9E 5E 6B
8B 4D 89 E4 A2 03 A7 74 68 A5 0E E5 66 81 D3 00
62 33 AA C5 22 79 B8 89 6D 31 80 AD 80 B4 99 D6
16 43 2B 6D 85 37 F4 BF 9A B5 BD 02 00 0F 0D 94
4A 95 52 93 F0 79 9E A1 D0 D2 7C F8 E7 0D E8 47
5D BD 03 14 86 3A 1A 33 0F A2 22 72 8E E3 27 48
BF 3B 77 F9 7B EA 16 21 CE 58 A4 49 5E F0 2F 36
B7 2C 9B 05 B0 63 49 BA 27 67 01 E1 30 02 C7 B0
Итоговое сообщение CertificateVerify:
0F 00 00 84 07 0D 00 80 02 D6 54 D4 E1 AD 72 8E
7B 68 48 E0 32 9E 5E 6B 8B 4D 89 E4 A2 03 A7 74
68 A5 0E E5 66 81 D3 00 62 33 AA C5 22 79 B8 89
6D 31 80 AD 80 B4 99 D6 16 43 2B 6D 85 37 F4 BF
9A B5 BD 02 00 0F 0D 94 4A 95 52 93 F0 79 9E A1
D0 D2 7C F8 E7 0D E8 47 5D BD 03 14 86 3A 1A 33
0F A2 22 72 8E E3 27 48 BF 3B 77 F9 7B EA 16 21
CE 58 A4 49 5E F0 2F 36 B7 2C 9B 05 B0 63 49 BA
27 67 01 E1 30 02 C7 B0
Формирование защищенной записи на стороне клиента:
ContentType: 22 (0x16)
ProtocolVersion: 0x0303
Length: 136 (0x0088) bytes
Data: [...]
Используемый ключ защиты записи (см. 5.2.10 и 6.2):
Key: TLSTREE(client_write_key_ap2, 1)
Nonce: 00 00 00 00 00 00 00 01
Значение nonce, сложенное с синхропосылкой client_write_iv_ap2 (см. 5.2.10):
Nonce XORed:
08 98 11 AD 22 A5 94 06 A4 4F 7B 3D B4 75 C8 36
Additional Data:
17 03 03 00 99
Незащищенная запись, представленная в виде структуры TLSInnerPlaintext:
Plaintext: 137 (0x0089) bytes
0F 00 00 84 07 0D 00 80 02 D6 54 D4 E1 AD 72 8E
7B 68 48 E0 32 9E 5E 6B 8B 4D 89 E4 A2 03 A7 74
68 A5 0E E5 66 81 D3 00 62 33 AA C5 22 79 B8 89
6D 31 80 AD 80 B4 99 D6 16 43 2B 6D 85 37 F4 BF
9A B5 BD 02 00 0F 0D 94 4A 95 52 93 F0 79 9E A1
D0 D2 7C F8 E7 0D E8 47 5D BD 03 14 86 3A 1A 33
0F A2 22 72 8E E3 27 48 BF 3B 77 F9 7B EA 16 21
CE 58 A4 49 5E F0 2F 36 B7 2C 9B 05 B0 63 49 BA
27 67 01 E1 30 02 C7 B0 16
Защищенная запись, представленная в виде структуры TLSCiphertext:
TLSCiphertext: 158 (0x009E) bytes
17 03 03 00 99 BC 76 D3 AB 2F 6F 7F A9 33 5E CF
71 82 A4 D1 62 39 5C 29 29 87 43 B6 FF 72 44 CE
54 A2 7F 57 F6 A8 29 EE 10 9C DA 80 6A A8 D4 54
BD 5E B9 1C 06 56 6C 2B 11 B7 AA 1F 67 28 67 4C
9B 70 E6 92 6C A5 51 EF A2 49 CA EC F6 0A 2F 94
23 2D FC 84 37 CC 41 AB 66 8D DD 63 C8 47 69 29
7C 94 9B BF A1 6A 0C 82 81 36 50 21 63 20 1B 93
39 E9 99 7B EC 3A 8D 61 80 DB 81 23 44 CA C7 9B
D1 0A 25 BF FD 90 65 92 CF B9 D5 57 66 C9 2B 12
95 8F 10 EC 7D 99 3C 87 46 C2 C6 C8 D6 B7
------->
8.2.12 Формирование защищенного posthandshake-сообщения Finished на стороне клиента
Вычисляется значение (см. 5.2.10):
FinishedHash =
HMAC(client_finished_key2,Transcript-Hash(HMFinishedClient)) =
FB 55 C8 49 8A CF 1D 8D 01 F5 CD 6F 8C BA 0E 68
E9 B6 8A 32 A7 3C EB 18 33 31 13 16 B6 B2 0C B9
Формирование сообщения Finished на стороне клиента:
Finished: 0x14
Verify_data: 32 (0x000020) bytes
FB 55 C8 49 8A CF 1D 8D 01 F5 CD 6F 8C BA 0E 68
E9 B6 8A 32 A7 3C EB 18 33 31 13 16 B6 B2 0C B9
Итоговое сообщение Finished:
14 00 00 20 FB 55 C8 49 8A CF 1D 8D 01 F5 CD 6F
8C BA 0E 68 E9 B6 8A 32 A7 3C EB 18 33 31 13 16
B6 B2 0C B9
Формирование защищенной записи на стороне клиента:
ContentType: 22 (0x16)
ProtocolVersion: 0x0303
Length: 36 (0x0024) bytes
Data: [...]
Используемый ключ защиты записи (см. 5.2.10 и 6.2):
Key: TLSTREE(client_write_key_ap2, 2)
Nonce: 00 00 00 00 00 00 00 02
Значение nonce, сложенное с синхропосылкой client_write_iv_ap2 (см. 5.2.10):
Nonce XORed:
08 98 11 AD 22 A5 94 06 A4 4F 7B 3D B4 75 C8 35
Additional Data:
17 03 03 00 35
Незащищенная запись, представленная в виде структуры TLSInnerPlaintext:
Plaintext: 37 (0x0025) bytes
14 00 00 20 FB 55 C8 49 8A CF 1D 8D 01 F5 CD 6F
8C BA 0E 68 E9 B6 8A 32 A7 3C EB 18 33 31 13 16
B6 B2 0C B9 16
Защищенная запись, представленная в виде структуры TLSCiphertext:
TLSCiphertext: 58 (0x003A) bytes
17 03 03 00 35 B0 CC 60 5C 7A A2 7C 45 94 F6 45
CB 7E 79 E4 1A 7F CF ED 88 84 81 E3 7F 04 6C FA
2F 08 AD 5B 6E CA F7 D0 68 50 69 61 43 9B 4A 27
8B 2A AC A8 D9 58 9E 41 65 D5
------->
8.3 MAGMA_L_FULL_PSKECDHE_W256_EPSK_HRR_RECORD
8.3.1 Формирование сообщения ClientHello1 на стороне клиента
Формирование Truncate (ClientHello1):
ClientHello: 0x01
ProtocolVersion: 0x0303
Строка данных длины 32 байта, выработанная клиентом случайным образом:
Random: 32 (0x0020) bytes
01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
SessionId: 0 bytes (0x00)
Выбранный криптонабор:
CipherSuite: 2 bytes (0x0002)
0xC104 (TLS_GOSTR341112_256_WITH_MAGMA_MGM_L)
CompressionMethods: 1 bytes (0x01)
00 (No compression)
Расширения:
Extension: supported_groups (0x000A)
Length: 6 bytes (0x0006)
0x0023 (GC256B)
0x0028 (GC512C)
Extension: supported_versions (0x002B)
Length: 3 bytes (0x0003)
0x0304 (TLS 1.3)
Extension: psk_key_exchange_modes (0x002D)
Lengths: 0x0002 0x01
Modes: 01 (psk_dhe_ke)
Указание об использовании предварительно распределенного секрета ePSK:
Extension: key_share (0x0033)
Length: 2 bytes (0x0002)
Extension: pre_shared_key (0x0029)
identities: 10 bytes (0x000A)
PskIdentity:
identity: 4 (0x0004) bytes
65 50 53 4B |ePSK|
obfuscated_ticket_age: 0x00000000
Итоговое представление Truncate (ClientHello1):
01 00 00 7B 03 03 01 01 01 01 01 01 01 01 01 01
01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
01 01 01 01 01 01 00 00 02 C1 04 01 00 00 50 00
0A 00 06 00 04 00 23 00 28 00 2B 00 03 02 03 04
00 2D 00 02 01 01 00 33 00 02 00 00 00 29 00 2F
00 0A 00 04 65 50 53 4B 00 00 00 00
Вычисление binder с использованием HMAC_binder_key (см. 5.3.4):
Hash(Truncate(ClientHello1)) =
CC 9C A9 FC 18 DF 7A 2F 5F 63 27 D7 7B EA DC F1
A7 3D 80 97 7F EB EA B4 F0 D3 83 39 30 00 2B 8D
binders: 33 bytes (0x0021)
PskBinderEntry:
binder = HMAC(HMAC_binder_key, Hash(Truncate(ClientHello1))) =
6F 3A 0B 91 F2 94 5E F7 05 6D B7 43 02 BC 34 B6
DF 77 A8 8E 09 C5 87 50 8A B6 28 7C 6C 05 14 AD
Итоговое значение ClientHello1:
01 00 00 7B 03 03 01 01 01 01 01 01 01 01 01 01
01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
01 01 01 01 01 01 00 00 02 C1 04 01 00 00 50 00
0A 00 06 00 04 00 23 00 28 00 2B 00 03 02 03 04
00 2D 00 02 01 01 00 33 00 02 00 00 00 29 00 2F
00 0A 00 04 65 50 53 4B 00 00 00 00 00 21 20 6F
3A 0B 91 F2 94 5E F7 05 6D B7 43 02 BC 34 B6 DF
77 A8 8E 09 C5 87 50 8A B6 28 7C 6C 05 14 AD
Формирование записи на стороне клиента:
ContentType: 22 (0x16)
ProtocolVersion: 0x0301
Length: 127 (0x007F) bytes
Data: [...]
Итоговая запись на стороне клиента:
16 03 01 00 7F 01 00 00 7B 03 03 01 01 01 01 01
01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
01 01 01 01 01 01 01 01 01 01 01 00 00 02 C1 04
01 00 00 50 00 0A 00 06 00 04 00 23 00 28 00 2B
00 03 02 03 04 00 2D 00 02 01 01 00 33 00 02 00
00 00 29 00 2F 00 0A 00 04 65 50 53 4B 00 00 00 |..)./....ePSK...|
00 00 21 20 6F 3A 0B 91 F2 94 5E F7 05 6D B7 43
02 BC 34 B6 DF 77 A8 8E 09 C5 87 50 8A B6 28 7C
6C 05 14 AD
------->
8.3.2 Формирование сообщения HelloRetryRequest на стороне сервера
Формирование сообщения HelloRetryRequest:
ServerHello: 0x02
ProtocolVersion: 0x0303
Строка данных длины 32 байта, полученная путем применения функции хэширования SHA256 к строке "HelloRetryRequest":
Random: 32 bytes
CF 21 AD 74 E5 9A 61 11 BE 1D 8C 02 1E 65 B8 91
C2 A2 11 16 7A BB 8C 5E 07 9E 09 E2 C8 A8 33 9C
SessionId: 0 bytes (0x00)
Установленный криптонабор:
CipherSuite: 0xC104 (TLS_GOSTR341112_256_WITH_MAGMA_MGM_L)
CompressionMethod: 0x00 (No compression)
Расширения:
Extension: supported_versions (0x002B)
Length: 2 bytes (0x0002)
0x0304 (TLS 1.3)
Ключевой обмен:
Extension: key_share (0x0033)
Length: 2 bytes (0x0002)
Selected group: 0x0023 (GC256B)
Итоговое сообщение HelloRetryRequest:
02 00 00 34 03 03 CF 21 AD 74 E5 9A 61 11 BE 1D
8C 02 1E 65 B8 91 C2 A2 11 16 7A BB 8C 5E 07 9E
09 E2 C8 A8 33 9C 00 C1 04 00 00 0C 00 2B 00 02
03 04 00 33 00 02 00 23
Формирование записи на стороне сервера:
ContentType: 22 (0x16)
ProtocolVersion: 0x0303
Length: 56 (0x0038) bytes
Data: [...]
Итоговая запись на стороне сервера:
16 03 03 00 38 02 00 00 34 03 03 CF 21 AD 74 E5
9A 61 11 BE 1D 8C 02 1E 65 B8 91 C2 A2 11 16 7A
BB 8C 5E 07 9E 09 E2 C8 A8 33 9C 00 C1 04 00 00
0C 00 2B 00 02 03 04 00 33 00 02 00 23
<-------
8.3.3 Формирование сообщения ClientHello2 на стороне клиента
Формирование Truncate (ClientHello2):
ClientHello: 0x01
ProtocolVersion: 0x0303
Строка данных длины 32 байта, выработанная клиентом случайным образом:
Random: 32 (0x0020) bytes
01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
SessionId: 0 bytes (0x00)
Выбранный криптонабор:
CipherSuite: 2 bytes (0x0002)
0xC104 (TLS_GOSTR341112_256_WITH_MAGMA_MGM_L)
CompressionMethods: 1 bytes (0x01)
00 (No compression)
Расширения:
Extension: supported_groups (0x000A)
Length: 6 bytes (0x0006)
0x0023 (GC256B)
0x0028 (GC512C)
Extension: supported_versions (0x002B)
Length: 3 bytes (0x0003)
0x0304 (TLS 1.3)
Extension: psk_key_exchange_modes (0x002D)
Lengths: 0x0002 0x01
Modes: 01 (psk_dhe_ke)
Открытый ключ клиента:
Extension: key_share (0x0033)
Length: 70 bytes (0x0046)
Group: 0x0023 (GC256B)
D3 5A A7 95 C4 52 45 09 49 59 1D 60 E7 D5 C0 76
05 6D 66 46 F3 B8 07 08 CD C2 E7 03 4D E8 5F 68
D1 12 2D C3 2A 3B 98 6D 40 FF 91 06 22 A0 6C 12
26 D9 EC 3A 7D 3A 52 E0 A3 7C 28 2C 47 60 2A 43
Указание об использовании предварительно распределенного секрета ePSK:
Extension: pre_shared_key (0x0029)
identities: 10 bytes (0x000A)
PskIdentity:
identity: 4 (0x0004) bytes
65 50 53 4B |ePSK|
obfuscated_ticket_age: 0x00000000
Итоговое представление Truncate (ClientHello2):
01 00 00 BF 03 03 01 01 01 01 01 01 01 01 01 01
01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
01 01 01 01 01 01 00 00 02 C1 04 01 00 00 94 00
0A 00 06 00 04 00 23 00 28 00 2B 00 03 02 03 04
00 2D 00 02 01 01 00 33 00 46 00 44 00 23 00 40
D3 5A A7 95 C4 52 45 09 49 59 1D 60 E7 D5 C0 76
05 6D 66 46 F3 B8 07 08 CD C2 E7 03 4D E8 5F 68
D1 12 2D C3 2A 3B 98 6D 40 FF 91 06 22 A0 6C 12
26 D9 EC 3A 7D 3A 52 E0 A3 7C 28 2C 47 60 2A 43
00 29 00 2F 00 0A 00 04 65 50 53 4B 00 00 00 00
Вычисление binder с использованием HMAC_binder_key (см. 5.3.4):
BinderMsg = FE 00 00 20 | |
Hash(ClientHello1) | |
HelloRetryRequest | |
Truncate(ClientHello2)
Hash(BinderMsg) =
73 7C 63 74 1B 3A EA DF C8 73 DF 6E EA 81 19 32
BF CE 93 4F AA 85 84 F1 44 F8 77 13 E0 D0 CA 32
binders: 33 bytes (0x0021)
PskBinderEntry:
binder = HMAC(HMAC_binder_key, Hash(BinderMsg)) =
0B F7 4A A3 93 3B 7D 1A 66 96 1B 6E 2C FB 6A 28
04 D6 96 BB 60 77 10 E3 F5 6D DA 91 F5 6B 57 CB
Итоговое значение ClientHello2:
01 00 00 BF 03 03 01 01 01 01 01 01 01 01 01 01
01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
01 01 01 01 01 01 00 00 02 C1 04 01 00 00 94 00
0A 00 06 00 04 00 23 00 28 00 2B 00 03 02 03 04
00 2D 00 02 01 01 00 33 00 46 00 44 00 23 00 40
D3 5A A7 95 C4 52 45 09 49 59 1D 60 E7 D5 C0 76
05 6D 66 46 F3 B8 07 08 CD C2 E7 03 4D E8 5F 68
D1 12 2D C3 2A 3B 98 6D 40 FF 91 06 22 A0 6C 12
26 D9 EC 3A 7D 3A 52 E0 A3 7C 28 2C 47 60 2A 43
00 29 00 2F 00 0A 00 04 65 50 53 4B 00 00 00 00
00 21 20 0B F7 4A A3 93 3B 7D 1A 66 96 1B 6E 2C
FB 6A 28 04 D6 96 BB 60 77 10 E3 F5 60 DA 91 F5
6B 57 CB
Формирование записи на стороне клиента:
ContentType: 22 (0x16)
ProtocolVersion: 0x0303
Length: 195 (0x00C3) bytes
Data: [...]
Итоговая запись на стороне клиента:
16 03 03 00 C3 01 00 00 BF 03 03 01 01 01 01 01
01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
01 01 01 01 01 01 01 01 01 01 01 00 00 02 C1 04
01 00 00 94 00 0A 00 06 00 04 00 23 00 28 00 2B
00 03 02 03 04 00 2D 00 02 01 01 00 33 00 46 00
44 00 23 00 40 D3 5A A7 95 C4 52 45 09 49 59 1D
60 E7 D5 C0 76 05 6D 66 46 F3 B8 07 08 CD C2 E7
03 4D E8 5F 68 D1 12 2D C3 2A 3B 98 6D 40 FF 91
06 22 A0 6C 12 26 D9 EC 3A 7D 3A 52 E0 A3 7C 28
2C 47 60 2A 43 00 29 00 2F 00 0A 00 04 65 50 53 | ,G`*C.)./....ePS|
4B 00 00 00 00 00 21 20 0B F7 4A A3 93 3B 7D 1A | K.....! ..J..;}.|
66 96 1B 6E 2C FB 6A 28 04 D6 96 BB 60 77 10 E3
F5 6D DA 91 F5 6B 57 CB
------->
8.3.4 Формирование сообщения ServerHello на стороне сервера
Формирование сообщения ServerHello:
ServerHello: 0x02
ProtocolVersion: 0x0303
Строка данных длины 32 байта, выработанная сервером случайным образом:
Random: 32 bytes
82 82 82 82 82 82 82 82 82 82 82 82 82 82 82 82
82 82 82 82 82 82 82 82 82 82 82 82 82 82 82 82
SessionId: 0 bytes (0x00)
Установленный криптонабор:
CipherSuite: 0xC104 (TLS_GOSTR341112_256_WITH_MAGMA_MGM_L)
CompressionMethod: 0x00
Расширения:
Extension: supported_versions (0x002B)
Length: 2 bytes (0x0002)
0x0304 (TLS 1.3)
Открытый ключ сервера:
Extension: key_share (0x0033)
Length: 68 bytes (0x0044)
Group: 0x0023 (GC256B)
3D 2F B0 67 E1 06 CC 99 80 FB 88 42 81 11 64 BA
70 8B BB 50 38 D5 ED FB EE 1D 5E 5D FB E6 F7 4F
19 31 21 7C 67 C2 BD F4 62 53 DB 9C E3 48 72 41
F2 DB D8 4E 2D AB DF 65 45 58 51 B0 B1 9A EF EC
Extension: pre_shared_key (0x0029)
Length: 2 (0x0002)
Selected identity: 0x0000
Итоговое сообщение ServerHello:
02 00 00 7C 03 03 82 82 82 82 82 82 82 82 82 82
82 82 82 82 82 82 82 82 82 82 82 82 82 82 82 82
82 82 82 82 82 82 00 C1 04 00 00 54 00 2B 00 02
03 04 00 33 00 44 00 23 00 40 3D 2F B0 67 E1 06
CC 99 80 FB 88 42 81 11 64 BA 70 8B BB 50 38 D5
ED FB EE 1D 5E 5D FB E6 F7 4F 19 31 21 7C 67 C2
BD F4 62 53 DB 9C E3 48 72 41 F2 DB D8 4E 2D AB
DF 65 45 58 51 B0 B1 9A EF EC 00 29 00 02 00 00
Формирование записи на стороне сервера:
ContentType: 22 (0x16)
ProtocolVersion: 0x0303
Length: 128 (0x0080) bytes
Data: [...]
Итоговая запись на стороне сервера:
16 03 03 00 80 02 00 00 7C 03 03 82 82 82 82 82
82 82 82 82 82 82 82 82 82 82 82 82 82 82 82 82
82 82 82 82 82 82 82 82 82 82 82 00 C1 04 00 00
54 00 2B 00 02 03 04 00 33 00 44 00 23 00 40 3D
2F B0 67 E1 06 CC 99 80 FB 88 42 81 11 64 BA 70
8B BB 50 38 D5 ED FB EE 1D 5E 5D FB E6 F7 4F 19
31 21 7C 67 C2 BD F4 62 53 DB 9C E3 48 72 41 F2
DB D8 4E 2D AB DF 65 45 58 51 B0 B1 9A EF EC 00
29 00 02 00 00
<-------
8.3.5 Формирование общего ECDHE-значения
ECDHE-ключ клиента и сервера формируется в соответствии с id-tc26-gost-3410-2012-256-paramSetB.
Закрытый ключ клиента для формирования ECDHE:
02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
Открытый ключ клиента для формирования ECDHE (см. 8.3.3):
D3 5A A7 95 C4 52 45 09 49 59 1D 60 E7 D5 C0 76
05 6D 66 46 F3 B8 07 08 CD C2 E7 03 4D E8 5F 68
D1 12 2D C3 2A 3B 98 6D 40 FF 91 06 22 A0 6C 12
26 D9 EC 3A 7D 3A 52 E0 A3 7C 28 2C 47 60 2A 43
Закрытый ключ сервера для формирования ECDHE:
83 83 83 83 83 83 83 83 83 83 83 83 83 83 83 83
83 83 83 83 83 83 83 83 83 83 83 83 83 83 83 83
Открытый ключ сервера для формирования ECDHE (см. 8.3.4):
3D 2F B0 67 E1 06 CC 99 80 FB 88 42 81 11 64 BA
70 8B BB 50 38 D5 ED FB EE 1D 5E 5D FB E6 F7 4F
19 31 21 7C 67 C2 BD F4 62 53 DB 9C E3 48 72 41
F2 DB D8 4E 2D AB DF 65 45 58 51 B0 B1 9A EF EC
Выработанный общий ECDHE-ключ: на стороне клиента - на основе закрытого ключа клиента и открытого ключа сервера, на стороне сервера - на основе закрытого ключа сервера и открытого ключа клиента:
ECDHE =
98 5A 86 59 D5 5A 8D 48 E0 E6 77 13 96 58 0B 2C
DC DA 37 E9 2A EE 18 14 D1 0E 1B F2 A4 4F 0D 24
8.3.6 Формирование защищенного сообщения EncryptedExtensions на стороне сервера
Далее на стороне сервера формируются сообщения, защищенные на ключах, выработанных из секретного значения server_handshake_traffic_secret (см. 5.3.5).
Формирование сообщения EncryptedExtensions:
EncryptedExtensions: 0x08
Empty
Итоговое сообщение EncryptedExtensions:
08 00 00 02 00 00
Формирование защищенной записи на стороне сервера:
ContentType: 22 (0x16)
ProtocolVersion: 0x0303
Length: 6 (0x0006)
Data: [...]
Формирование ключа защиты записи (см. 5.3.6 и 6.3):
Key: TLSTREE(server_write_key_hs, 0)
Nonce: 00 00 00 00 00 00 00 00
Значение nonce, сложенное с синхропосылкой server_write_iv_hs (см. 5.3.6):
Nonce XORed:
7C 9E 2A C6 63 04 C2 5B
Additional Data:
17 03 03 00 0F
Незащищенная запись, представленная в виде структуры TLSInnerPlaintext:
Plaintext: 7 (0x0007) bytes
08 00 00 02 00 00 16
Защищенная запись, представленная в виде структуры TLSCiphertext:
TLSCiphertext: 20 (0x0014) bytes
17 03 03 00 0F 49 67 A7 E1 AE 7B FB 37 5A 0F 4B
25 45 91 17
<-------
8.3.7 Формирование защищенного сообщения Finished на стороне сервера
Вычисляется значение (см. 5.3.7):
FinishedHash =
HMAC(server_finished_key,Transcript-Hash(HMFinished)) =
96 14 5B 61 68 E0 1C 4C F2 99 50 96 EE 12 C8 6B
1F 53 1F 96 0A 48 9D E9 C3 44 2A 24 33 E9 AE EE
Формирование сообщения Finished на стороне сервера:
Finished: 0x14
Verify_data: 32 (0x000020) bytes
96 14 5B 61 68 E0 1C 4C F2 99 50 96 EE 12 C8 6B
1F 53 1F 96 0A 48 9D E9 C3 44 2A 24 33 E9 AE EE
Итоговое сообщение Finished:
14 00 00 20 96 14 5B 61 68 E0 1C 4C F2 99 50 96
EE 12 C8 6B 1F 53 1F 96 0A 48 9D E9 C3 44 2A 24
33 E9 AE EE
Формирование защищенной записи на стороне сервера:
ContentType: 22 (0x16)
ProtocolVersion: 0x0303
Length: 36 (0x0024) bytes
Data: [...]
Формирование ключа защиты записи (см. 5.3.6 и 6.3):
Key: TLSTREE(server_write_key_hs, 1)
Nonce: 00 00 00 00 00 00 00 01
Значение nonce, сложенное с синхропосылкой server_write_iv_hs (см. 5.3.6):
Nonce XORed:
7C 9E 2A C6 63 04 C2 5A
Additional Data:
17 03 03 00 2D
Незащищенная запись, представленная в виде структуры TLSInnerPlaintext:
Plaintext: 37 (0x0025) bytes
14 00 00 20 96 14 5B 61 68 E0 1C 4C F2 99 50 96
EE 12 C8 6B 1F 53 1F 96 0A 48 9D E9 C3 44 2A 24
33 E9 AE EE 16
Защищенная запись, представленная в виде структуры TLSCiphertext:
TLSCiphertext: 50 (0x0032) bytes
17 03 03 00 2D 3B FB 2A EA DB C3 49 FD 89 AF B8
E4 81 F8 42 6B CC 6B 7F 5D 97 5F E0 5E 5B 28 75
5C 00 BF 35 3F CA 6A 48 E9 F0 14 59 93 C4 0C E0
6F 37
<-------
8.3.8 Формирование защищенного сообщения Finished на стороне клиента
При формировании сообщения Finished на стороне клиента вычисляется значение (см. 5.3.7):
FinishedHash =
HMAC(client_finished_key,Transcript-Hash(HM2)) =
BB 83 09 94 BE 38 A9 8F FC A3 BF D2 35 CD 80 7E
81 82 1E 67 37 AB 98 31 43 DC A9 7B 9E E0 23 25
Формирование сообщения Finished:
Finished: 0x14
Verify_data: 32 (0x000020) bytes
BB 83 09 94 BE 38 A9 8F FC A3 BF D2 35 CD 80 7E
81 82 1E 67 37 AB 98 31 43 DC A9 7B 9E E0 23 25
Итоговое сообщение Finished:
14 00 00 20 BB 83 09 94 BE 38 A9 8F FC A3 BF D2
35 CD 80 7E 81 82 1E 67 37 AB 98 31 43 DC A9 7B
9E E0 23 25
Формирование защищенной записи на стороне клиента:
ContentType: 22 (0x16)
ProtocolVersion: 0x0303
Length: 36 (0x0024) bytes
Data: [...]
Формирование ключа защиты записи (см. 5.3.6 и 6.3):
Key: TLSTREE(client_write_key_hs, 0)
Nonce: 00 00 00 00 00 00 00 00
Значение nonce, сложенное с синхропосылкой client_write_iv_hs (см. 5.3.3):
Nonce XORed:
68 94 3c 9f A2 88 56 A1
Additional Data:
17 03 03 00 2D
Незащищенная запись, представленная в виде структуры TLSInnerPlaintext:
Plaintext: 37 (0x0025) bytes
14 00 00 20 BB 83 09 94 BE 38 A9 8F FC A3 BF D2
35 CD 80 7E 81 82 1E 67 37 AB 98 31 43 DC A9 7B
9E E0 23 25 16
Защищенная запись, представленная в виде структуры TLSCiphertext:
TLSCiphertext: 50 (0x0032) bytes
17 03 03 00 2D 14 25 4C A6 B9 EB CC 4A 95 1A 3D
1F 10 40 B0 B1 45 44 6D F1 31 94 6C EE CB DB 6A
8E C5 34 F1 94 22 32 81 B5 65 32 A7 03 C4 92 16
0E 2C
------->
8.3.9 Формирование оповещения Alert на стороне сервера
Перед формированием оповещения Alert на стороне сервера осуществляется формирование записей Application Data (см. 7.3).
Формирование записи на стороне сервера:
ContentType: 21 (0x15)
ProtocolVersion: 0x0303
Length: 2 (0x0002)
Data:
01 00
Формирование ключа защиты записи (см. 5.3.8 и 6.3):
Key: TLSTREE(server_write_key_ap, 130)
Nonce: 00 00 00 00 00 00 00 82
Значение nonce, сложенное с синхропосылкой server_write_iv_ap (см. 5.3.9):
Nonce XORed:
71 2E 2F 11 CD 50 6E 3B
Additional Data:
17 03 03 00 0B
Незащищенная запись, представленная в виде структуры TLSInnerPlaintext:
Plaintext: 3 (0x0003) bytes
01 00 15
Защищенная запись, представленная в виде структуры TLSCiphertext:
TLSCiphertext: 16 (0x0010) bytes
17 03 03 00 0B 44 7A 3F AE 8F 86 C1 35 18 9B 10
<-------
8.3.10 Формирование оповещения Alert на стороне клиента
Формирование записи на стороне клиента:
ContentType: 21 (0x15)
ProtocolVersion: 0x0303
Length: 2 (0x0002)
Data:
01 00
Формирование ключа защиты записи (см. 5.3.8 и 6.3):
Key: TLSTREE(client_write_key_ap, 0)
Nonce: 00 00 00 00 00 00 00 00
Значение nonce, сложенное с синхропосылкой client_write_iv_ap (см. 5.3.8):
Nonce XORed:
18 FB 03 8D BF 72 41 E6
Additional Data:
17 03 03 00 0B
Незащищенная запись, представленная в виде структуры TLSInnerPlaintext:
Plaintext: 3 (0x0003) bytes
01 00 15
Защищенная запись, представленная в виде структуры TLSCiphertext:
TLSCiphertext: 16 (0x0010) bytes
17 03 03 00 0B 46 4A EE AD 39 1D 97 98 71 69 F3
------->
8.4 KUZN_L_FULL_ECDHE_ED256_2AUTH_W256_W512
8.4.1 Сертификат сервера
Алгоритм проверки электронной цифровой подписи - в соответствии с ГОСТ Р 34.10-2012 и длиной ключа - 512 бит.
Идентификатор кривой сертификата сервера:
id-tc26-gost-3410-12-512-paramSetA, OID "1.2.643.7.1.2.1.2.1".
Закрытый ключ сервера:
80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80
80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80
80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80
80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80
Certificate SEQUENCE
tbsCertificate: TBSCertificate SEQUENCE
version: [0] EXPLICIT Version INTEGER v3 (02) OPTIONAL
serialNumber: CertificateSerialNumber INTEGER 12345 (30:39)
signature: AlgorithmIdentifier SEQUENCE
algorithm: OBJECT IDENTIFIER 1.2.643.7.1.1.3.3 (id_tc26_signwithdigest_
gost3410_2012_512)
issuer: Name CHOICE rdnSequence
rdnSequence: RDNSequence SEQUENCE OF
0: RelativeDistinguishedName SET OF
0: AttributeTypeAndValue SEQUENCE
type: AttributeType OBJECT IDENTIFIER 2.5.4.3 (id_at_commonName)
value: [UNIV 19] AttributeValue ANY
13 10 67 6F 73 74 2E 65 78 61 6D 70 6C 65 2E 63
6F 6D
DEFINED BY id_at_commonName: CommonName CHOICE printableString
printableString: PrintableString gost.example.com
validity: Validity SEQUENCE
notBefore: Time CHOICE utcTime
utcTime: UTCTime 2020-02-28T11:08:37
notAfter: Time CHOICE utcTime
utcTime: UTCTime 2030-02-25T11:08:37
subject: Name CHOICE rdnSequence
rdnSequence: RDNSequence SEQUENCE OF
0: RelativeDistinguishedName SET OF
0: AttributeTypeAndValue SEQUENCE
type: AttributeType OBJECT IDENTIFIER 2.5.4.3 (id_at_commonName)
value: [UNIV 19] AttributeValue ANY
13 10 67 6F 73 74 2E 65 78 61 6D 70 6C 65 2E 63
6F 6D
DEFINED BY id_at_commonName: CommonName CHOICE printableString
printableString: PrintableString gost.example.com
subjectPublicKeyInfo: SubjectPublicKeyInfo SEQUENCE
algorithm: AlgorithmIdentifier SEQUENCE
algorithm: OBJECT IDENTIFIER 1.2.643.7.1.1.1.2 (id_tc26_
gost3410_2012_512)
parameters: [UNIV 16] ANY OPTIONAL
30 0B 06 09 2A 85 03 07 01 02 01 02 01
DEFINED BY id_tc26_gost3410_2012_512: GostR34102012PublicKeyParameter
s SEQUENCE
publicKeyParamSet: OBJECT IDENTIFIER 1.2.643.7.1.2.1.2.1 (id_tc26_
gost3410_12_512 paramSetA)
subjectPublicKey: BIT STRING 1048 bits
04 81 80 36 43 9F 06 F3 3D 0D 0A 1F 56 E1 C1 5F
E9 3A 7C 41 E6 09 10 AE 0F A2 96 D2 97 6E E0 FA
F9 89 00 73 5F B5 21 DD 95 60 4D 09 25 BB 59 D8
ED 09 E2 54 4B 46 6A CC 24 5D 87 7E 05 BA 82 66
39 E5 4F 12 3E EF F3 E2 A5 CC C6 1C BE 2C FA A7
2B C6 A9 6C F5 A2 F7 BB C4 E3 E1 9F 5F 26 30 DC
BF 3E 92 95 78 F5 BC 1B ED 44 0F E5 F8 9A EA 7A
F9 AE 9B 28 0E 90 CF D1 C0 57 28 C4 97 E4 D0 1A
C2 0D 5A
extensions: [3] EXPLICIT Extensions SEQUENCE OF OPTIONAL
0: Extension SEQUENCE
extnID: OBJECT IDENTIFIER 2.5.29.14 (id_ce_subjectKeyIdentifier)
extnValue: OCTET STRING 22 bytes
04 14 6E BC B2 41 82 69 A5 28 58 70 58 F9 0E 06
EB 37 94 88 09 80
DEFINED BY id_ce_subjectKeyIdentifier: SubjectKeyIdentifier OCTET
STRING 20 bytes
6E BC B2 41 82 69 A5 28 58 70 58 F9 0E 06 EB 37
94 88 09 80
signatureAlgorithm: AlgorithmIdentifier SEQUENCE
algorithm: OBJECT IDENTIFIER 1.2.643.7.1.1.3.3 (id_tc26_signwithdigest_
gost3410_2012_512)
signatureValue: BIT STRING 1024 bits
03 AE 44 AE 32 C1 54 74 5B 4A 51 A9 91 86 29 DE
A8 E8 A4 1F 20 B1 D2 BB F7 53 58 6C 49 D7 14 E5
DB A5 1A 94 1E EB 34 E2 16 5B 2E 43 86 12 53 4C
23 1B E0 65 A3 A1 37 AF 8C 4C 72 86 1A E6 7C B0
ED 49 2C 43 D5 09 2B B7 1E 16 0C C8 C9 C0 93 0B
A8 77 A8 DD 38 B3 26 22 89 04 E8 AB 76 63 6D 80
85 EF 6B 7D DE 26 9B 51 54 3A C1 BD C1 86 32 59
07 FC 86 A0 34 4B 0E 57 3D DD 1D 73 FF 70 5F 58
Итоговое представление данных:
30 82 01 C9 30 82 01 35 A0 03 02 01 02 02 02 30
39 30 0A 06 08 2A 85 03 07 01 01 03 03 30 1B 31
19 30 17 06 03 55 04 03 13 10 67 6F 73 74 2E 65 |.0...U....gost.e|
78 61 6D 70 6C 65 2E 63 6F 6D 30 1E 17 0D 32 30 |xample.com0...20|
30 32 32 38 31 31 30 38 33 37 5A 17 0D 33 30 30 |0228110837Z..300|
32 32 35 31 31 30 38 33 37 5A 30 1B 31 19 30 17 |225110837Z0.1.0.|
06 03 55 04 03 13 10 67 6F 73 74 2E 65 78 61 6D |..U....gost.exam|
70 6C 65 2E 63 6F 6D 30 81 A0 30 17 06 08 2A 85 |ple.com0..0...*.|
03 07 01 01 01 02 30 0B 06 09 2A 85 03 07 01 02
01 02 01 03 81 84 00 04 81 80 36 43 9F 06 F3 3D
0D 0A 1F 56 E1 C1 5F E9 3A 7C 41 E6 09 10 AE 0F
A2 96 D2 97 6E E0 FA F9 89 00 73 5F B5 21 DD 95
60 4D 09 25 BB 59 D8 ED 09 E2 54 4B 46 6A CC 24
5D 87 7E 05 BA 82 66 39 E5 4F 12 3E EF F3 E2 A5
CC C6 1C BE 2C FA A7 2B C6 A9 6C F5 A2 F7 BB C4
E3 E1 9F 5F 26 30 DC BF 3E 92 95 78 F5 BC 1B ED
44 0F E5 F8 9A EA 7A F9 AE 9B 28 0E 90 CF D1 C0
57 28 C4 97 E4 D0 1A C2 0D 5A A3 21 30 1F 30 1D
06 03 55 1D 0E 04 16 04 14 6E BC B2 41 82 69 A5
28 58 70 58 F9 0E 06 EB 37 94 88 09 80 30 0A 06
08 2A 85 03 07 01 01 03 03 03 81 81 00 03 AE 44
AE 32 C1 54 74 5B 4A 51 A9 91 86 29 DE A8 E8 A4
1F 20 B1 D2 BB F7 53 58 6C 49 D7 14 E5 DB A5 1A
94 1E EB 34 E2 16 5B 2E 43 86 12 53 4C 23 1B E0
65 A3 A1 37 AF 8C 4C 72 86 1A E6 7C B0 ED 49 2C
43 D5 09 2B B7 1E 16 0C C8 C9 C0 93 0B A8 77 A8
DD 38 B3 26 22 89 04 E8 AB 76 63 6D 80 85 EF 6B
7D DE 26 9B 51 54 3A C1 BD C1 86 32 59 07 FC 86
A0 34 4B 0E 57 3D DD 1D 73 FF 70 5F 58
8.4.2 Сертификат клиента
Алгоритм проверки электронной цифровой подписи - в соответствии с ГОСТ Р 34.10-2012 и длиной ключа - 512 бит.
Идентификатор кривой сертификата клиента:
id-tc26-gost-3410-2012-256-paramSetB, OID "1.2.643.7.1.2.1.1.2".
Закрытый ключ клиента:
01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
Certificate SEQUENCE
tbsCertificate: TBSCertificate SEQUENCE
version: [0] EXPLICIT Version INTEGER v3 (02) OPTIONAL
serialNumber: CertificateSerialNumber INTEGER 12345 (30:39)
signature: AlgorithmIdentifier SEQUENCE
algorithm: OBJECT IDENTIFIER 1.2.643.7.1.1.3.2 (id_tc26_signwithdigest_
gost3410_2012_256)
issuer: Name CHOICE rdnSequence
rdnSequence: RDNSequence SEQUENCE OF
0: RelativeDistinguishedName SET OF
0: AttributeTypeAndValue SEQUENCE
type: AttributeType OBJECT IDENTIFIER 2.5.4.3 (id_at_commonName)
value: [UNIV 19] AttributeValue ANY
13 06 63 6C 69 65 6E 74
DEFINED BY id_at_commonName: CommonName CHOICE printableString
printableString: PrintableString client
validity: Validity SEQUENCE
notBefore: Time CHOICE utcTime
utcTime: UTCTime 2020-02-28T11:08:37
notAfter: Time CHOICE utcTime
utcTime: UTCTime 2030-02-25T11:08:37
subject: Name CHOICE rdnSequence
rdnSequence: RDNSequence SEQUENCE OF
0: RelativeDistinguishedName SET OF
0: AttributeTypeAndValue SEQUENCE
type: AttributeType OBJECT IDENTIFIER 2.5.4.3 (id_at_commonName)
value: [UNIV 19] AttributeValue ANY
13 06 63 6C 69 65 6E 74
DEFINED BY id_at_commonName: CommonName CHOICE printableString
printableString: PrintableString client
subjectPublicKeyInfo: SubjectPublicKeyInfo SEQUENCE
algorithm: AlgorithmIdentifier SEQUENCE
algorithm: OBJECT IDENTIFIER 1.2.643.7.1.1.1.1 (id_tc26_gost3410_2012_256)
parameters: [UNIV 16] ANY OPTIONAL
30 0B 06 09 2A 85 03 07 01 02 01 01 02
DEFINED BY id_tc26_gost3410_2012_256: GostR34102012PublicKeyParameter
s SEQUENCE
publicKeyParamSet: OBJECT IDENTIFIER 1.2.643.7.1.2.1.1.2 (id_tc26_
gost3410_2012_256_paramSetB)
subjectPublicKey: BIT STRING 528 bits
04 40 D4 03 81 1A 23 5A 5B CE B6 8F 89 B0 B5 BD
67 D1 FF B8 7B C7 75 A6 83 80 B4 8F EE D9 91 83
EF AC 01 FD 8D 98 2E B6 4A 0B 2E 89 DB D3 68 9F
05 B6 93 E3 05 09 B4 B2 2D AC 89 1F C0 6C D9 8E
B4:2A
extensions: [3] EXPLICIT Extensions SEQUENCE OF OPTIONAL
0: Extension SEQUENCE
extnID: OBJECT IDENTIFIER 2.5.29.14 (id_ce_subjectKeyIdentifier)
extnValue: OCTET STRING 22 bytes
04 14 BC 5A 21 B6 1F 83 D2 07 98 9F 3D 3E 4D 72
F0 70 3D B4 2A 98
DEFINED BY id_ce_subjectKeyIdentifier: SubjectKeyIdentifier OCTET
STRING 20 bytes
BC 5A 21 B6 1F 83 D2 07 98 9F 3D 3E 4D 72 F0 70
3D B4 2A 98
signatureAlgorithm: AlgorithmIdentifier SEQUENCE
algorithm: OBJECT IDENTIFIER 1.2.643.7.1.1.3.2 (id_tc26_signwithdigest_
gost3410_2012_256)
signatureValue: BIT STRING 512 bits
5B 94 DE E2 FC EA 63 66 6F C0 E7 B9 9F B1 65 FA
78 3F 84 7C 1E 8E A6 11 29 C4 34 33 22 D5 88 D7
68 5F E8 4D 03 E7 C2 CD 08 07 B8 F3 46 66 6D 05
76 C0 D5 E7 60 1D 59 49 09 45 52 C4 95 A7 5A D3
Итоговое представление данных:
30 82 01 30 30 81 DE A0 03 02 01 02 02 02 30 39
30 0A 06 08 2A 85 03 07 01 01 03 02 30 11 31 0F
30 0D 06 03 55 04 03 13 06 63 6C 69 65 6E 74 30 |0...U....client0|
1E 17 0D 32 30 30 32 32 38 31 31 30 38 33 37 5A |...200228110837Z|
17 0D 33 30 30 32 32 35 31 31 30 38 33 37 5A 30 |..300225110837Z0|
11 31 0F 30 0D 06 03 55 04 03 13 06 63 6C 69 65 |.1.0...U....clie|
6E 74 30 5E 30 17 06 08 2A 85 03 07 01 01 01 01 |nt0^0...*.......|
30 0B 06 09 2A 85 03 07 01 02 01 01 02 03 43 00
04 40 D4 03 81 1A 23 5A 5B CE B6 8F 89 B0 B5 BD
67 D1 FF B8 7B C7 75 A6 83 80 B4 8F EE D9 91 83
EF AC 01 FD 8D 98 2E B6 4A 0B 2E 89 DB D3 68 9F
05 B6 93 E3 05 09 B4 B2 2D AC 89 1F C0 6C D9 8E
B4 2A A3 21 30 1F 30 1D 06 03 55 1D 0E 04 16 04
14 BC 5A 21 B6 1F 83 D2 07 98 9F 3D 3E 4D 72 F0
70 3D B4 2A 98 30 0A 06 08 2A 85 03 07 01 01 03
02 03 41 00 5B 94 DE E2 FC EA 63 66 6F C0 E7 B9
9F B1 65 FA 78 3F 84 7C 1E 8E A6 11 29 C4 34 33
22 D5 88 D7 68 5F E8 4D 03 E7 C2 CD 08 07 B8 F3
46 66 6D 05 76 C0 D5 E7 60 1D 59 49 09 45 52 C4
95 A7 5A D3
8.4.3 Формирование сообщения ClientHello на стороне клиента
Формирование сообщения ClientHello:
ClientHello: 0x01
ProtocolVersion: 0x0303
Строка данных длины 32 байта, выработанная клиентом случайным образом:
Random: 32 (0x0020) bytes
03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03
03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03
SessionId: 0 bytes (0x00)
Выбранный криптонабор:
CipherSuite: 2 bytes (0x0002)
0xC103 (TLS_GOSTR341112_256_WITH_KUZNYECHIK_MGM_L)
CompressionMethods: 1 bytes (0x01)
00 (No compression)
Расширения:
Extension: supported_groups (0x000A)
Length: 4 bytes (0x0004)
0x0022 (GC256A)
Extension: signature_algorithms (0x000D)
Length: 16 bytes (0x0010)
0x0709 (GOSTR34102012256A)
0x070A (GOSTR34102012256B)
0x070B (GOSTR34102012256C)
0x070C (GOSTR34102012256D)
0x070D (GOSTR34102012512A)
0x070E (GOSTR34102012512B)
0x070F (GOSTR34102012512C)
Extension: supported_versions (0x002b)
Length: 3 bytes (0x0003)
0x0304 (TLS 1.3)
Открытый ключ клиента:
Extension: key_share (0x0033)
Length: 70 bytes (0x0046)
Group: 0x0022 (GC256A)
9E 44 41 7A 31 6B 95 C5 4B C0 04 63 05 FA 60 9C
85 E5 05 78 2D 26 1B A9 87 BF F8 C7 4B EE 51 D8
3B F9 E8 35 B9 33 18 2C 70 F4 DE 50 04 75 B1 36
BC E4 D3 48 C3 05 19 0A 60 8E C1 B1 28 70 56 EB
Итоговое сообщение ClientHello:
01 00 00 98 03 03 03 03 03 03 03 03 03 03 03 03
03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03
03 03 03 03 03 03 00 00 02 C1 03 01 00 00 6D 00
0A 00 04 00 02 00 22 00 0D 00 10 00 0E 07 09 07
0A 07 0B 07 0C 07 0D 07 0E 07 0F 00 2B 00 03 02
03 04 00 33 00 46 00 44 00 22 00 40 9E 44 41 7A
31 6B 95 C5 4B C0 04 63 05 FA 60 9C 85 E5 05 78
2D 26 1B A9 87 BF F8 C7 4B EE 51 D8 3B F9 E8 35
B9 33 18 2C 70 F4 DE 50 04 75 B1 36 BC E4 D3 48
C3 05 19 0A 60 8E C1 B1 28 70 56 EB
Формирование записи на стороне клиента:
ContentType: 22 (0x16)
ProtocolVersion: 0x0301
Length: 156 (0x009C) bytes
Data: [...]
Итоговая запись на стороне клиента:
16 03 01 00 9C 01 00 00 98 03 03 03 03 03 03 03
03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03
03 03 03 03 03 03 03 03 03 03 03 00 00 02 C1 03
01 00 00 6D 00 0A 00 04 00 02 00 22 00 0D 00 10
00 0E 07 09 07 0A 07 0B 07 0C 07 0D 07 0E 07 0F
00 2B 00 03 02 03 04 00 33 00 46 00 44 00 22 00
40 9E 44 41 7A 31 6B 95 C5 4B C0 04 63 05 FA 60
9C 85 E5 05 78 2D 26 1B A9 87 BF F8 C7 4B EE 51
D8 3B F9 E8 35 B9 33 18 2C 70 F4 DE 50 04 75 B1
36 BC E4 D3 48 C3 05 19 0A 60 8E C1 B1 28 70 56
EB
------->
8.4.4 Формирование сообщения ServerHello на стороне сервера
Формирование сообщения ServerHello:
ServerHello: 0x02
ProtocolVersion: 0x0303
Строка данных длины 32 байта, выработанная сервером случайным образом:
Random: 32 bytes
83 83 83 83 83 83 83 83 83 83 83 83 83 83 83 83
83 83 83 83 83 83 83 83 83 83 83 83 83 83 83 83
SessionId: 0 bytes (0x00)
Установленный криптонабор:
CipherSuite: 0xC103
(TLS_GOSTR341112_256_WITH_KUZNYECHIK_MGM_L)
CompressionMethod: 0x00 No compression
Extension: supported_versions (0x002B)
Length: 2 bytes (0x0002)
0x0304 (TLS 1.3)
Открытый ключ сервера:
Extension: key_share (0x0033)
Length: 70 bytes (0x0046)
Group: 0x0022 (GC256A)
F8 55 F9 3A E4 0B C3 DD 2B CF DB AC 99 D4 C3 F9
D6 CF 16 ED B8 1F 87 C6 84 68 B6 1B AF 2E F6 B2
0C 18 4E D5 EC B5 46 2B 1E 18 7C 7E CB 84 40 AF
41 D7 28 AA 45 84 2F C7 DB D2 C4 74 74 85 9F D2
Итоговое сообщение ServerHello:
02 00 00 76 03 03 83 83 83 83 83 83 83 83 83 83
83 83 83 83 83 83 83 83 83 83 83 83 83 83 83 83
83 83 83 83 83 83 00 C1 03 00 00 4E 00 2B 00 02
03 04 00 33 00 44 00 22 00 40 F8 55 F9 3A E4 0B
C3 DD 2B CF DB AC 99 D4 C3 F9 D6 CF 16 ED B8 1F
87 C6 84 68 B6 1B AF 2E F6 B2 0C 18 4E D5 EC B5
46 2B 1E 18 7C 7E CB 84 40 AF 41 D7 28 AA 45 84
2F C7 DB D2 C4 74 74 85 9F D2
Формирование записи на стороне сервера:
ContentType: 22 (0x16)
ProtocolVersion: 0x0303
Length: 122 (0x007A) bytes
Data: [...]
Итоговая запись на стороне сервера:
16 03 03 00 7A 02 00 00 76 03 03 83 83 83 83 83
83 83 83 83 83 83 83 83 83 83 83 83 83 83 83 83
83 83 83 83 83 83 83 83 83 83 83 00 C1 03 00 00
4E 00 2B 00 02 03 04 00 33 00 44 00 22 00 40 F8
55 F9 3A E4 0B C3 DD 2B CF DB AC 99 D4 C3 F9 D6
CF 16 ED B8 1F 87 C6 84 68 B6 1B AF 2E F6 B2 0C
18 4E D5 EC B5 46 2B 1E 18 7C 7E CB 84 40 AF 41
D7 28 AA 45 84 2F C7 DB D2 C4 74 74 85 9F D2
<-------
8.4.5 Формирование общего ECDHE-значения
ECDHE-ключ клиента и сервера формируется в соответствии с id-tc26-gost-3410-2012-256-paramSetA.
Закрытый ключ клиента для формирования ECDHE:
04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
Открытый ключ клиента для формирования ECDHE (см. 8.4.3):
9E 44 41 7A 31 6B 95 C5 4B C0 04 63 05 FA 60 9C
85 E5 05 78 2D 26 1B A9 87 BF F8 C7 4B EE 51 D8
3B F9 E8 35 B9 33 18 2C 70 F4 DE 50 04 75 B1 36
BC E4 D3 48 C3 05 19 0A 60 8E C1 B1 28 70 56 EB
Закрытый ключ сервера для формирования ECDHE:
B6 6B 18 AC D9 25 59 02 19 B8 8D F3 C4 E8 D2 64
84 84 84 84 84 84 84 84 84 84 84 84 84 84 84 04
Открытый ключ сервера для формирования ECDHE (см. 8.4.4):
F8 55 F9 3A E4 0B C3 DD 2B CF DB AC 99 D4 C3 F9
D6 CF 16 ED B8 1F 87 C6 84 68 B6 1B AF 2E F6 B2
0C 18 4E D5 EC B5 46 2B 1E 18 7C 7E CB 84 40 AF
41 D7 28 AA 45 84 2F C7 DB D2 C4 74 74 85 9F D2
Выработанный общий ECDHE-ключ: на стороне клиента - на основе закрытого ключа клиента и открытого ключа сервера, на стороне сервера - на основе закрытого ключа сервера и открытого ключа клиента:
ECDHE =
D5 56 B0 BC 8F 86 E1 46 6C F1 30 D9 E7 DB 80 69
73 C1 8E E0 73 8C 33 C6 73 E0 16 17 70 E3 6B 80
8.4.6 Формирование защищенного сообщения EncryptedExtensions на стороне сервера
Далее на стороне сервера формируются сообщения, защищенные на ключах, выработанных из секретного значения server_handshake_traffic_secret (см. 5.4.2 и 5.4.3).
Формирование сообщения EncryptedExtensions:
EncryptedExtensions: 0x08
Empty
Итоговое сообщение EncryptedExtensions:
08 00 00 02 00 00
Формирование защищенной записи на стороне сервера:
ContentType: 22 (0x16)
ProtocolVersion: 0x0303
Length: 6 (0x0006)
Data: [...]
Формирование ключа защиты записи (см. 5.4.3 и 6.4):
Key: TLSTREE(server_write_key_hs, 0)
Nonce: 00 00 00 00 00 00 00 00
Значение nonce, сложенное с синхропосылкой server_write_iv_hs (см. 5.4.3):
Nonce XORed:
2E 7D D7 0D DD 83 09 A7 DA E2 DB 3E BD 9D 65 B4
Additional Data:
17 03 03 00 17
Незащищенная запись, представленная в виде структуры TLSInnerPlaintext:
Plaintext: 7 (0x0007) bytes
08 00 00 02 00 00 16
Защищенная запись, представленная в виде структуры TLSCiphertext:
TLSCiphertext: 28 (0x001C) bytes
17 03 03 00 17 A4 38 CF BF A7 54 1F CA B7 C4 02
83 30 BC 4D 30 14 43 23 E9 12 9E A5
<-------
8.4.7 Формирование защищенного сообщения CertificateRequest на стороне сервера
Формирование сообщения CertificateRequest:
CertificateRequest: 0x0D
certificate_request_context: 0 bytes (0x00)
Extension: signature_algorithms (0x000D)
Length: 16 bytes (0x0010)
0x0709 (GOSTR34102012256A)
0x070A (GOSTR34102012256B)
0x070B (GOSTR34102012256C)
0x070C (GOSTR34102012256D)
0x070D (GOSTR34102012512A)
0x070E (GOSTR34102012512B)
0x070F (GOSTR34102012512C)
Итоговое сообщение CertificateRequest:
0D 00 00 17 00 00 14 00 0D 00 10 00 0E 07 09 07
0A 07 0B 07 0C 07 0D 07 0E 07 0F
Формирование защищенной записи на стороне сервера:
ContentType: 22 (0x16)
ProtocolVersion: 0x0303
Length: 27 (0x001b) bytes
Data: [...]
Формирование ключа защиты записи (см. 5.4.3 и 6.4):
Key: TLSTREE(server_write_key_hs, 1)
Nonce: 00 00 00 00 00 00 00 01
Значение nonce, сложенное с синхропосылкой server_write_iv_hs (см. 5.4.3):
Nonce XORed:
2E 7D D7 0D DD 83 09 A7 DA E2 DB 3E BD 9D 65 B5
Additional Data:
17 03 03 00 2C
Незащищенная запись, представленная в виде структуры TLSInnerPlaintext:
Plaintext: 28 (0x001C) bytes
0D 00 00 17 00 00 14 00 0D 00 10 00 0E 07 09 07
0A 07 0B 07 0C 07 0D 07 0E 07 0F 16
Защищенная запись, представленная в виде структуры TLSCiphertext:
TLSCiphertext: 49 (0x0031) bytes
17 03 03 00 2C 57 44 0B 1F B3 34 60 A7 C2 76 F3
EF A9 37 38 80 08 DF B9 B0 71 14 8C 5C D6 8A 1B
93 01 FE 68 30 C4 24 09 48 AD 59 AB 9C 8A 0B AB
76
<-------
8.4.8 Формирование защищенного сообщения Certificate на стороне сервера
Формирование сообщения Certificate:
Certificate: 0x0B
Certificate: 461 (0x0001CD) bytes
30 82 01 C9 30 82 01 35 A0 03 02 01 02 02 02 30
39 30 0A 06 08 2A 85 03 07 01 01 03 03 30 1B 31
19 30 17 06 03 55 04 03 13 10 67 6F 73 74 2E 65 |.0...U....gost.e|
78 61 6D 70 6C 65 2E 63 6F 6D 30 1E 17 0D 32 30 |xample.com0...20|
30 32 32 38 31 31 30 38 33 37 5A 17 0D 33 30 30 |0228110837Z..300|
32 32 35 31 31 30 38 33 37 5A 30 1B 31 19 30 17 |225110837Z0.1.0.|
06 03 55 04 03 13 10 67 6f 73 74 2E 65 78 61 6D |..U....gost.exam|
70 6C 65 2E 63 6F 6D 30 81 A0 30 17 06 08 2A 85 |ple.com0..0...*.|
03 07 01 01 01 02 30 0B 06 09 2A 85 03 07 01 02
01 02 01 03 81 84 00 04 81 80 36 43 9F 06 F3 3D
0D 0A 1F 56 E1 C1 5F E9 3A 7C 41 E6 09 10 AE 0F
A2 96 D2 97 6E E0 FA F9 89 00 73 5F B5 21 DD 95
60 4D 09 25 BB 59 D8 ED 09 E2 54 4B 46 6A CC 24
5D 87 7E 05 BA 82 66 39 E5 4F 12 3E EF F3 E2 A5
CC C6 1C BE 2C FA A7 2B C6 A9 6C F5 A2 F7 BB C4
E3 E1 9F 5F 26 30 DC BF 3E 92 95 78 F5 BC 1B ED
44 0F E5 F8 9A EA 7A F9 AE 9B 28 0E 90 CF D1 C0
57 28 C4 97 E4 D0 1A C2 0D 5A A3 21 30 1F 30 1D
06 03 55 1D 0E 04 16 04 14 6E BC B2 41 82 69 A5
28 58 70 58 F9 0E 06 EB 37 94 88 09 80 30 0A 06
08 2A 85 03 07 01 01 03 03 03 81 81 00 03 AE 44
AE 32 C1 54 74 5B 4A 51 A9 91 86 29 DE A8 E8 A4
1F 20 B1 D2 BB F7 53 58 6C 49 D7 14 E5 DB A5 1A
94 1E EB 34 E2 16 5B 2E 43 86 12 53 4C 23 1B E0
65 A3 A1 37 AF 8C 4C 72 86 1A E6 7C B0 ED 49 2C
43 D5 09 2B B7 1E 16 0C C8 C9 C0 93 0B A8 77 A8
DD 38 B3 26 22 89 04 E8 AB 76 63 6D 80 85 EF 6B
7D DE 26 9B 51 54 3A C1 BD C1 86 32 59 07 FC 86
A0 34 4B 0E 57 3D DD 1D 73 FF 70 5F 58
No extensions: 0x0000
Итоговое сообщение Certificate:
0B 00 01 D6 00 00 01 D2 00 01 CD 30 82 01 C9 30
82 01 35 A0 03 02 01 02 02 02 30 39 30 0A 06 08
2A 85 03 07 01 01 03 03 30 1B 31 19 30 17 06 03
55 04 03 13 10 67 6F 73 74 2E 65 78 61 6D 70 6C |u....gost.exampl|
65 2E 63 6F 6D 30 1E 17 0D 32 30 30 32 32 38 31 |e.com0...2002281|
31 30 38 33 37 5A 17 0D 33 30 30 32 32 35 31 31 |10837z..30022511|
30 38 33 37 5A 30 1B 31 19 30 17 06 03 55 04 03 |0837z0.1.0...u..|
13 10 67 6F 73 74 2E 65 78 61 6D 70 6C 65 2E 63 |..gost.example.c|
6F 6D 30 81 A0 30 17 06 08 2A 85 03 07 01 01 01 |om0..0...*......|
02 30 0B 06 09 2A 85 03 07 01 02 01 02 01 03 81
84 00 04 81 80 36 43 9F 06 F3 3D 0D 0A 1F 56 E1
C1 5F E9 3A 7C 41 E6 09 10 AE 0F A2 96 D2 97 6E
E0 FA F9 89 00 73 5F B5 21 DD 95 60 4D 09 25 BB
59 D8 ED 09 E2 54 4B 46 6A CC 24 5D 87 7E 05 BA
82 66 39 E5 4F 12 3E EF F3 E2 A5 CC C6 1C BE 2C
FA A7 2B C6 A9 6C F5 A2 F7 BB C4 E3 E1 9F 5F 26
30 DC BF 3E 92 95 78 F5 BC 1B ED 44 0F E5 F8 9A
EA 7A F9 AE 9B 28 0E 90 CF D1 C0 57 28 C4 97 E4
D0 1A C2 0D 5A A3 21 30 1F 30 1D 06 03 55 1D 0E
04 16 04 14 6E BC B2 41 82 69 A5 28 58 70 58 F9
0E 06 EB 37 94 88 09 80 30 0A 06 08 2A 85 03 07
01 01 03 03 03 81 81 00 03 AE 44 AE 32 C1 54 74
5B 4A 51 A9 91 86 29 DE A8 E8 A4 1F 20 B1 D2 BB
F7 53 58 6C 49 D7 14 E5 DB A5 1A 94 1E EB 34 E2
16 5B 2E 43 86 12 53 4C 23 1B E0 65 A3 A1 37 AF
8C 4C 72 86 1A E6 7C B0 ED 49 2C 43 D5 09 2B B7
1E 16 0C C8 C9 C0 93 0B A8 77 A8 DD 38 B3 26 22
89 04 E8 AB 76 63 6D 80 85 EF 6B 7D DE 26 9B 51
54 3A C1 BD C1 86 32 59 07 FC 86 A0 34 4B 0E 57
3D DD 1D 73 FF 70 5F 58 00 00
Формирование защищенной записи на стороне сервера:
ContentType: 22 (0x16)
ProtocolVersion: 0x0303
Length: 474 (0x01DA) bytes
Data: [...]
Формирование ключа защиты записи (см. 5.4.3 и 6.4):
Key: TLSTREE(server_write_key_hs, 2)
Nonce: 00 00 00 00 00 00 00 02
Значение nonce, сложенное с синхропосылкой server_write_iv_hs (см. 5.4.3):
Nonce XORed:
2E 7D D7 0D DD 83 09 A7 DA E2 DB 3E BD 9D 65 B6
Additional Data:
17 03 03 01 EB
Незащищенная запись, представленная в виде структуры TLSInnerPlaintext:
Plaintext: 475 (0x01DB) bytes
0B 00 01 D6 00 00 01 D2 00 01 CD 30 82 01 C9 30
82 01 35 A0 03 02 01 02 02 02 30 39 30 0A 06 08
2A 85 03 07 01 01 03 03 30 1B 31 19 30 17 06 03
55 04 03 13 10 67 6F 73 74 2E 65 78 61 6D 70 6C |U....gost.exampl|
65 2E 63 6F 6D 30 1E 17 0D 32 30 30 32 32 38 31 |e.com0...2002281|
31 30 38 33 37 5A 17 0D 33 30 30 32 32 35 31 31 |10837Z..30022511|
30 38 33 37 5A 30 1B 31 19 30 17 06 03 55 04 03 |0837Z0.1.0...U..|
13 10 67 6F 73 74 2E 65 78 61 6D 70 6C 65 2E 63 |..gost.example.c|
6F 6D 30 81 A0 30 17 06 08 2A 85 03 07 01 01 01 |om0..0...*......|
02 30 0B 06 09 2A 85 03 07 01 02 01 02 01 03 81
84 00 04 81 80 36 43 9F 06 F3 3D 0D 0A 1F 56 E1
C1 5F E9 3A 7C 41 E6 09 10 AE 0F A2 96 D2 97 6E
E0 FA F9 89 00 73 5F B5 21 DD 95 60 4D 09 25 BB
59 D8 ED 09 E2 54 4B 46 6A CC 24 5D 87 7E 05 BA
82 66 39 E5 4F 12 3E EF F3 E2 A5 CC C6 1C BE 2C
FA A7 2B C6 A9 6C F5 A2 F7 BB C4 E3 E1 9F 5F 26
30 DC BF 3E 92 95 78 F5 BC 1B ED 44 0F E5 F8 9A
EA 7A F9 AE 9B 28 0E 90 CF D1 C0 57 28 C4 97 E4
D0 1A C2 0D 5A A3 21 30 1F 30 1D 06 03 55 1D 0E
04 16 04 14 6E BC B2 41 82 69 A5 28 58 70 58 F9
0E 06 EB 37 94 88 09 80 30 0A 06 08 2A 85 03 07
01 01 03 03 03 81 81 00 03 AE 44 AE 32 C1 54 74
5B 4A 51 A9 91 86 29 DE A8 E8 A4 1F 20 B1 D2 BB
F7 53 58 6C 49 D7 14 E5 DB A5 1A 94 1E EB 34 E2
16 5B 2E 43 86 12 53 4C 23 1B E0 65 A3 A1 37 AF
8C 4C 72 86 1A E6 7C B0 ED 49 2C 43 D5 09 2B B7
1E 16 0C C8 C9 C0 93 0B A8 77 A8 DD 38 B3 26 22
89 04 E8 AB 76 63 6D 80 85 EF 6B 7D DE 26 9B 51
54 3A C1 BD C1 86 32 59 07 FC 86 A0 34 4B 0E 57
3D DD 1D 73 FF 70 5F 58 00 00 16
Защищенная запись, представленная в виде структуры TLSCiphertext:
TLSCiphertext: 496 (0x01F0) bytes
17 03 03 01 EB F3 B4 52 36 73 23 9C A9 11 F0 0B
2B 79 E1 E9 46 64 13 54 33 AE 1E FD 22 A4 E8 5A
CE E0 3A 76 C6 FF D4 6F 70 4F 15 26 AC 86 8B 1A
79 89 B0 B2 87 36 CF 58 68 2F 32 75 63 71 1E 2E
9A 20 7F 32 C1 0D DA 4B 72 75 6E D7 37 F4 3B DF
61 EF 55 91 80 C2 D9 49 BB D7 47 BA 23 F0 9E 2E
10 E6 49 5D 7A 78 5E 6C 6D 37 BA 9D FB 5C 17 48
69 EA DE 77 EB EE A6 E1 3D BC 06 55 AD 76 C9 62
D8 A7 B4 C1 8C BA AE C9 D7 24 55 4E 8F C1 F0 B9
32 56 40 DC 45 6B CC A7 D9 5E A9 BB 97 43 8D F4
73 D2 5B D2 C7 7C CA C6 42 14 CD A0 BE 9F BB 41
BC 3F EF 9A B3 8A 3E B9 E0 F4 84 7A 82 88 22 2C
38 27 17 13 82 E6 63 63 6A BF 39 8A 6F 1C 07 35
FB 6C 6D 35 9C 4E 90 2A 8C FC 2F C4 B6 29 88 43
1C 29 45 5F 74 09 C3 6E 82 D2 01 C9 F3 32 96 5D
1E 08 73 43 F0 9B 6A 48 10 98 89 8A 8F CA 2D B5
83 61 5A 9D ED B6 0B BE 36 15 EA 65 94 43 47 2C
2D 27 E5 D7 F4 FF 8F C7 84 B7 52 B2 F5 66 6C 32
3D A3 91 13 FE D0 BE 49 B9 FD 64 1B 80 7F 80 FB
2B 0E EB 83 79 1A 6F 87 69 22 F1 A9 EB 91 AD 65
AF D5 03 3A 8E 98 A3 CC 86 14 D5 7A 20 9D 81 B5
C8 E3 2A 0E EA 64 12 34 AD 88 57 8D B8 AC 0E AA
FA 30 71 7F 4F 04 3A DD B0 71 8F A5 AB B5 21 42
F9 F2 F4 86 93 E9 03 86 B6 0D D1 E5 AA E9 13 77
DF E9 BF B7 94 EE 2C 21 A8 27 B4 73 A6 6A 23 7E
CD A3 C3 EE 62 B9 90 8D 10 83 B6 56 1B C7 BF 4B
DC 89 8C 04 F1 A3 2D 88 71 F1 E5 A2 B2 D7 11 4B
C7 E2 44 8E 09 EC F3 97 FA 99 0A A2 83 27 6D 8D
9D 76 19 F0 96 10 CB 80 DA CD 4C 16 46 A8 59 7A
73 9D 98 DA 73 3F 75 6D 51 63 DE E1 B7 48 44 B5
25 4C 1B BB 08 AD 20 7E 44 4D 8F BE EE 97 3C AC
<-------
8.4.9 Формирование защищенного сообщения CertificateVerify на стороне сервера
Подписываются данные HMCertificateVerifyServer (см. 4.4):
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
54 4C 53 20 31 2E 33 2C 20 73 65 72 76 65 72 20 |TLS 1.3, server |
43 65 72 74 69 66 69 63 61 74 65 56 65 72 69 66 |CertificateVerif|
79 00 |y.|
59 4F 0A 8B DF 19 B9 B2 2B 16 6A 70 E5 64 9B FE
F9 55 6F 28 E5 2B 19 95 D1 F3 3A 8E 12 7D F4 20
Случайные данные, использованные при подписи сертификата:
85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85
85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85
85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85
85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85
Формирование сообщения CertificateVerify:
CertificateVerify: 0x0F
SignatureScheme: 0x070D (GOSTR34102012512A)
Значение подписи:
Signature: 128 (0x0080) bytes
5F B8 5A CB 7A 3D 81 5C 3F 14 D4 BE DE E6 68 9C
BB C9 C2 21 5D A2 0D 54 E5 81 20 CD 4F 0D 1E A9
3F CA 5E 8D ED C9 48 D0 B1 18 DD 53 C2 91 2A D8
75 B9 AF 53 E5 90 7B 11 33 28 57 48 E8 89 E9 8C
5B 5E F4 9B 3D D2 6D 45 86 AF E3 BC EA C3 FA 0D
52 D5 DC 80 31 7B B7 C3 BE 63 8B A2 26 CC C0 CD
93 BD 90 77 55 A3 2C 5A 0C CF F1 01 30 F7 F0 F6
F1 03 3C 73 1F A6 F3 DB 2E 2D D8 31 C1 91 5F E7
Итоговое сообщение CertificateVerify:
0F 00 00 84 07 0D 00 80 5F B8 5A CB 7A 3D 81 5C
3F 14 D4 BE DE E6 68 9C BB C9 C2 21 5D A2 0D 54
E5 81 20 CD 4F 0D 1E A9 3F CA 5E 8D ED C9 48 D0
B1 18 DD 53 C2 91 2A D8 75 B9 AF 53 E5 90 7B 11
33 28 57 48 E8 89 E9 8C 5B 5E F4 9B 3D D2 6D 45
86 AF E3 BC EA C3 FA 0D 52 D5 DC 80 31 7B B7 C3
BE 63 8B A2 26 CC C0 CD 93 BD 90 77 55 A3 2C 5A
0C CF F1 01 30 F7 F0 F6 F1 03 3C 73 1F A6 F3 DB
2E 2D D8 31 C1 91 5F E7
Формирование защищенной записи на стороне сервера:
ContentType: 22 (0x16)
ProtocolVersion: 0x0303
Length: 136 (0x0088) bytes
Data: [...]
Формирование ключа защиты записи (см. 5.4.3 и 6.4):
Key: TLSTREE(server_write_key_hs, 3)
Nonce: 00 00 00 00 00 00 00 03
Значение nonce, сложенное с синхропосылкой server_write_iv_hs (см. 5.4.3):
Nonce XORed:
2E 7D D7 0D DD 83 09 A7 DA E2 DB 3E BD 9D 65 B7
Additional Data:
17 03 03 00 99
Незащищенная запись, представленная в виде структуры TLSInnerPlaintext:
Plaintext: 137 (0x0089) bytes
0F 00 00 84 07 0D 00 80 5F B8 5A CB 7A 3D 81 5C
3F 14 D4 BE DE E6 68 9C BB C9 C2 21 5D A2 0D 54
E5 81 20 CD 4F 0D 1E A9 3F CA 5E 8D ED C9 48 D0
B1 18 DD 53 C2 91 2A D8 75 B9 AF 53 E5 90 7B 11
33 28 57 48 E8 89 E9 8C 5B 5E F4 9B 3D D2 6D 45
86 AF E3 BC EA C3 FA 0D 52 D5 DC 80 31 7B B7 C3
BE 63 8B A2 26 CC C0 CD 93 BD 90 77 55 A3 2C 5A
0C CF F1 01 30 F7 F0 F6 F1 03 3C 73 1F A6 F3 DB
2E 2D D8 31 C1 91 5F E7 16
Защищенная запись, представленная в виде структуры TLSCiphertext:
TLSCiphertext: 158 (0x009E) bytes
17 03 03 00 99 0C C3 9F 9A 15 04 9E 77 7E F1 97
C6 71 26 0A 8F 7C 79 0D 12 A7 D7 60 02 E2 51 BA
CC 5A B4 5E 31 9B B8 6B E0 9F 2E 40 36 AB D7 EA
60 71 39 E1 7B DD 41 E5 9D 8D 9B F5 B8 E5 14 6B
31 05 6F A8 2B D0 E1 40 E9 ED 2D E7 93 12 F2 5E
35 DD 18 6B A1 DD 2А DF 0C FA A8 0F 19 54 B2 17
43 D3 73 31 DA CE A9 64 2C 2B E9 03 5F B7 EB DC
44 BD 31 BA 65 3C 01 1B 42 2E 7E B7 96 77 40 28
9B 51 80 7E 9F 0B 23 5A A4 A4 1B BF F1 B4 66 E2
3B 8A 04 4A 26 B9 68 88 97 62 CF 23 55 46
<-------
8.4.10 Формирование защищенного сообщения Finished на стороне сервера
Вычисляется значение (см. 5.4.4):
FinishedHash =
HMAC(server_finished_key,Transcript-Hash(HMFinishedServer)) =
9E 72 EC 8A C5 96 97 0E 5F FF 88 4C 9F 21 51 2A
CB 48 9C F1 27 AC 5C 20 5A 4B 09 2B CB 79 E1 B9
Формирование сообщения Finished на стороне сервера:
Finished: 0x14
Verify_data: 32 (0x000020) bytes
9E 72 FC 8A C5 96 97 0E 5F FF 88 4C 9F 21 51 2A
CB 48 9C F1 27 AC 5C 20 5A 4B 09 2B CB 79 E1 B9
Итоговое сообщение Finished:
14 00 00 20 9E 72 FC 8A C5 96 97 0E 5F FF 88 4C
9F 21 51 2A CB 48 9C F1 27 AC 5C 20 5A 4B 09 2B
CB 79 E1 B9
Формирование защищенной записи на стороне сервера:
ContentType: 22 (0x16)
ProtocolVersion: 0x0303
Length: 36 (0x0024) bytes
Data: [...]
Формирование ключа защиты записи (см. 5.4.3 и 6.4):
Key: TLSTREE(server_write_key_hs, 4)
Nonce: 00 00 00 00 00 00 00 04
Значение nonce, сложенное с синхропосылкой server_write_iv_hs (см. 5.4.3):
Nonce XORed:
2E 7D D7 0D DD 83 09 A7 DA E2 DB 3E BD 9D 65 B0
Additional Data:
17 03 03 00 35
Незащищенная запись, представленная в виде структуры TLSInnerPlaintext:
Plaintext: 37 (0x0025) bytes
14 00 00 20 9E 72 FC 8A C5 96 97 0E 5F FF 88 4C
9F 21 51 2A CB 48 9C F1 27 AC 5C 20 5A 4B 09 2B
CB 79 E1 B9 16
<-------
Защищенная запись, представленная в виде структуры TLSCiphertext:
TLSCiphertext: 58 (0x003A) bytes
17 03 03 00 35 14 AF 0A F4 63 BE B4 5A B6 07 79
4D 15 26 62 E0 2B 2D 57 49 E5 25 AD F7 9A E1 64
2B 5F 8D F3 C0 ED 5E F3 86 4D 9E DF 49 7C 6A 3D
D4 CD FC B1 D1 0A 2A E9 6E 1B
8.4.11 Формирование защищенного сообщения Certificate на стороне клиента
Формирование сообщения Certificate:
Certificate: 0x0B
Certificate: 308 (0x000134) bytes
30 82 01 30 30 81 DE A0 03 02 01 02 02 02 30 39
30 0A 06 08 2A 85 03 07 01 01 03 02 30 11 31 0F
30 0D 06 03 55 04 03 13 06 63 6C 69 65 6E 74 30 |0...U....client0|
1e 17 0d 32 30 30 32 32 38 31 31 30 38 33 37 5A |...200228110837Z|
17 0D 33 30 30 32 32 35 31 31 30 38 33 37 5A 30 |..300225110837Z0|
11 31 0F 30 0D 06 03 55 04 03 13 06 63 6C 69 65 |.1.0...U....clie|
6E 74 30 5E 30 17 06 08 2A 85 03 07 01 01 01 01 |nt0^0...*.......|
30 0B 06 09 2A 85 03 07 01 02 01 01 02 03 43 00
04 40 D4 03 81 1A 23 5A 5B CE B6 8F 89 B0 B5 BD
67 D1 FF B8 7B C7 75 A6 83 80 B4 8F EE D9 91 83
EF AC 01 FD 8D 98 2E B6 4A 0B 2E 89 DB D3 68 9F
05 B6 93 E3 05 09 B4 B2 2D AC 89 1F C0 6C D9 8E
B4 2A A3 21 30 1F 30 1D 06 03 55 1D 0E 04 16 04
14 BC 5A 21 B6 1F 83 D2 07 98 9F 3D 3E 4D 72 F0
70 3D B4 2A 98 30 0A 06 08 2A 85 03 07 01 01 03
02 03 41 00 5B 94 DE E2 FC EA 63 66 6F C0 E7 B9
9F B1 65 FA 78 3F 84 7C 1E 8E A6 11 29 C4 34 33
22 D5 88 D7 68 5F E8 4D 03 E7 C2 CD 08 07 B8 F3
46 66 6D 05 76 C0 D5 E7 60 1D 59 49 09 45 52 C4
95 A7 5A D3
Trailing zero length: 0x0000
Итоговое сообщение Certificate:
0B 00 01 3D 00 00 01 39 00 01 34 30 82 01 30 30
81 DE A0 03 02 01 02 02 02 30 39 30 0A 06 08 2A
85 03 07 01 01 03 02 30 11 31 0F 30 0D 06 03 55
04 03 13 06 63 6C 69 65 6E 74 30 1E 17 0D 32 30 |....client0...20|
30 32 32 38 31 31 30 38 33 37 5A 17 0D 33 30 30 |0228110837Z..300|
32 32 35 31 31 30 38 33 37 5A 30 11 31 0F 30 0D |225110837Z0.1.0.|
06 03 55 04 03 13 06 63 6C 69 65 6E 74 30 5E 30 |..U....client0^0|
17 06 08 2A 85 03 07 01 01 01 01 30 0B 06 09 2A
85 03 07 01 02 01 01 02 03 43 00 04 40 D4 03 81
1A 23 5A 5B CE B6 8F 89 B0 B5 BD 67 D1 FF B8 7B
C7 75 A6 83 80 B4 8F EE D9 91 83 EF AC 01 FD 8D
98 2E B6 4A 0B 2E 89 DB D3 68 9F 05 B6 93 E3 05
09 B4 B2 2D AC 89 1F C0 6C D9 8E B4 2A A3 21 30
1F 30 1D 06 03 55 1D 0E 04 16 04 14 BC 5A 21 B6
1F 83 D2 07 98 9F 3D 3E 4D 72 F0 70 3D B4 2A 98
30 0A 06 08 2A 85 03 07 01 01 03 02 03 41 00 5B
94 DE E2 FC EA 63 66 6F C0 E7 B9 9F B1 65 FA 78
3F 84 7C 1E 8E A6 11 29 C4 34 33 22 D5 88 D7 68
5F E8 4D 03 E7 C2 CD 08 07 B8 F3 46 66 6D 05 76
C0 D5 E7 60 1D 59 49 09 45 52 C4 95 A7 5A D3 00
00
Формирование защищенной записи на стороне клиента:
ContentType: 22 (0x16)
ProtocolVersion: 0x0303
Length: 321 (0x0141) bytes
Data: [...]
Формирование ключа защиты записи (см. 5.4.3 и 6.4):
Key: TLSTREE(client_write_key_hs, 0)
Nonce: 00 00 00 00 00 00 00 00
Значение nonce, сложенное с синхропосылкой client_write_iv_hs (см. 5.4.3):
Nonce XORed:
71 65 C0 DC 82 8A F4 62 A5 D7 52 12 98 3A 0B 5B
Additional Data:
17 03 03 01 52
Незащищенная запись, представленная в виде структуры TLSInnerPlaintext:
Plaintext: 322 (0x0142) bytes
0B 00 01 3D 00 00 01 39 00 01 34 30 82 01 30 30
81 DE A0 03 02 01 02 02 02 30 39 30 0A 06 08 2A
85 03 07 01 01 03 02 30 11 31 0F 30 0D 06 03 55
04 03 13 06 63 6C 69 65 6E 74 30 1E 17 0D 32 30 |....client0...20|
30 32 32 38 31 31 30 38 33 37 5A 17 0D 33 30 30 |0228110837Z..300|
32 32 35 31 31 30 38 33 37 5A 30 11 31 0F 30 0D |225110837Z0.1.0.|
06 03 55 04 03 13 06 63 6C 69 65 6E 74 30 5E 30 |..U....client0^0|
17 06 08 2A 85 03 07 01 01 01 01 30 0B 06 09 2A
85 03 07 01 02 01 01 02 03 43 00 04 40 D4 03 81
1A 23 5A 5B CE B6 8F 89 B0 B5 BD 67 D1 FF B8 7B
C7 75 A6 83 80 B4 8F EE D9 91 83 EF AC 01 FD 8D
98 2E B6 4A 0B 2E 89 DB D3 68 9F 05 B6 93 E3 05
09 B4 B2 2D AC 89 1F C0 6C D9 8E B4 2A A3 21 30
1F 30 1D 06 03 55 1D 0E 04 16 04 14 BC 5A 21 B6
1F 83 D2 07 98 9F 3D 3E 4D 72 F0 70 3D B4 2A 98
30 0A 06 08 2A 85 03 07 01 01 03 02 03 41 00 5B
94 DE E2 FC EA 63 66 6F C0 E7 B9 9F B1 65 FA 78
3F 84 7C 1E 8E A6 11 29 C4 34 33 22 D5 88 D7 68
5F E8 4D 03 E7 C2 CD 08 07 B8 F3 46 66 6D 05 76
C0 D5 E7 60 1D 59 49 09 45 52 C4 95 A7 5A D3 00
00 16
Защищенная запись, представленная в виде структуры TLSCiphertext:
TLSCiphertext: 343 (0x0157) bytes
17 03 03 01 52 0C 25 AA 41 65 07 C5 DE 6A ED 80
C6 4C D4 8F 33 81 D9 B4 7D 95 74 33 81 3E 32 8D
C4 F6 72 C1 A6 60 74 D9 0E 5B F9 9D 89 A9 4E DA
40 08 16 4A 7D 61 90 50 D0 39 AC 56 FC 9C B8 47
59 FB 60 F1 D3 A5 7C C1 A3 E8 48 0B 61 B5 FE A9
24 BC 61 53 8B AB E0 BA C3 DE 75 ED 4A CA 5C 4A
37 08 40 B3 EC 34 81 3A 48 05 6A 25 3C 57 6C 8C
41 66 98 80 F9 68 57 35 AD 45 89 31 4C 07 B0 CA
88 41 D2 E0 5E 8D 5F 98 53 93 D0 1C CF A3 CC C7
22 15 C8 D5 50 C5 24 52 C1 A9 85 E6 86 C2 1E 8C
16 E4 EB 11 76 7D AE 41 D5 03 EF 88 82 8В 6E 2C
E9 D2 B3 68 AD 99 EE 2D E1 09 53 85 43 8D 56 58
C1 C1 5C EB EC 4D 89 BB D6 D8 0F B8 F7 5A 07 C7
97 0F 5A 9D 97 30 35 32 E8 55 36 F2 35 2F 48 23
60 B1 F3 D0 C8 A3 48 15 E4 0C F8 FA 62 01 77 03
F4 52 B3 69 0C 11 B8 62 19 76 3A 9C D6 9A C1 1D
5C 97 63 88 F4 BD 56 82 03 8A E4 99 35 F0 60 8C
73 3F 14 02 EB 33 4A 4B 3D 3C 24 C1 49 EC 1B F0
66 F8 6D 9F 58 E0 33 7C C6 8C B8 11 38 DD EB 61
2F 34 33 A3 2B B9 60 D8 25 63 83 24 50 81 25 90
38 6C E8 2A BF A3 76 BF EA 92 9A 25 B2 E2 F4 12
0B 78 A7 95 43 B8 B8
------->
8.4.12 Формирование защищенного сообщения CertificateVerify на стороне клиента
Подписываются данные HMCertificateVerifyClient (см. 4.4):
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
54 4C 53 20 31 2E 33 2C 20 63 6c 69 65 6E 74 20 |TLS 1.3, client |
43 65 72 74 69 66 69 63 61 74 65 56 65 72 69 66 |CertificateVerif|
79 00 |y.|
69 7E 35 DD 25 B7 8D EB 0A 16 46 F5 00 D2 C9 91
C1 56 FD 8F 52 7E 3D AF 2C 6A 0A B9 2B 15 64 9D
Случайные данные, использованные при подписи сертификата:
05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05
05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05
Формирование сообщения CertificateVerify:
CertificateVerify: 0x0F
SignatureScheme: 0x070A (GOSTR34102012256B)
Значение подписи:
Signature: 64 (0x0040) bytes
22 21 DF 18 66 28 0F 2C FD 78 D2 D5 F0 F4 71 9A
CA A1 87 BF 4F AB 1D 81 98 AB 53 C9 C8 00 FB F2
AD 69 E5 FE 56 22 B2 DB 4D D5 B8 C7 11 D6 94 D1
E5 62 1E 30 A2 12 55 98 0B 38 72 E6 14 CB 9A 5C
Итоговое сообщение CertificateVerify:
0F 00 00 44 07 0A 00 40 22 21 DF 18 66 28 0F 2C
FD 78 D2 D5 F0 F4 71 9A CA A1 87 BF 4F AB 1D 81
98 AB 53 C9 C8 00 FB F2 AD 69 E5 FE 56 22 B2 DB
4D D5 B8 C7 11 D6 94 D1 E5 62 1E 30 A2 12 55 98
0B 38 72 E6 14 CB 9A 5C
Формирование защищенной записи на стороне клиента:
ContentType: 22 (0x16)
ProtocolVersion: 0x0303
Length: 72 (0x0048) bytes
Data: [...]
Формирование ключа защиты записи (см. 5.4.3 и 6.4):
Key: TLSTREE(client_write_key_hs, 1)
Nonce: 00 00 00 00 00 00 00 01
Значение nonce, сложенное с синхропосылкой client_write_iv_hs (см. 5.4.3):
Nonce XORed:
6A 9C E0 2C 82 17 B0 15 F2 29 BA 3E AD F5 4C D0
Additional Data:
17 03 03 00 59
Незащищенная запись, представленная в виде структуры TLSInnerPlaintext:
Plaintext: 73 (0x0049) bytes
0F 00 00 44 07 0A 00 40 22 21 DF 18 66 28 0F 2C
FD 78 D2 D5 F0 F4 71 9A CA A1 87 BF 4F AB 1D 81
98 AB 53 C9 C8 00 FB F2 AD 69 E5 FE 56 22 B2 DB
4D D5 B8 C7 11 D6 94 D1 E5 62 1E 30 A2 12 55 98
0B 38 72 E6 14 CB 9A 5C 16
Защищенная запись, представленная в виде структуры TLSCiphertext:
TLSCiphertext: 94 (0x005E) bytes
17 03 03 00 59 0C D4 CB DA FF 08 2E 55 A6 03 21
4D 78 58 C7 83 96 D1 1B C7 25 C0 5B C0 E2 C3 FF
3B A4 4B B0 BD C3 0F 1C 91 52 31 D4 F7 B2 E6 A2
F3 82 61 FF 24 B6 74 E4 A6 B3 53 19 ED 8F 39 C4
5E E7 D3 18 88 13 05 9C 41 42 A4 4B C9 F0 0A 34
BC 17 72 B6 BA E9 45 BD 9D 8B 5A DD 18 0B
------->
8.4.13 Формирование защищенного сообщения Finished на стороне клиента
При формировании сообщения Finished на стороне клиента вычисляется значение:
FinishedHash =
HMAC(client_finished_key,Transcript-Hash(HMFinishedClient)) =
28 21 B1 E6 32 0B F2 80 39 E6 C3 5C 73 D0 EF BB
C1 84 BE A3 21 6F D8 39 5D 1F 64 F3 E0 78 FF E1
Формирование сообщения Finished:
Finished: 0x14
Verify_data: 32 (0x000020) bytes
28 21 B1 E6 32 0B F2 80 39 E6 C3 5C 73 D0 EF BB
C1 84 BE A3 21 6F D8 39 5D 1F 64 F3 E0 78 FF E1
Итоговое сообщение Finished:
14 00 00 20 28 21 B1 E6 32 0B F2 80 39 E6 C3 5C
73 D0 EF BB C1 84 BE A3 21 6F D8 39 5D 1F 64 F3
E0 78 FF E1
Формирование защищенной записи на стороне клиента:
ContentType: 22 (0x16)
ProtocolVersion: 0x0303
Length: 36 (0x0024) bytes
Data: [...]
Формирование ключа защиты записи (см. 5.4.3 и 6.4):
Key: TLSTREE(client_write_key_hs, 2)
Nonce: 00 00 00 00 00 00 00 02
Значение nonce, сложенное с синхропосылкой client_write_iv_hs (см. 5.4.3):
Nonce XORed:
6A 9C E0 2C 82 17 B0 15 F2 29 BA 3E AD F5 4C D3
Additional Data:
17 03 03 00 35
Незащищенная запись, представленная в виде структуры TLSInnerPlaintext:
Plaintext: 37 (0x0025) bytes
14 00 00 20 28 21 B1 E6 32 0B F2 80 39 E6 C3 5C
73 D0 EF BB C1 84 BE A3 21 6F D8 39 5D 1F 64 F3
E0 78 FF E1 16
Защищенная запись, представленная в виде структуры TLSCiphertext:
TLSCiphertext: 58 (0x003A) bytes
17 03 03 00 35 DA 14 1B 26 33 04 7B 83 8F B5 36
AD FB 3B 2F D0 DF B2 5F E9 54 8D 82 75 4A E3 FE
02 42 31 B9 9B F0 10 8C CC 84 6C 62 23 6F 6C E9
72 93 6E BB 81 B0 33 0C CA 44
------->
Приложение А
(рекомендуемое)
НАБОРЫ ПАРАМЕТРОВ ЭЛЛИПТИЧЕСКИХ КРИВЫХ
А.1 Набор параметров id-tc26-gost-3410-2012-256-paramSetB
Данный набор параметров имеет объектный идентификатор OID 1.2.643.7.1.2.1.1.2.
Параметры:
p - модуль эллиптической кривой, a, b - коэффициенты уравнения эллиптической кривой в канонической форме, q - порядок циклической подгруппы группы точек эллиптической кривой, (x, y) - координаты точки P (порождающего элемента подгруппы порядка q) на эллиптической кривой в канонической форме.
Данный набор параметров представляется в виде структуры следующего вида:
SEQUENCE {
p INTEGER,
a INTEGER,
b INTEGER,
m INTEGER,
q INTEGER,
x INTEGER,
y INTEGER
}
Значения параметров:
SEQUENCE {
INTEGER
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FD 97
INTEGER
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FD 94
INTEGER
A6
INTEGER
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
6C 61 10 70 99 5A D1 00 45 84 1B 09 B7 61 B8 93
INTEGER
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
6C 61 10 70 99 5A D1 00 45 84 1B 09 B7 61 B8 93
INTEGER
01
INTEGER
8D 91 E4 71 E0 98 9C DA 27 DF 50 5A 45 3F 2B 76
35 29 4F 2D DF 23 E3 B1 22 AC C9 9C 9E 9F 1E 14
}
А.2 Набор параметров id-tc26-gost-3410-12-512-paramSetA
Данный набор параметров имеет объектный идентификатор OID 1.2.643.7.1.2.1.2.1.
Параметры:
p - модуль эллиптической кривой, a, b - коэффициенты уравнения эллиптической кривой в канонической форме, m - порядок группы точек эллиптической кривой, q - порядок циклической подгруппы группы точек эллиптической кривой, (x, y) - координаты точки P (порождающего элемента подгруппы порядка q) на эллиптической кривой в канонической форме.
Данный набор параметров представляется в виде структуры следующего вида:
SEQUENCE {
p INTEGER,
a INTEGER,
b INTEGER,
m INTEGER,
q INTEGER,
x INTEGER,
y INTEGER
}
Значения параметров:
SEQUENCE
{
OBJECT IDENTIFIER
id-tc26-gost-3410-12-512-paramSetA
SEQUENCE
{
INTEGER
00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FD
C7
INTEGER
00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FD
C4
INTEGER
00 E8 C2 50 5D ED FC 86 DD C1 BD 0B 2B 66 67 F1
DA 34 B8 25 74 76 1C B0 E8 79 BD 08 1C FD 0B 62
65 EE 3C B0 90 F3 0D 27 61 4C B4 57 40 10 DA 90
DD 86 2E F9 D4 EB EE 47 61 50 31 90 78 5A 71 C7
60
INTEGER
00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
FF 27 E6 95 32 F4 8D 89 11 6F F2 2B 8D 4E 05 60
60 9B 4B 38 AB FA D2 B8 5D CA CD B1 41 1F 10 B2
75
INTEGER
00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
FF 27 E6 95 32 F4 8D 89 11 6F F2 2B 8D 4E 05 60
60 9B 4B 38 AB FA D2 B8 5D CA CD B1 41 1F 10 B2
75
INTEGER
03
INTEGER
75 03 CF E8 7A 83 6A E3 A6 1B 88 16 E2 54 50 E6
CE 5E 1C 93 AC F1 AB C1 77 80 64 FD CB EF A9 21
DF 16 26 BE 4F D0 36 E9 3D 75 E6 A5 0E 3A 41 E9
80 28 FE 5F C2 35 F5 B8 89 A5 89 CB 52 15 F2 A4
}
А.3 Набор параметров id-tc26-gost-3410-2012-512-paramSetC
Данный набор параметров имеет объектный идентификатор OID 1.2.643.7.1.2.1.2.3.
Параметры приведены в форме скрученной эллиптической кривой Эдвардса, где:
p - модуль эллиптической кривой, a, b - коэффициенты уравнения эллиптической кривой в канонической форме, m - порядок группы точек эллиптической кривой, q - порядок циклической подгруппы группы точек эллиптической кривой, (x, y) - координаты точки P (порождающего элемента подгруппы порядка q) на эллиптической кривой в канонической форме, (u, v) - координаты точки P (порождающего элемента подгруппы порядка q) на скрученной кривой Эдвардса.
Данный набор параметров представляется в виде структуры следующего вида:
SEQUENCE {
p INTEGER,
a INTEGER,
b INTEGER,
e INTEGER,
d INTEGER,
m INTEGER,
q INTEGER,
x INTEGER,
y INTEGER,
u INTEGER,
v INTEGER
}
Значения параметров:
SEQUENCE {
INTEGER
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FD C7
INTEGER
DC 92 03 E5 14 A7 21 87 54 85 A5 29 D2 C7 22 FB
18 7B C8 98 0E B8 66 64 4D E4 1C 68 E1 43 06 45
46 E8 61 C0 E2 C9 ED D9 2A DE 71 F4 6F CF 50 FF
2A D9 7F 95 1F DA 9F 2A 2E B6 54 6F 39 68 9B D3
INTEGER
B4 C4 EE 28 CE BC 6C 2C 8A C1 29 52 CF 37 F1 6A
C7 EF B6 A9 F6 9F 4B 57 FF DA 2E 4F 0D E5 AD E0
38 CB C2 FF F7 19 D2 C1 8D E0 28 4B 8B FE F3 B5
2B 8C C7 A5 F5 BF 0A 3C 8D 23 19 A5 31 25 57 E1
INTEGER
01
INTEGER
9E 4F 5D 8C 01 7D 8D 9F 13 A5 CF 3C DF 5B FE 4D
AB 40 2D 54 19 8E 31 EB DE 28 A0 62 10 50 43 9C
A6 B3 9E 0A 51 5C 06 B3 04 E2 CE 43 E7 9E 36 9E
91 A0 CF C2 BC 2A 22 B4 CA 30 2D BB 33 EE 75 50
INTEGER
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
26 33 6E 91 94 1A AC 01 30 CE A7 FD 45 1D 40 B3
23 B6 A7 9E 9D A6 84 9A 51 88 F3 BD 1F C0 8F B4
INTEGER
3F FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
C9 8C DB A4 65 06 AB 00 4C 33 A9 FF 51 47 50 2C
C8 ED A9 E7 A7 69 A1 26 94 62 3C EF 47 F0 23 ED
INTEGER
E2 E3 1E DF C2 3D E7 BD EB E2 41 CE 59 3E F5 DE
22 95 B7 A9 CB AE F0 21 D3 85 F7 07 4C EA 04 3A
A2 72 72 A7 AE 60 2B F2 A7 B9 03 3D B9 ED 36 10
C6 FB 85 48 7E AE 97 AA C5 BC 79 28 C1 95 01 48
INTEGER
F5 CE 40 D9 5B 5E B8 99 AB BC CF F5 91 1C B8 57
79 39 80 4D 65 27 37 8B 8C 10 8C 3D 20 90 FF 9B
E1 8E 2D 33 E3 02 1E D2 EF 32 D8 58 22 42 3B 63
04 F7 26 AA 85 4B AE 07 D0 39 6E 9A 9A DD C4 0F
INTEGER
12
INTEGER
46 9A F7 9D 1F B1 F5 E1 6B 99 59 2B 77 A0 1E 2A
0F DF B0 D0 17 94 36 8D 9A 56 11 7F 7B 38 66 95
22 DD 4B 65 0C F7 89 EE BF 06 8C 5D 13 97 32 F0
90 56 22 C0 4B 2B AA E7 60 03 03 EE 73 00 1A 3D
}
УДК 681.3.06:006.354
ОКС 35.030
Ключевые слова: криптографический протокол, контрольный пример, протокол безопасности транспортного уровня, реализация протокола