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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline _Nikolai_  
#1 Оставлено : 21 октября 2020 г. 11:27:09(UTC)
_Nikolai_

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

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

Здравствуйте!

Мы получаем JSON-сообщение (зашифрованное с помощью CAdES Browser Plug-in) в виде:

{
"encryptedData":"22BB468633304C892E..................",
"exportedKey":"31 2E 32 2E 36 34 33 2E 37 2E 31 2E 32 2E 35 2E 31 2E 31 00:0A 20 00 00 49 2E 00 00 4D 41 47 31 00 02 00 00 30 13 06 07 2A 85 03 02 02 24 00 06 08 2A 85 03 07 01 01 02 02 72 03 75 17 C6 CB 5B 4F FA 75 F1 52 02 02 B3 C4 51 56 34 1C 65 7A 41 BE 38 B7 59 8F F8 A9 0D DE 94 99 C4 07 64 F6 71 11 29 29 78 EA EC 6C 03 22 BD 02 59 E8 E7 AB B7 46 1F 98 C8 AC 07 1F 0A F8:01 20 00 00 1E 66 00 00 FD 51 4A 37 1E 66 00 00 BF 01 41 86 C7 41 81 89 5C 4B 30 FE 66 67 B8 2D 22 28 DA 46 4B 10 DE 8E C6 29 63 EE 1D D3 D0 2C 66 03 17 D4 56 F5 C8 85 0F D2 B3 14 30 09 06 07 2A 85 03 02 02 1F 01",
"diversData":"E0 20 46 46 C6 4A 85 0D 26 C8 8B 2F 7E 04 53 C6 31 93 46 D7 E6 67 FB 79 15 13 19 00 14 0D 91 31 AD FC EB 7F C8 87 23 CE",
"openSessionKey":"8B 0C DA 8B DE C2 FF 21"
}

Из примеров в .NET SDK не очень понятно, как расшифровать данное сообщение с помощью библиотеки CryptoPro.Sharpei.
Приведите пример, пожалуйста.

Спасибо.

Offline Александр Лавник  
#2 Оставлено : 21 октября 2020 г. 18:01:38(UTC)
Александр Лавник

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

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

Сказал «Спасибо»: 53 раз
Поблагодарили: 792 раз в 732 постах
Автор: _Nikolai_ Перейти к цитате
Здравствуйте!

Мы получаем JSON-сообщение (зашифрованное с помощью CAdES Browser Plug-in) в виде:

{
"encryptedData":"22BB468633304C892E..................",
"exportedKey":"31 2E 32 2E 36 34 33 2E 37 2E 31 2E 32 2E 35 2E 31 2E 31 00:0A 20 00 00 49 2E 00 00 4D 41 47 31 00 02 00 00 30 13 06 07 2A 85 03 02 02 24 00 06 08 2A 85 03 07 01 01 02 02 72 03 75 17 C6 CB 5B 4F FA 75 F1 52 02 02 B3 C4 51 56 34 1C 65 7A 41 BE 38 B7 59 8F F8 A9 0D DE 94 99 C4 07 64 F6 71 11 29 29 78 EA EC 6C 03 22 BD 02 59 E8 E7 AB B7 46 1F 98 C8 AC 07 1F 0A F8:01 20 00 00 1E 66 00 00 FD 51 4A 37 1E 66 00 00 BF 01 41 86 C7 41 81 89 5C 4B 30 FE 66 67 B8 2D 22 28 DA 46 4B 10 DE 8E C6 29 63 EE 1D D3 D0 2C 66 03 17 D4 56 F5 C8 85 0F D2 B3 14 30 09 06 07 2A 85 03 02 02 1F 01",
"diversData":"E0 20 46 46 C6 4A 85 0D 26 C8 8B 2F 7E 04 53 C6 31 93 46 D7 E6 67 FB 79 15 13 19 00 14 0D 91 31 AD FC EB 7F C8 87 23 CE",
"openSessionKey":"8B 0C DA 8B DE C2 FF 21"
}

Из примеров в .NET SDK не очень понятно, как расшифровать данное сообщение с помощью библиотеки CryptoPro.Sharpei.
Приведите пример, пожалуйста.

Спасибо.


Вопрос решается на портале технической поддержки в рамках обращения № 33409.
Техническую поддержку оказываем тут
Наша база знаний
Offline Артём Макаров  
#3 Оставлено : 22 октября 2020 г. 19:55:01(UTC)
Артём Макаров

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

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

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 63 раз в 59 постах
Из-за формата экспорта Cades (используемого в плагине) (https://cpdn.cryptopro.ru/content/cades/interface_c_ad_e_s_c_o_m_1_1_i_symmetric_algorithm_c4e0dd92e80c132bc092a59b6ead4c8f_1c4e0dd92e80c132bc092a59b6ead4c8f.html) в котором используется PUBLICKEYBLOBEX (КриптоПро.NET понимает только PUBLICKEYBLOB) невозможно из коробки декодировать открытый эфемерный открытый ключ для расшифрования.

В качестве более простого решения - использовать вместо КриптоПро.NET CadesCom. Через Interop можно пользоваться методами CADES, аналогичными плагину.
https://www.cryptopro.ru/products/cades/sdk

После установки нужно добавить в проект ссылку на Crypto-Pro CAdES 1.0 Type Library (в студии add reference - com - Crypto-Pro CAdES 1.0 Type Library).

Расшифрование будет выглядеть сл. образом:

Код:
// читаем сертификат с ключом из хранилища по отпечатку
var oStore = new CAPICOM.Store();
oStore.Open(CAPICOM.CAPICOM_STORE_LOCATION.CAPICOM_CURRENT_USER_STORE);
var certificates = (CAPICOM.Certificates)oStore.Certificates;
var cadesCert = certificates.Find(CAPICOM.CAPICOM_CERTIFICATE_FIND_TYPE.CAPICOM_CERTIFICATE_FIND_SHA1_HASH, "<Отпечаток>", false)[1];
oStore.Close();

// импортируем симметричный ключ
var rSymAlgo = new CAdESCOM.SymmetricAlgorithm();
rSymAlgo.ImportKey(ExportedKey, cadesCert);
rSymAlgo.DiversData = DiversData;

// получаем сессионный ключ
var rSesKey = rSymAlgo.DiversifyKey();
rSesKey.IV = oSesKeyIV;
rSesKey.DiversData = DiversData;
var decryptedData = rSesKey.Decrypt(EncryptedData, true);


Подробнее о методах в документации - http://cpdn.cryptopro.ru...tent/cades/cadescom.html

ps. Если необходимо для тестов - шифрование выглядит аналогично шифрованию в плагине
Код:
// предварительно загружен cadesCert
string dataToEncr = "AA00";
var oSymAlgo = new CAdESCOM.SymmetricAlgorithm();
oSymAlgo.GenerateKey();
var ExportedKey = (string)oSymAlgo.ExportKey(cadesCert);
var oSesKey = oSymAlgo.DiversifyKey();
var DiversData = oSesKey.DiversData;
var oSesKeyIV = (string)oSesKey.IV;
var EncryptedData = (string)oSesKey.Encrypt(dataToEncr, true);
Техническую поддержку оказываем тут
Наша база знаний
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.