Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

2 Страницы12>
Опции
К последнему сообщению К первому непрочитанному
Offline sushev_a_a  
#1 Оставлено : 31 марта 2017 г. 16:43:18(UTC)
sushev_a_a

Статус: Участник

Группы: Участники
Зарегистрирован: 28.11.2016(UTC)
Сообщений: 19
Российская Федерация

Сказал(а) «Спасибо»: 7 раз
добрый день.
пытаюсь по документу TK26TLS по приложению А.1
по приведенным там шестнадцатиричным значениям получить
такой же client key exchange, чтобы убедиться, что я правильно использую CryptoAPI.
получить ukm удалось, сходится.
создать эфемерный ключ клиента вроде тоже (через
CryptGenKey(... CALG_DH_GR3410_12_512_EPHEM, CRYPT_EXPORTABLE | CRYPT_PREGEN, ... )
и CryptSetKeyParam( ...KP_X...)
)
вроде удалось получить ключ согласования.
вопрос. можно ли получить ключ согласования в чистом виде, чтобы сравнить с приведенным листинге?
насколько я понял нет, ключ согласования не экспортируется?

и второй вопрос. в листинге приведен в шестнадцатиричном виде premaster secret.
как из него получить HCRYPTKEY, чтобы в дальнейшем выполнить экспорт на ключе согласования?

и правильно ли я понимаю, что premaster_secret создается алгоритмом CALG_TLS1_MASTER?
Offline Максим Коллегин  
#2 Оставлено : 31 марта 2017 г. 16:53:13(UTC)
Максим Коллегин

Статус: Сотрудник

Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC)
Сообщений: 6,377
Мужчина
Откуда: КРИПТО-ПРО

Сказал «Спасибо»: 32 раз
Поблагодарили: 706 раз в 614 постах
Работа с ключами в "чистом" виде крипторовайдером официально не поддерживается, но на форуме была тема с примером подобного использования. Только это оне очень просто.
Знания в базе знаний, поддержка в техподдержке
Offline sushev_a_a  
#3 Оставлено : 4 апреля 2017 г. 9:59:02(UTC)
sushev_a_a

Статус: Участник

Группы: Участники
Зарегистрирован: 28.11.2016(UTC)
Сообщений: 19
Российская Федерация

Сказал(а) «Спасибо»: 7 раз
добрый день. почитал эту ветку
https://www.cryptopro.ru...t.aspx?g=posts&t=135
ну и плюс cpdn.
подскажите пожалуйста, правильно ли я понял последовательность создания master secret?

//создаем контекст
CryptAcquireContext(...PROV_GOST_2012_256, CRYPT_NEWKEYSET)
//генерим premaster secret
CryptGenKey(...CALG_TLS1_MASTER, CRYPT_EXPORTABLE, &key_session)
//где-то здесь экспортировали premaster secret на ключе согласования и отправили серверу
//подставляем client random
CryptSetKeyParam( key_session, KP_CLIENT_RANDOM ... )
//подставляем server random
CryptSetKeyParam( key_session, KP_SERVER_RANDOM ... )
//преобразуем premaster secret в master secret
CryptSetKeyParam( key_session, KP_PREHASH, NULL, 0)

после CryptSetKeyParam(key_session, KP_PREHASH...) в дескрипторе key_session
мы уже имеем master secret?
в этой последовательности вызовов ни каких важных шагов не пропущено?
Offline sushev_a_a  
#4 Оставлено : 5 апреля 2017 г. 15:39:56(UTC)
sushev_a_a

Статус: Участник

Группы: Участники
Зарегистрирован: 28.11.2016(UTC)
Сообщений: 19
Российская Федерация

Сказал(а) «Спасибо»: 7 раз
есть еще вопрос вдогонку.
подскажите, пожалуйста, как правильно из master secret получить комплект ключей для соединения?
нашел на форуме и в cpdn два способа.
первый через CryptDeriveKey c CALG_TLS1_ENC_KEY и CALG_TLS1_MAC_KEY
в https://www.cryptopro.ru...t.aspx?g=posts&t=135
и второй в http://cpdn.cryptopro.ru...ples_rfcconnections.html пункт 4
через PRF с последующим получением 144 байт ключевого материала.
какой из них правильный? какой, например, используется внутри SSPI?
судя по TK26TLS п.5.2 правильно делать вторым способом, в каких случаях тогда применяется первый?
или внутри CryptDeriveKey CALG_TLS1_ENC_KEY/CALG_TLS1_MAC_KEY реализован второй способ?
Offline sushev_a_a  
#5 Оставлено : 6 апреля 2017 г. 10:20:33(UTC)
sushev_a_a

Статус: Участник

Группы: Участники
Зарегистрирован: 28.11.2016(UTC)
Сообщений: 19
Российская Федерация

Сказал(а) «Спасибо»: 7 раз
up
Offline Максим Коллегин  
#6 Оставлено : 6 апреля 2017 г. 13:54:05(UTC)
Максим Коллегин

Статус: Сотрудник

Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC)
Сообщений: 6,377
Мужчина
Откуда: КРИПТО-ПРО

Сказал «Спасибо»: 32 раз
Поблагодарили: 706 раз в 614 постах
Сейчас специалист в отпуске, ответить сможем не раньше чем через неделю.
Знания в базе знаний, поддержка в техподдержке
Offline sushev_a_a  
#7 Оставлено : 6 апреля 2017 г. 13:57:01(UTC)
sushev_a_a

Статус: Участник

Группы: Участники
Зарегистрирован: 28.11.2016(UTC)
Сообщений: 19
Российская Федерация

Сказал(а) «Спасибо»: 7 раз
спасибо. буду ждать)
Offline Сонина Лолита  
#8 Оставлено : 10 апреля 2017 г. 10:38:32(UTC)
Сонина Лолита

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 20.11.2014(UTC)
Сообщений: 27
Российская Федерация

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 19 раз в 17 постах
Доброе утро!

Рекомендуем использовать способ, описанный в https://www.cryptopro.ru/forum2/default.aspx?g=posts&t=135.
Вы совершенно правы, внутри CryptDeriveKey уже реализована выработка значения PRF нужной длины (144 байта) и нарезание результата на соответствующие ключи.
Поэтому при использовании данного варианта Вы сразу получите ключи шифрования и имитовставки, которые можно применять для защиты вложений, не связываясь в ключами в "чистом" виде.

Отредактировано модератором 10 апреля 2017 г. 17:41:24(UTC)  | Причина: Не указана

Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Сонина Лолита за этот пост.
sushev_a_a оставлено 10.04.2017(UTC)
Offline Сонина Лолита  
#9 Оставлено : 10 апреля 2017 г. 13:00:54(UTC)
Сонина Лолита

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 20.11.2014(UTC)
Сообщений: 27
Российская Федерация

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 19 раз в 17 постах
Дополнительно хочется отметить, что в приведенном сообщении с форума описан алгоритм для работы в рамках сюит 2001 года.
Для работы в сюитах 2012 года необходимо немного модифицировать пример:
1. Вызов
CPSetKeyParam (hProv, hSessionKey, KP_PREHASH, NULL, 0);

нужно заменить на
DWORD prfAlgid = CALG_TLS1PRF_2012_256;
CPSetKeyParam (hProv, hSessionKey, KP_PREHASH, (BYTE*)&prfAlgid, 0);

2. CALG_TLS1_MASTER_HASH требуется заменить на CALG_TLS1_MASTER_HASH_2012_256.
Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Сонина Лолита за этот пост.
sushev_a_a оставлено 10.04.2017(UTC)
Offline sushev_a_a  
#10 Оставлено : 10 апреля 2017 г. 13:07:16(UTC)
sushev_a_a

Статус: Участник

Группы: Участники
Зарегистрирован: 28.11.2016(UTC)
Сообщений: 19
Российская Федерация

Сказал(а) «Спасибо»: 7 раз
вот за это уточнение отдельное спасибо) минус одна ошибка)
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
2 Страницы12>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.