logo Обзор КриптоПро NGate для защищённого доступа к корпоративным ресурсам
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline manymany  
#1 Оставлено : 10 июля 2019 г. 12:22:31(UTC)
manymany

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

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

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

Выполняю шифрование данных с использованием алгоритма шифрования RSA_DES_EDE3_CBC ("1.2.840.113549.3.7") и сертификата с алгоритмом подписания SHA256RSA:

Код:
// определяем параметры шифрования
var encryptParams = new CryptEncryptMessagePara
{
  CbSize = Marshal.SizeOf(typeof(CryptEncryptMessagePara)),
  DwMsgEncodingType = NativeMethods.Encoding,
  HCryptProv = IntPtr.Zero,
  ContentEncryptionAlgorithm = new CryptAlgorithmIdentifier
  {
     PszObjId = "1.2.840.113549.3.7"
  }
};

// получаем размер массива с зашифрованными данными
if (!NativeMethods.CryptEncryptMessage(
  ref encryptParams,
  1,
  certificateHandlesArray.Handle.AddrOfPinnedObject(),
  contentHandle.Handle.AddrOfPinnedObject(),
  content.Length,
  null,
  ref bufferLength))
  {
    throw new InvalidOperationException(string.Format(Resources.NativeCryptoApi_EncryptContentSizeError, NativeMethods.GetLastError()));
}



На Windows данные успешно шифруются. Но на Ubuntu получаю ошибку 0x80091003.

При использовании аналогичного кода для шифрования с ГОСТовскими сертификатами и алгоритмом шифрования ГОСТ 28147-89 данные шифруются успешно и на Windows и на Ubuntu.

Подскажите, пожалуйста, с чем может быть связанна ошибка шифрования при использовании RSA_DES_EDE3_CBC на Ubuntu?
Offline Андрей Писарев  
#2 Оставлено : 10 июля 2019 г. 19:15:46(UTC)
Андрей Писарев

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

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 8,343
Мужчина

Сказал «Спасибо»: 292 раз
Поблагодарили: 1167 раз в 921 постах
Здравсвуйте.

Цитата:

Но на Ubuntu


Версия...?

Сертификат ... ?


Поиск по коду ошибки:
CryptEncryptMessage. The object identifier is poorly formatted. (0x80091003)

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

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

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

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 3 раз в 1 постах
Автор: Андрей Писарев Перейти к цитате
Здравсвуйте.

Цитата:

Но на Ubuntu


Версия...?

Сертификат ... ?


Поиск по коду ошибки:
CryptEncryptMessage. The object identifier is poorly formatted. (0x80091003)



1. Ubuntu 18.04.02
2. Крипто Про 5.0.11453
3. Видел этот вопрос на форуме, но там нет решения.
4. Сертификат: cert.zip (2kb) загружен 3 раз(а).

Отредактировано пользователем 10 июля 2019 г. 20:06:49(UTC)  | Причина: Перезалил сертификат

Offline Андрей Писарев  
#4 Оставлено : 10 июля 2019 г. 20:46:50(UTC)
Андрей Писарев

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

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 8,343
Мужчина

Сказал «Спасибо»: 292 раз
Поблагодарили: 1167 раз в 921 постах


1) Нормальный сертификат сделать для начала...
Цитата:
CN = CN = ООО "ТЕРРАЛИНК"


2) Использование ключа: Цифровая подпись, Шифрование ключей (a0)
Где шифрование данных?
Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей Писарев  
#5 Оставлено : 10 июля 2019 г. 20:48:21(UTC)
Андрей Писарев

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

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 8,343
Мужчина

Сказал «Спасибо»: 292 раз
Поблагодарили: 1167 раз в 921 постах
Предлагаю для "самопроверки" зашифровать на сертификат ЦС:
Цитата:
CN = Terralink Class 1 Issuing SubCA 1


Техническую поддержку оказываем тут
Наша база знаний
Offline manymany  
#6 Оставлено : 11 июля 2019 г. 8:45:19(UTC)
manymany

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

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

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 3 раз в 1 постах
Автор: Андрей Писарев Перейти к цитате
Предлагаю для "самопроверки" зашифровать на сертификат ЦС:
Цитата:
CN = Terralink Class 1 Issuing SubCA 1




Попробовал зашифровать с помощью данного сертификата.
Результат аналогичный: на Windows работает, на Ubuntu ошибка 0x80091003.

Отредактировано пользователем 11 июля 2019 г. 9:00:23(UTC)  | Причина: Не указана

Offline manymany  
#7 Оставлено : 11 июля 2019 г. 9:13:23(UTC)
manymany

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

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

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


1) Нормальный сертификат сделать для начала...
Цитата:
CN = CN = ООО "ТЕРРАЛИНК"


2) Использование ключа: Цифровая подпись, Шифрование ключей (a0)
Где шифрование данных?


Сделал самоподписанный сертификат в котором исправил Subject и добавил шифрование данных в свойство использование ключа.
selfCert.zip (1kb) загружен 2 раз(а).

Опять получил аналогичный результат: на Windows работает, на Ubuntu ошибка 0x80091003.
Offline Андрей Писарев  
#8 Оставлено : 11 июля 2019 г. 9:21:14(UTC)
Андрей Писарев

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

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 8,343
Мужчина

Сказал «Спасибо»: 292 раз
Поблагодарили: 1167 раз в 921 постах
Другой алгоритм шифрования проверьте.
Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей Писарев  
#9 Оставлено : 11 июля 2019 г. 9:24:30(UTC)
Андрей Писарев

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

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 8,343
Мужчина

Сказал «Спасибо»: 292 раз
Поблагодарили: 1167 раз в 921 постах
Зашифровал:
selfCert.zip.enc (2kb) загружен 1 раз(а).


Цитата:
355 30 NDEF: SEQUENCE {
357 06 9: OBJECT IDENTIFIER data (1 2 840 113549 1 7 1)
368 30 26: SEQUENCE {
370 06 8: OBJECT IDENTIFIER rc2CBC (1 2 840 113549 3 2)
380 30 14: SEQUENCE {
382 02 2: INTEGER 160
386 04 8: OCTET STRING
: 43 C7 08 CD 8B EB 15 0A
: }
: }
Техническую поддержку оказываем тут
Наша база знаний
Offline manymany  
#10 Оставлено : 11 июля 2019 г. 9:38:29(UTC)
manymany

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

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

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 3 раз в 1 постах
На этом алгоритме шифрования ("1.2.840.113549.3.2") тоже самое: на Windows работает, на Ubuntu ошибка 0x80091003.
А вы на Ubuntu шифровали?
Offline manymany  
#11 Оставлено : 11 июля 2019 г. 10:28:24(UTC)
manymany

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

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

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 3 раз в 1 постах
Так же попробовал шифровать данные с использованием EnvelopedCms (NuGet-пакет System.Security.Cryptography.Pkcs):
Код:
            var envelopedCms = new EnvelopedCms(new ContentInfo(content));
            var recipient = new CmsRecipient(certificate);
            envelopedCms.Encrypt(recipient);
            var enc = envelopedCms.Encode();


Шифрование заработало и Windows и Ubuntu.
Причем там используется тот же алгоритм шифрования RSA_DES_EDE3_CBC ("1.2.840.113549.3.7").

Но вот шифрование с помощью CryptEncryptMessage по прежнему не работает на Ubuntu.
Offline Андрей Писарев  
#12 Оставлено : 11 июля 2019 г. 10:42:58(UTC)
Андрей Писарев

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

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 8,343
Мужчина

Сказал «Спасибо»: 292 раз
Поблагодарили: 1167 раз в 921 постах
Автор: manymany Перейти к цитате
Так же попробовал шифровать данные с использованием EnvelopedCms (NuGet-пакет System.Security.Cryptography.Pkcs):
Код:
            var envelopedCms = new EnvelopedCms(new ContentInfo(content));
            var recipient = new CmsRecipient(certificate);
            envelopedCms.Encrypt(recipient);
            var enc = envelopedCms.Encode();


Шифрование заработало и Windows и Ubuntu.
Причем там используется тот же алгоритм шифрования RSA_DES_EDE3_CBC ("1.2.840.113549.3.7").

Но вот шифрование с помощью CryptEncryptMessage по прежнему не работает на Ubuntu.


А зачем используется именно CryptEncryptMessage?
Техническую поддержку оказываем тут
Наша база знаний
Offline manymany  
#13 Оставлено : 11 июля 2019 г. 10:51:07(UTC)
manymany

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

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

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 3 раз в 1 постах
EnvelopedCms в .Net Core не умеет работать с ГОСТовским сертификатами.
А нам необходимо универсальное решение, которое позволило бы шифровать данные используя и ГОСТ и неГОСТ сертификаты.
С ГОСТ сертификатами проблем нет - CryptEncryptMessage успешно шифрует и на Windows и на Ubuntu.
А вот не ГОСТ сейчас почему-то работает только на Windows.
Offline olin  
#14 Оставлено : 11 июля 2019 г. 12:07:09(UTC)
Андрей Русев

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

Группы: Администраторы, Участники
Зарегистрирован: 16.04.2008(UTC)
Сообщений: 580

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 100 раз в 83 постах
На данный момент на unix-системах у нас есть поддержка CMS-шифрования только по ГОСТ. Доработка запланирована, запрос для ориентира в changelog - CPCSP-10165.

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

Официальная техподдержка. Официальная база знаний.
thanks 1 пользователь поблагодарил Андрей Русев за этот пост.
manymany оставлено 11.07.2019(UTC)
Offline manymany  
#15 Оставлено : 11 июля 2019 г. 12:30:59(UTC)
manymany

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

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

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 3 раз в 1 постах
Ок. Спасибо за информацию!
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.