Перейти к содержимому
ecdsa.com

CMS (синтаксис криптографических сообщений)

Преемник PKCS #7 от IETF (RFC 5652) для подписанных данных, данных в цифровом конверте (enveloped) и аутентифицированных данных; его используют S/MIME, Authenticode, подписи PDF, метки времени RFC 3161 и многие форматы прошивок.
Другие написанияPKCS #7PKCS7Cryptographic Message SyntaxSignedData

Самый распространённый тип содержимого — SignedData: содержимое (или, для отсоединённых подписей, только ссылка на него), сертификаты подписантов и по одной структуре SignerInfo на каждого подписанта. SignerInfo обычно включает подписанные атрибуты — как минимум тип содержимого и messageDigest содержимого, часто время подписания — и подпись вычисляется над DER-кодированием этих атрибутов, а не непосредственно над содержимым.

EnvelopedData шифрует содержимое для получателей, передавая ключ каждому из них отдельно: с помощью транспорта ключа (RSA), согласования ключей (ECDH) или, начиная с RFC 9629, KEM, например ML-KEM (RFC 9936). AuthEnvelopedData добавляет шифрование содержимого с помощью AEAD (RFC 5083). Метки PEM — PKCS7 и CMS.

Большинство ошибок проверки возникает из-за деталей: отсоединённое содержимое не совпадает побайтно с подписанным (окончания строк в S/MIME), отсутствует цепочка сертификатов, подписанные атрибуты перекодированы с другим порядком SET OF или проверяющая сторона больше не принимает хеш-алгоритм. openssl cms -verify и инструмент проверки подписей S/MIME показывают, на каком шаге проверка не прошла.

Стандарты и ссылки

Все термины