最終更新日:2026年5月9日
sg security cryptography digital-signature xml
XML署名とは?XML文書の改ざん検知と署名者確認の仕組み【SG試験】
まず結論
XML署名とは、XML文書にデジタル署名を付けるための仕組みです。
XML文書の内容が、
- 途中で改ざんされていないか
- だれが署名したものか
- XML文書全体、または一部が正しいか
を確認するために使われます。
SG試験では、細かいXML構文よりも、まず次のように押さえると判断しやすいです。
XML署名 = XMLデータの改ざん検知と署名者確認に使う仕組み
XMLを暗号化して読めなくする技術ではありません。
直感的な説明
XML署名は、XML文書に付ける封印シールのようなものです。
たとえば、注文書や申請データをXMLでやり取りするとします。
そのXMLに署名を付けておくと、受け取った側は、
- 送信後に内容が変えられていないか
- 本当に署名者が作成・承認したものか
を確認できます。
ここで大事なのは、XML署名は中身を隠すためのものではないという点です。
中身を隠したい場合は、XML暗号のような暗号化の仕組みを使います。
定義・仕組み
XML署名は、XML文書にデジタル署名を埋め込むための技術です。
通常のデジタル署名と同じように、
- 署名対象のデータからハッシュ値を作る
- 署名者の秘密鍵で署名する
- 受信者が公開鍵などを使って検証する
という流れで、改ざんの有無や署名者を確認します。
XML署名の特徴は、XML文書の全体だけでなく、一部の要素にも署名できることです。
たとえば、XML文書の中に、
- 注文情報
- 金額情報
- 承認情報
がある場合、文書全体ではなく「金額情報だけ」に署名を付けることもできます。
Signature要素
XML署名は、主に Signature 要素としてXML文書内に記述されます。
Signature 要素の中には、署名対象や署名値などの情報が入ります。
代表的な要素は次のとおりです。
| 要素 | 役割 |
|---|---|
SignedInfo |
署名対象や署名方式などの情報をまとめる |
Reference |
署名する対象をURIで指定する |
DigestValue |
署名対象データのハッシュ値 |
SignatureValue |
実際の署名値 |
KeyInfo |
検証に使う鍵や証明書の情報 |
SG試験では、特に次の点が狙われやすいです。
Reference要素は、署名する対象をURIで指定する
つまり、XML文書のどこを署名対象にするかを示す役割があります。
どんな場面で使う?
XML署名は、XML形式でデータをやり取りする場面で使われます。
たとえば、
- 電子申請
- 電子契約
- Webサービス間のデータ連携
- 業務システム間の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:署名そのもの
と切り分けておくと、選択肢を判断しやすくなります。
試験直前まとめ
XML署名は、次の3点で押さえましょう。
- XML文書の改ざん検知に使う
- XML文書全体だけでなく一部にも署名できる
- Reference要素は署名対象をURIで指定する
ひっかけとしては、XML暗号との混同に注意です。
署名 = 正しさを確認する
暗号 = 中身を隠す
この切り分けができれば、SG試験ではかなり選択肢を切りやすくなります。
確認問題
XML署名の説明として、最も適切なものはどれか。
- XML文書の文字コードを統一するための仕組み
- XML文書全体または一部に署名し、改ざん検知や署名者確認を行う仕組み
- XML文書を圧縮して通信量を減らす仕組み
- XML文書をHTMLに変換するための仕組み
回答と解説
正解は **2** です。 XML署名は、XML文書にデジタル署名を付けるための仕組みです。 XML文書全体だけでなく、指定した一部の要素にも署名できます。 1は文字コード、3は圧縮、4は変換に関する説明であり、XML署名の説明ではありません。参考
- W3C: XML Signature Syntax and Processing
- RFC 3275: XML-Signature Syntax and Processing
- RFC 3075: XML-Signature Syntax and Processing