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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline sadgb  
#1 Оставлено : 5 декабря 2012 г. 20:07:53(UTC)
sadgb

Статус: Активный участник

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

Сказал(а) «Спасибо»: 4 раз
Здравствуйте.
Требуется реализовать генерацию ключа в соответствии с пунктом 5.2 http://www.rfc-editor.org/rfc/rfc4357.txt

Просмотрев примеры насколько я понял делается ключ согласования примерно так

Код:
 //Получение ключа согласования
    if (CryptImportKey(
        hProv, 
        pbKeyBlob, // открытый ключ получателя
        dwBlobLen,  // длина открытого ключа получателя
        phKey,        // мой закрытый ключ
        CRYPT_EXPORTABLE, 
        &hAgreeKey))
    {
        printf("The agree key created; \n");
    }
    else
    {
        HandleError("Error during CryptImportKey public key.");
    }


И он создается, но когда я пытаюсь его экспортировать

Код:
    //Определяем длину блоба для сессионного ключа.
    if(CryptExportKey(
        hAgreeKey, 
        NULL, 
        SIMPLEBLOB, 
        0, 
        NULL,
        &dwBlobLen)) 
    {
        printf("Size of the BLOB for the sender session key determined. \n");
    }
    else
    {
	DWORD err = GetLastError();
        HandleError("Error computing BLOB length.");
    }


В зависимости от того какой вариант я ставлю в поле вместо SIMPLEBLOB я получаю либо
NTE_BAD_KEY_STATE либо NTE_BAD_KEY либо NTE_BAD_TYPE.

Я пробовал проверять права на ключ

Код:
	DWORD r, size = sizeof(DWORD);
	BOOL z =  CryptGetKeyParam(
		hAgreeKey, KP_PERMISSIONS, (BYTE*) &r,
		&size,0
);


Как результат 0x0000000ff то есть право экспорта есть.

Вопросы:
1 Правильно ли я создаю ключ в соответствии с RFC или я чтото напутал и если напутал то как создать ключ по РФЦ ?
2 Как бы мне получить UMK ( это в терминах рфц ) который использовался при генерации ключа ?
3 И почему все-таки ключ не хочет экспортироваться ?
Offline Максим Коллегин  
#2 Оставлено : 5 декабря 2012 г. 20:37:43(UTC)
Максим Коллегин

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

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

Сказал «Спасибо»: 37 раз
Поблагодарили: 719 раз в 623 постах
Что-то вы лунное делаете. Симметричный ключ экспортируется на ключе обмена как-раз в Simple blob.
Знания в базе знаний, поддержка в техподдержке
Offline Максим Коллегин  
#3 Оставлено : 5 декабря 2012 г. 20:40:04(UTC)
Максим Коллегин

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

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

Сказал «Спасибо»: 37 раз
Поблагодарили: 719 раз в 623 постах
http://www.cryptopro.ru/....aspx?g=posts&t=2939
много букв и опасно)
Знания в базе знаний, поддержка в техподдержке
Offline sadgb  
#4 Оставлено : 5 декабря 2012 г. 21:12:30(UTC)
sadgb

Статус: Активный участник

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

Сказал(а) «Спасибо»: 4 раз
Спасибо за оперативный ответ, но ссылка не совсем о том. И там столь нужный мне UMK просто нули.

Мне требуется имея закрытый ключ свой и открытый ключ получателя сгенерировать ключ согласования и этот ключ передать в другую программу вместе с UMK.
Именно ключ согласования а не сессионный ключ. Соответственно я не понимаю как мне этот ключ хоть в каком-то виде получить и как узнать его UMK.

Помогите пожалуйста
Offline Максим Коллегин  
#5 Оставлено : 6 декабря 2012 г. 0:28:16(UTC)
Максим Коллегин

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

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

Сказал «Спасибо»: 37 раз
Поблагодарили: 719 раз в 623 постах
Ключ согласования потому так и называется, что согласовывается, а не передается - какую задачу решаете?
Знания в базе знаний, поддержка в техподдержке
Offline sadgb  
#6 Оставлено : 6 декабря 2012 г. 1:21:13(UTC)
sadgb

Статус: Активный участник

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

Сказал(а) «Спасибо»: 4 раз
Есть достаточно большая схема взаимодействия.
В принципе я думаю могу описать кусок связанный с нами, но боюсь что в отрыве от общей схемы будет выглядеть не слишком логично и понятно почему так.

Грубо говоря есть сервер назовем его С и есть компьютеры в сети подключенные к серверу назовем их A1... An.
А еще есть ну скажем мобильные телефоны М1...Мn

У С есть пара открытый закрытый ключ и все открытые ключи телефонов.
У каждого телефона есть открытый ключ С.

Теперь при соединеннии Mi c Aj
Аj запрашивает его передавая к какому именно М подключаемся у С и получает UMK, передает UMK вместе с зашифрованным сессионным ключом к Мj. Mj генерирует тот же ключ согласия и расшифровывает ключ.

Плюс скажем так там особый вид мобильника на котором нельзя использовать криптопро.

И все-таки ответьте пожалуйста на вопросы.

Вопросы:
1 Правильно ли я создаю ключ в соответствии с RFC или я что-то напутал и если напутал то как создать ключ по РФЦ ?
2 Как бы мне получить UMK ( это в терминах рфц ) который использовался при генерации ключа ?
3 И почему все-таки ключ не хочет экспортироваться ?
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.