MessageProtectionOrder Enum
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Menentukan urutan operasi yang melindungi pesan.
public enum class MessageProtectionOrder
public enum MessageProtectionOrder
type MessageProtectionOrder =
Public Enum MessageProtectionOrder
- Warisan
Bidang
| Nama | Nilai | Deskripsi |
|---|---|---|
| SignBeforeEncrypt | 0 | Menentukan bahwa tanda tangan digital dihasilkan untuk pesan SOAP sebelum bagian mana pun dari pesan SOAP dienkripsi, tetapi tanda tangan digital tidak dienkripsi. |
| SignBeforeEncryptAndEncryptSignature | 1 | Menentukan bahwa tanda tangan digital dihasilkan untuk pesan SOAP sebelum bagian mana pun dari pesan SOAP dienkripsi, dan tanda tangan digital dienkripsi. |
| EncryptBeforeSign | 2 | Menentukan bahwa pesan SOAP dienkripsi sebelum tanda tangan digital dihasilkan untuk pesan SOAP. |
Contoh
Contoh berikut membuat SymmetricSecurityBindingElement elemen dan mengatur propertinya MessageProtectionOrder ke SignBeforeEncrypt.
public static Binding CreateCustomBinding()
{
// Create an empty BindingElementCollection to populate,
// then create a custom binding from it.
BindingElementCollection outputBec = new BindingElementCollection();
// Create a SymmetricSecurityBindingElement.
SymmetricSecurityBindingElement ssbe =
new SymmetricSecurityBindingElement();
// Set the algorithm suite to one that uses 128-bit keys.
ssbe.DefaultAlgorithmSuite = SecurityAlgorithmSuite.Basic128;
// Set MessageProtectionOrder to SignBeforeEncrypt.
ssbe.MessageProtectionOrder = MessageProtectionOrder.SignBeforeEncrypt;
// Use a Kerberos token as the protection token.
ssbe.ProtectionTokenParameters = new KerberosSecurityTokenParameters();
// Add the SymmetricSecurityBindingElement to the BindingElementCollection.
outputBec.Add ( ssbe );
outputBec.Add(new TextMessageEncodingBindingElement());
outputBec.Add(new HttpTransportBindingElement());
// Create a CustomBinding and return it; otherwise, return null.
return new CustomBinding(outputBec);
}
Public Shared Function CreateCustomBinding() As Binding
' Create an empty BindingElementCollection to populate,
' then create a custom binding from it.
Dim outputBec As New BindingElementCollection()
' Create a SymmetricSecurityBindingElement.
Dim ssbe As New SymmetricSecurityBindingElement()
' Set the algorithm suite to one that uses 128-bit keys.
ssbe.DefaultAlgorithmSuite = SecurityAlgorithmSuite.Basic128
' Set MessageProtectionOrder to SignBeforeEncrypt.
ssbe.MessageProtectionOrder = MessageProtectionOrder.SignBeforeEncrypt
' Use a Kerberos token as the protection token.
ssbe.ProtectionTokenParameters = New KerberosSecurityTokenParameters()
' Add the SymmetricSecurityBindingElement to the BindingElementCollection.
outputBec.Add(ssbe)
outputBec.Add(New TextMessageEncodingBindingElement())
outputBec.Add(New HttpTransportBindingElement())
' Create a CustomBinding and return it; otherwise, return null.
Return New CustomBinding(outputBec)
End Function
Keterangan
Enumerasi ini digunakan dengan AsymmetricSecurityBindingElement.MessageProtectionOrder properti AsymmetricSecurityBindingElement dan SymmetricSecurityBindingElement.MessageProtectionOrder properti kelas SymmetricSecurityBindingElement .
Jika pesan rentan terhadap serangan hash (misalnya, jika pesan pendek atau entropi rendah), Anda harus menggunakan opsi SignBeforeEncryptAndEncryptSignature atau EncryptBeforeSign. (Entropi adalah data acak yang disediakan oleh server, klien, atau keduanya, dan digunakan untuk membuat kunci bersama untuk mengenkripsi dan mendekripsi data.)
Apa yang Dipesan?
WCF menawarkan tiga tingkat perlindungan berbeda yang menentukan bagaimana pesan diamankan menggunakan keamanan pesan SOAP. Defaultnya adalah SignBeforeEncryptAndEncryptSignature. Pengaturan ini pertama-tama menandatangani pesan, mengenkripsi isi pesan, lalu mengenkripsi tanda tangan XML. Ini mengurangi kemungkinan serangan tebakan kriptografi yang berhasil terhadap tanda tangan.
Namun, menggunakan default memiliki implikasi performa. Akibatnya, ada tradeoff performa untuk peningkatan keamanan. Mengenkripsi tanda tangan dapat mengurangi performa antara 10 persen dan 40 persen. Jika konten data pesan bernilai rendah, dan throughput performa lebih signifikan, gunakan SignBeforeEncrypt. Dengan pengaturan ini, hash tanda tangan dikirim dalam teks yang jelas, dan dengan demikian pesan lebih rentan terhadap serangan tebakan dan verifikasi pada entropi rendah.
Pengikatan Kustom Saja
Untuk mengubah MessageProtectionOrder properti memerlukan pembuatan pengikatan keamanan kustom. Untuk informasi selengkapnya tentang membuat pengikatan kustom, lihat Membuat pengikatan User-Defined. Untuk informasi selengkapnya tentang membuat pengikatan kustom untuk mode autentikasi tertentu, lihat Cara: Membuat SecurityBindingElement untuk Mode Autentikasi Tertentu.
Berlaku untuk
Lihat juga
- MessageProtectionOrder
- AsymmetricSecurityBindingElement
- SymmetricSecurityBindingElement
- Cara: Membuat Pengikatan Kustom Menggunakan SecurityBindingElement
- Membuat Pengikatan dan Elemen Pengikatan yang Ditentukan Pengguna
- Cara: Membuat SecurityBindingElement untuk Mode Autentikasi Tertentu
- Enkripsi Tanda Tangan Digital