電子署名の暗号化

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

そのため、署名の暗号化を無効にするのは、セキュリティに影響しない大型のバイナリ ファイルを送信する場合などの、内容の重要性が低く、パフォーマンスの向上が重要な場合に限定してください。

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

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

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

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

カスタム バインドを作成する方法の詳細については、「ユーザー定義バインディングの作成」を参照してください。 特定の認証モード用のカスタム バインドを作成する方法の詳細については、「方法: 指定した認証モード用の SecurityBindingElement を作成する」を参照してください。

関連項目