XML-Signature Syntax and Processing (XML Signature) は、 デジタル・コンテンツに対するデジタル・シグニチャーに署名し、 それを確認するための XML 構文および処理規則を定義する仕様です。 この仕様は、World Wide Web Consortium (W3C) および Internet Engineering Task Force (IETF) による共同開発です。
XML Signature には、新規暗号アルゴリズムは導入されていません。 WebSphere Application Server は、既存のアルゴリズム (RSA、HMAC、 および SHA1 など) を使用した XML Signature を使用します。 XML Signature は、鍵情報を記述するための多くのメソッドを定義し、 新規メソッドの定義を使用可能にします。
C14n は、XML 情報を正規化するために使用するプロセスです。 正規化される情報がこのアルゴリズムに依存しているため、該当する c14n アルゴリズムを選択します。 主な c14n アルゴリズムの 1 つは排他的 XML 正規化 (Exclusive XML Canonicalization) で、 文字エンコード・スキーム、属性の順序、ネーム・スペース宣言などを正規化します。 このアルゴリズムでは、タグの外側の空白、ネーム・スペース接頭部、またはデータ型表記は正規化されません。
Web Services Security-Core (WSS-Core) 仕様は、XML Signature を取り込むための SOAP メッセージ用の標準的な方法を定義します。 エンベロープされたシグニチャーとエンベロープするシグニチャーを除き 、WSS-Core 内のほとんどすべての XML Signature のフィーチャーを使用できます。 ただし、WSS-Core には、c14n アルゴリズムの排他的正規化などに関する推奨事項と、 SecurityTokenReference および KeyIdentifier のような幾つかの追加機能があります。 KeyIdentifier は、 X.509 証明書内の「SubjectKeyIdentifier」フィールドの値です。 KeyIdentifier について詳しくは、 OASIS Web Services Security X.509 Certificate Token Profile 資料内の『Reference to a Subject Key Identifier』を参照してください。
Web サービス・セキュリティーでは XML Signature はサポートされますが、 アプリケーション・プログラミング・インターフェース (API) は使用できません。 現行インプリメンテーションには多くのハードコーディングされた振る舞いと、 いくつかのユーザー操作可能な構成項目があります。 デジタル・シグニチャー用クライアントを構成するには、 『応答デジタル・シグニチャー検証用クライアントの構成: メッセージ・パーツの検証』を参照してください。 デジタル・シグニチャー用サーバーを構成するには、 『応答デジタル・シグニチャー検証用サーバーの構成: メッセージ・パーツの検証』を参照してください。
セキュリティーに関する考慮事項
リプレイ・アタックでは、 アタッカーは回線を盗聴し、署名済みメッセージを受け取った後、受信側にメッセージを戻します。 この場合、受信側は同じメッセージを 2 回受け取り、 署名が有効である場合は、両方を処理することがあります。 両方のメッセージを処理すると、メッセージが金銭の請求であった場合には受信側が損害を受ける可能性があります。 メッセージ・リプレイに署名生成時のタイム・スタンプと署名の有効期限時刻があれば、 アタックを減らすことができます。 しかし、これは完全な解決策ではありません。 これらのアタックを防止するためには、メッセージに nonce 値を付加し、 受信側は、処理済みの nonce を含むメッセージをリジェクトする必要があります。 現行インプリメンテーションには、メッセージ内に nonce を生成し、それを検査するための標準的な方法がありません。 WebSphere Application Server バージョン 5.1 では、 nonce はユーザー名トークンでのみサポートされています。 ユーザー名トークン・プロファイルには、 ユーザー名トークンの具体的な nonce の使用シナリオが含まれています。 アプリケーションは nonce (シリアル番号など) を処理するため、署名が必要です。