Cosminexus V9 アプリケーションサーバ Cosminexus XML Security - Core ユーザーズガイド

[目次][用語][索引][前へ][次へ]

4.4.2 セキュリティに関する注意事項

<この項の構成>
(1) XML署名構文に記述する情報
(2) セキュリティモデルの選択
(3) セキュリティの強度
(4) XML署名とXML暗号を併用する場合
(5) 共通鍵を3人以上で共有する場合
(6) 暗号データの改ざんへの対策
(7) DoS攻撃への対策
(8) 暗号データの安全性

(1) XML署名構文に記述する情報

XML署名では,XML署名構文の中に記述される情報を基に,セキュリティを確保します。XML署名アプリケーションは,XML署名構文に記述された情報の内容が正しいことを確認する必要があります。そのため,XML署名アプリケーションを開発する場合,署名対象と指定するアルゴリズムを意識する必要があります。署名対象と指定するアルゴリズムについての注意事項を説明します。

(a) 署名対象

署名対象は,Reference要素のURI属性と変換処理に基づいて決定します。XML署名アプリケーションを開発する場合,署名対象としたいデータを正しく取得できるようにReference要素のURI属性と変換処理を指定してください。署名対象に関する注意事項を次に示します。

(b) アルゴリズム

XML署名を検証する場合,検証するXML署名文書内で指定されているアルゴリズムの有効性を確認する必要があります。署名アルゴリズムや正規化アルゴリズムなどが,検証に使用するXML署名アプリケーションにとって有効な指定であることを確認してください。

(2) セキュリティモデルの選択

XML署名仕様およびXML暗号仕様では,公開鍵署名などの公開鍵ベースのセキュリティや,鍵ハッシュ認証コードまたは共通鍵暗号などの共通鍵ベースのセキュリティなど,さまざまなセキュリティモデルを適用できます。ただし,XML署名仕様およびXML暗号仕様ではセキュリティモデルの信頼性や利便性については言及していません。そのため,XML署名アプリケーションまたはXML暗号アプリケーションを開発する場合は,アプリケーションの用途に応じて適切なセキュリティモデルを選択する必要があります。

(3) セキュリティの強度

XML署名またはXML暗号のセキュリティの強度は,署名アルゴリズム,暗号アルゴリズム,ダイジェストアルゴリズム,鍵生成の強度,鍵のサイズ,鍵または証明書認証のセキュリティ,鍵配布の仕組みなどに依存します。XML署名アプリケーションまたはXML暗号アプリケーションを開発する場合は,開発に必要なXML署名ライブラリの機能,および認証基盤となるPKIや暗号エンジンのライブラリの信頼性を考慮して,開発に使用するライブラリを選択するようにしてください。

なお,操作手順やシステムの運用に関係するユーザーの完全性,またはシステム管理を実行する上での強制力なども,システム全体のセキュリティ強度に影響します。システムを設計する場合は,これらの要素も考慮してください。

(4) XML署名とXML暗号を併用する場合

XML署名とXML暗号を併用する場合は,アプリケーションを開発するときに次のことを考慮する必要があります。

(a) XML署名とXML暗号の順序性

XML署名とXML暗号を併用する場合,受信者は送信者がデータに署名を付与してから暗号化したのか,データを暗号化してから署名を付与したのかを知る必要があります。受信者は,送信者の処理と逆の順序で署名の検証およびデータの復号化を実行する必要があるためです。例えば,送信者が署名を付与してからデータを暗号化していた場合,受信者はまずデータを復号化してから署名を検証します。受信者が送信者と同じ順序で署名の検証およびデータの復号化を実行してしまった場合,署名の検証に失敗します。

(b) XML署名によって保証されるデータ

XML署名が保証するのは,その署名が付与されている個所のデータだけです。暗号化されたデータにXML署名が含まれていても,そのデータ全体の完全性または送信者の本人性が保証されるわけではありません。

(c) 暗号化の対象

データを暗号化する場合,より高度なセキュリティを確保するためには,そのデータのダイジェストまたは署名も暗号化する必要があります。ダイジェストまたは署名を暗号化しないで平文のままにしておくと,悪意のある第三者から攻撃されやすくなるおそれがあります。

(5) 共通鍵を3人以上で共有する場合

3人以上で共有している共通鍵は,その共通鍵を共有しているすべてのメンバに対して送信するデータを暗号化するときにだけ使用します。その共通鍵を共有しているメンバのうち,一部のメンバに対してだけデータを送信する場合は,使用しないでください。一部のメンバに対してだけデータを送信した場合でも,共通鍵を共有するほかのメンバがデータを盗聴すると,データを復号できてしまうため,情報が漏洩するおそれがあります。

(6) 暗号データの改ざんへの対策

一般的な暗号技術では,同じ鍵を使用して同じデータを暗号化した場合に暗号化結果が同じにならないように,IVとよばれるランダムな値を暗号化対象とともに暗号化することがあります。IVは,暗号化されたデータとともに送信されます。暗号化したデータにIVを付加することで,送信中に第三者によってデータが解読されるおそれは少なくなりますが,IV自体または暗号化されたデータの改ざんは防止できません。IVや暗号データが改ざんされると,復号化結果も異なってしまいます。IVまたは暗号データの改ざんを防止するためには,平文に対して署名するなどの対策が必要です。

(7) DoS攻撃への対策

XML署名またはXML暗号の相互参照などを悪用して無限再帰となる処理を要求したり,容量の大きいデータや常にリダイレクトを必要とするデータへの参照が必要となるデータを送信したりするなどのDoS攻撃への対策として,アプリケーションを開発する場合は次の機能を組み込んでおく必要があります。

(8) 暗号データの安全性

XML暗号によって暗号化したデータは,コンピュータウィルスなどの有害なデータであっても,ファイアウォールやウィルスを検知するソフトウェアなどで検出できない場合があります。そのため,暗号化されたデータの安全性は保証されていないという前提で,ファイアウォールやウィルスを検知するソフトウェアには次の対処のどれかを実施することをお勧めします。