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

Уведомление

Icon
Error

3 Страницы<123>
Опции
К последнему сообщению К первому непрочитанному
Offline НаталияНаталия  
#11 Оставлено : 20 июля 2020 г. 20:02:06(UTC)
НаталияНаталия

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

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

Сказал(а) «Спасибо»: 4 раз
Автор: Андрей * Перейти к цитате

RSA сертификат и алгоритм хеширования MD5... ?

Странный выбор, я просто пыталась понять, не в коде ли проблема.


Автор: Андрей * Перейти к цитате

Почему бы для начала не получить тестовый сертификат по ГОСТ 2012?

Да, с этим сертификатом все работает! Спасибо огромное!
Offline Андрей *  
#12 Оставлено : 20 июля 2020 г. 20:07:36(UTC)
Андрей *

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

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

Сказал «Спасибо»: 500 раз
Поблагодарили: 2044 раз в 1585 постах
Автор: НаталияНаталия Перейти к цитате
Автор: Андрей * Перейти к цитате

RSA сертификат и алгоритм хеширования MD5... ?

Странный выбор, я просто пыталась понять, не в коде ли проблема.


Автор: Андрей * Перейти к цитате

Почему бы для начала не получить тестовый сертификат по ГОСТ 2012?

Да, с этим сертификатом все работает! Спасибо огромное!



Цитата:

yield oHashedData.propset_Algorithm(cadesplugin.CADESCOM_HASH_ALGORITHM_MD5);

Сами написали такое..
Это зачем было проверять? Код будет работать, если корректные алгоритмы\переменные для начала.
Техническую поддержку оказываем тут
Наша база знаний
Offline НаталияНаталия  
#13 Оставлено : 20 июля 2020 г. 20:10:43(UTC)
НаталияНаталия

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

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

Сказал(а) «Спасибо»: 4 раз
И можно все-таки еще задать один вопрос: почему с сертификатом RSA не работает такой вариант подписания:


Код:
yield oHashedData.propset_Algorithm(cadesplugin.CADESCOM_HASH_ALGORITHM_SHA_256);
yield oHashedData.SetHashValue("4f87edc9410cbde418fe1dd2f426a58af400bfd4d9f43993da2ffa56e01ac829");


ошибка: Failed to create signature. Error: Указан неправильный алгоритм. (0x80090008)

хэш вычислен правильно, и алгоритм для RSA указан соответствующий. В чем тогда проблема?
Заранее спасибо!

Отредактировано пользователем 20 июля 2020 г. 20:12:44(UTC)  | Причина: Не указана

Offline Андрей *  
#14 Оставлено : 20 июля 2020 г. 20:29:29(UTC)
Андрей *

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

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

Сказал «Спасибо»: 500 раз
Поблагодарили: 2044 раз в 1585 постах
Автор: НаталияНаталия Перейти к цитате
И можно все-таки еще задать один вопрос: почему с сертификатом RSA не работает такой вариант подписания:


Код:
yield oHashedData.propset_Algorithm(cadesplugin.CADESCOM_HASH_ALGORITHM_SHA_256);
yield oHashedData.SetHashValue("4f87edc9410cbde418fe1dd2f426a58af400bfd4d9f43993da2ffa56e01ac829");


ошибка: Failed to create signature. Error: Указан неправильный алгоритм. (0x80090008)

хэш вычислен правильно, и алгоритм для RSA указан соответствующий. В чем тогда проблема?
Заранее спасибо!


Вычислив и уставив SHA1 - работает?
Техническую поддержку оказываем тут
Наша база знаний
Offline НаталияНаталия  
#15 Оставлено : 20 июля 2020 г. 20:35:14(UTC)
НаталияНаталия

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

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

Сказал(а) «Спасибо»: 4 раз
Автор: Андрей * Перейти к цитате


Вычислив и уставив SHA1 - работает?


Да, так работает:


Код:

yield oHashedData.propset_Algorithm(cadesplugin.CADESCOM_HASH_ALGORITHM_SHA1);
yield oHashedData.SetHashValue("E4EED85DA784DD55B5404E194FAFB00363305DD5");
Offline Андрей *  
#16 Оставлено : 20 июля 2020 г. 20:49:01(UTC)
Андрей *

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

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

Сказал «Спасибо»: 500 раз
Поблагодарили: 2044 раз в 1585 постах
Автор: НаталияНаталия Перейти к цитате
Автор: Андрей * Перейти к цитате


Вычислив и уставив SHA1 - работает?


Да, так работает:


Код:

yield oHashedData.propset_Algorithm(cadesplugin.CADESCOM_HASH_ALGORITHM_SHA1);
yield oHashedData.SetHashValue("E4EED85DA784DD55B5404E194FAFB00363305DD5");


Хорошо, в сертификате SHA1 или ... SHA256?
Подпись УЦ SHA256?

Техническую поддержку оказываем тут
Наша база знаний
Offline НаталияНаталия  
#17 Оставлено : 20 июля 2020 г. 21:16:10(UTC)
НаталияНаталия

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

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

Сказал(а) «Спасибо»: 4 раз
Автор: Андрей * Перейти к цитате


Хорошо, в сертификате SHA1 или ... SHA256?
Подпись УЦ SHA256?


алгоритм подписи sha512RSA
алгоритм хэширования подписи sha512

Если я этим сертификатом подписываю через КриптоАРМ, то на выбор SHA-256 предлагается и проблем с подписанием не возникает. Более глубоко еще не погружалась в данную проблему(
Offline НаталияНаталия  
#18 Оставлено : 21 июля 2020 г. 2:53:38(UTC)
НаталияНаталия

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

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

Сказал(а) «Спасибо»: 4 раз
Автор: Андрей * Перейти к цитате


Конечно,
ГОСТ хеш => ГОСТ подпись.

Подпись вычисляется с учётом хеша - его значения и алгоритма.


Андрей, можно ещё задать вам вопрос, я так и не смогла найти ответ) Что отвечает за список поддерживаемых хэш-функций? Это какая-то привязка на уровне криптопровайдера, или как-то связано с алгоритмом самого сертификата? Вы про это спрашивали, хотя связь мне непонятна: какая разница каким способом посчитали хэш сертификата, мы при вычислении подписи может использовать любой другой?
Offline Михаил AAAAAA  
#19 Оставлено : 12 мая 2022 г. 20:44:58(UTC)
Михаил AAAAAA

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

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

Автор: НаталияНаталия Перейти к цитате
И можно все-таки еще задать один вопрос: почему с сертификатом RSA не работает такой вариант подписания:


Код:
yield oHashedData.propset_Algorithm(cadesplugin.CADESCOM_HASH_ALGORITHM_SHA_256);
yield oHashedData.SetHashValue("4f87edc9410cbde418fe1dd2f426a58af400bfd4d9f43993da2ffa56e01ac829");


ошибка: Failed to create signature. Error: Указан неправильный алгоритм. (0x80090008)

хэш вычислен правильно, и алгоритм для RSA указан соответствующий. В чем тогда проблема?
Заранее спасибо!


Здравствуйте! Столкнулись с такой же проблемой. Есть сертификат с ключами по алгоритму RSA длиной 2048 бит.
Используем следующий код:

Код:

...
//oCert - объект с выбранным сертификатом

var _oSigner = yield cadesplugin.CreateObjectAsync("CAdESCOM.CPSigner");
yield oSigner.propset_Certificate(oCert); 
yield oSigner.propset_CheckCertificate(true);

var oHashedData = yield cadesplugin.CreateObjectAsync("CAdESCOM.HashedData");
yield oHashedData.propset_Algorithm(cadesplugin.CADESCOM_HASH_ALGORITHM_SHA_256);
yield oHashedData.SetHashValue("4f87edc9410cbde418fe1dd2f426a58af400bfd4d9f43993da2ffa56e01ac829"); //для примера

var oSignedData = yield cadesplugin.CreateObjectAsync("CAdESCOM.CadesSignedData");
var sign = yield oSignedData.SignHash(oHashedData, oSigner, cadesplugin.CADESCOM_PKCS7_TYPE);
console.log(sign);

Результат - нет ошибок, но sign - пустая строка.
Если же вместо кода с oSignedData использовать следующий:
Код:

....
var oRawSignature = yield cadesplugin.CreateObjectAsync("CAdESCOM.RawSignature");
var sign = yield oRawSignature.SignHash(oHashedData, oCert);
console.log(sign);		

Результат - генерируется ошибка (exception) "Указан неправильный алгоритм. (0x80090008)".

С алгоритмом хэширования CADESCOM_HASH_ALGORITHM_SHA1 и этим же сертификатом ошибок нет и подпись генерируется правильно. Хотелось бы решение с алгоритмами sha-256 и sha-512.
Offline two_oceans  
#20 Оставлено : 13 мая 2022 г. 6:57:07(UTC)
two_oceans

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

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

Сказал(а) «Спасибо»: 110 раз
Поблагодарили: 394 раз в 366 постах
Добрый день.
Начну с того, что подписывать хэш само по себе не очень хорошая практика. Если позволяет задача - подписывайте содержимое, доверив вычисление хэша автоматике и избавитесь от кучи проблем. Поверьте, экономия на пересылке файла не стоит Ваших нервов. Исключение составляют интерфейсы вроде Питона, где подписать хэш - единственный способ.
Автор: Михаил AAAAAA Перейти к цитате
Столкнулись с такой же проблемой. Есть сертификат с ключами по алгоритму RSA длиной 2048 бит.
"с такой же проблемой" - самое худшее описание ситуации, просто по поверхностному проявлению Вы не можете знать заранее, что проблема такая же. С прошлых сообщений темы прошло 2 года и актуальные версии плагина и криптопровайдера изменились.

Пожалуйста, сообщите больше информации о своем случае, как минимум, как в сообщениях выше: версия плагина, версия криптопровайдера, криптопровайдер, в сертификате - открытый ключ по какому алгоритму? Дополню новшествами 5.0: установлен ли компонент КриптоПро RSA криптопровайдер? ключ RSA хранится в контейнере от Майкрософт или в контейнере от КриптоПро?
Автор: Михаил AAAAAA Перейти к цитате
Используем следующий код: ...
Результат - генерируется ошибка (exception) "Указан неправильный алгоритм. (0x80090008)".

С алгоритмом хэширования CADESCOM_HASH_ALGORITHM_SHA1 и этим же сертификатом ошибок нет и подпись генерируется правильно. Хотелось бы решение с алгоритмами sha-256 и sha-512.
Поясню немного общую ситуацию, если еще кто будет задаваться подобными экспериментами.

Для алгоритма гост (по крайней мере, в стандартах гост-94,гост-2001,гост-2012, так как гост-2015 я подробно не смотрел еще) жестко закреплено соответствие алгоритма ключа и алгоритма хэша. Подписать хэш гост-2012 получится только ключом гост-2012, причем только соответствующей длины. Причина в том, что подписание гост не использует шифрование хэша при подписании, а берет случайное число определенной длины и вычисляет с его участием "проверочное значение" такой же длины - вместе они составляют RAW подпись. С другим алгоритмом исходного хэша процедура вычисления "проверочного значения" технически не сработает (параметры алгоритма разные). Плюс есть ограничения регулятора, касающиеся использования "уже ненадежных" алгоритмов хэша (которые можно подобрать на современных компьютерах за достаточно короткое время).

В случае ключа RSA алгоритм хэша не фиксирован - при подписании значение хэша шифруется ключом и технически нет особой разницы что именно и какой длины зашифровано. Однако нужно понимать, что ключи и хэши меньше определенной длины использовать не получится, так как они уже признаны нестойкими и Microsoft CryptoApi их отклонит еще до самой процедуры подписания. Это справедливо если использовать интерфейсы Майкрософт - CryptoApi или CAPICOM.

Что касается подписания зарубежными алгоритмами через интерфейсы КриптоПро (cadescom), то с этим еще более сложная ситуация. В интернете можно найти много старого кода для КриптоПро 3.6, где не моргнув глазом в высокоуровневом вызове CryptoApi указывали алгоритм SHA1, сертификат гост-2001 и получали подписи.... гост-2001. Другими словами, раньше криптопровайдер КриптоПро не поддерживал зарубежные алгоритмы и использовал "магию" чтобы проигнорировать зарубежный алгоритм хэша и перейти на вычисление алгоритма гост, согласно сертификату.

С подписанием хэша в плагина все еще интереснее: при вызове CryptoApi сначала открывается дескриптор контейнера, потом на его основе открывается дескриптор хэша. Другими словами, либо нужно знать каким ключом хэш будете подписывать либо придется копировать значение хэша в новый объект хэша, когда определитесь с ключом. Плагин же позволяет создать HashedData и потом их подписать произвольно, то есть вот вы установили значение хэша, а потом при подписании где-то там внутри есть еще одна операция извлечения значения хэша и установки хэша в новый объект хэша (новый создан на основе дескриптора нужного контейнера).

По такой причине, без детального изучения проблемы (как минимум знания точных версий плагина и криптопровайдера) нельзя гарантировать какой именно криптопровайдер получил Ваш вызов с SHA256 и выдал ошибку о неправильном параметре. Есть вероятность, что как раз сработала "магия", но в этот раз автоисправление параметров привело к ошибке. В итоге, тестировать код для cadescom с указанием зарубежных алгоритмов не очень хорошая идея.

Однако если Вам нужно не просто для тестирования, а "всерьез", но недавно появился "свет в конце тоннеля". С версией 5.0 в КриптоПро добавился необязательный компонент (RSA криптопровайдер), который позволяет использовать контейнер КриптоПро для хранения ключей RSA. Для его работы нужно запустить установщик КриптоПро, отметить компонент (RSA криптопровайдер), установить, перезагрузиться. Затем экспортировать ключ RSA из контейнера Майкрософт, импортировать в контейнер КриптоПро (то есть средствами КриптоПро с привязкой уже к КриптоПро RSA криптопровайдеру). Если все получилось правильно, контейнер будет виден в КриптоПро. На новых версиях по идее сертификат также привязывается автоматом, на первых версия 5.0 надо привязать вручную. Если используете интерфейсы КриптоПро для подписания, ряд проблем может быть исправлен переходом на этот КриптоПро RSA криптопровайдер.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
3 Страницы<123>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.