本文へスキップ
ecdsa.com

CMS(暗号メッセージ構文)

IETF による PKCS #7 の後継規格(RFC 5652)で、署名付きデータ、エンベロープ化されたデータ、認証付きデータを扱い、S/MIME、Authenticode、PDF 署名、RFC 3161 タイムスタンプ、多くのファームウェア形式で使われています。
別表記PKCS #7PKCS7Cryptographic Message SyntaxSignedData

最もよく使われるコンテンツタイプは SignedData です。コンテンツ(分離署名の場合はコンテンツへの参照のみ)、署名者の証明書、署名者ごとに 1 つの SignerInfo を含みます。SignerInfo には通常、署名属性(少なくともコンテンツタイプとコンテンツの messageDigest、多くの場合は署名時刻も)が含まれ、署名はコンテンツに直接ではなく、これらの属性の DER エンコーディングに対して計算されます。

EnvelopedData は、受信者ごとの鍵輸送(RSA)、鍵共有(ECDH)、または RFC 9629 以降は ML-KEM(RFC 9936)などの KEM によって、コンテンツを受信者向けに暗号化します。AuthEnvelopedData は AEAD によるコンテンツ暗号化を追加します(RFC 5083)。PEM ラベルは PKCS7 と CMS です。

検証の失敗の多くは、次のような詳細に起因します。署名されたものとバイト単位で一致しない分離コンテンツ(S/MIME での改行コードの違い)、証明書チェーンの欠落、異なる SET OF の順序で再エンコードされた署名属性、検証者がもう受け付けないダイジェストアルゴリズムです。openssl cms -verify と S/MIME 署名検証ツールで、どの段階で失敗したかを確認できます。

規格と参考文献

すべての用語