Skip to the content.

最終更新日:2026年8月4日

まず結論

XML署名とは、XML文書やその一部分にデジタル署名を付け、改ざんの有無や署名者を確認する仕組みです。

基本情報技術者試験では、次の特徴を押さえると判断しやすくなります。

XML文書全体だけでなく
特定の要素や複数の部分にも署名できる

したがって、問題文に次の表現があれば、XML署名を疑います。

  • XML文書の一部へ署名する
  • 複数の要素へ別々に署名する
  • 部分署名や多重署名に対応する
  • 署名対象をURIで指定する

XML署名は、通信経路を暗号化するTLSや、情報の存在を隠すステガノグラフィとは別の技術です。

直感的な説明

XML文書を、複数の欄を持つ電子申請書として考えると分かりやすいです。

<申請書>
  <申請者情報>...</申請者情報>
  <申請内容>...</申請内容>
  <承認情報>...</承認情報>
</申請書>

通常のファイル全体への署名では、申請書全体を一つの対象として扱います。

一方、XML署名では、XMLの要素構造を利用して、署名対象を細かく指定できます。

申請者
→ 申請内容に署名

上司
→ 承認情報に署名

管理部門
→ 文書全体に署名

このように、文書の一部分だけに署名したり、複数の署名を一つのXML文書へ付けたりできます。

これが、XML署名の特徴である部分署名多重署名です。

定義・仕組み

XML署名は、XMLデータに対するデジタル署名の形式です。

基本的な流れは、一般的なデジタル署名と同じです。

署名対象を選ぶ
↓
ハッシュ値を計算する
↓
秘密鍵を用いて署名値を生成する
↓
署名情報をXML形式で保存する

検証時には、署名対象からハッシュ値を再計算し、署名情報を使って確認します。

ハッシュ値が一致する
→ 署名後に内容が変更されていない

ハッシュ値が一致しない
→ 内容が変更されている可能性がある

XML署名によって、主に次の性質を確認できます。

性質 意味
完全性 署名後に内容が変更されていないこと
真正性 対応する秘密鍵を持つ者が署名したこと

ただし、XML署名は、XMLの内容を読めなくする仕組みではありません。

内容を読めなくする
→ 暗号化

変更されていないことを確認する
→ デジタル署名

XML署名の特徴は、署名対象を文書全体に限定せず、XML要素や外部データまで柔軟に指定できることです。

部分署名

部分署名は、XML文書の特定部分だけを署名対象にする方法です。

例えば、次のXML文書で、申請内容だけを署名対象にできます。

<申請書>
  <申請者情報>...</申請者情報>
  <申請内容 Id="request">...</申請内容>
  <承認情報>...</承認情報>
</申請書>

署名対象をURIなどで指定することで、必要な要素だけを保護できます。

XML文書の一部を指定
→ その部分だけに署名

多重署名

多重署名は、一つのXML文書に複数の署名を付ける方法です。

例えば、申請者と承認者が、異なる部分にそれぞれ署名できます。

署名1
→ 申請内容を対象

署名2
→ 承認情報を対象

誰がどの部分を承認したのかを、XML構造に沿って表現できます。

XML署名の主な要素

XML署名には、署名対象や署名値などを表す要素があります。

要素 主な役割
Signature XML署名全体を表す
SignedInfo 署名対象やアルゴリズムの情報を表す
Reference 署名対象をURIなどで指定する
DigestValue 署名対象のハッシュ値を表す
SignatureValue 生成された署名値を表す
KeyInfo 検証に使う鍵の情報を格納できる

FE試験では、要素名を細かく暗記するより、次の関係を理解することが重要です。

Reference
→ どのデータを署名するか指定する

DigestValue
→ 対象データのハッシュ値

SignatureValue
→ 秘密鍵を用いて生成した署名値

このテーマは、基本情報技術者試験の「情報セキュリティ」や「暗号と認証」に関係する内容です。公式の出題範囲やシラバスは、IPA:基本情報技術者試験から確認できます。

科目Aでどう出る?

科目Aでは、XML署名でできることや、他の技術との違いを選ぶ問題として出題されます。

最も重要な判断基準は次です。

文書全体だけでなく
一部分や複数箇所へ署名できる
→ XML署名

3つの署名形式

XML署名は、署名要素と署名対象の位置関係によって、主に次の3形式に分けられます。

形式 位置関係
Detached Signature 署名要素と署名対象が分離している
Enveloped Signature 署名対象の中に署名要素がある
Enveloping Signature 署名要素の中に署名対象がある

Detached Signature

Detached Signatureは、署名要素と署名対象が分かれている形式です。

XML署名
 └─ URIで対象を参照

署名対象
 └─ 別の要素や別ファイル

detachedは「切り離された」という意味です。

署名対象が別ファイルの場合だけでなく、同じXML文書内で署名要素と対象要素が親子関係にない場合も含まれます。

Enveloped Signature

Enveloped Signatureは、署名対象の中に署名要素が入る形式です。

<対象文書>
  <データ>...</データ>
  <Signature>...</Signature>
</対象文書>
対象文書
└─ XML署名

対象文書が外側にあると考えます。

Enveloping Signature

Enveloping Signatureは、署名要素の中に署名対象が入る形式です。

<Signature>
  <Object>
    <対象文書>...</対象文書>
  </Object>
</Signature>
XML署名
└─ 対象文書

署名要素が外側にあると考えます。

3形式の覚え方

Detached
→ 署名と対象が離れている

Enveloped
→ 対象文書が外側

Enveloping
→ 署名が外側

EnvelopedとEnvelopingは名前が似ていますが、親子関係が反対です。

選択肢を切る判断表

問題文の表現 判断する用語
XML文書の一部へ署名 XML署名
部分署名・多重署名 XML署名
XML要素をURIで参照 XML署名
通信経路を暗号化 TLS
非同期通信でWeb画面を書き換える Ajax
情報の存在を隠す ステガノグラフィ
内容を読めなくする 暗号化

どんな場面で使う?

XML署名は、XML形式のデータを複数の組織やシステムの間で受け渡す場面で使われます。

例えば、次のような用途があります。

  • 電子申請や電子契約
  • システム間で交換する業務メッセージ
  • 複数の担当者が承認するワークフロー
  • XML形式の設定情報や証明情報
  • 文書の一部分だけを保護したい場面

XML署名が向いているのは、単にファイル全体の改ざんを確認するだけでなく、XML構造に応じて署名対象を選びたい場合です。

文書全体を一つの対象として署名
→ 一般的なファイル署名でも可能

XML要素ごとに署名対象を指定
→ XML署名が得意

XML署名とTLSの違い

項目 XML署名 TLS
主な対象 XMLデータ 通信経路
主な目的 完全性、署名者の確認 通信中の盗聴・改ざん対策
通信終了後 署名情報を残せる 通信路の保護は終了する
部分指定 XML要素ごとに可能 XMLの部分署名ではない

判断するときは、次のように切り分けます。

通信中を守る
→ TLS

データそのものへ署名を残す
→ XML署名

XML署名とXML暗号の違い

技術 主な目的
XML署名 改ざんの検知、署名者の確認
XML暗号 内容を読めないようにする
完全性・真正性
→ XML署名

機密性
→ XML暗号

XML署名を付けただけでは、内容が秘密になるわけではありません。

XML署名とAjaxの違い

Ajaxは、JavaScriptを使ってサーバと非同期通信し、Webページの一部分を更新する仕組みです。

画面を再読込みせずに内容を更新する
→ Ajax

XMLデータに署名を付ける
→ XML署名

Ajaxの名前にXMLが含まれていても、XML署名とは役割が異なります。

XML署名とステガノグラフィの違い

ステガノグラフィは、画像などの中に情報を埋め込み、情報の存在自体を分かりにくくする技術です。

情報の存在を隠す
→ ステガノグラフィ

改ざんを検知する
→ XML署名

よくある誤解・混同

誤解 正しい理解
XML署名は通信を暗号化する 通信経路の暗号化はTLSの役割
XML署名を付けると内容を読めなくなる 署名と暗号化は別の技術
XML署名は文書全体にしか付けられない 特定要素や複数対象にも署名できる
Detachedは必ず別ファイルを対象にする 同じXML内で分離した要素を参照する場合もある
EnvelopedとEnvelopingは同じ 署名と対象の親子関係が反対
XMLを使う技術はすべてXML署名に関係する AjaxやXML暗号とは目的が異なる

XML署名は盗聴を防ぐ

XML署名の主目的は、改ざんの検知や署名者の確認です。

署名対象の内容自体を暗号化していなければ、第三者が内容を読める可能性があります。

盗聴を防ぐ
→ TLSや暗号化

改ざんを検知する
→ XML署名

署名対象を変更しても署名は有効なまま

署名対象の内容が変わると、再計算したハッシュ値が署名時の値と一致しなくなります。

そのため、署名検証に失敗します。

EnvelopedとEnvelopingを名前だけで覚える

両者は名前が似ているため、どちらが外側かで覚えます。

Enveloped
→ 対象文書が署名を包む

Enveloping
→ 署名が対象文書を包む

XML署名はXMLだけしか参照できない

XML署名では、URIによって外部データを参照する形式もあります。

試験では、XML文書の要素に柔軟に署名できる点を中心に押さえれば十分です。

まとめ(試験直前用)

  • XML署名は、XML文書やその一部分へデジタル署名を付ける仕組み
  • XML文書全体だけでなく、部分署名や多重署名にも対応できる
  • XML署名は完全性と真正性を確認するもので、内容を暗号化するものではない
  • Detachedは署名と対象が分離している
  • Envelopedは対象文書の中に署名がある
  • Envelopingは署名の中に対象文書がある
  • 通信経路を守るのはTLS、非同期通信はAjax、情報の存在を隠すのはステガノグラフィ

🔗 関連記事

  • 関連記事は準備中です。

© 2024-2026 stemtazoo. All rights reserved.