XML デジタル署名

XML-Signature Syntax and Processing (XML デジタル署名) は、 デジタル・コンテンツに対するデジタル署名に署名し、それを検査するための XML 構文および処理規則を定義する仕様です。 この仕様は、World Wide Web Consortium (W3C) および Internet Engineering Task Force (IETF) による共同開発です。

XML デジタル署名に、新規暗号アルゴリズムは導入されていません。 WebSphere® Application Server は、RSA、HMAC、 SHA1などの既存のアルゴリズムで XML デジタル署名を使用します。 XML Signature は、鍵情報を記述するための多くのメソッドを定義し、 新規メソッドの定義を使用可能にします。

たいていの場合、XML 正規化 (c14n) は、XML Signature を使用する場合に必要になります。 情報は、シリアライズされた XML 文書内で、さまざまな方法で表すことができます。 例えば、それらの情報のオクテット表記は異なりますが、以下の例では同一です。
  • <person first=John last=Smith/>
  • <person last=Smith first=John></person>

C14n は、XML 情報を正規化するために使用するプロセスです。 正規化される情報がこのアルゴリズムに依存しているため、該当する c14n アルゴリズムを選択します。 主な c14n アルゴリズムの 1 つは排他的 XML 正規化 (Exclusive XML Canonicalization) で、 文字エンコード・スキーム、属性の順序、名前空間宣言などを正規化します。 このアルゴリズムでは、タグの外側の空白、名前空間接頭部、またはデータ型表記は正規化されません。

Web Services Security-Core 仕様内の XML Signature

Web Services Security-Core (WSS-Core) 仕様は、XML Signature を取り込むための SOAP メッセージ用の標準的な方法を定義します。 エンベロープされたシグニチャーとエンベロープするシグニチャーを除き 、WSS-Core 内のほとんどすべての XML Signature のフィーチャーを使用できます。 ただし、WSS-Core には、 c14n アルゴリズムの排他的正規化などのいくつかの推奨事項と、 SecurityTokenReferenceKeyIdentifierなどのいくつかの追加機能があります。

KeyIdentifier は、X.509 証明書内の「SubjectKeyIdentifier」フィールドの値です。 KeyIdentifierについて詳しくは、 OASIS Web Services Security X.509 Certificate Token Profile 資料内の「 Reference to a Subject Key Identifier 」を参照してください。

XML Signature を SOAP メッセージに組み込むことにより、以下の結果が実現されます。
メッセージ保全性
メッセージの受信側は、メッセージのパーツが鍵を使用して署名された後、 アタッカーや事故によって変更されていないことを確認できます。
認証
有効なシグニチャーは所有の証明であると見なすことができます。 メッセージに、認証局発行のデジタル証明書と、 証明書内の公開鍵により正常に検証されたメッセージ内のシグニチャーがあれば、 署名者が対応する秘密鍵を持っていることが証明されます。 受信側は、証明書の信頼性を検査することにより、署名者を認証できます。