電子署名の暗号化
既定では、メッセージは署名および暗号化され、署名はデジタル暗号化されます。これは、AsymmetricSecurityBindingElement または SymmetricSecurityBindingElement のインスタンスを使用してカスタム バインディングを作成し、いずれかのクラスの MessageProtectionOrder プロパティを MessageProtectionOrder 列挙値に設定することによって制御できます。既定値は SignBeforeEncryptAndEncryptSignature です。このプロセスは、単に署名して暗号化する場合よりも時間が 10 ~ 40 % 長くかかります。ただし、署名の暗号化を無効にすると、攻撃者がメッセージの内容を予想できるようになる恐れがあります。その理由は、メッセージ内のすべての署名部分のプレーン テキストのハッシュ コードが署名要素に含まれるからです。たとえば、メッセージ本体は既定で暗号化されますが、暗号化されていない署名には、メッセージ本体のハッシュ コードが含まれます。メッセージが短い場合は、攻撃者に内容を推測されてしまうおそれがあります。署名を暗号化すると、このような危険性が低減または解消されます。
そのため、署名の暗号化を無効にするのは、セキュリティに影響しない大型のバイナリ ファイルを送信する場合などの、内容の重要性が低く、パフォーマンスの向上が重要な場合に限定してください。
デジタル署名を無効にするには
CustomBinding を作成します。詳細な情報については、次のページを参照してください。 「方法 : SecurityBindingElement を使用してカスタム バインディングを作成する」を参照してください。
AsymmetricSecurityBindingElement または SymmetricSecurityBindingElement をバインディング コレクションに追加します。
System.ServiceModel.Channels.AsymmetricSecurityBindingElement.MessageProtectionOrder プロパティを SignBeforeEncrypt に設定するか、または System.ServiceModel.Channels.SymmetricSecurityBindingElement.MessageProtectionOrder プロパティを SignBeforeEncrypt に設定します。
カスタム バインディングの作成詳細については、 、「ユーザー定義バインディングの作成」を参照してください。特定の認証モード用のカスタム バインディングの作成詳細については、 、「方法 : 指定した認証モード用の SecurityBindingElement を作成する」を参照してください。
関連項目
タスク
方法 : 指定した認証モード用の SecurityBindingElement を作成する
リファレンス
MessageProtectionOrder
AsymmetricSecurityBindingElement
SymmetricSecurityBindingElement
概念
方法 : SecurityBindingElement を使用してカスタム バインディングを作成する
ユーザー定義バインディングの作成