既定では、メッセージは署名および暗号化され、署名はデジタル暗号化されます。 これを制御するには、 AsymmetricSecurityBindingElement または SymmetricSecurityBindingElement のインスタンスを使用してカスタム バインドを作成し、いずれかのクラスの MessageProtectionOrder
プロパティを MessageProtectionOrder 列挙値に設定します。 既定値は SignBeforeEncryptAndEncryptSignatureです。 このプロセスは、単なる署名と暗号化よりも 10 ~ 40% 長くかかります。 ただし、署名の暗号化を無効にすると、攻撃者がメッセージの内容を推測できる可能性があります。 これは、署名要素にメッセージ内のすべての署名された部分のプレーン テキストのハッシュ コードが含まれているために可能です。 たとえば、メッセージ本文は既定で暗号化されますが、暗号化されていない署名にはメッセージ本文のハッシュ コードが含まれます。 メッセージが小さい場合、攻撃者はコンテンツを推測できる可能性があります。 署名を暗号化すると、この可能性が減少または排除されます。
そのため、署名の暗号化は、コンテンツの値が低く、パフォーマンスの向上が重要になる場合 (たとえば、セキュリティに影響しない大きなバイナリ ファイルを送信する場合など) にのみ無効にします。
デジタル署名を無効にするには
CustomBindingを作成します。 詳細については、「 方法: SecurityBindingElement を使用してカスタム バインドを作成する」を参照してください。
バインド コレクションに AsymmetricSecurityBindingElement または SymmetricSecurityBindingElement を追加します。
AsymmetricSecurityBindingElement.MessageProtectionOrder プロパティを SignBeforeEncrypt に設定するか、SymmetricSecurityBindingElement.MessageProtectionOrder プロパティを SignBeforeEncrypt に設定します。
カスタム バインドの作成の詳細については、「 User-Defined バインドの作成」を参照してください。 特定の認証モードのカスタム バインドを作成する方法の詳細については、「 方法: 指定された認証モードの SecurityBindingElement を作成する」を参照してください。