戦国IT - 情報処理技術者試験の過去問対策サイト
ブログお知らせお問い合わせ料金プラン

情報処理安全確保支援士 2025年 秋期 午前206


問題文

XMLデジタル署名の特徴はどれか。

選択肢

XMLデジタル署名の構文には、CMS(Cryptographic Message Syntax)が用いられる。
XML文書中のエレメントに対するデタッチ署名(Detached Signature)を作成し、同じXML文書に含めることができる。(正解)
エンベローピング署名(Enveloping Signature)では、一つの署名対象に複数の署名を付与する。
署名対象と署名アルゴリズムはASN.1によって記述する。

🔒 解説は解答すると表示されます

XMLデジタル署名の配置形式【午前2解説】

正解の理由

XMLデジタル署名には「エンベローピング」「エンベロープド」「デタッチ」の三形態があり、 の記述はデタッチ署名(Detached Signature)の特徴を正しく表しています。デタッチ署名は署名対象のデータが署名要素(Signature要素)とは別に存在する方式であり、参照(Reference)にURIやIDを使って外部・同一文書内の要素を指し示します。したがって「XML文書中のエレメントに対するデタッチ署名を作成し、同じXML文書に含めることができる」は妥当であり正解です。

解法ステップ

  1. 各選択肢が言及する技術の対象範囲を把握する(XML署名仕様とCMS/ASN.1の役割の違いを確認)。
  2. XML署名の三種類(Enveloped, Enveloping, Detached)の定義を思い出す。
  3. 選択肢を一つずつ当てはめて矛盾を探す:
    • CMSはXML署名の構文ではない(XML Signature仕様固有のXML構文)。
    • Detachedは署名データと署名要素が分離しているが、同一文書内にSignature要素を置いて参照することは可能。
    • Envelopingは署名要素がデータを内包する方式であり「複数署名が付与される」ことが本質ではない。
    • 署名アルゴリズムの記述にASN.1を直接使うのはXML署名の方式ではない。
以上からを正解として導けます。

選択肢別の誤答解説

  • ア: CMS(Cryptographic Message Syntax)は電子メールやS/MIME等で使われるバイナリ/ASN.1ベースのメッセージ構文であり、XMLデジタル署名(XML Signature)はXMLベースの仕様で独自のXML構文を使います。従って誤りです。
  • : 正しい。Detached署名は署名対象と署名要素が論理的に分離している方式で、同一XML文書内にSignature要素を置きつつReferenceで対象要素を指すことが可能です(署名対象に署名要素が含まれる場合とは異なる点に注意)。
  • ウ: Enveloping SignatureはSignature要素がObjectや付加要素としてデータを内包する方式です。「一つの署名対象に複数の署名を付与する」は可能ではありますが、これがenvelopingの定義的特徴ではありません。したがって選択肢の主張は誤導的で不正解です。
  • エ: ASN.1は証明書やCMSなどで使われますが、XML署名では署名情報やアルゴリズムの指定にURIやXML要素を用いるため「署名対象と署名アルゴリズムはASN.1によって記述する」は誤りです。

よくある誤解

  • デタッチ署名は必ず別ファイルでなければならない:誤り。デタッチは「署名対象と署名要素が別」であることが本質であり、同一文書内にSignature要素を置き参照する運用も一般的です。
  • enveloped-signature Transformは常に必要:誤り。enveloped(エンベロープド)署名の場合、署名対象にSignature要素が含まれるためenveloped-signature Transformを使って自身のSignature要素を除外することがあります。逆にデタッチ署名では署名対象にSignature要素が含まれないため、そのTransformは無意味で通常使用しません。
  • XML署名=CMS/XMLは混同しやすい:CMSとXML Signatureは別仕様なので取り違えないこと。用途やフォーマットが異なります。

補足コラム

実務での使い分け例:
  • Enveloped(エンベロープド)署名:XML文書に直接署名要素を埋め込みたい場合(例:SOAPメッセージ内でメッセージ自体に署名)。
  • Enveloping(エンベローピング)署名:署名内にデータを含めて配布したい場合(署名がデータを内包する)。
  • Detached(デタッチ)署名:署名対象が大きい、または別場所で管理される場合に便利。参照はURIで行うため外部リソースや同一文書内の別要素を指せる。
簡単なDetached署名の例(参考、enveloped Transformは含めない):
<Root xmlns="http://example.org">
  <Data Id="data1">重要なデータ</Data>

  <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
    <SignedInfo>
      <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
      <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
      <Reference URI="#data1">
        <Transforms>
          <!-- 必要に応じてCanonicalizationなどは使える -->
        </Transforms>
        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
        <DigestValue>...</DigestValue>
      </Reference>
    </SignedInfo>
    <SignatureValue>...</SignatureValue>
    <KeyInfo>...</KeyInfo>
  </Signature>
</Root>
上の例では署名対象(Data)はSignature要素とは別に存在しており、ReferenceでIDを参照しています。enveloped-signature Transformは含めていません(Signature要素が署名対象に含まれていないため不要)。

FAQ

Q. デタッチ署名で参照に外部URLを使ってもよいか?
A. はい。ReferenceのURIに外部リソースを指定できますが、取得や整合性、信頼性(タイムスタンプや証明書の有効性)に注意が必要です。
Q. 複数の署名を同じデータに付与することはできるか?
A. できます。複数のSignature要素を配置し、それぞれが同じReferenceを指すことで複数署名が成立します。これはenvelopingに限らず、用途に応じて行えます。
Q. XML署名でアルゴリズムの指定はどう表現するか?
A. XML内でAlgorithm属性にURIを指定し、署名アルゴリズムやダイジェストアルゴリズムを示します。ASN.1の記述は用いません。

関連キーワード: XML署名、XMLDSig、Detached Signature、Enveloped Signature、Enveloping Signature、Transform、Canonicalization、CMS、ASN.1、Reference、Signature要素、DigestValue
← 前の問題へこの年度をクイズで解く次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

情報処理安全確保支援士
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてブログプライバシーポリシー利用規約特商法表記開発者について