情報処理安全確保支援士 2025年 秋期 午前2 問06
問題文
XMLデジタル署名の特徴はどれか。
選択肢
ア:XMLデジタル署名の構文には、CMS(Cryptographic Message Syntax)が用いられる。
イ:XML文書中のエレメントに対するデタッチ署名(Detached Signature)を作成し、同じXML文書に含めることができる。(正解)
ウ:エンベローピング署名(Enveloping Signature)では、一つの署名対象に複数の署名を付与する。
エ:署名対象と署名アルゴリズムはASN.1によって記述する。
XMLデジタル署名の特徴はどれか。【午前2 解説】
要点まとめ
- 結論→XMLデジタル署名はXML文書の要素単位で署名が可能で、埋め込みや外部参照(デタッチ)で柔軟に扱えます。
- 根拠→W3CのXML Signature仕様では、Enveloping/Enveloped/Detached の各方式やReference、Transforms、Canonicalizationが定義されています。
- 差がつくポイント→CMSやASN.1ではなくXML独自の構文とURI参照、Transformや正規化の扱いを理解して選択肢を判断してください。
正解の理由
イは正解です。XML Signature(XMLDSig)では「Detached Signature(デタッチ署名)」が定義されており、署名対象(XML文書中の要素)をURIで参照して署名を作成し、その署名要素(Signature)は同じXML文書内に置くことも、別ファイルに置くことも可能です。すなわち署名と署名対象が分離されているが、同一文書内に含める運用も許されます。
よくある誤解(2〜3 行)
- 「デタッチは必ず外部ファイルに置くべき」と誤解しがちですが、同じXML文書にSignature要素を置いて参照することも可能です。
- XML署名はCMSやASN.1ベースではなく、XML専用の構文・URI識別子で表現します。
解法ステップ
- 問題文のキーワード(XMLデジタル署名、デタッチ、エンベローピング、CMS、ASN.1)を確認する。
- XML Signatureの3方式(Enveloped, Enveloping, Detached)の意味を即座に思い出す。
- CMSやASN.1はXML Signatureの構文ではない点で誤りを削除する。
- 各選択肢を定義と照らし合わせて矛盾があるものを除外し、正解を決定する。
選択肢別の誤答解説
- ア: XMLデジタル署名の構文には、CMS(Cryptographic Message Syntax)が用いられる。
→ 誤り。XML署名はW3CのXML SignatureというXMLベースの構文で定義され、CMSは別の仕様(S/MIME等)です。 - イ: XML文書中のエレメントに対するデタッチ署名(Detached Signature)を作成し、同じXML文書に含めることができる。
→ 正しい。Detachedは署名対象と署名要素が分離している方式で、URI参照により同一文書内の要素を参照して署名を含めることが可能です。 - ウ: エンベローピング署名(Enveloping Signature)では、一つの署名対象に複数の署名を付与する。
→ 誤り。EnvelopingはSignature要素がObject要素として署名対象データを内包する方式のことで、「複数署名を付与する」ことが特徴ではありません(複数署名は別途可能ですが定義上の特徴ではない)。 - エ: 署名対象と署名アルゴリズムはASN.1によって記述する。
→ 誤り。XML署名はASN.1ではなくXMLで記述し、アルゴリズムはURIで識別します。ASN.1はX.509等別規格で用いられます。
補足コラム(関連知識など)
- XML Signatureの主要構成要素:Signature、SignedInfo(Reference/Canonicalization/SignatureMethod)、SignatureValue、KeyInfoなど。Reference要素のURIで署名対象を指定します。
- 各方式の違い(簡潔)
- Enveloped:署名対象の文書内にSignature要素を含めつつ、その文書自身を署名する(署名要素は署名対象から除外されるTransformsが必要)。
- Enveloping:Signatureが署名対象データを内包する(Object要素内にデータを置く)。
- Detached:署名と署名対象が分離している(同一文書内の要素をURIで参照することも可能)。
- 実運用で注意する点:Canonicalization(正規化)とTransforms(例:enveloped-signature transform)を正しく適用しないと検証で失敗します。SOAPやSAMLと組み合わせる場面が多く、署名対象の選定と参照URIの扱いが重要です。
例:同一文書内の要素を参照するデタッチ署名(イメージ)
<!-- 署名対象の要素 -->
<Invoice Id="inv123"> ... </Invoice>
<!-- 同じ文書内に置かれたDetached Signature -->
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<Reference URI="#inv123">
<Transforms>
<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
<DigestValue>...</DigestValue>
</Reference>
<SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>
</SignedInfo>
<SignatureValue>...</SignatureValue>
<KeyInfo>...</KeyInfo>
</Signature>
FAQ(Q:/A: を 2〜3 組)
Q: デタッチ署名とエンベローピングの違いは何ですか?
A: デタッチは署名対象がSignature要素から独立して存在しURIで参照する方式、エンベローピングはSignatureが署名対象データを内包します。用途や配置に応じて使い分けます。
A: デタッチは署名対象がSignature要素から独立して存在しURIで参照する方式、エンベローピングはSignatureが署名対象データを内包します。用途や配置に応じて使い分けます。
Q: XML署名でアルゴリズムはどう指定しますか?
A: SignatureMethodやDigestMethodでURIによって指定します。ASN.1の記述は用いず、XML要素内でURIを使用します。
A: SignatureMethodやDigestMethodでURIによって指定します。ASN.1の記述は用いず、XML要素内でURIを使用します。
Q: 同じXML文書に署名を含めるなら必ずEnvelopedを使うべきですか?
A: いいえ。署名対象と署名要素の関係次第です。同一文書内にあっても署名要素が独立して参照するならDetachedであり得ます。
A: いいえ。署名対象と署名要素の関係次第です。同一文書内にあっても署名要素が独立して参照するならDetachedであり得ます。
関連キーワード: XML Signature, XMLDSig, Detached Signature, Enveloping Signature, Enveloped Signature, Reference URI, Canonicalization, Transforms, SignatureMethod, KeyInfo, CMS, ASN.1, SOAP, SAML

\ せっかくなら /
情報処理安全確保支援士を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

