Nasıl yapılır: Dijital İmzaların Şifrelenmesini Devre Dışı Bırakma
Varsayılan olarak, bir ileti imzalanır ve imza dijital olarak şifrelenir. Bu, veya örneğiyle AsymmetricSecurityBindingElement özel bir bağlama oluşturarak ve her iki sınıfın özelliğini bir MessageProtectionOrder numaralandırma değerine ayarlayarak MessageProtectionOrder
denetlenmektedir.SymmetricSecurityBindingElement Varsayılan değer: SignBeforeEncryptAndEncryptSignature. Bu işlem, genel ileti boyutuna göre (ileti ne kadar küçük olursa performans etkisi de o kadar fazla olur) imzalama ve şifreleme işlemlerinden yüzde 30'a kadar daha fazla zaman tüketir. Ancak imzanın şifrelenmesini devre dışı bırakmak, bir saldırganın iletinin içeriğini tahmin etmesine izin verebilir. İmza öğesi iletideki her imzalı bölümün düz metninin karma kodunu içerdiğinden bu mümkündür. Örneğin, ileti gövdesi varsayılan olarak şifrelenmiş olsa da, şifrelenmemiş imza şifrelemeden önce ileti gövdesinin karma kodunu içerir. İmzalanmış ve şifrelenmiş bölüm için olası değerler kümesi küçükse, bir saldırgan karma değerine bakarak içeriği çözebilir. İmzanın şifrelenmesi bu saldırı vektörlerini azaltır.
Bu nedenle, imzanın şifrelenmesini yalnızca içeriğin değeri düşük olduğunda veya olası içerik değerleri kümesi büyük ve belirsiz olduğunda devre dışı bırakın ve performans kazancı yukarıda açıklanan saldırıyı azaltmaktan daha önemlidir.
Not
İletide şifrelenmiş hiçbir şey yoksa, veya SymmetricSecurityBindingElement.MessageProtectionOrder özelliği olarak ayarlandığında SignBeforeEncryptAndEncryptSignaturebile AsymmetricSecurityBindingElement.MessageProtectionOrder imza öğesi şifrelenmez. Bu davranış sistem tarafından sağlanan bağlamalarda bile oluşur; sistem tarafından sağlanan tüm bağlamalarda ileti koruma sırası olarak ayarlanmıştır SignBeforeEncryptAndEncryptSignature
. Ancak, Web Hizmetleri Açıklama Dili (WSDL) WCF'nin oluşturduğu onaylar yine de yer alır <sp:EncryptSignature>
.
Dijital imzalamayı devre dışı bırakmak için
oluşturun CustomBinding. Daha fazla bilgi için bkz . Nasıl yapılır: SecurityBindingElement Kullanarak Özel Bağlama Oluşturma.
Bağlama koleksiyonuna bir AsymmetricSecurityBindingElement veya a SymmetricSecurityBindingElement ekleyin.
AsymmetricSecurityBindingElement.MessageProtectionOrder özelliğini olarak SignBeforeEncryptayarlayın veya özelliğini olarak SignBeforeEncryptayarlayınSymmetricSecurityBindingElement.MessageProtectionOrder.