Шифрование цифровых сигнатур
По умолчанию сообщение подписывается и шифруется, и цифровая подпись шифруется. Этим процессом можно управлять, создавая пользовательскую привязку с экземпляром элемента AsymmetricSecurityBindingElement или SymmetricSecurityBindingElement и затем присваивая свойству MessageProtectionOrder
каждого класса значение перечисления MessageProtectionOrder. Значение по умолчанию — SignBeforeEncryptAndEncryptSignature. Этот процесс занимает на 10 - 40 процентов больше времени, чем просто подписывание и шифрование. Однако в случае отключения шифрования подписи злоумышленник может распознать содержимое сообщения. Это обусловлено тем, что элемент подписи содержит хэш-код обычного текста каждой подписанной части сообщения. Например, хотя тело сообщения шифруется по умолчанию, нешифрованная подпись содержит хэш-код тела сообщения. Если сообщение короткое, злоумышленник может определить содержимое. Шифрование подписи уменьшает или исключает эту возможность.
Поэтому отключайте шифрование подписи только при малой важности содержимого и существенном повышении производительности в результате такого отключения, например при передаче больших двоичных файлов, не критичных к нарушениям безопасности.
Отключение цифровой подписи
Создайте CustomBinding. Дополнительные сведения см. в разделе "Практическое руководство. Создание пользовательской привязки с помощью SecurityBindingElement".
Добавьте в коллекцию привязок элемент AsymmetricSecurityBindingElement или SymmetricSecurityBindingElement.
Присвойте свойству AsymmetricSecurityBindingElement.MessageProtectionOrder значение SignBeforeEncrypt или присвойте свойству SymmetricSecurityBindingElement.MessageProtectionOrder значение SignBeforeEncrypt.
Дополнительные сведения о создании пользовательских привязок см. в разделе "Создание пользовательских привязок". Дополнительные сведения о создании пользовательской привязки для определенного режима проверки подлинности см. в разделе "Практическое руководство. Создание securityBindingElement для указанного режима проверки подлинности".
См. также
- MessageProtectionOrder
- AsymmetricSecurityBindingElement
- SymmetricSecurityBindingElement
- Практическое руководство. Создание пользовательской привязки с использованием элемента SecurityBindingElement
- Создание пользовательских привязок
- Практическое руководство. Создание SecurityBindingElement для заданного режима проверки подлинности