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

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


問題文

XMLディジタル署名の特徴のうち、適切なものはどれか。

選択肢

XML文書中の任意のエレメントに対してデタッチ署名(Detached Signature)を付けることができる。(正解)
エンベローピング署名(Enveloping Signature)では一つの署名対象に必ず複数の署名を付ける。
署名形式としてCMS(Cryptographic Message Syntax)を用いる。
署名対象と署名アルゴリズムをASN.1によって記述する。

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

XMLデジタル署名の特徴【午前2解説】

正解の理由

XMLディジタル署名は、XML文書内外の任意のリソース(エレメント、外部ファイルなど)をURIで参照して署名できる仕組みを持ちます。したがって、署名本体(Signature要素)を文書から分離して配置し、参照(Reference)で対象を指す「デタッチ署名(Detached Signature)」をXML署名で実現できます。選択肢のうち、はこの性質を正しく表しています。

解法ステップ

  1. 「Detached」「Enveloping」「Enveloped」の違いを確認する
    • Detached:署名が対象から分離(署名は別箇所、Referenceで対象を指す)
    • Enveloping:署名が対象を内包(Signatureがデータを含む)
    • Enveloped:署名が対象内に埋め込まれる(対象内にSignatureがある)
  2. XML署名の仕様(XMLDSig)はXML構文で署名を表現することを思い出す(CMSやASN.1は別規格)。
  3. 選択肢を上の知識に照らして当てはめ、矛盾のある記述を除外する。

選択肢別の誤答解説

  • ア: 正。XML署名はReference要素のURIで任意のエレメントや外部リソースを指して署名できるため、デタッチ署名が可能。
  • イ: 誤。Enveloping署名は「署名が対象を内包する」方式であり、必ず複数の署名を付けるとは限らない。1つの署名で1つの(あるいは複数の)対象を内包することはできるが、「必ず複数署名」が付くわけではない。
  • ウ: 誤。CMS(Cryptographic Message Syntax)はバイナリ形式の署名/暗号メッセージ構文(S/MIME等)であり、XML署名とは別物。XML署名はXMLベースの構文(XMLDSig)を用いる。
  • エ: 誤。ASN.1はバイナリ記述(DER等)でアルゴリズムや構造を表す規格だが、XML署名では署名対象やアルゴリズムはXML要素やURIで記述される。ASN.1で記述するのはX.509やCMS側の仕様であり、XML署名の本体構文ではない。

よくある誤解

  • 「enveloped-signatureトランスフォームはどの署名でも使う」:enveloped-signature Transformは署名対象の文書内にSignature要素が含まれる(enveloped)場合に、署名対象の計算からSignature要素自身を除外するために使う。Detached署名では通常不要・不適切。
  • 「XML署名=CMSのXML版」:両者は設計思想・構文が異なる別規格。用途によって使い分ける(XML文書の部分署名やXPath指定が必要ならXMLDSig)。
  • 「署名アルゴリズムの指定は常にOID/ASN.1で記述する」:XML署名ではアルゴリズムはURIで指定するのが基本(例:http://www.w3.org/2000/09/xmldsig#rsa-sha1)。ASN.1/OIDは他の規格で用いられる。

補足コラム

XML署名の主要要素と流れ(簡潔)
  • Signature要素:署名のルート。SignedInfo、SignatureValue、KeyInfoなどを含む。
  • SignedInfo:どのデータをどう変換してダイジェストを取ったか、署名アルゴリズム等を含む。これ自体を正規化して署名する。
  • Reference要素:署名対象をURIで指定。Transformsで対象に対する前処理(例:XPathフィルタ、Canonicalization)を定義し、Digestを格納する。
  • Detachedの典型例:Signatureは文書の別箇所(または別ファイル)にあり、Reference URI="#id" や外部URIで対象を指す。
例:文書内の要素(Id="data1")を分離して署名する(Detached)のサンプル
<!-- 署名対象(任意の場所に存在) -->
<data Id="data1">重要な内容</data>

<!-- 署名本体(別箇所に配置) -->
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
  <SignedInfo>
    <CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
    <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha256"/>
    <Reference URI="#data1">
      <Transforms>
        <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
      </Transforms>
      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256"/>
      <DigestValue>...</DigestValue>
    </Reference>
  </SignedInfo>
  <SignatureValue>...</SignatureValue>
  <KeyInfo>...</KeyInfo>
</Signature>
(注)上の例ではenveloped-signatureトランスフォームは使っていません。envelopedは署名が対象内部に埋め込まれる場合に限り必要となります。

FAQ

Q1: XML署名で外部ファイルを署名できますか?
A1: はい。ReferenceのURIに外部URLを指定すれば、外部リソースに対するデタッチ署名が可能です。
Q2: 同じXMLに複数のSignature要素を置けますか?
A2: できます。署名対象や署名者が異なれば複数の署名を付与することが可能です(並列または重複した対象に対して)。
Q3: 署名検証に必要な情報は何ですか?
A3: ReferenceのURIで指すデータ、SignedInfoの署名アルゴリズム、DigestValue、SignatureValue、検証用の公開鍵情報(KeyInfo等)が必要です。

関連キーワード: XML Signature、XMLDSig、Detached Signature、Enveloping Signature、Enveloped Signature、Canonicalization、Transforms、Reference URI、SignatureValue、SignedInfo
← 前の問題へこの年度をクイズで解く次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

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

クイズ画面へ遷移する

すぐに利用可能!

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

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