最終更新日:2026年6月1日
sg sg-technology crypto_auth
まず結論
XML署名とは、XML文書にデジタル署名を付けるための仕組みです。
XML文書の内容について、次のことを確認するために使われます。
- 途中で改ざんされていないか
- だれが署名したものか
- XML文書全体、または一部が正しいか
SG試験では、細かいXML構文よりも、まず次のように押さえると判断しやすいです。
XML署名 = XMLデータの改ざん検知と署名者確認に使う仕組み
XMLを暗号化して読めなくする技術ではありません。
直感的な説明
XML署名は、XML文書に付ける封印シールのようなものです。
たとえば、注文書や申請データをXMLでやり取りするとします。そのXMLに署名を付けておくと、受け取った側は次のことを確認できます。
- 送信後に内容が変えられていないか
- 本当に署名者が作成・承認したものか
ここで大事なのは、XML署名は中身を隠すためのものではないという点です。中身を隠したい場合は、XML暗号のような暗号化の仕組みを使います。
定義・仕組み
XML署名は、XML文書にデジタル署名を埋め込むための技術です。
仕様としては、W3Cの XML Signature Syntax and Processing Version 1.1 で構文や処理方法が整理されています。
通常のデジタル署名と同じように、次の流れで改ざんの有無や署名者を確認します。
- 署名対象のデータからハッシュ値を作る
- 署名者の秘密鍵で署名する
- 受信者が公開鍵などを使って検証する
XML署名の特徴は、XML文書の全体だけでなく、一部の要素にも署名できることです。
たとえば、XML文書の中に注文情報、金額情報、承認情報がある場合、文書全体ではなく「金額情報だけ」に署名を付けることもできます。
XML署名は文書全体だけでなく一部にも使える
XML署名は、XML文書全体に1つの署名を付けるだけの仕組みではありません。
たとえば、申請データの中で次のように署名対象を分けることがあります。
- 文書全体に署名する
- 金額や承認欄など、特定の要素だけに署名する
- 必要に応じて複数の部分に署名する
SG試験では、「XML文書の一部に署名できる」「部分署名や複数の署名に対応できる」とあれば、XML署名の特徴として判断します。
逆に、通信経路全体を暗号化する話ならTLS、情報の存在を隠す話ならステガノグラフィです。
Signature要素
XML署名は、主に Signature 要素としてXML文書内に記述されます。
代表的な要素は次のとおりです。
| 要素 | 役割 |
|---|---|
SignedInfo |
署名対象や署名方式などの情報をまとめる |
Reference |
署名する対象をURIで指定する |
DigestValue |
署名対象データのハッシュ値 |
SignatureValue |
実際の署名値 |
KeyInfo |
検証に使う鍵や証明書の情報 |
SG試験では、特に Reference要素は、署名する対象をURIで指定する と押さえます。
どんな場面で使う?
XML署名は、XML形式でデータをやり取りする場面で使われます。
- 電子申請
- 電子契約
- Webサービス間のデータ連携
- 業務システム間のXMLデータ交換
- 取引データや申請データの改ざん検知
特に、システム間でXMLデータを送受信する場合、受信側は「このデータは途中で変更されていないか」を確認したくなります。その確認に使えるのがXML署名です。
SG試験では、問題文に「XML文書」「改ざん検知」「署名者確認」「一部の要素に署名」とあれば、XML署名を候補にします。
よくある誤解・混同
XML署名とXML暗号を混同しない
XML署名と混同しやすいのが、XML暗号です。
| 用語 | 主な目的 |
|---|---|
| XML署名 | 改ざん検知・署名者確認 |
| XML暗号 | XMLデータの秘匿 |
XML署名は、データの正しさを確認する仕組みです。XML暗号は、データを読めないようにする仕組みです。
選択肢を切るときは、次のように判断します。
- 改ざんされていないことを確認 → XML署名
- 署名者を確認 → XML署名
- XML文書の一部に署名 → XML署名
- 内容を第三者に読まれないようにする → XML暗号
- XMLデータを暗号化する → XML暗号
XML署名はデジタル署名と別物ではない
XML署名は、デジタル署名の考え方をXML文書に適用したものです。
そのため、デジタル署名とまったく別物として覚えるより、デジタル署名をXMLで扱えるようにした仕組みと考えると理解しやすいです。
Reference要素は署名そのものではない
Reference 要素は、署名する対象を指定するための要素です。署名値そのものは SignatureValue に入ります。
Reference:どれに署名するかSignatureValue:署名そのもの
この切り分けができると、要素名を問う選択肢を消しやすくなります。
判断軸の再確認(確認問題の前に)
- 目的を先に見る:この対策・用語は「予防」「検知」「対応」のどこを担うか。
- 対象を切り分ける:ネットワーク/端末/利用者/運用手順のどこに効くか。
- 選択肢の言い過ぎに注意:「必ず」「完全に」「不要になる」といった断定は誤りになりやすい。
確認問題(SG試験対策)
XMLでやり取りする申請データの一部が、送信後に変更されていないことを確認したい。使う技術として最も適切なものはどれか。
- ア. XML署名
- イ. XML文書の整形表示
- ウ. XMLデータの圧縮
- エ. XMLからHTMLへの変換
▶ クリックして答えと解説を見る(ここを開く)
正解:ア
解説
- ア:適切です。XML署名は、XML文書全体または一部の改ざん検知や署名者確認に使います。
- イ:不適切です。表示の整形は、改ざん検知や署名者確認の仕組みではありません。
- ウ:不適切です。圧縮はデータ量を減らす処理であり、署名ではありません。
- エ:不適切です。形式変換の説明であり、XML署名ではありません。
👉 判断ポイント XML文書の正しさや署名者を確認する話ならXML署名、内容を読めなくする話ならXML暗号で切り分けます。
まとめ(試験直前用)
- XML署名は、XML文書の改ざん検知と署名者確認に使う
- XML文書全体だけでなく、一部にも署名できる
Reference要素は署名対象をURIで指定する- XML暗号は秘匿、XML署名は正しさの確認
- 選択肢では「署名・改ざん検知・署名者確認」ならXML署名、「読めなくする」ならXML暗号で切る