Pkcs7 файл: что это такое?

Esmart

Создание и настройка входа через ssh

Примечание: Работает только с RSA ключами

Предполагается что ssh-сервер запущен (на 192.168.3.108) и имеет настройки, принятые по умолчанию в ALT Linux.

  1. Вывести список открытых ключей на смарт-карте в формате OpenSSH:
    $ ssh-keygen -D /usr/lib64/pkcs11/libisbc_pkcs11_main.so
    ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQCHahc9HhA/DQkvJFShNHo2BJV3/cj0tmGNfj0RO3mCtRl8cgqvkb9N/4bJcfG3NiDR4T+x1MxmFxHcQXDstUwnF1mc40kabWz9d1a16dlwVmtFCKv0l2pK6MMX6igqtHnapGNvyUpsYSV4wXnMwevGNQGeq6l9AE+r18cEVx4KLQ==
    
  2. Добавить ключ на сервер в файл ~/.ssh/authorized_keys
  3. Подключение к серверу (необходимо будет ввести PIN):
    $ ssh -I /usr/lib64/pkcs11/libisbc_pkcs11_main.so user@192.168.3.108
    The authenticity of host '192.168.3.108 (192.168.3.108)' can't be established.
    ED25519 key fingerprint is SHA256:6wjAK3qjuaASBQOHaBLH5mZMeHP6cAjws4HI1Xr3vZc.
    Are you sure you want to continue connecting (yes/no)? yes
    Warning: Permanently added '192.168.3.108' (ED25519) to the list of known hosts.
    Enter PIN for 'EsmartToken': 
    $
    

Для удобства на компьютере клиенте в файле ~/.ssh/config можно указать сокращение:

$ vim ~/.ssh/config
Host example
   Hostname 192.168.3.108
   PKCS11Provider /usr/lib64/pkcs11/libisbc_pkcs11_main.so

и вызывать просто:

$ ssh example
Enter PIN for 'EsmartToken': 
Last login: Tue Feb 26 14:04:32 2019 from 192.168.3.106
$

Утилита PKIClientCli

Утилита PKIClientCli предназначена для работы со смарт-картами или USB-ключами ESMARTToken.
Утилита позволяет выполнить все необходимые операции со смарт-картами или USB-ключами ESMARTToken
в командной строке.

Установка:

# apt-get install isbc-pkcs11-utils

Изменение ПИН-кода:

$ PKIClientCli changepin --pin 12345678 --newpin 00000000
Success

Изменение SO PIN (PIN) для смарт-карты или токена:

$ PKIClientCli changesopin --sopin 12345678 --newsopin 00000000

Разблокировка PIN-кода:

$ PKIClientCli unlockpin --sopin 12345678 --newpin 00000000

OpenSSL on Linux

If you’re using Linux, you can install OpenSSL with the following YUM console command:

Shell

> yum install openssl

1 > yum install openssl

If your distribution is based on APT instead of YUM, you can use the following command instead:

> apt-get install openssl

1 >apt-get install openssl

OpenSSL on Windows

If you’re using Windows, you can install one of the many OpenSSL open-source implementations: the one we can recommend is Win32 OpenSSL by Shining Light Production, available as a light or full version, both compiled in x86 (32-bit) and x64 (64-bit) modes . You can install any of these versions, as long as your system support them.

IMPORTANT: OpenSSL for Windows requires the Visual C++ 2008 Redistributables runtime in order to work.

OpenSSL is basically a console application, meaning that we’ll use it from the command-line: after the installation process completes, it’s important to check that the installation folder (C:\Program Files\OpenSSL-Win64\bin for the 64-bit version) has been added to the system PATH (Control Panel > System> Advanced > Environment Variables): if it’s not the case, we strongly recommend to manually add it, so that you can avoid typing the complete path of the executable everytime you’ll need to launch the tool.

Once OpenSSL will be installed, we’ll be able to use it to convert our SSL Certificates in various formats.

Создание ключевой пары

Создание ключевой пары по алгоритму ГОСТ:

$ pkcs11-tool --module /usr/lib64/pkcs11/libisbc_pkcs11_main.so --login --pin 12345678 --keypairgen --key-type GOSTR3410:A --id 0101 --label "my key"
Using slot 0 with a present token (0x1)
Key pair generated:
Private Key Object; GOSTR3410 
  PARAMS OID: 06072a850302022301
  label:      my key
  ID:         0101
  Usage:      sign, unwrap
Public Key Object; GOSTR3410 
  PARAMS OID: 06072a850302022301
  VALUE:      a973f28ea2462781249fff1060d37276f23030e9766b54b8a14f0daa6fba6a7d
              62f2481e00a3df35bdd6c75ed82e8e95f1a78e9db549c8ee55008cfd92d7abb2
  label:      my key
  ID:         0101
  Usage:      verify, wrap

Создание ключевой пары RSA 1024:

$ pkcs11-tool --module /usr/lib64/pkcs11/libisbc_pkcs11_main.so --keypairgen --key-type rsa:1024 --login --id 2222 --label myrsakey
Using slot 0 with a present token (0x1)
Logging in to "EsmartToken".
Please enter User PIN: 
Key pair generated:
Private Key Object; RSA 
  label:      myrsakey
  ID:         2222
  Usage:      decrypt, sign, unwrap
Public Key Object; RSA 1024 bits
  label:      myrsakey
  ID:         2222
  Usage:      encrypt, verify, wrap

Использование файла в формате PKCS#7

Файлы в формате PKCS#7 часто используются для обеспечения безопасности данных при их передаче или хранении. Они представляют собой стандартный формат для подписывания и шифрования данных, а также для верификации электронных подписей.

Для использования файла в формате PKCS#7 необходимо выполнить следующие шаги:

1. Получение файла PKCS#7

Первым шагом является получение файла в формате PKCS#7. Этот файл может быть получен из различных источников, таких как электронная почта, веб-серверы или другие системы для защиты данных.

2. Чтение файла

Следующим шагом является чтение содержимого файла PKCS#7. Для этого можно использовать специальные библиотеки или инструменты, которые могут интерпретировать данный формат и предоставить доступ к его содержимому.

3. Проверка подписи

Один из основных сценариев использования PKCS#7 — это проверка подлинности данных с использованием электронной подписи. Для этого необходимо использовать открытый ключ, соответствующий закрытому ключу, с помощью которого была создана электронная подпись. При проверке подписи будет выполнена проверка целостности данных и соответствия электронной подписи.

4. Расшифровка данных

Если данные в файле PKCS#7 были зашифрованы, необходимо использовать соответствующий ключ для их расшифровки. После расшифровки данные станут доступными для использования и обработки.

5. Использование данных

После чтения, проверки подписи и расшифровки данных в файле PKCS#7, они могут быть использованы для выполнения различных операций. Например, это может быть обмен информацией между двумя сторонами, сохранение данных или другие операции, необходимые в конкретном сценарии использования.

Использование файла в формате PKCS#7 позволяет обеспечить безопасность и целостность данных при их передаче или хранении. Этот формат широко используется в различных сферах, таких как электронная коммерция, финансовая сфера, охрана здоровья и другие области, в которых требуется обеспечить защиту данных.

Как создать отсоединенную подпись

И открепленная, и присоединенная электронная подпись создается при помощи одного сертификата, а для подписания документа необходима программа КриптоАРМ. Она работает с любыми форматами, а также видео и базами данных. КриптоАРМ позволяет заверить как один, так и сразу несколько документов любым из видов ЭЦП.

Более простой способ создания отсоединенной подписи — использование веб-сервисов типа Контур.Крипто. Преимущество — бесплатное заверение без установки на ПК плагинов, а также возможность расшифровки и зашифровки файла. Недостаток — ограниченный объем заверяемого файла (максимум 100 МБ) и поддержка только OS Windows. Для подписания необходимо:

  • зайти на сайт выбранного онлайн-сервиса;
  • в специальном окне создать файл с подписью и нажать «Подписать». Автоматически будет создана папка с указанным именем и расширением .sig. На сервере будет сохранен файл и ЭЦП, а документ можно скачать на ПК.

Созданный файл можно отправить через отдельный сервис или обычную электронную почту. Созданная таким способом ЭЦП доступна для проверки любым ПО.

С использованием КриптоАРМ

Работа с программным обеспечением КриптоАРМ проста и не требует специальных компьютерных навыков. Заверение документа начинается с клика правой кнопкой мыши по нужному файлу. В выпадающем списке пользователь выбирает «КриптоАРМ» и «Подписать».

Запускается Мастер создания ЭЦП:

Далее пользователь должен:

  • выбрать файл;
  • выбрать формат ЭЦП;
  • задать параметры ЭЦП (на этом шаге пользователь выбирает создание отсоединенной электронной подписи);
  • выбрать сертификат ЭЦП;
  • завершить создание подписи нажатием «Готово».

Если все сделано правильно, то подписание завершится без системных ошибок.

Подписанный документ с отсоединенной электронной подписью хранится в родительской папке, если при подписании не было указано иное место хранения.

Отсоединенная ЭЦП не вкладывается в тело документа и отправляется получателю в виде отдельного файла. Этим она отличается от присоединенной ЭП. При проверке программа читает только файл с подписью, но не изначальный заверяемый документ. Несмотря на разницу, отсоединенная ЭЦП имеет всю юридическую силу и гарантирует неизменность данных после заверения. Создать ЭЦП можно бесплатно через онлайн-сервис либо через приложение от КриптоПро. Недостаток использования веб-сервиса в том, что объем заверяемых данных ограничен. Проверить в дальнейшем документ с отсоединенной подписью можно через любое специальное ПО.

Создание через командную строку

Если у пользователя установлен дистрибутив КриптоПРО CSP, но при этом отсутствует надстройка КриптоАРМ, то открепленная электронная подпись может быть создана через консольную утилиту Cryptcp (она входит в состав КриптоПРО CSP всех актуальных редакций).

Таким же образом создается отсоединенная электронная подпись в формате pkcs 7 (может потребоваться для работы определенных сайтов, где предусмотрена возможность отправки подписанных запросов), с определенными параметрами шифрования или с защитой (для открытия понадобится ввести код). В плане функционала и возможностей консольная утилита ни в чем не уступает тому же КриптоАРМ.

Итого, проще всего создать файл отсоединенной электронной подписи с помощью надстройки КриптоАРМ для программы КриптоПРО CSP. Подпись при этом хранится в отдельном файле, в него входят все данные из открытого сертификата ЭЦП, а также набор мета-данных, ссылающихся на подписанный файл. При отсутствии КриптоАРМ (программа — платная) можно использовать консольную утилиту Cryptcp, поставляющуюся вместе с КриптоПРО CSP, но там процесс создания отсоединенной подписи несколько сложнее.

Как распечатать электронную подпись sig

Формат sig – это файл, в котором располагается электронная цифровая подпись.

Существует несколько способов открыть документ с таким форматом:

  1. Notepad. Это обычный блокнот, присутствующий в операционной системе Windows. Необходимо открыть «Пуск», перейти в раздел «Стандартные», а затем выбрать программу «Блокнот». Можно как редактировать, так и сохранять текст.
  2. Microsoft Outlook. Программа присутствует в операционной системе, если был заранее установлен полный комплект офисных программ.
  3. КриптоПРО. Специализированное программное обеспечение для работы с электронной цифровой подписью. Утилита разработана российской компанией. Для работы с электронными документами с ЭЦП понадобится регистрация на официальном портале.
  4. КриптоАРМ. Еще одна специализированная программа от российских разработчиков. Подходит для тех пользователей, которые часто работают с электронными подписями и форматом sig. Подробная инструкция по распечатыванию документа с ЭЦП при помощи КриптоАРМ располагается выше.

Если электронная документация с форматом sig появилась после подписи, то лучше открывать ее при помощи утилиты Outlook. Стандартный блокнот используется для обычного просматривания документации (выписки, договоры, дду и так далее). Специальные утилиты КриптоПРО и КриптоАРМ используются для серьезной работы, в том числе, и, для распечатывания.

Интересно: если пользователь работает с ЭЦП на операционной системе MacOS, то ему необходимо использовать специальный клиент под наименованием QUALCOMM Eudora. Дополнительно для работы с sig форматом на Мак ОС применяется бесплатное программное обеспечение Mozilla Thunderbird.

Простой способ распечатывания – использования все того же сервиса под названием «Росреестр», о котором мы уже говорили в этом материале.

Открыть и распечатать документ в формате sig здесь не получится, но зато приложение выдаст детальное описание и предложит программное обеспечение для работы с документом.

Подробное руководство выглядит следующим образом:

  • Открытие приложения.
  • Перемещение необходимого документа в поле «Перетащите файл сюда».

Через несколько секунд утилита покажет детальные сведения о документе и предложит перечень программного обеспечения для работы с объектом.

Практическое применение PKCS

Протокол SSL/TLS и PKCS #1

Как PKCS #1 используется в рукопожатиях SSL/TLS

Протокол SSL/TLS для безопасной веб-связи включает PKCS #1 для обмена ключами и шифрования на этапе установления связи. Когда клиент подключается к защищенному веб-сайту, сервер отправляет свой открытый ключ в цифровом сертификате, который обычно имеет формат PKCS #1. Клиент проверяет подлинность сертификата и извлекает открытый ключ сервера. Затем PKCS #1 используется для безопасного обмена секретом предварительного мастера, который используется для получения ключей сеанса для шифрования и дешифрования данных во время защищенного сеанса.

Защита веб-коммуникаций с помощью PKCS #1

Использование PKCS #1 в рукопожатиях SSL/TLS защищает веб-коммуникации от подслушивания и несанкционированного доступа. Надежные механизмы шифрования и обмена ключами PKCS #1 гарантируют, что конфиденциальные данные, передаваемые между клиентом и сервером, остаются конфиденциальными и защищены от несанкционированного доступа.

S/MIME и PKCS #7

Безопасное общение по электронной почте с помощью PKCS #7.

S/MIME (безопасные/многоцелевые расширения почты Интернета) использует PKCS #7 для защиты электронной почты. Когда пользователь отправляет электронное письмо с цифровой подписью, PKCS #7 используется для создания криптографического сообщения, содержащего содержимое электронного письма и цифровую подпись отправителя. Получатели могут затем проверить подлинность подписи, используя открытый ключ отправителя, гарантируя целостность электронного письма и подтверждая личность отправителя.

Применение PKCS #7 для подписи и шифрования сообщений электронной почты

PKCS #7 также облегчает шифрование сообщений электронной почты с помощью S/MIME. Открытый ключ отправителя используется для шифрования содержимого электронного письма, а для расшифровки требуется закрытый ключ получателя. Это гарантирует, что только предполагаемый получатель сможет прочитать электронное письмо, обеспечивая конфиденциальность конфиденциальной информации.

PKCS #12 и хранилище сертификатов

Импорт и экспорт сертификатов в формате PKCS #12.

PKCS #12 широко используется для безопасного импорта и экспорта личных сертификатов и закрытых ключей. Пользователи могут создать файл PKCS #12 (часто с расширением .p12 или .pfx), содержащий свой цифровой сертификат и закрытый ключ, защищенный паролем. Этот файл можно легко переносить между системами или устройствами, что позволяет пользователям использовать свои сертификаты в различных приложениях.

Интеграция PKCS #12 в программное обеспечение и устройства.

Поддержка PKCS #12 интегрирована в различные программные приложения и устройства, требующие аутентификации на основе сертификатов. Пользователи могут импортировать свои файлы PKCS #12 в веб-браузеры, почтовые клиенты, VPN-клиенты и другое программное обеспечение, обеспечивая безопасный доступ к различным службам и ресурсам.

Смарт-карты и PKCS #11

Использование PKCS #11 для безопасной аутентификации.

Смарт-карты, действующие как криптографические токены, можно интегрировать с системами с использованием стандарта интерфейса PKCS #11. PKCS #11 предоставляет стандартизированный API для доступа к криптографическим функциям смарт-карт, таким как создание пар ключей и управление ими, выполнение шифрования и дешифрования, а также предоставление цифровых подписей. Используя PKCS #11, смарт-карты можно легко интегрировать в различные приложения для обеспечения безопасной аутентификации и криптографических операций.

Повышение безопасности с помощью криптографических токенов на основе смарт-карт

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

Типы sig в эцп

ЭП (ЭЦП) – цифровой аналог ручной подписи, который может юридически заменять последнюю при дистанционном документообороте. Заверить электронной подписью можно любой файл и его часть, например отдельные фрагменты текста или кода.

ЭП делятся на 3 типа:

  1. Простая ЭП. Она служит для идентификации отправителя и подтверждает авторство документа, но при этом не может гарантировать его неизменность. Юридическую силу имеет только в случае подписания сторонами соглашения, регулирующего использование данного типа подписи. Так как ЭП несет в себе информацию о владельце сертификата, она может использоваться для авторизации на сайтах. В настоящее время этот тип подписи поддерживает форматы файлов, отличные от sig.
  2. Неквалифицированная подпись. С ее помощью можно подтвердить личность подписавшего, а также доказать неизменность содержимого файла. Этот стандарт применяется для внутреннего документооборота организаций либо для обмена между компаниями. Во втором случае требуется предварительное соглашение на использование данного типа ЭП. Проще говоря, создается собственная подпись, не зарегистрированная в удостоверяющей организации. «Внутри» ее использовать можно, «снаружи» она не имеет никакой юридической силы.
  3. Квалифицированная ЭП – тоже самое, что и предыдущая, только заверенная удостоверяющим центром. Она предназначена для деятельности, не связанной с гос. учреждениями, и заверять такие подписи может любой официальный сертификационный центр, например, Microsoft Certifications. Для взаимодействия с гос. органами ЭП необходимо заверить в организациях, одобренных ФСБ.

В двух последних случаях файл с расширением SIG – это и есть электронная подпись. Он представляет собой набор зашифрованных данных, которые несут информацию о владельце объекта и криптографический код. При внесении изменений в документ его код перестает соответствовать данным в подписи. Таким образом подтверждается авторство и подлинность файла.

Формальное описание структур данных

Стандарт X.509 предполагает, что все структуры данных, связанные с сертификатами описываются в формате ASN.1. ASN.1 — это архитектурно-независимое представление данных, пригодное для хранения произвольных иерархических структур. На практике, структура ASN.1 кодируется в двоичное представление DER (Distinguished Encoding Rules), описанное в X.690.

Все объектов в ASN.1 имеют уникальные идентификаторы OID (Object Identifier), для которых определены базовые типы данных (числа, строки, коллекции и т.п). OID — это последовательность положительных целых чисел, однозначно идентифицирующая объект. В текстовой записи OID выглядит как десятичные числа, разделяемые точкой — 1.2.345.6.79. Структура OID описывает дерево, корень которого расположен в начале записи. При записи в человекочитаемой форме корневой OID заменяют на некую мнемоническую строку, которую продолжают числовой последовательностью. Например корневой OID ветки, описывающей объекты алгоритма RSA, выглядит так: 1.2.840.113549.1. На специализированном сайте можно выяснить, что это: {iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1)}. Российский сегмент OID {iso(1) member-body(2) ru(643)} по соглашению с Росстандартом обслуживает ОАО «Инфотекс Интернет Траст». Объекты, связанные с российской криптографией, находятся в ветке 1.2.643.100 и описаны в Приказе ФСБ РФ от 27 декабря 2011 г. N 795 «Об утверждении Требований к форме квалифицированного сертификата ключа проверки электронной подписи».

Для обеспечения уникальности, те или иные OIDы регистрируются некими официальными организациями при координации ISO и ITU. К таким регистрирующим организациям относится IANA, которая выделяет OIDы, необходимые для протоколов сети Интернет (например, LDAP и SNMP). Частная организация может получить стартовый OID, и строить от него поддерево для внутреннего использования. В России регистрацией частных OID занимается ОАО «Инфотекс Интернет Траст».

Просмотр ASN.1 структуры ключа:

Introduction to PKCS7

What is PKCS7? It is a standard in the “Public Key Cryptography Standards” used as a cryptographic message syntax and as a format for an X.509 certificate and corresponding chain. The bundle or bag does not have to be a full chain and order does not matter as the final chain validation will happen by the client. The bundle may just be several unrelated certificates, however, this isn’t as practical of a usage. A PKCS7 certificate can be formatted as both PEM and DER.

For a deep dive, check out the PKCS#7 RFC, RFC 2315.

If you have a .p7b, .p7c, or .pfx file you wish to decode, use our Certificate Decoder tool. .p7c is rarely used in the wild, but is a rather intuitive file extension.

From PEM (pem, cer, crt) to PKCS#12 (p12, pfx)

This is the console command that we can use to convert a  PEM certificate file (.pem, .cer or .crt extensions), together with its private key (.key extension), in a single PKCS#12 file (.p12 and .pfx extensions):

Shell

> openssl pkcs12 -export -in certificate.crt -inkey privatekey.key -out certificate.pfx

1 >openssl pkcs12-export-incertificate.crt-inkey privatekey.key-out certificate.pfx

If you also have an intermediate certificates file (for example, CAcert.crt) , you can add it to the «bundle» using the -certfile command parameter in the following way:

Shell

> openssl pkcs12 -export -in certificate.crt -inkey privatekey.key -out certificate.pfx -certfile CAcert.cr

1 >openssl pkcs12-export-incertificate.crt-inkey privatekey.key-out certificate.pfx-certfile CAcert.cr

Преимущества и ограничения PKCS

Стандарты PKCS предлагают многочисленные преимущества в современной криптографии, предоставляя стандартизированные и широко распространенные методы безопасной связи и защиты данных.

Преимущества PKCS в современной криптографии

  • Взаимодействие: Стандарты PKCS обеспечивают совместимость между различными криптографическими системами, приложениями и устройствами. Это обеспечивает беспрепятственную связь и обмен данными между различными платформами, создавая безопасную и связанную цифровую экосистему.
  • Широко принятый: Стандарты PKCS широко приняты и реализованы во многих программных приложениях и системах. Такое широкое распространение привело к созданию прочной основы для безопасной связи, цифровых подписей и шифрования в различных областях, включая веб-безопасность, электронную почту и управление цифровыми удостоверениями.
  • Стандартизация: PKCS предоставляет стандартизированные форматы и протоколы, упрощая внедрение и интеграцию криптографических методов. Стандартизация также способствует распространению передового опыта и обеспечивает согласованные меры безопасности в различных реализациях.
  • Безопасность: Стандарты PKCS включают надежные криптографические алгоритмы и методы, обеспечивающие высокий уровень безопасности для защиты данных, аутентификации и цифровых подписей. Асимметричное шифрование и цифровые подписи, предоставляемые PKCS, обеспечивают конфиденциальность, целостность и неотказуемость при безопасной связи.
  • Управление сертификатами: PKCS облегчает обработку и управление сертификатами, что необходимо для проверки подлинности открытых ключей и обеспечения безопасной цифровой связи.

Проблемы и уязвимости стандартов PKCS

  • Уязвимости алгоритма: Безопасность PKCS во многом зависит от прочности лежащих в его основе криптографических алгоритмов, и уязвимости в этих алгоритмах могут поставить под угрозу общую безопасность систем на базе PKCS.
  • Ключевой менеджмент: Правильное управление ключами имеет решающее значение для безопасности PKCS. Компрометация закрытых ключей или слабая защита паролем могут привести к несанкционированному доступу и утечке данных.
  • Устаревшие проблемы: Некоторые старые версии PKCS могут иметь уязвимости безопасности, которые были устранены в более новых версиях. Продолжение использования устаревших версий может подвергнуть системы потенциальным рискам.
  • Атаки по сторонним каналам: Реализации PKCS могут быть подвержены атакам по побочным каналам, когда злоумышленники используют информацию, утекшую во время криптографических операций, для получения секретных ключей или другой конфиденциальной информации.
  • Отсутствие прямой секретности: Системам на базе PKCS, использующим статические ключи RSA для шифрования, может не хватать прямой секретности. Это означает, что если закрытый ключ будет скомпрометирован, все прошлые сообщения могут быть расшифрованы.

9.3 Decrypting with Email Client

The following code sample demonstrates this technique:

Message = «This is my secret message!!!»

‘ Prepend message with a CR/LF characters to comply with MIME format
Message = chr(13) & chr(10) & Message

Set CM = Server.CreateObject(«Persits.CryptoManager»)
Set Context = CM.OpenContext(«», True)
Set Msg = Context.CreateMessage( True )

‘ open encryption certificate
Set Cert = CM.ImportCertFromFile(«c:\path\mycert.cer»)
Msg.AddRecipientCert Cert

‘ Create PKCS#7 envelope
Encrypted = Msg.EncryptText(Message)

‘ Replace with your own SMTP server’s address
Mail.Host = «smtp.mycompany.com»

Mail.Subject = «Sample encrypted message»

‘ Add custom headers
Mail.AddCustomHeader «Content-Type: application/x-pkcs7-mime;name=»»smime.p7m»»»
Mail.AddCustomHeader «Content-Transfer-Encoding: Base64»
Mail.AddCustomHeader «Content-Disposition: attachment;filename=»»smime.p7m»»»

Mail.Body = Encrypted
Mail.Send

String strMessage = «This is my secret message!!!»;

// Prepend message with a CR/LF characters to comply with MIME format
strMessage = «\r\n» + strMessage;

ICryptoManager objCM = new CryptoManager();
ICryptoContext objContext = objCM.OpenContext(«», true, Missing.Value);
ICryptoMessage objMsg = objContext.CreateMessage( true );

// open encryption certificate
ICryptoCert objCert = objCM.ImportCertFromFile( @»c:\path\mycert.cer» );
objMsg.AddRecipientCert( objCert );

// Create PKCS#7 envelope
String strEncrypted = objMsg.EncryptText(strMessage);

// Replace with your own SMTP server’s address
objMail.Host = «smtp.mycompany.com»;
objMail.Subject = «Sample encrypted message»;

// Add custom headers
objMail.AddCustomHeader(
   «Content-Type: application/x-pkcs7-mime;name=\»smime.p7m\»» );
objMail.AddCustomHeader(
   «Content-Transfer-Encoding: Base64» );
objMail.AddCustomHeader(
   «Content-Disposition: attachment;filename=\»smime.p7m\»» );

objMail.Body = strEncrypted;

objMail.Send( Missing.Value );

Click on the links below to run this code sample.

PKI常见的证书格式和转换

PKCS 全称是 Public-Key Cryptography Standards ,是由 RSA 实验室与其它安全系统开发商为促进公钥密码的发展而制订的一系列标准,PKCS 目前共发布过 15 个标准。 常用的有:PKCS#7 Cryptographic Message Syntax StandardPKCS#10 Certification Request StandardPKCS#12 Personal Information Exchange Syntax Standard

X.509是常见通用的证书格式。所有的证书都符合为Public Key Infrastructure (PKI) 制定的 ITU-T X509 国际标准。

PKCS#7 常用的后缀是: .P7B .P7C .SPCPKCS#12 常用的后缀有: .P12 .PFXX.509 DER 编码(ASCII)的后缀是: .DER .CER .CRTX.509 PAM 编码(Base64)的后缀是: .PEM .CER .CRT.cer/.crt是用于存放证书,它是2进制形式存放的,不含私钥。.pem跟crt/cer的区别是它以Ascii来表示。pfx/p12用于存放个人证书/私钥,他通常包含保护密码,2进制方式p10是证书请求p7r是CA对证书请求的回复,只用于导入p7b以树状展示证书链(certificate chain),同时也支持单个证书,不含私钥。

一 用openssl创建CA证书的RSA密钥(PEM格式):openssl genrsa -des3 -out ca.key 1024

二用openssl创建CA证书(PEM格式,假如有效期为一年):openssl req -new -x509 -days 365 -key ca.key -out ca.crt -config openssl.cnfopenssl是可以生成DER格式的CA证书的,最好用IE将PEM格式的CA证书转换成DER格式的CA证书。

三 x509到pfxpkcs12 -export –in keys/client1.crt -inkey keys/client1.key -out keys/client1.pfx

四 PEM格式的ca.key转换为Microsoft可以识别的pvk格式。  pvk -in ca.key -out ca.pvk -nocrypt -topvk

五 PKCS#12 到 PEM 的转换openssl pkcs12 -nocerts -nodes -in cert.p12 -out private.pem验证 openssl pkcs12 -clcerts -nokeys -in cert.p12 -out cert.pem

六 从 PFX 格式文件中提取私钥格式文件 (.key)openssl pkcs12 -in mycert.pfx -nocerts -nodes -out mycert.key

七 转换 pem 到到 spcopenssl crl2pkcs7 -nocrl -certfile venus.pem  -outform DER -out venus.spc用 -outform -inform 指定 DER 还是 PAM 格式。例如:openssl x509 -in Cert.pem -inform PEM -out cert.der -outform DER

八 PEM 到 PKCS#12 的转换,openssl pkcs12 -export -in Cert.pem -out Cert.p12 -inkey key.pem

密钥库文件格式【Keystore】

 格式     :  JKS 扩展名  : .jks/.ks 描述     : 【Java Keystore】密钥库的Java实现版本,provider为SUN 特点     :  密钥库和私钥用不同的密码进行保护  格式     :  JCEKS 扩展名  :  .jce 描述     : 【JCE Keystore】密钥库的JCE实现版本,provider为SUN JCE 特点     :  相对于JKS安全级别更高,保护Keystore私钥时采用TripleDES  格式     :  PKCS12 扩展名  :  .p12/.pfx 描述     : 【PKCS #12】个人信息交换语法标准 特点     :  1、包含私钥、公钥及其证书               2、密钥库和私钥用相同密码进行保护  格式     :  BKS 扩展名  : .bks 描述     :  Bouncycastle Keystore】密钥库的BC实现版本,provider为BC 特点     :  基于JCE实现  格式     : UBER 扩展名  : .ubr 描述     : 【Bouncycastle UBER Keystore】密钥库的BC更安全实现版本,provider为BC  

证书文件格式【Certificate】格式          :  DER 扩展名       :  .cer/.crt/.rsa

描述          : 【ASN .1 DER】用于存放证书 特点          :  不含私钥、二进制

格式          :  PKCS7 扩展名       : .p7b/.p7r 描述          : 【PKCS #7】加密信息语法标准

特点          : 1、p7b以树状展示证书链,不含私钥                  2、p7r为CA对证书请求签名的回复,只能用于导入

格式          :  CMS 扩展名       :  .p7c/.p7m/.p7s 描述          : 【Cryptographic Message Syntax】 特点          : 1、p7c只保存证书                  2、p7m:signature with enveloped data                  3、p7s:时间戳签名文件 格式          :  PEM 扩展名       : .pem 描述          : 【Printable Encoded Message】 特点          : 1、该编码格式在RFC1421中定义,其实PEM是【Privacy-Enhanced Mail】的简写,但他也同样广泛运用于密钥管理                  2、ASCII文件                  3、一般基于base 64编码                  4. Apache 用到的CA证书链就是PEM格式,它实际上可保存普通多个X509证书(.cer),  将每个证书简单加在一起就可以了

格式         :  PKCS10 扩展名      : .p10/.csr 描述         : 【PKCS #10】公钥加密标准【Certificate Signing Request】特点         :  1、证书签名请求文件                  2、ASCII文件                  3、CA签名后以p7r文件回复

格式         :  SPC 扩展名      : .pvk/.spc 描述         : 【Software Publishing Certificate】 特点         :  微软公司特有的双证书文件格式,经常用于代码签名,其中                  1、pvk用于保存私钥                  2、spc用于保存公钥

============== End

PKCS 7: основная информация и применение

PKCS 7 (Public Key Cryptography Standards #7) — это стандарт криптографии, разработанный RSA Laboratories. Он определяет структуру и формат для создания цифровых подписей, шифрования и дешифрования данных, а также аутентификации и деаутентификации сообщений.

PKCS 7 представляет собой набор криптографических стандартов, которые определяют подписывание и шифрование данных. Он может быть использован, например, для создания защищенных электронных почтовых сообщений, обеспечения подписи и аутентификации электронных документов.

Основные функции PKCS 7:

  • Цифровая подпись данных: PKCS 7 позволяет вам подписывать данные с использованием частного ключа. Получатель может использовать открытый ключ, чтобы проверить подлинность подписи и целостность данных.
  • Улучшение безопасности данных: PKCS 7 поддерживает шифрование данных, чтобы обеспечить их конфиденциальность. Данные могут быть зашифрованы с помощью открытого ключа получателя, и только он сможет расшифровать их с использованием своего личного ключа.
  • Аутентификация сообщений: PKCS 7 позволяет добавлять электронную подпись к сообщению или документу. Получатель может проверить аутентичность отправителя, используя открытый ключ отправителя.

PKCS 7 обычно используется в различных приложениях, связанных с безопасностью и криптографией, включая электронную почту, веб-серверы, цифровую подпись и шифрование файлов.

Пример использования PKCS 7:

  1. Создание ключевой пары: Сначала необходимо создать пару ключей, включающую открытый и закрытый ключи. Обычно открытый ключ используется для проверки подписей и шифрования данных, а закрытый ключ — для создания подписей и дешифрования данных.
  2. Подписывание данных: С помощью закрытого ключа вы можете создать цифровую подпись для данных. Подпись включает информацию о подписавшем и хэш-значение данных.
  3. Проверка подписи: Получатель может использовать открытый ключ отправителя для проверки подписи и убедиться, что данные не были изменены и что они действительно были подписаны отправителем.
  4. Шифрование данных: Если требуется обеспечить конфиденциальность данных, вы можете зашифровать их с помощью открытого ключа получателя.
  5. Расшифровка данных: Получатель может использовать свой закрытый ключ для расшифровки данных и получения исходного текста.

PKCS 7 является важным стандартом в области криптографии и предоставляет надежные методы подписывания, шифрования и аутентификации данных. Он широко используется в различных приложениях, связанных с безопасностью информации и обеспечением конфиденциальности данных.

Подписание документов

Команда:

$ PKIClientCli pkcs7sign --pin <PIN> --inpath <файл> --outpath <файл> --certid <ID сертификата> --intcertids <ID1, ID2> --privkeyid <ID сертификата>

Основные опции:

—pin — PIN (PIN пользователя) для смарт-карты или токена (обязательный);

—inpath — путь к файлу для подписи (обязательный);

—outpath — путь к файлу, где будет храниться подпись (обязательный);

—certid — ID объекта сертификата пользователя (обязательный);

—intcertids — промежуточные идентификаторы объекта сертификата (через запятую);

—detached — тип подписи, 0 — прикреплённая (по умолчанию), 1 — откреплённая;

—privkeyid — ID объекта закрытого ключа. Если не указан, будет найден автоматически по сертификату пользователя;

—noconfirm — не спрашивать подтверждение перед подписью, 0 — подтверждение необходимо (по умолчанию), 1 — пропустить подтверждение.

Создание прикреплённой (attached) подписи:

$ PKIClientCli pkcs7sign --pin 12345678 --inpath ./my_file.odt --outpath out.sign --certid 0101
File path: 		./my_file.odt
File size: 		8086
Created date: 		2019-02-25 13:56:29
Modified date: 		2019-02-25 13:56:29
Checksum: 		287495846084353A1404776EFCBA61F0DC6FA4ACAA6F9B78DFBA6F023085ABC (GOST R 34.11-2012) 
Certificate CN: 	Иванов Иван Иванович
Certificate serial: 	120032DA694AB3BC3711A2AA3500000032DA69
Continue? [y/n or yes/no]: y
Success

Создание откреплённой (detached) подписи (если в команде не вводить обязательные поля, они будут запрошены):

$ PKIClientCli pkcs7sign --detached 1
Please enter PIN (User PIN): 
Please enter path to file to be signed: my_file.odt
Please enter path to file where signature will be stored: my_sign.sig
Please enter user certificate ID: 0101

File path: 		my_file.odt
File size: 		8256
Created date: 		2019-02-26 16:58:16
Modified date: 		2019-02-26 16:58:16
Checksum: 		287495846084353A1404776EFCBA61F0DC6FA4ACAA6F9B78DFBA6F023085ABC (GOST R 34.11-2012) 
Certificate CN: 	Иванов Иван Иванович
Certificate serial: 	120032DA694AB3BC3711A2AA3500000032DA69
Continue? [y/n or yes/no]: y
Success
Понравилась статья? Поделиться с друзьями:
Опытный компьютерщик
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: