次の方法で共有


デジタル署名の暗号化

既定では、メッセージは署名および暗号化され、署名はデジタル暗号化されます。 これを制御するには、 AsymmetricSecurityBindingElement または SymmetricSecurityBindingElement のインスタンスを使用してカスタム バインドを作成し、いずれかのクラスの MessageProtectionOrder プロパティを MessageProtectionOrder 列挙値に設定します。 既定値は SignBeforeEncryptAndEncryptSignatureです。 このプロセスは、単なる署名と暗号化よりも 10 ~ 40% 長くかかります。 ただし、署名の暗号化を無効にすると、攻撃者がメッセージの内容を推測できる可能性があります。 これは、署名要素にメッセージ内のすべての署名された部分のプレーン テキストのハッシュ コードが含まれているために可能です。 たとえば、メッセージ本文は既定で暗号化されますが、暗号化されていない署名にはメッセージ本文のハッシュ コードが含まれます。 メッセージが小さい場合、攻撃者はコンテンツを推測できる可能性があります。 署名を暗号化すると、この可能性が減少または排除されます。

そのため、署名の暗号化は、コンテンツの値が低く、パフォーマンスの向上が重要になる場合 (たとえば、セキュリティに影響しない大きなバイナリ ファイルを送信する場合など) にのみ無効にします。

デジタル署名を無効にするには

  1. CustomBindingを作成します。 詳細については、「 方法: SecurityBindingElement を使用してカスタム バインドを作成する」を参照してください。

  2. バインド コレクションに AsymmetricSecurityBindingElement または SymmetricSecurityBindingElement を追加します。

  3. AsymmetricSecurityBindingElement.MessageProtectionOrder プロパティを SignBeforeEncrypt に設定するか、SymmetricSecurityBindingElement.MessageProtectionOrder プロパティを SignBeforeEncrypt に設定します。

カスタム バインドの作成の詳細については、「 User-Defined バインドの作成」を参照してください。 特定の認証モードのカスタム バインドを作成する方法の詳細については、「 方法: 指定された認証モードの SecurityBindingElement を作成する」を参照してください。

こちらも参照ください