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

Уведомление

Icon
Error

2 Страницы12>
Опции
К последнему сообщению К первому непрочитанному
Offline NIISIIS  
#1 Оставлено : 11 ноября 2015 г. 15:25:22(UTC)
NIISIIS

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

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

Здравствуйте, подскажите, пожалуйста, как передать сессионный ключ по сети с одного компьютера(производящего шифрование) на другой компьютер для расшифровки.

DWORD dwBlobLenSimple; // Длина сессионного ключевого BLOBа
CryptExportKey(hSessionKey, hAgreeKey, SIMPLEBLOB, 0, NULL, &dwBlobLenSimple);
char *pbKeyBlobSimple = new char[dwBlobLenSimple]; // Указатель на сессионный ключевой BLOB
// Зашифрование сессионного ключа на ключе Agree.
CryptExportKey(hSessionKey, hAgreeKey, SIMPLEBLOB, 0, pbKeyBlobSimple, &dwBlobLenSimple);

dwBlobLenSimple получаем 100 байт, а в pbKeyBlobSimple всего 2 байта. После передачи pbKeyBlobSimple на другой компьютер в потоке TMemoryStream восстановить сессионный ключ не удаётся.
При работе на одной машине, объявляя сессионный ключ как глобальную переменную, сообщение получается расшифровать.
Offline Максим Коллегин  
#2 Оставлено : 11 ноября 2015 г. 21:57:22(UTC)
Максим Коллегин

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

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

Сказал «Спасибо»: 32 раз
Поблагодарили: 706 раз в 614 постах
А ошибку метод не возвращает? Как узнали, что два байта?
Знания в базе знаний, поддержка в техподдержке
Offline NIISIIS  
#3 Оставлено : 12 ноября 2015 г. 8:30:14(UTC)
NIISIIS

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

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

Поставили точку останова и навели на переменную. Показало массив из 2-х байт. Ошибку не возвращает.

Пытаемся восстановить сессионный ключ так:
CryptImportKey(hProv, pbKeyBlob, dwBlobLen, hKey, 0, &hAgreeKey);
CryptImportKey(hProv, pbKeyBlobSimple, dwBlobLenSimple, hAgreeKey, 0, &hSessionKey);

Не расшифровывает. Может мы как-то не так данные из сессионного ключа получаем?
Offline Андрей Писарев  
#4 Оставлено : 12 ноября 2015 г. 10:06:11(UTC)
Андрей *

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

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

Сказал «Спасибо»: 500 раз
Поблагодарили: 2050 раз в 1590 постах
Автор: NIISIIS Перейти к цитате
Поставили точку останова и навели на переменную. Показало массив из 2-х байт. Ошибку не возвращает.

Пытаемся восстановить сессионный ключ так:
CryptImportKey(hProv, pbKeyBlob, dwBlobLen, hKey, 0, &hAgreeKey);
CryptImportKey(hProv, pbKeyBlobSimple, dwBlobLenSimple, hAgreeKey, 0, &hSessionKey);

Не расшифровывает. Может мы как-то не так данные из сессионного ключа получаем?


А почему в коде нет проверки результатов функций, код и текст ошибки никуда не выводятся?
Начните с этого.
Техническую поддержку оказываем тут
Наша база знаний
Offline NIISIIS  
#5 Оставлено : 12 ноября 2015 г. 10:42:39(UTC)
NIISIIS

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

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

Все команды до этого возвращают true

CryptImportKey(hProv, pbKeyBlobSimple, dwBlobLenSimple, hAgreeKey, 0, &hSessionKey);
Здесь возвращает false.
А как из него выцарапать текст и код ошибки?
Offline Андрей Писарев  
#6 Оставлено : 12 ноября 2015 г. 10:48:29(UTC)
Андрей *

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

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

Сказал «Спасибо»: 500 раз
Поблагодарили: 2050 раз в 1590 постах
Автор: NIISIIS Перейти к цитате
Все команды до этого возвращают true

CryptImportKey(hProv, pbKeyBlobSimple, dwBlobLenSimple, hAgreeKey, 0, &hSessionKey);
Здесь возвращает false.
А как из него выцарапать текст и код ошибки?



GetLastError
Техническую поддержку оказываем тут
Наша база знаний
Offline NIISIIS  
#7 Оставлено : 12 ноября 2015 г. 11:38:48(UTC)
NIISIIS

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

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

код ошибки 2148073477

Это что значит? Неправильно данные из сессионного ключа получаются? Как тогда их правильно получить для передачи? Когда делаем на одном компе, объявляя сессионный ключ как глобальную переменную - всё проходит без ошибок и информация расшифровывается.
Offline Андрей Писарев  
#8 Оставлено : 12 ноября 2015 г. 11:41:47(UTC)
Андрей *

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

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

Сказал «Спасибо»: 500 раз
Поблагодарили: 2050 раз в 1590 постах
Автор: NIISIIS Перейти к цитате
код ошибки 2148073477

Это что значит? Неправильно данные из сессионного ключа получаются? Как тогда их правильно получить для передачи? Когда делаем на одном компе, объявляя сессионный ключ как глобальную переменную - всё проходит без ошибок и информация расшифровывается.



2148073477
или поиск по форуму.

Пишите на основании примеров из SDK?
Техническую поддержку оказываем тут
Наша база знаний
Offline NIISIIS  
#9 Оставлено : 12 ноября 2015 г. 11:47:12(UTC)
NIISIIS

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

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

Да
Offline NIISIIS  
#10 Оставлено : 12 ноября 2015 г. 13:38:28(UTC)
NIISIIS

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

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

При формировании блоба из публичного ключа получаем тоже 2 байта вместо 100
[img]https://fotki.yandex.ru/next/users/losevscky-mihail/album/504643/view/1389339[/img]
В чём может быть ошибка?
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
2 Страницы12>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.