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

Уведомление

Icon
Error

2 Страницы12>
Опции
К последнему сообщению К первому непрочитанному
Offline migel  
#1 Оставлено : 4 февраля 2019 г. 11:47:02(UTC)
migel

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

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

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 5 раз в 5 постах
Добрый день.
На днях борясь с ФСС обнаружил кой чего (безотносительно самого ФСС Silenced ).
При генерации сессионного ключа 28147 всегда используется 2001 провайдер (TypeId=75).
Соответственно параметры CIPHER_OID ключа всегда берутся для указанного провайдера.
И если при шифровании ключа используется новый сертификат ФСС (уполномоченного лица) с
2012 ключом получается нехорошо :-(.
В обернутом ключе параметры алгоритма прописываются
1.2.643.2.2.31.1
когда как ФСС ожидает
1.2.643.7.1.2.5.1.1.

Средствами крипто про.НЕТ похоже не исправить :-(
Offline Максим Коллегин  
#2 Оставлено : 4 февраля 2019 г. 11:57:18(UTC)
Максим Коллегин

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

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

Сказал «Спасибо»: 20 раз
Поблагодарили: 619 раз в 551 постах
Спасибо, подумаем, как поправить.
Знания в базе знаний, поддержка в техподдержке
Offline Артём Макаров  
#3 Оставлено : 4 февраля 2019 г. 12:54:12(UTC)
Артём Макаров

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

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

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 35 раз в 35 постах
Добрый день.

Шифрование и создание ключа делаете сами, или он вся работа с ним исключительно внутри WCF и\или XML?

Можете предоставить пример кода, который вы используете?
Техническую поддержку оказываем тут
Наша база знаний
Offline migel  
#4 Оставлено : 4 февраля 2019 г. 13:18:19(UTC)
migel

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

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

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 5 раз в 5 постах
Что то навроде такого:
Код:

        public static void EncryptXmlElement(XmlElement elementToEncrypt, X509Certificate2 certificateToEncrypt, X509Certificate2 certificateToDecrypt = null)
        {
            if (elementToEncrypt == null)
            {
                throw new ArgumentNullException("elementToEncrypt");
            }

            if (certificateToEncrypt == null)
            {
                throw new ArgumentNullException("certificateToDecrypt");
            }

            var encryptedData = new EncryptedData
            {
                Type = EncryptedXml.XmlEncElementContentUrl,
                EncryptionMethod = new EncryptionMethod(EncryptionMethod_XmlEncGost28147Url),
                KeyInfo = new KeyInfo()
            };

            using (var key = new Gost28147CryptoServiceProvider())
            {
                var encryptedXml = new EncryptedXml();
                var data = encryptedXml.EncryptData(elementToEncrypt, key, false);
                byte[] encryptedKey = null;
                if (certificateToEncrypt.PublicKey.Key is Gost3410)
                {
                    encryptedKey = CPEncryptedXml.EncryptKey(key, (Gost3410)certificateToEncrypt.PublicKey.Key);
                }
                else if (certificateToEncrypt.PublicKey.Key is Gost3410_2012_256)
                {
                    encryptedKey = CPEncryptedXml.EncryptKey(key, (Gost3410_2012_256)certificateToEncrypt.PublicKey.Key);
                }
                else if (certificateToEncrypt.PublicKey.Key is Gost3410_2012_512)
                {
                    encryptedKey = CPEncryptedXml.EncryptKey(key, (Gost3410_2012_512)certificateToEncrypt.PublicKey.Key);
                }
                else
                {
                    throw new InvalidOperationException("Unsupported key algorithm.");
                }

                var ek = new EncryptedKey
                    {
                        CipherData = new CipherData(encryptedKey),
                        EncryptionMethod = new EncryptionMethod(certificateToEncrypt.PublicKey.Key.KeyExchangeAlgorithm)
                    };

                if (certificateToDecrypt != null)
                {
                    ek.KeyInfo.AddClause(new KeyInfoX509Data(certificateToDecrypt));
                }

                encryptedData.KeyInfo.AddClause(new KeyInfoEncryptedKey(ek));
                encryptedData.CipherData.CipherValue = data;
            }

            EncryptedXml.ReplaceElement(elementToEncrypt, encryptedData, false);
        }

Offline Артём Макаров  
#5 Оставлено : 5 февраля 2019 г. 10:34:32(UTC)
Артём Макаров

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

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

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 35 раз в 35 постах
NETSetup.zip (1,501kb) загружен 21 раз(а).
Попробуйте сборку из вложения. Пароль - 1.

В данной сборке возможно явно задать параметры шифрования у объекта Gost28147CryptoServiceProvider:

Код:

using (var key = new Gost28147CryptoServiceProvider())
{
    key.CipherOid = "1.2.643.7.1.2.5.1.1";
    // ...
}


Также возможно заменить используемый по умолчанию провайдер для Gost28147CryptoServiceProvider.
Для этого в конфигурации необходимо создать секцию CryptoProNetSettings:

Код:

<configuration>
    <configSections>
        <section name="CryptoProNetSettings" type="System.Configuration.NameValueSectionHandler"/>
    </configSections>
    <CryptoProNetSettings>
        <add key="DefaultSymmetricProvType" value = "80"/> 
    </CryptoProNetSettings> 
</configuration>
Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Артём Макаров за этот пост.
migel оставлено 05.02.2019(UTC)
Offline migel  
#6 Оставлено : 5 февраля 2019 г. 16:10:56(UTC)
migel

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

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

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 5 раз в 5 постах
Автор: Артём Макаров Перейти к цитате
NETSetup.zip (1,501kb) загружен 21 раз(а).
Попробуйте сборку из вложения. Пароль - 1.

Докладываю - принудительная установка CIPHEROID для провайдера работает.
Но так как ФСС использует для экспорта/импорта ключей CALG_PRO_EXPORT
то связь все равно не удается :-(.
Если Вы уж синхронизируете URI и JCP/NET решения
нельзя ли все таки как то указать в URI параметры алгоритма экспорта ключей
для CALG_PRO_EXPORT и для CALG_PRO12_EXPORT

Что нибудь этакое:
Код:

   public const string XmlKeyExchange2001 = "urn:ietf:params:xml:ns:cpxmlsec:algorithms:transport-gost2001";
   public const string XmlKeyExchange2012_256_PRO = "urn:ietf:params:xml:ns:cpxmlsec:algorithms:transport-gost2012-256-01";
   public const string XmlKeyExchange2012_256_P12 = "urn:ietf:params:xml:ns:cpxmlsec:algorithms:transport-gost2012-256-12";
   public const string XmlKeyExchange2012_512_PRO = "urn:ietf:params:xml:ns:cpxmlsec:algorithms:transport-gost2012-512-01";
   public const string XmlKeyExchange2012_512_P12 = "urn:ietf:params:xml:ns:cpxmlsec:algorithms:transport-gost2012-512-12";


Ибо делать два подхода к снаряду невместно :-)

Отредактировано пользователем 5 февраля 2019 г. 16:11:46(UTC)  | Причина: Не указана

Offline two_oceans  
#7 Оставлено : 6 февраля 2019 г. 6:03:10(UTC)
two_oceans

Статус: Эксперт

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

Сказал(а) «Спасибо»: 95 раз
Поблагодарили: 342 раз в 322 постах
Добавлять -01 или -12 наверно очень плохой вариант, лучше уж при такой идее вдохновиться принципом формирования урн для алгоритма каноникализации и параметры реализации алгоритма указывать после специального символа (решетки или двоеточия) вроде #ProExport #Pro12Export или :export:pro12 :export:pro.

Ну а в целом, менять стандарт по урн конечно непросто, "2 раза подходить" проще. Допустим ставить CALG_PRO12_EXPORT по умолчанию по урн госта-2012, но давать возможность переопределить на CALG_PRO_EXPORT. Или автоматом определять асимметричный ли ключ и от этого танцевать. Вроде уже что-то подобное обсуждали и решили не вводить новых идентификаторов.
Offline migel  
#8 Оставлено : 6 февраля 2019 г. 14:47:50(UTC)
migel

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

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

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 5 раз в 5 постах
Автор: two_oceans Перейти к цитате
Добавлять -01 или -12 наверно очень плохой вариант, лучше уж при такой идее вдохновиться принципом формирования урн для алгоритма каноникализации и параметры реализации алгоритма указывать после специального символа (решетки или двоеточия) вроде #ProExport #Pro12Export или :export:pro12 :export:pro.

Это уже детали - основная идея чтобы алгоритм специфицировался более подробно.

Автор: two_oceans Перейти к цитате

Ну а в целом, менять стандарт по урн конечно непросто, "2 раза подходить" проще. Допустим ставить CALG_PRO12_EXPORT по умолчанию по урн госта-2012, но давать возможность переопределить на CALG_PRO_EXPORT. Или автоматом определять асимметричный ли ключ и от этого танцевать. Вроде уже что-то подобное обсуждали и решили не вводить новых идентификаторов.

Согласно высказываниям этого форума для симметричного ключа допустимо оба варианта. А ежели еще какой алгоритм врапа ключей вылезет - еще один подход делать?

Offline Максим Коллегин  
#9 Оставлено : 6 февраля 2019 г. 16:46:15(UTC)
Максим Коллегин

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

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

Сказал «Спасибо»: 20 раз
Поблагодарили: 619 раз в 551 постах
Подобные вещи всё-таки уместнее обсуждать в рамках ТК-26, а не здесь.
Пока мы принили волевое решение использовать PRO12 для gost12.
При расшифровании пытаемся использовать PRO_EXPORT, если PRO12 не подходит.
Знания в базе знаний, поддержка в техподдержке
Offline migel  
#10 Оставлено : 6 февраля 2019 г. 17:12:08(UTC)
migel

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

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

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 5 раз в 5 постах
Автор: Максим Коллегин Перейти к цитате
Подобные вещи всё-таки уместнее обсуждать в рамках ТК-26, а не здесь.

На какой площадке ведется обсуждение?

Автор: Максим Коллегин Перейти к цитате

Пока мы принили волевое решение использовать PRO12 для gost12.
При расшифровании пытаемся использовать PRO_EXPORT, если PRO12 не подходит.


Это замечательно, только для обмена со сторонними сервисами как нибудь нужно и шифровать с разными алгоритмами.
Тот же (Не к ночи будет упомянут) ФСС PRO12 не понимает в принципе - ему PRO нужен.Brick wall


Offline Максим Коллегин  
#11 Оставлено : 6 февраля 2019 г. 18:37:26(UTC)
Максим Коллегин

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

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

Сказал «Спасибо»: 20 раз
Поблагодарили: 619 раз в 551 постах
Автор: migel Перейти к цитате

На какой площадке ведется обсуждение?

https://tc26.ru/
Знания в базе знаний, поддержка в техподдержке
thanks 1 пользователь поблагодарил Максим Коллегин за этот пост.
migel оставлено 07.02.2019(UTC)
Offline Артём Макаров  
#12 Оставлено : 7 февраля 2019 г. 13:27:39(UTC)
Артём Макаров

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

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

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 35 раз в 35 постах
Автор: migel Перейти к цитате
Автор: Артём Макаров Перейти к цитате
NETSetup.zip (1,501kb) загружен 21 раз(а).
Попробуйте сборку из вложения. Пароль - 1.

Докладываю - принудительная установка CIPHEROID для провайдера работает.
Но так как ФСС использует для экспорта/импорта ключей CALG_PRO_EXPORT
то связь все равно не удается :-(.
Если Вы уж синхронизируете URI и JCP/NET решения
нельзя ли все таки как то указать в URI параметры алгоритма экспорта ключей
для CALG_PRO_EXPORT и для CALG_PRO12_EXPORT

Что нибудь этакое:
Код:

   public const string XmlKeyExchange2001 = "urn:ietf:params:xml:ns:cpxmlsec:algorithms:transport-gost2001";
   public const string XmlKeyExchange2012_256_PRO = "urn:ietf:params:xml:ns:cpxmlsec:algorithms:transport-gost2012-256-01";
   public const string XmlKeyExchange2012_256_P12 = "urn:ietf:params:xml:ns:cpxmlsec:algorithms:transport-gost2012-256-12";
   public const string XmlKeyExchange2012_512_PRO = "urn:ietf:params:xml:ns:cpxmlsec:algorithms:transport-gost2012-512-01";
   public const string XmlKeyExchange2012_512_P12 = "urn:ietf:params:xml:ns:cpxmlsec:algorithms:transport-gost2012-512-12";


Ибо делать два подхода к снаряду невместно :-)


NETSetup.zip (1,501kb) загружен 8 раз(а).
Пока что можете попробовать очередное обновление сборки. (вложение)
В ней можно вручную задавать алгоритм экспорта (CALG_PRO_EXPORT) при шифровании ключа ГОСТ 2012:

Код:

encryptedKey = CPEncryptedXml.EncryptKey(
                        sessionKey, (Gost3410_2012_256)cert.PublicKey.Key, GostKeyWrapMethod.CryptoProKeyWrap);

По умолчанию всё также используется PRO12_EXPORT
Техническую поддержку оказываем тут
Наша база знаний
Offline migel  
#13 Оставлено : 7 февраля 2019 г. 14:45:32(UTC)
migel

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

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

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 5 раз в 5 постах
Автор: Артём Макаров Перейти к цитате

Пока что можете попробовать очередное обновление сборки. (вложение)
В ней можно вручную задавать алгоритм экспорта (CALG_PRO_EXPORT) при шифровании ключа ГОСТ 2012:
Код:

encryptedKey = CPEncryptedXml.EncryptKey(
                        sessionKey, (Gost3410_2012_256)cert.PublicKey.Key, GostKeyWrapMethod.CryptoProKeyWrap);

По умолчанию всё также используется PRO12_EXPORT


Спасибо попробуем

Offline migel  
#14 Оставлено : 25 февраля 2019 г. 12:15:40(UTC)
migel

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

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

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 5 раз в 5 постах
Автор: Артём Макаров Перейти к цитате

Пока что можете попробовать очередное обновление сборки. (вложение)
В ней можно вручную задавать алгоритм экспорта (CALG_PRO_EXPORT) при шифровании ключа ГОСТ 2012:

Докладываю метод объявлен но он не соответствует декларации
Код:

public static byte[] EncryptKey(SymmetricAlgorithm keyToEncrypt, Gost28147 exportingKey, GostKeyWrapMethod method)

То есть подразумевается что с враппед ключем (в виде CRYPTO_BLOB) мы будем далее управляться самостоятельно?

Не не не Дэвид Блейн.. (ну или ай нэ нэ.... )Not talking
Метод нужно именно такой как и декларировалось
Код:

public static byte[] EncryptKey(Gost28147 simm, Gost3410_2012_256 gost, GostKeyWrapMethod method)


Offline Артём Макаров  
#15 Оставлено : 26 февраля 2019 г. 9:02:05(UTC)
Артём Макаров

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

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

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 35 раз в 35 постах
Пардон, не ту сборку выше. Вот корректная.
NETSetup.zip (1,504kb) загружен 65 раз(а).
Пароль - 1.
Техническую поддержку оказываем тут
Наша база знаний
Offline Wolfy  
#16 Оставлено : 26 февраля 2019 г. 10:52:53(UTC)
Wolfy

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

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

Сказал(а) «Спасибо»: 1 раз
Цитата:
Пардон, не ту сборку выше. Вот корректная.
NETSetup.zip (1,504kb) загружен 1 раз(а).
Пароль - 1.

Вы уверены, что это корректная? Мы обновили, но ничего вроде не поменялось.

Отредактировано пользователем 26 февраля 2019 г. 10:53:52(UTC)  | Причина: Не указана

Offline Wolfy  
#17 Оставлено : 26 февраля 2019 г. 13:23:17(UTC)
Wolfy

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

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

Сказал(а) «Спасибо»: 1 раз
Подскажите ещё такой момент. У вас на сайте написано, что версии Крипто Про .NET SDK и .NET должны совпадать. Но для загрузки .NET SDK доступна версия 1.0.6893, когда как у .NET 1.0.6991. Может ли это как-то влиять?
Offline Артём Макаров  
#18 Оставлено : 26 февраля 2019 г. 14:18:00(UTC)
Артём Макаров

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

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

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 35 раз в 35 постах
Если используется для сборки проектов sdk - то да, обновления сами не подтянутся. Необходимо или поставить соответствующий sdk, или использовать сборки из GAC (C:\Windows\Microsoft.NET\assembly\GAC_MSIL\CryptoPro.Sharpei.Xml).

Если необходимо - текущая тестовая версия sdk:

Ссылка на текущую на sdk для тестов.
Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Артём Макаров за этот пост.
Wolfy оставлено 27.02.2019(UTC)
Offline Wolfy  
#19 Оставлено : 27 февраля 2019 г. 5:27:36(UTC)
Wolfy

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

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

Сказал(а) «Спасибо»: 1 раз
Автор: Артём Макаров Перейти к цитате
Если используется для сборки проектов sdk - то да, обновления сами не подтянутся. Необходимо или поставить соответствующий sdk, или использовать сборки из GAC (C:\Windows\Microsoft.NET\assembly\GAC_MSIL\CryptoPro.Sharpei.Xml).

Если необходимо - текущая тестовая версия sdk:

Ссылка на текущую на sdk для тестов.


Спасибо. Теперь работает.
Offline alex303  
#20 Оставлено : 4 марта 2019 г. 16:57:04(UTC)
alex303

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

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

Сказал(а) «Спасибо»: 1 раз
Автор: Артём Макаров Перейти к цитате
Пардон, не ту сборку выше. Вот корректная.
NETSetup.zip (1,504kb) загружен 65 раз(а).
Пароль - 1.


Все заработало, спасибо...
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
2 Страницы12>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.