RFC 5272bis (Draft): Certificate Management over CMS (CMC) の最新更新

Tech

[PROTOCOL-UPDATE] [CMC-RFC5272BIS] [LAMPS-WG] [PKI-AUTOMATION] [CMS-WRAPPING]

本記事はGeminiの出力をプロンプト工学で整理した業務ドラフト(未検証)です。

RFC 5272bis (Draft): Certificate Management over CMS (CMC) の最新更新

【背景と設計目標】

PKIにおける証明書管理の自動化と複雑な署名構造の標準化を目的とし、旧来のRFC 5272を現代の暗号スイートと運用要件に適合させるための改訂です。

【通信シーケンスと動作】

CMCは、クライアント(End Entity)、登録局(RA)、認証局(CA)の間でCMS(Cryptographic Message Syntax)を用いた多重署名やカプセル化をサポートします。

sequenceDiagram
    participant "EE as End Entity (Client)"
    participant "RA as Registration Authority"
    participant "CA as Certification Authority"

    EE ->> RA: Full PKI Request (SignedData with CSR)
    Note over RA: Verify POP / Add RA-specific Attributes
    RA ->> CA: CMC Request (Nested SignedData)
    Note over CA: Validate & Issue Certificate
    CA -->> RA: CMC Response (SignedData with Cert)
    RA -->> EE: Full PKI Response (Cert / Status)

動作解説:

  1. Full PKI Request: クライアントは証明書署名要求(CSR)をCMS形式でカプセル化し、自身の秘密鍵で署名(Proof of Possession: POP)を付与します。

  2. RAの介在: 中間局(RA)はクライアントの要求を検証し、さらに独自の署名や管理属性を付与した状態でCAへ転送します。

  3. 多重署名: CMSの特性を活かし、リクエストに対する検証チェーンを維持したまま、ペイロードの機密性と完全性を保証します。

【データ構造 / パケットフォーマット】

CMCメッセージは、RFC 5652(CMS)に基づいた構造を持ちます。以下は、Full PKI Request の論理的な入れ子構造です。

0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| ContentInfo: contentType (id-signedData)                      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| [SignedData] version / digestAlgorithms                        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| encapContentInfo: eContentType (id-cct-PKIData)               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|   [PKIData]                                                   |
|   - controlSequence (TaggedAttribute: id-aa-cmc-*)            |
|   - reqSequence     (TaggedRequest: CertificationRequest)     |
|   - cmsSequence     (TaggedContentInfo)                       |
|   - otherMsgSequence                                          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| certificates (optional) / crls (optional)                     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| signerInfos (RA or EE Signature)                              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

【技術的な特徴と比較】

CMCは他の証明書管理プロトコル(SCEP, EST, CMP)と比較して、エンタープライズPKIに必要な高度な署名要件に対応しています。

特徴 CMC (RFC 5272bis) EST (RFC 7030) SCEP (RFC 8894)
トランスポート HTTP/CMSベース (柔軟) HTTP/TLS (HTTPS) HTTP
署名形式 CMS (高度な柔軟性) シンプルなPKCS#10 PKCS#7 (古い)
セキュリティ 強い(多重署名/POP) TLSに依存 共有鍵/脆弱なDES
自動化 高い (制御属性が豊富) 普通 限定的
多重ホップ RA経由の多段処理に最適 限定的 非対応

キーワード解説:

  • 多段ホップ (Multi-hop RA): CMCはメッセージ全体をさらにCMSで包む(再署名する)ことが可能なため、複数のRAをまたぐ大規模組織の署名ワークフローに適しています。

  • POP (Proof of Possession): 秘密鍵の保有証明。CSR内の署名だけでなく、CMC独自の制御属性で補強可能です。

【セキュリティ考慮事項】

  1. リプレイ攻撃耐性: nonce 属性または transactionID を制御シーケンスに含めることで、過去のメッセージの再利用を防止します。

  2. ダウングレード攻撃: 更新ドラフトでは、利用可能なアルゴリズムの最小要件を引き上げ、SHA-1や3DES等の脆弱なアルゴリズムの排除が明文化されています。

  3. 完全な機密性: id-envelopedData を用いることで、リクエストに含まれる個人識別情報(PII)や公開鍵情報をエンドツーエンドで暗号化可能です。

【まとめと実装への影響】

ネットワークエンジニアおよび開発者が留意すべき点は以下の3点です。

  1. モダンな暗号への移行: rfc5272bis では、EdDSA(Curve25519等)やポスト量子暗号(PQC)を見据えたCMS構造の適応が強化されており、ライブラリの更新が必要です。

  2. 既存スタックとの互換性: CMS(RFC 5652)をベースとしているため、OpenSSLなどの既存のCMSパーサーを流用可能ですが、CMC固有の TaggedAttribute 処理の実装が鍵となります。

  3. 証明書ライフサイクル管理の統合: ESTよりも複雑なワークフロー(承認制の発行など)を必要とする場合、SCEPからの移行先として最有力候補となります。

ライセンス:本記事のテキスト/コードは特記なき限り CC BY 4.0 です。引用の際は出典URL(本ページ)を明記してください。
利用ポリシー もご参照ください。

コメント

タイトルとURLをコピーしました