Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

ПараметрОписание
-algorithmАлгоритм шифрования
-pkeyopt

Настройки алгоритма (размер ключа, тип эллиптической кривой, и т.д.). Задает для параметра алгоритма opt значение value.

Может быть использован несколько раз, если у алгоритма есть несколько изменяемых параметров. Например:

openssl genpkey -algorithm RSA -out key.pem -pkeyopt rsa_keygen_bits:2048 -pkeyopt rsa_keygen_pubexp:3
-out

Название файла, в который будет записана ключевая пара. По умолчанию создается в том же каталоге, откуда была вызвана команда.

Чтобы сохранить файл в другой каталог, укажите в параметре -out  полный путь к этому каталогу, включая название файла:

-out /путь/к/файлу.pem

Генерация ключевой пары ГОСТ в файл

...

Работа с подписью в формате CMS

Создание подписи

Для создания CMS-подписи необходимо иметь сертификат. В тестовых целях в Рутокен SDK предоставлены настройки удостоверяющего центра OpenSSL, который позволяет выпускать сертификаты. 

Для того, чтобы создать CMS-подпись с помощью предоставленного УЦ:

Tip

По умолчанию команда openssl cms -sign создает открепленную подпись (подпись, которая сохраняется в отдельный файл), а сертификат подписанта включается в состав CMS-пакета. Изменить это поведение можно с помощью двух опциональных параметров:

  • -nodetach включает подписываемые данные в состав CMS-пакета и создает присоединенную подпись:
  • -nocerts исключает сертификат подписанта из состава CMS-пакета.

Для создания CMS-подписи необходимо иметь сертификат. В тестовых целях в Рутокен SDK предоставлены настройки удостоверяющего центра OpenSSL, который позволяет выпускать сертификаты. 

Для того, чтобы создать CMS-подпись с помощью предоставленного УЦ:

  1. Скачайте Рутокен SDK и распакуйте архив.
  2. Из распакованного архива скопируйте папку sdk\openssl\samples\tool\demoCA и конфигурационный файл openssl.cnf в папку с OpenSSL.
  3. Выполните команду:
    openssl ca -batch -in req.csr -out cert.cer
  4. Создайте CMS-подпись:
  5. Скачайте Рутокен SDK и распакуйте архив.
  6. Из распакованного архива скопируйте папку sdk\openssl\samples\tool\demoCA и конфигурационный файл openssl.cnf в папку с OpenSSL.
  7. Выполните команду:
    openssl ca -batch -in req.csr -out cert.cerСоздайте CMS-подпись: 
    Tip

    По умолчанию создается открепленная подпись (подпись, которая сохраняется в отдельный файл), а сертификат подписанта включается в состав CMS-пакета. Изменить это поведение можно с помощью двух опциональных параметров:

  8. -nodetach включает подписываемые данные в состав CMS-пакета и создает присоединенную подпись:
  9. -nocerts исключает сертификат подписанта из состава CMS-пакета.
    • с помощью ключа в файле:
      openssl cms -sign -binary -nosmimecap -in data_to_sign -out signed_cms -outform PEM -inkey privatekey.pem -signer cert.cer
    • с помощью ключа на Рутокене:
      openssl cms -sign -binary -nosmimecap -in data_to_sign -out signed_cms -outform PEM -keyform engine -inkey "pkcs11:your_pkcs11_uri" -engine rtengine -signer cert.cer

...

Info
titleШифрование на ключах с Рутокена

При расшифровании сообщения вырабатывается общий симметричный ключ. Этот же ключ используется при расшифровке. Рутокен позволяет генерировать такой общий ключ только на неизвлекаемых закрытых ключах с опцией derive в поле key usage. Для того, чтобы указать эту опцию, при генерации ключа используйте флаг  --usage-derive. Например:

pkcs11-tool.exe --module rtPKCS11ECP.dll --login --pin 12345678 --keypairgen --key-type GOSTR3410-2012-256:B --id 3132 --usage-derive


Формат команды:

openssl cms -encrypt -binary -<cipher> -in data_to_
encrypt -out encrypted_cms -outform DER|PEM|SMIME respondent.cer

Описание параметров:

...

По умолчанию, входное сообщение конвертируется в канонический формат, который использует CR и LF в качестве знака перевода строки (в соответствии со по спецификацией S/MIME). Параметр -binary отключает эту конвертацию. 

...

Алгоритм шифрования. Возможные значения зависят от типа ключа.

Для ключей ГОСТ и rtengine версии 0.7:

  • gost28147-paramset_a-cfb — алгоритм, который работает в режиме гаммирования с обратной связью с набором параметров А.

Для ключей ГОСТ и rtengine версии новее 0.7:

...

encrypt -out encrypted_cms -outform DER|PEM|SMIME respondent.cer

Описание параметров:

ПараметрОписание
-encryptТип операции (зашифрование)
-binary

По умолчанию, входное сообщение конвертируется в канонический формат, который использует CR и LF в качестве знака перевода строки (в соответствии со по спецификацией S/MIME). Параметр -binary отключает эту конвертацию. 

-<cipher>

Алгоритм шифрования. Возможные значения зависят от типа ключа.

Для ключей ГОСТ и rtengine версии 0.7

...

Для RSA и ECDSA ключей:

  • aes128 — AES-128;
  • aes192 — AES-192;
  • aes256 — AES-256;
  • des — DES;
  • des3 — Triple DES (3DES)

...

Формат CMS-структуры.

Значение по умолчанию: SMIME

...

respondent.cer: сертификат адресата, для которого шифруется сообщение.
Где alg может принимать значения:

...

:

  • gost28147-paramset_a-cfb

...

  • алгоритм, который работает в режиме гаммирования с обратной связью с набором параметров А.

...

Для ключей ГОСТ и rtengine версии новее 0.7

...

:

  • gost28147-cfbалгоритм, который работает в режиме гаммирования с обратной связью с набором параметров Z.

...

Для RSA и ECDSA ключей:

...

  • aes128

...

  •  — AES-128

...

  • ;

...

  • aes192 — AES-192

...

  • ;

...

  • aes256 — AES-256

...

  • ;

...

  • des — DES

...

  • ;

...

  • des3 — Triple DES (3DES)
-inВходное сообщение, которое нужно зашифровать
-outНазвание файла, в который будет сохранено зашифрованное сообщение
-outform

Формат CMS-структуры.

Значение по умолчанию: SMIME

respondent.cerCертификат адресата, для которого шифруется сообщение

Расшифрование на стороне адресата

...