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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline olekhov  
#1 Оставлено : 28 октября 2013 г. 15:49:11(UTC)
olekhov

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

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

Сказал(а) «Спасибо»: 4 раз
Доброго времени суток.
Пытаюсь создать контейнер с 512-битным ключом под новый алгоритм. Создаются короткие ключи и под старые алгоритмы.
Код:

...
CryptAcquireContext(&hProv, szContainerName, CP_GR3410_2012_PROV, PROV_GOST_2001_DH, CRYPT_NEWKEYSET);
CryptSetProvParam(hProv, PP_SIGNATUREOID_512 , (BYTE*)szOID_tc26_gost_3410_12_512_paramSetA, 0);
CryptGenKey(hProv, AT_SIGNATURE, 0, &hKey);
...

Код:

Проверка завершена успешно      ошибок не обнаружено
Контейнер закрытого ключа       
  имя                           SIGN_TEST_64_0
  уникальное имя                SIGN_TEST_64_0
  FQCN                          \\.\REGISTRY\SIGN_TEST_64_0
  проверка целостности контейнера   успешно
Ключ обмена                     отсутствует
Ключ подписи                    доступен
  длина ключа                   512 бит
  экспорт открытого ключа       успешно
  импорт открытого ключа        успешно
  подпись                       успешно
  проверка                      успешно
  экспорт ключа                 запрещен
  алгоритм                      ГОСТ Р 34.10-2001
                                ГОСТ Р 34.10-2001, параметры по умолчанию
                                ГОСТ Р 34.11-94, параметры по умолчанию
  сертификат в контейнере       отсутствует
  загрузка ключей               успешно


При попытке получить блоб с открытым ключом - размер блоба 100 байт, что не может соответствовать публичному ключу к закрытому 512-битному.
ожидаемый размер - 128+36 = 164 байта?

Также в качестве параметра dwFlags к CryptGenKey пытался передавать 512<<16 и 1024<<16, как сказано в MSDN для указания длины RSA-ключей
Цитата:

dwFlags:
Specifies the type of key generated. The sizes of a session key, RSA signature key, and RSA key exchange keys can be set when the key is generated. The key size, representing the length of the key modulus in bits, is set with the upper 16 bits of this parameter. Thus, if a 2,048-bit RSA signature key is to be generated, the value 0x08000000 is combined with any other dwFlags predefined value with a bitwise-OR operation. The upper 16 bits of 0x08000000 is 0x0800, or decimal 2,048. The RSA1024BIT_KEY value can be used to specify a 1024-bit RSA key

Не помогло..
Подскажите, что я делаю не так?
Offline Русев Андрей  
#2 Оставлено : 28 октября 2013 г. 17:44:03(UTC)
Андрей Русев

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

Группы: Администраторы, Участники
Зарегистрирован: 16.04.2008(UTC)
Сообщений: 802

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 195 раз в 151 постах
Правильный код такой:
Код:

AcquireContext(&hProv, szContainerName, CP_GR3410_2012_PROV, PROV_GOST_2001_DH, CRYPT_NEWKEYSET);
GenKey(hProv, AT_SIGNATURE, 1024<<16, &hKey);

Ещё можно воспользоваться csptest-ом:
Код:

csptest -keyset -newkeyset -cont cont_name -length 1024 -keytype exchange

Отмечу, что в следующих релизах мы разделили провайдеры на три типа:

PROV_GOST_2001_DH - для создания ключей ГОСТ Р 34.10-2001:

  • закрытый ключ 256 бит, открытый - 512 бит
  • подписывает хэш по ГОСТ Р 34.11-94 (256 бит)
  • VKO (получение симметричного ключа из ключа согласования по алгоритму Диффи-Хелмана) по ГОСТ Р 34.11-94 (256 бит)

PROV_GOST_2012_256 - для создания ключей ГОСТ Р 34.10-2012:

  • закрытый ключ 256 бит, открытый - 512 бит
  • подписывает хэш по ГОСТ Р 34.11-2012 (256 бит)
  • VKO по ГОСТ Р 34.11-2012 (256 бит)

PROV_GOST_2012_512 - для создания ключей ГОСТ Р 34.10-2012:

  • закрытый ключ 512 бит, открытый - 1024 бит
  • подписывает хэш по ГОСТ Р 34.11-2012 (512 бит)
  • VKO по ГОСТ Р 34.11-2012 (256 бит)

Отредактировано пользователем 29 октября 2013 г. 12:42:36(UTC)  | Причина: Не указана

Официальная техподдержка. Официальная база знаний.
Offline olekhov  
#3 Оставлено : 29 октября 2013 г. 12:49:13(UTC)
olekhov

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

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

Сказал(а) «Спасибо»: 4 раз
Спасибо, заработало.
Offline FlamingWind  
#4 Оставлено : 8 ноября 2013 г. 15:16:27(UTC)
FlamingWind

Статус: Новичок

Группы: Участники
Зарегистрирован: 08.11.2013(UTC)
Сообщений: 2
Откуда: Moscow

Автор: olin Перейти к цитате
Отмечу, что в следующих релизах мы разделили провайдеры на три типа:


А нет прогноза по дате выпуска следующего релиза?
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.