XMLDSig や DSig としても知られ、XML ドキュメントを署名するための XML 構文が定められています。
Signature タグが定義されていて、このタグの中に署名に関連する情報をすべて含めることになっています。たとえば、正規化の手法については、署名されたドキュメントのエレメントを特定するために必要な参照などです。
この標準では、署名されたドキュメントとの関係に応じて 3 種類の署名が定められています。Enveloped、Enveloping、Detached です。
- Enveloped 署名は、署名されたドキュメント内に含まれます。ドキュメント内で一部のエレメントのみ署名されている場合に、署名されたエレメントへの参照が追加されます。
- Enveloping 署名では、署名されたエレメントがそのタグ内に含まれます。
- Detached 署名では、元の XML ドキュメントとは別のドキュメントに署名が保存され、元のドキュメントへの参照でリンクされます。
Signature 構造の例
<Signature Id="MyFirstSignature" xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/2006/12/xml-c14n11"/>
<SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>
<Reference URI="http://www.w3.org/TR/2000/REC-xhtml1-20000126/">
<Transforms>
<Transform Algorithm="http://www.w3.org/2006/12/xml-c14n11"/>
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
<DigestValue>dGhpcyBpcyBub3QgYSBzaWduYXR1cmUK...</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>...</SignatureValue>
<KeyInfo>
<KeyValue>
<DSAKeyValue>
<P>...</P><Q>...</Q><G>...</G><Y>...</Y>
</DSAKeyValue>
</KeyValue>
</KeyInfo>
</Signature>
出典
- CanonicalizationMethod は、特殊文字を処理するアルゴリズムを定義します。ハッシュダイジェストを計算する前に入力が事前処理されます。通信の両端で同じ方法でテキストを事前処理する方法であり、この処理がなければ署名は機能しません。
- SignatureMethod は、ハッシュアルゴリズムと、署名に使用する非対称アルゴリズムを定義します。
- DigestMethod は、ダイジェスト値を計算するために使用するハッシュアルゴリズムを定義します。
- DigestValue エレメントには、署名されたテキストの Base64 でエンコードされたハッシュが含まれます。
- Reference エレメントは、URI による参照、ドキュメント内の ID、または Detached 署名の場合は署名された別のドキュメントへの参照を定義します。
- Transforms エレメントには、ダイジェスト (ハッシュ) 処理前にドキュメントを変換するための定義が含まれます。また、XPath 述語を定義する XPath 変換を含め、署名されたエレメントを見つけることもできます。
- SignatureValue エレメントには、Base64 でエンコードされた署名値が含まれます。この値は、SignedInfo エレメントで表現されたすべての定義を使用して計算されます。
- KeyInfo はオプションのエレメントです。標準では、署名に付加してもしなくてもいいことになっています。付加する場合は、KeyValue エレメントタイプか、X509Data エレメントタイプを含めることができます。KeyInfo エレメントが Signature に含まれない場合、署名を検証するための公開鍵を別の場所から入手する必要があります。
- KeyValue エレメントタイプには、署名の検証に使用する公開鍵のタイプおよびパラメーターに関する情報が含まれます。パラメーターは Base64 でエンコードされている必要があります。
- X509Data エレメントタイプには、公開鍵証明書に関連するデータと、署名検証プロセスで使用するその他の証明書情報が含まれます。
|