Sdílet prostřednictvím


Postupy: Zákaz šifrování digitálních podpisů

Ve výchozím nastavení je zpráva podepsaná a podpis je digitálně zašifrovaný. To je řízeno vytvořením vlastní vazby s instancí AsymmetricSecurityBindingElement nebo a nastavením MessageProtectionOrder vlastnosti buď třídy na hodnotu výčtu MessageProtectionOrderSymmetricSecurityBindingElement. Výchozí hodnota je SignBeforeEncryptAndEncryptSignature. Tento proces spotřebovává až 30 % více času než pouhé podepisování a šifrování na základě celkové velikosti zprávy (čím menší je zpráva, tím větší dopad na výkon). Zakázání šifrování podpisu ale může útočníkovi umožnit uhodnout obsah zprávy. Je to možné, protože element podpisu obsahuje kód hash prostého textu každé podepsané části zprávy. I když je text zprávy ve výchozím nastavení zašifrovaný, nešifrovaný podpis obsahuje před šifrováním kód hash textu zprávy. Pokud je sada možných hodnot pro podepsanou a zašifrovanou část malá, útočník může obsah odvodit tak, že se podívá na hodnotu hash. Šifrování podpisu zmírní tento vektor útoku.

Proto zakažte šifrování podpisu pouze v případě, že je hodnota obsahu nízká nebo sada možných hodnot obsahu je velká a nedeterministická a zvýšení výkonu je důležitější než zmírnění výše popsaného útoku.

Poznámka:

Pokud není ve zprávě, která je zašifrována, prvek podpisu není zašifrován, i když AsymmetricSecurityBindingElement.MessageProtectionOrderSymmetricSecurityBindingElement.MessageProtectionOrder je vlastnost nastavena na SignBeforeEncryptAndEncryptSignature. K tomuto chování dochází i u systémových vazeb; všechny systémové vazby mají nastavenou objednávku SignBeforeEncryptAndEncryptSignatureochrany zpráv . Technologie WCF (Web Services Description Language) však bude nadále obsahovat <sp:EncryptSignature> kontrolní výraz.

Zakázání digitálního podepisování

  1. Vytvoření souboru CustomBinding. Další informace naleznete v tématu Postupy: Vytvoření vlastní vazby pomocí SecurityBindingElement.

  2. Přidejte kolekci AsymmetricSecurityBindingElement vazeb nebo do SymmetricSecurityBindingElement této kolekce vazeb.

  3. AsymmetricSecurityBindingElement.MessageProtectionOrder Nastavte vlastnost na SignBeforeEncrypthodnotu , nebo nastavte SymmetricSecurityBindingElement.MessageProtectionOrder vlastnost na SignBeforeEncrypt.

Viz také