Menentukan Algoritma Kripto Kustom

WCF memungkinkan Anda menentukan algoritma kripto kustom untuk digunakan saat mengenkripsi data atau menghitung tanda tangan digital. Hal ini dilakukan dengan langkah-langkah berikut:

  1. Mendapatkan kelas dari SecurityAlgorithmSuite

  2. Mendaftarkan algoritma

  3. Mengonfigurasikan pengikatan dengan kelas turunan SecurityAlgorithmSuite.

Memperoleh kelas dari SecurityAlgorithmSuite

SecurityAlgorithmSuite adalah kelas dasar abstrak yang memungkinkan Anda menentukan algoritma yang akan digunakan saat melakukan berbagai operasi terkait keamanan. Misalnya, menghitung hash untuk tanda tangan digital atau mengenkripsi pesan. Kode berikut menunjukkan cara memperoleh kelas dari SecurityAlgorithmSuite:

public class MyCustomAlgorithmSuite : SecurityAlgorithmSuite
    {
        public override string DefaultAsymmetricKeyWrapAlgorithm
        {
            get { return SecurityAlgorithms.RsaOaepKeyWrap; }
        }

        public override string DefaultAsymmetricSignatureAlgorithm
        {
            get { return SecurityAlgorithms.RsaSha1Signature; }
        }

        public override string DefaultCanonicalizationAlgorithm
        {
            get { return SecurityAlgorithms.ExclusiveC14n; ; }
        }

        public override string DefaultDigestAlgorithm
        {
            get { return SecurityAlgorithms.MyCustomHashAlgorithm; }
        }

        public override string DefaultEncryptionAlgorithm
        {
            get { return SecurityAlgorithms.Aes128Encryption; }
        }

        public override int DefaultEncryptionKeyDerivationLength
        {
            get { return 128; }
        }

        public override int DefaultSignatureKeyDerivationLength
        {
            get { return 128; }
        }

        public override int DefaultSymmetricKeyLength
        {
            get { return 128; }
        }

        public override string DefaultSymmetricKeyWrapAlgorithm
        {
            get { return SecurityAlgorithms.Aes128Encryption; }
        }

        public override string DefaultSymmetricSignatureAlgorithm
        {
            get { return SecurityAlgorithms.HmacSha1Signature; }
        }

        public override bool IsAsymmetricKeyLengthSupported(int length)
        {
            return length >= 1024 && length <= 4096;
        }

        public override bool IsSymmetricKeyLengthSupported(int length)
        {
            return length >= 128 && length <= 256;
        }
    }

Mendaftarkan Algoritma Kustom

Pendaftaran dapat dilakukan dalam file konfigurasi atau dalam kode imperatif. Mendaftarkan algoritma kustom dilakukan dengan membuat pemetaan antara kelas yang mengimplementasikan penyedia layanan kripto dan alias. Alias kemudian dipetakan ke URI yang digunakan saat menentukan algoritma dalam pengikatan layanan WCF. Cuplikan konfigurasi berikut menggambarkan cara mendaftarkan algoritma kustom dalam konfigurasi:

<configuration>
   <mscorlib>
      <cryptographySettings>
         <cryptoNameMapping>
           <cryptoClasses>
              <cryptoClass SHA256CSP="System.Security.Cryptography.SHA256CryptoServiceProvider, System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
           </cryptoClasses>
           <nameEntry name="http://contoso.com/CustomAlgorithms/CustomHashAlgorithm"
              class="SHA256CSP" />
           </cryptoNameMapping>
        </cryptographySettings>
    </mscorlib>
</configuration>

Bagian di bawah elemen <cryptoClasses> membuat pemetaan antara SHA256CryptoServiceProvider dan alias "SHA256CSP". Elemen <nameEntry> membuat pemetaan antara alias "SHA256CSP" dan URL yang ditentukan http://contoso.com/CustomAlgorithms/CustomHashAlgorithm.

Untuk mendaftarkan algoritma kustom dalam kode, gunakan AddAlgorithm(Type, String[]) metode. Metode ini membuat kedua pemetaan. Contoh berikut menunjukkan cara memanggil metode ini:

// Register the custom URI string defined for the hashAlgorithm in MyCustomAlgorithmSuite class to create the
// SHA256CryptoServiceProvider hash algorithm object.
CryptoConfig.AddAlgorithm(typeof(SHA256CryptoServiceProvider), "http://contoso.com/CustomAlgorithms/CustomHashAlgorithm");

Mengonfigurasi Pengikatan

Anda mengonfigurasi pengikatan dengan menentukan SecurityAlgorithmSuite kelas turunan kustom dalam pengaturan pengikatan seperti yang ditunjukkan dalam cuplikan kode berikut:

WSHttpBinding binding = new WSHttpBinding();
            binding.Security.Message.AlgorithmSuite = new MyCustomAlgorithmSuite();

Untuk contoh kode lengkap, lihat Agility Kriptografi dalam sampel Keamanan WCF.

Lihat juga