私はWCFセキュリティの実装について読んでいて、2種類のセキュリティがあることを知りました:Transport Mode and Message Mode (or both)
トランスポートモードにHTTPSを使用した場合、メッセージセキュリティも使用した方が安全ですか?私が理解しているのは次のとおりなので、私はこれを求めています:
httpsはメッセージを暗号化するSSLプロトコルを使用しています...では、なぜメッセージセキュリティを追加してSSL暗号化メッセージを暗号化する必要があるのですか?または私は何かを誤解していますか?
WCFのセキュリティは実際には いくつかの機能で構成されています 。これら2つの違いは、メッセージの署名と暗号化の方法です。
トランスポートセキュリティは、ポイントツーポイントのチャネルセキュリティのみを提供します。つまり、HTTPSはクライアントとクライアントに公開されているサーバーとの間でのみ安全なチャネルを確立します。ただし、このサーバーが単なるロードバランサーまたはリバースプロキシサーバーの場合は、メッセージのコンテンツに直接アクセスできます。
メッセージセキュリティは、エンドツーエンドのチャネルセキュリティを提供します。つまり、セキュリティは転送されるデータの一部であり、意図した宛先のみがデータを復号化できます(ロードバランサーまたはプロキシは暗号化されたメッセージのみを参照します)。ほとんどの場合、メッセージセキュリティも証明書を使用して暗号化と署名を提供しますが、トランスポートセキュリティはHWアクセラレーションを使用できるため、通常は低速です。
高度なシナリオでは、これらの方法を組み合わせることができます。たとえば、ロードバランサーの後で内部ネットワークを信頼するため、HTTPSによってロードバランサーとの通信を保護できますが、同時にメッセージに署名(メッセージセキュリティ)を適用して、メッセージが変更されていないことを証明できます。
これら2つの違いのもう1つは、トランスポートセキュリティが単一のトランスポートプロトコルに関連するのに対し、メッセージセキュリティはトランスポートプロトコルに依存しないことです。
メッセージセキュリティは相互運用可能なプロトコルに基づいています(ただし、WCFのすべての構成が相互運用可能であるとは限らないことに注意してください)。 WCFは、少なくとも部分的にこれらのプロトコルをサポートします。
WCFはWS-I Basic Security Profile 1.0もサポートしています。これは、規定された構成を持つ以前のプロトコルのサブセットにすぎません。
相互運用性のない機能については、WCFはWindowsセキュリティやTLSNegoやSPNegoなどの機能を提供します(どちらも一般的に相互運用可能である必要がありますが、多くのSOAPスタック)では利用できません)。
この link は、メッセージセキュリティを使用する理由または使用しない理由の概要を示しています。
基本的に、使用できない場合を除き、トランスポートセキュリティが推奨されます。
リンクの抜粋:
トランスポートレベルのセキュリティの長所と短所
トランスポートセキュリティには次の利点があります。
通信する当事者がXMLレベルのセキュリティの概念を理解している必要はありません。これにより、たとえばHTTPSを使用して通信を保護する場合の相互運用性を向上させることができます。
一般的にパフォーマンスが向上しました。
ハードウェアアクセラレータを使用できます。
ストリーミングが可能です。
トランスポートセキュリティには、次の欠点があります。
ホップツーホップのみ。
限定された拡張不可能な資格のセット。
トランスポート依存。
メッセージレベルのセキュリティの短所
メッセージセキュリティには次の欠点があります。
パフォーマンス
メッセージストリーミングは使用できません。
XMLレベルのセキュリティメカニズムの実装とWS-Security仕様のサポートが必要です。これは相互運用性に影響を与える可能性があります。
トランスポートレベルの暗号化ができず、メッセージレベルの暗号化に「フォールバック」する場合もあります。これは、トランスポートレベルのセキュリティよりも少し安全性が低いです。
両方を行う方が安全です。ただし、トランスポートレベルのセキュリティが優れている場合は、少しやりすぎです。
ほとんどの場合、どちらか一方で十分です。メッセージの内容だけでなく、通信全体を暗号化するために望ましいトランスポートレベルのセキュリティを使用できる場合。