メッセージ レベルのセキュリティとトランスポート レベルのセキュリティを比較しています。これらには類似点がありますが、目的が異なります。
TLS を使用すると、通信が中間者によって見られたり変更されたりするのを防ぐことができます。サーバー側の X.509 証明書は、送信されたメッセージがこの秘密鍵を使用するサーバーによってのみ読み取られること、および送信されるメッセージがこの秘密鍵を使用してサーバーから送信されることを保証します。これは大まかにサーバーによる署名と X.509 証明書を使用したサーバーの暗号化と見なされますが、実際には TLS ハンドシェイク メッセージにのみ適用され、後で交換されるアプリケーション データには適用されません。(当事者が証明書を提示したかどうかに関係なく、とにかくチャネルの対称暗号化を取得するという事実は省略します。少なくともサーバーに証明書を使用させて、クライアントが通信相手を代わりに認識できるようにすることが重要です。潜在的な中間者との通信)。これにクライアント証明書を追加すると、クライアントはハンドシェイク中に交換した TLS メッセージにも署名します。
クライアント証明書とサーバー証明書の両方を使用する場合、署名および暗号化されたメッセージは TLS チャネルの確立に使用される TLS ハンドシェイク メッセージであるという点で、(慎重に) メッセージ レベルのセキュリティと類似性を引き出すことができます。
ただし、メッセージ レベルのセキュリティ (XML-DSig や XML-Enc など) には大きな違いがあります。
まず、メッセージ署名 (XML-DSig) の機能の 1 つは監査です。これにより、発言内容の記録を保持できます。特に期間限定ではありません。TLS パケットを記録したとしても、これを行うのははるかに困難です。DHE (Diffie-Hellman ephemeral モード) を使用する SSL/TLS の最新の暗号スイートでは、サーバーの秘密鍵を持っていても、すべてのパケットを記録していれば (DHE についての知識がなければ、必ずしもチャネルを解読することはできません)機構)。
次に、実装に関しては、XML-DSig はアプリケーション レベルで行われる傾向がありますが、TLS はサーバー コネクタによって行われる傾向があります。デプロイの条件によっては違いがあいまいになる可能性がありますが、TLS は、背後にあるアプリケーションではなく、マシン/コンテナーとの通信に関するものです。通常、TLS 証明書は Java コンテナーまたは WCF レベルで設定されますが、XML-DSig に使用される証明書は背後で実行されている webapp/アプリケーションによって使用されます。そこでは担当者や手順が異なる場合があります。
(XML-Enc なしで XML-DSig を使用している場合は、データを暗号化していないということも正しいです。)