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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline alpolin  
#1 Оставлено : 3 августа 2022 г. 14:12:20(UTC)
alpolin

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

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

Сказал(а) «Спасибо»: 2 раз
Поблагодарили: 1 раз в 1 постах
Добрый день.
Используем CryptEncryptMessage, и возникла проблема с алгоритмом шифрования контента. В декодированном envelopedData видно, что для ГОСТ-сертификатов всегда используется 1.2.643.2.2.21 (GOST 28147-89), даже если указывать алгоритмы 1.2.643.7.1.1.5.1 и 1.2.643.7.1.1.5.2. Собственно такой же результат получится, если передать просто билеберду вместо oid. Возможно для них нужно обязательно указывать параметры, но я не нашел какие.

Для RSA-сертификатов нормально задаются и получаются на выходе 1.2.840.113549.3.4 и 1.2.840.113549.3.7, так что вероятно вызывающий код правильный.

Вопросы:
1) Может ли CryptEncryptMessage работать с кузнечиком и магмой?
2) Можно ли через низкоуровневые функции сформировать аналогичное сообщение с использованием кузнечика и магмы?
Offline Андрей *  
#2 Оставлено : 3 августа 2022 г. 14:51:22(UTC)
Андрей *

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

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

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

Используется версия 5R2 и выше?
Техническую поддержку оказываем тут
Наша база знаний
Offline alpolin  
#3 Оставлено : 3 августа 2022 г. 14:58:21(UTC)
alpolin

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

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

Сказал(а) «Спасибо»: 2 раз
Поблагодарили: 1 раз в 1 постах
Пробовал на 5.0.11998 KC1, и на 5.0.12500 KC1 (это вроде R3) - результат одинаковый
Offline Андрей Русев  
#4 Оставлено : 3 августа 2022 г. 16:26:07(UTC)
Русев Андрей

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

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

Сказал(а) «Спасибо»: 49 раз
Поблагодарили: 705 раз в 486 постах
API точно работоспособно. В этом на windows/unix можно убедиться с помощью csptest в духе
Код:
$ csptest -sfenc -encrypt -alg GR3412_M -in src.txt -out src.txt.enc -my CN=user_cert -cert CN=user_cert
Read time: SYS: 0.000 sec USR: 0.000 sec UTC: 0.000 sec
Read perf: SYS: overflow USR: overflow UTC: overflow
#0:
Subject: CN=user_cert
Valid  : 03.08.2022 00:21:57 - 03.08.2032 07:01:57 (UTC)
Issuer : DC=ru, DC=cp, CN=test-ca

#0:
Subject: CN=user_cert
Valid  : 03.08.2022 00:21:57 - 03.08.2032 07:01:57 (UTC)
Issuer : DC=ru, DC=cp, CN=test-ca

The encrypted message is 3700 bytes.
Memory has been allocated for the encrypted blob.
File has been encrypted with alg: 1.2.643.7.1.1.5.1.1
Encrypt time: SYS: 0.000 sec USR: 0.030 sec UTC: 0.110 sec
Encrypt perf: SYS: overflow USR: 106.152 Kb/sec UTC: 28.951 Kb/sec
Output file (src.txt.enc) has been saved
[ErrorCode: 0x00000000]

Проверить алгоритмы можно на windows
Код:
> certutil -dump src.txt.enc
PKCS7 Message:
  CMSG_ENVELOPED(3)
  CMSG_ENVELOPED_DATA_PKCS_1_5_VERSION(0)
  Content Type: 1.2.840.113549.1.7.1 PKCS 7 Data

Content Encryption Algorithm:
    Algorithm ObjectId: 1.2.643.7.1.1.5.1.1 GOST R 34.12-2015 Magma CTR-ACPKM
    Algorithm Parameters:
    30 0e 04 0c 88 49 2d c6  d9 05 2f ae e8 05 8e 7b
        88 49 2d c6 d9 05 2f ae  e8 05 8e 7b               .I-.../....{
...
No Signer
Recipient Count: 1

Recipient Info[0]:
CMSG_KEY_TRANS_RECIPIENT(1)
CERT_ID_ISSUER_SERIAL_NUMBER(1)
    Serial Number: 76a5aed00000005347db
    Issuer: CN=test-ca, DC=cp, DC=ru
Key Encryption Algorithm:
    Algorithm ObjectId: 1.2.643.7.1.1.7.1.1
    Algorithm Parameters:
    30 0a 06 08 2a 85 03 07  01 01 06 02
        1.2.643.7.1.1.6.2 GOST R 34.10-2012 DH 512 bit
...

и на unix:
Код:
$ openssl cms -inform DER -cmsout -print -in src.txt.enc
CMS_ContentInfo:
  contentType: pkcs7-envelopedData (1.2.840.113549.1.7.3)
  d.envelopedData:
    version: <ABSENT>
    originatorInfo: <ABSENT>
    recipientInfos:
      d.ktri:
        version: <ABSENT>
        d.issuerAndSerialNumber:
          issuer: DC=ru, DC=cp, CN=test-ca
          serialNumber: 560295554318937971967963
        keyEncryptionAlgorithm:
          algorithm: undefined (1.2.643.7.1.1.7.1.1)
          parameter: SEQUENCE:
    0:d=0  hl=2 l=  10 cons: SEQUENCE
    2:d=1  hl=2 l=   8 prim:  OBJECT            :1.2.643.7.1.1.6.2
        encryptedKey:
...
    encryptedContentInfo:
      contentType: pkcs7-data (1.2.840.113549.1.7.1)
      contentEncryptionAlgorithm:
        algorithm: undefined (1.2.643.7.1.1.5.1.1)
        parameter: SEQUENCE:
    0:d=0  hl=2 l=  14 cons: SEQUENCE
    2:d=1  hl=2 l=  12 prim:  OCTET STRING      [HEX DUMP]:88492DC6D9052FAEE8058E7B
      encryptedContent:
...
Официальная техподдержка. Официальная база знаний.
thanks 1 пользователь поблагодарил Русев Андрей за этот пост.
Андрей * оставлено 03.08.2022(UTC)
Offline alpolin  
#5 Оставлено : 3 августа 2022 г. 16:38:25(UTC)
alpolin

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

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

Сказал(а) «Спасибо»: 2 раз
Поблагодарили: 1 раз в 1 постах
Да, спасибо, через csptest работает.
Буду разбираться со своим кодом
Offline alpolin  
#6 Оставлено : 4 августа 2022 г. 8:22:21(UTC)
alpolin

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

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

Сказал(а) «Спасибо»: 2 раз
Поблагодарили: 1 раз в 1 постах
Разобрался, код был верным, oid-ы - нет, теперь всё работает. Надо указывать один из этих (с механизмом преобразования ключа): 1.2.643.7.1.1.5.1.1, 1.2.643.7.1.1.5.1.2, 1.2.643.7.1.1.5.2.1, 1.2.643.7.1.1.5.2.2.
thanks 1 пользователь поблагодарил alpolin за этот пост.
Русев Андрей оставлено 05.08.2022(UTC)
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.