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

Уведомление

Icon
Error

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

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

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

Пробую экспортировать пользовательский ключ - не получается.
Получил ключ - CryptGetUserKey(AT_SIGNATURE)
Сгенерировал симметричный - CryptGenKey(CALG_G28147)
Сменил тип на экспорт - CryptSetKeyParam( KP_ALGID, CALG_PRO_EXPORT, 0 );
Проставил IV в ноль -
unsigned char iv[8] = { 0, 0, 0, 0, 0, 0, 0, 0 }
CryptSetKeyParam( KP_IV, iv, 0 );
Проэкспортировал пользовательский на симметричном - CryptExportKey( PRIVATEKEYBLOB )
Вырезал заголовок и имитовставку.
Проверяю ключ:
Диверсифицирую ключ на IV
CRYPT_DIVERSBLOB Blob;
Blob.DiversBlobHeader.BlobHeader.bType = DIVERSKEYBLOB;
Blob.DiversBlobHeader.BlobHeader.bVersion = 0x20;
Blob.DiversBlobHeader.BlobHeader.reserved = 0;
Blob.DiversBlobHeader.BlobHeader.aiKeyAlg = CALG_G28147;
Blob.DiversBlobHeader.aiDiversAlgId = CALG_PRO_DIVERS;
Blob.DiversBlobHeader.dwDiversMagic = 0x31564944;
Blob.DiversBlobHeader.cbDiversData = 8;
CopyMemory((LPBYTE)Blob.bDiversData,iv,8);
CryptSetKeyParam( agree, KP_IV, iv, 0 );
ImportKey( hProv, (BYTE*)&Blob, sizeof(Blob) + 7, agree, 0, hSymKey );

Далее на ключе считаю имиту, не сходится (!!!)
CryptCreateHash( hProv, CALG_G28147_IMIT, hSymKey, 0, hHash );
CryptHashData( hHash, &data.at(0), data.size(), 0 );
unsigned char countimito[4];
DWORD datalen = 4;
CryptGetHashParam( hHash, HP_HASHVAL, countimito, &datalen, 0 );

Offline Максим Коллегин  
#2 Оставлено : 31 января 2013 г. 18:19:28(UTC)
Максим Коллегин

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

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

Сказал «Спасибо»: 37 раз
Поблагодарили: 719 раз в 623 постах
А можно целиком код? На что считается имита?
Знания в базе знаний, поддержка в техподдержке
Offline supercrypto  
#3 Оставлено : 31 января 2013 г. 18:31:40(UTC)
supercrypto

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

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

Код с множественными C++ самопальными обертками. Так что скомпилить сходу не получится
Вот на что считается имита:

if( blob.size() < 50 || blob.at(sizeof(CRYPT_PUBKEY_INFO_HEADER)) != 0x30 )
throw csp_exception( "exportuserkey", NTE_FAIL, "Invalid format" );
std::vector<unsigned char> data;
// todo: Проверить байт длины.
data.resize(blob.size() - sizeof(CRYPT_PUBKEY_INFO_HEADER) - 2 - 6);
memcpy(&data.at(0),&blob.at(0) + sizeof(CRYPT_PUBKEY_INFO_HEADER) + 2,
blob.size()- sizeof(CRYPT_PUBKEY_INFO_HEADER) - 2 - 6);
unsigned char imito[4];
memcpy( imito, &blob.at(blob.size() - 4), 4 );


90 байт
Offline Максим Коллегин  
#4 Оставлено : 31 января 2013 г. 20:23:59(UTC)
Максим Коллегин

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

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

Сказал «Спасибо»: 37 раз
Поблагодарили: 719 раз в 623 постах
А CRYPT_DIVERSBLOB зачем?
Знания в базе знаний, поддержка в техподдержке
Offline supercrypto  
#5 Оставлено : 1 февраля 2013 г. 9:21:55(UTC)
supercrypto

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

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

А ключ для проверки имитовставки какой?
Я так понимаю, что это тот ключ на котором проходит экспорт диверсифицированный в соответствии с RFC 4357 п. 6.5.
У вас в WinCryptEx.h указан способ создания такого ключа через CRYPT_DIVERSBLOB или надо по другому создавать?
Offline vuan  
#6 Оставлено : 4 февраля 2013 г. 8:34:00(UTC)
vuan

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

Группы: Участники
Зарегистрирован: 09.10.2012(UTC)
Сообщений: 9

Сказал(а) «Спасибо»: 3 раз
У меня не получается скопировать ключ, пишу на VB, все по-документации, экспорт разрешен

Function GenerateSelfSignedCertRequest(ByVal sDN As String, ByVal sEKU As String) As String
Dim oEnroll As XENROLLLib.CEnroll
oEnroll = New XENROLLLib.CEnroll
oEnroll.ProviderType = PROV_GOST_2001_DH
oEnroll.ProviderName = "Crypto-Pro GOST R 34.10-2001 Cryptographic Service Provider"
oEnroll.KeySpec = AT_KEYEXCHANGE
oEnroll.GenKeyFlags = XCN_NCRYPT_ALLOW_EXPORT_FLAG
Try
GenerateSelfSignedCertRequest = oEnroll.createPKCS10(sDN, sEKU)
Catch ex As Exception
ErrorChek = 1
MsgBox("Действие отменено", vbCritical, "Внимание!")
End Try

End Function

при проверке пишет, что экспорт разрещен. Но ключ не копируется! в чем может быть проблема??

Отредактировано пользователем 4 февраля 2013 г. 9:05:48(UTC)  | Причина: Не указана

Offline Kirill Sobolev  
#7 Оставлено : 4 февраля 2013 г. 9:06:10(UTC)
Кирилл Соболев

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

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

Поблагодарили: 177 раз в 168 постах
В свойство GenKeyFlags надо добавить CRYPT_EXPORTABLE.
Техническую поддержку оказываем тут
Наша база знаний
Offline vuan  
#8 Оставлено : 4 февраля 2013 г. 9:07:28(UTC)
vuan

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

Группы: Участники
Зарегистрирован: 09.10.2012(UTC)
Сообщений: 9

Сказал(а) «Спасибо»: 3 раз
сделал, но ключ увы, не копируется
Offline Андрей Писарев  
#9 Оставлено : 4 февраля 2013 г. 9:07:49(UTC)
Андрей *

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

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 13,518
Мужчина
Российская Федерация

Сказал «Спасибо»: 555 раз
Поблагодарили: 2252 раз в 1757 постах
Посмотреть можно на примере страницы создания запроса сертификата:
http://cryptopro.ru/certsrv/certrqma.asp
Цитата:
function XEp_SetGenKeyFlags(objPrivateKey, nGenKeyFlags)
...

Техническую поддержку оказываем тут
Наша база знаний
Offline vuan  
#10 Оставлено : 4 февраля 2013 г. 9:14:09(UTC)
vuan

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

Группы: Участники
Зарегистрирован: 09.10.2012(UTC)
Сообщений: 9

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