Статус: Активный участник
Группы: Участники
Зарегистрирован: 03.04.2019(UTC) Сообщений: 45 Поблагодарили: 1 раз в 1 постах
|
Здравствуйте! Подскажите, пожалуйста. Имеется задача зашифровать запрос в ФСС через CSP cryptcp. Код:cryptcp.exe -encr -encryptionAlg GOST -norev -nochain -f "D:\FSS_TEST_CERT_2020_GOST2012.cer" d:\encr.xml d:\encr.xml.encr
Имеется блок содержащий в себе информацию о секретном ключе Код:
<EncryptedData>
........................
<KeyInfo>
<X509Data>
<X509Certificate>…</X509Certificate>
</ds:X509Data>
</KeyInfo>
<CipherData>
<CipherValue>..<CipherValue>
</CipherData>
</EncryptedKey>
</KeyInfo>
........................
</EncryptedData>
и блок самого зашифрованного сообщения Код:
<EncryptedData>
........................
<CipherData>
<CipherValue>..<CipherValue>
</CipherData>
</EncryptedData>
На выходе получаю файл encr.xml.encr. Вопрос вот в чем: где в этом файле могут содержаться данные для KeyInfo -> CipherData -> CipherValue и сами зашифрованные данные?Через JCP KeyInfo -> CipherData -> CipherValue значение получается вот такое: Код:MIGkMCgEIGpZMg7kNWs36P3xVMZADfgcZX05+/2gpA4egTdcDnJzBARHH6XeoHgGByqFAwICHwGg
YzAcBgYqhQMCAhMwEgYHKoUDAgIkAAYHKoUDAgIeAQNDAARAnBnc5YCJ2Pe8p6BRE5iZlXqUhT4H
KhVknqPEEFvtyWNzCxnTopKV5FdvIc0RbYlqCnksVYVmdoXIVsCxsGYLswQI10qCB4OXEYs=
, а сами зашифрованные данные: Код:uKbIAyQa+jkrLVWC6di98RfRM+zaZw0I04L7yK15k0sW/y2/SMkj0bkbE+CrNq7XiUvy40IQoEQj
/J1fDObOVTo8VolZwnfFBngWOhum3szezssj29DkI5R+Vb+cGqFvgz9LIajay/K0IKGNNtZ3ssGw
Upcpheq2BGIDhbJCvs/kycxHlCSx2yGE+9mCNwrvZ5jgOWrPy4HbxEN5keltNZT7STz/9G7dDro0
SCuc2u3gHi+SdMqB5oPu4k19ELYN6oa06uprmsmhAGoYozsjr6b7fd4scWsgZqYz7oXfpOHFAe+2
3jhZAyu897RE3shO8YaQTnWuZr/zpuLe5ORo/sVCjMRlN3aLmfkXGMDSkJakIoQZ4AT54/L1s52V
KwribJlAkNZHXxzRwaKcGDUhsLtOsnejO8WA/n0dpKZzlLKIiCPXjwdybx4gbjgWRb4Rd/E58AWg
UHWeJSoSMeMChyFijtjsfmQ3CzLRBvo4rJTV23I1a0z7RiC0793TK7dKQtNmzbTNe5fX8sEhN6U7
YdWH35gNG5dQY9Huor9wMYD1x9roRXRkHInuV9yd7kb0YMd3DvVi383SFWglZzxlAxKtErOlxh5i
GKqMV63t6Wwfrl581Gd2MDx2gq26N3Te8Jdpd9jPFaodExE8BWgbesO2mx0Lnj5BVhyeLTn2YIm4
YUvFtctaNMQMRRtK4mwY3r7w1IGCsUFgsAvSitzURxHmhFgq2423ersAc8Tc0+9YhcNWl032g5nX
j+FS18ARl0sv0k0zA0A4myIHM3VDyAHKJL2FwD5jKMFBmxupDCEg9CQp5wlKsfvVXyJrsuX5wJV5
X8UAv5Gsj5RZn/jYFLmxz7zWFQNJN5UfoFhO2E6gC0UbPWfdvjlFp5NrQIJz/oq48n+0n8QbA4S7
+VpO4UnhspmfU8aNrP6U0+njBao81ZyZWm/rsbsL6PCJZEFBcubUB+B4odIaM8l+Jm/8us+WHR75
mjsGuq0/cG1Cc4gVtHzEkVCmWjZUHCziLAWXAxVYfiJUskthocFnl6cQ1Ww8gGdNSqTojWpe/+s/
Xuax6wr2sYrVQM7EqR8NhdK/01grYyUuJ0X2XbOunnKvdxLb0YQyCiB292j1MsI+c/uu1qBRoxc0
pzTSi+591j9MuHfdXAyuh7/DCKwB8EmcuW8xrG4MyMwORYZvuk
CNKFq7HLFg==
Через cryptcp.exe заголовок:MIAGCSq, а JCP MIGkM. Получится ли вообще зашифровать и расшифровать с помощью утилит CSP? Или нужно будет копать в сторону openSSL?
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 03.04.2019(UTC) Сообщений: 45 Поблагодарили: 1 раз в 1 постах
|
Поясню суть вопроса, где на выходе у cryptcp.exe -encr содержится информация о созданном случайном сессионном ключе для записи в KeyInfo -> CipherData -> CipherValue, чтобы ФСС смог расшифровать мое сообщение?
|
|
|
|
Статус: Эксперт
Группы: Участники
Зарегистрирован: 05.03.2015(UTC) Сообщений: 1,602 Откуда: Иркутская область Сказал(а) «Спасибо»: 110 раз Поблагодарили: 393 раз в 366 постах
|
Вот в этой теме есть утилиты для подобной задачи. https://www.cryptopro.ru...&m=107905#post107905А если подробно по вопросу, то из результат надо перевести из кодировку Base64 в двоичные данные, без этого символы сравнивать бесполезно, они будут разные. https://www.cryptopro.ru...aspx?g=posts&t=15341
Потом парсером кодировки ASN.1 сверяясь с pkcs#7 найти данные ключа. Когда найдете, можно где-то запомнить, место должно быть одинаковое для конкретного сертификата и формата подписи. Из этого места надо скопировать данные ключа и перевести обратно в Base64, так получится что-то похожее на ключ. Ключ по идее каждый раз разный, так что совпадать на 100% не будет.
Зашифрованные данные в самом конце, грубо берем размер исходных данных и округляем до ближайшего кратного 8 байтам, это количество байт копируем из конца encr файла, потом там еще надо найти вектор инициализации и склейку вектора+данных перевести в base64.
https://www.cryptopro.ru...&m=107454#post107454 подборка тем про ФСС
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 03.04.2019(UTC) Сообщений: 45 Поблагодарили: 1 раз в 1 постах
|
Получается, что зашифровать для ФСС можно только использовав апи CSP на С++/C# или JCP на java (ну и соответственно и с расшифровкой будут проблемы)?
|
|
|
|
Статус: Эксперт
Группы: Участники
Зарегистрирован: 05.03.2015(UTC) Сообщений: 1,602 Откуда: Иркутская область Сказал(а) «Спасибо»: 110 раз Поблагодарили: 393 раз в 366 постах
|
Полагаю, что не только. 1) Само собой, что кроме Си можно использовать и другие языки и среды программирования: в подборке как раз разные, в частности есть исходники полного цикла шифрования - расшифрования для сертификата ФСС гост-2001 на Дельфи и поправки что изменить для гост-2012. На настоящий момент в С# и Джава можно указать все нужные параметры. 2) Вы пробуете через утилиту, а утилита вызывает крипто апи напрямую (код утилиты не завязан на плагин), а в той теме не получилось через браузер плагин. Плагин при всей удобности, не дает той гибкости как при работе через апи. Кроме того, у плагина есть немало параметров, совершенно не факт что в той теме испробованы все способы. Ключ там выходил симметричный, не похожий на шифрование закрытым ключом ассиметричным, поэтому у меня остались сомнения. В итоге, я бы не стал на этом закрывать вопрос с плагином и утилитой, но, к сожалению, детально изучить вопрос и во всем разобраться у меня нет пока времени.
ЗЫ. Вообще лично я предпочитаю решать задачи криптографии "с конца" - набрать сначала "эталонных" запросов и ответов на мой сертификат через Wireshark и стандартное ПО (ФСС предоставляет АРМ, а для смэв 3 есть адаптер), потом отладить расшифровку/проверку подписи ответов в своей ИС и только в последнюю очередь шифрование/подписание в ИС. Преимущество в том, что имея рабочее расшифрование/проверку подписи можно локально отладить шифрование/подписание не дергая каждый раз тестовый сервис (например, без интернета) и на одних и тех же данных.
К тому же, параметры результата будет согласован "с другим концом" и не получится так, что своя программа прекрасно зашифровывает-расшифровывает, а ФСС не расшифровывает. Все несогласованности параметров уже вскроются когда попытаетесь расшифровать ответ, останется только воспроизвести параметры на стадии шифрования.
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 03.04.2019(UTC) Сообщений: 45 Поблагодарили: 1 раз в 1 постах
|
Спасибо за ответ. Шифрование для ФСС происходит на открытом ключе получателя.
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close