Exportar (0) Imprimir
Expandir todo
Este artículo se tradujo de forma manual. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

Especificar un algoritmo criptográfico personalizado

WCF permite especificar un algoritmo criptográfico personalizado para usarlo cuando se cifren datos o se calculen firmas digitales. Para ello, se siguen estos pasos:

  1. Derivar una clase de la clase SecurityAlgorithmSuite.

  2. Registrar el algoritmo

  3. Configurar el enlace con la clase derivada de la clase SecurityAlgorithmSuite.

La clase SecurityAlgorithmSuite es una clase base abstracta derivada que permite especificar el algoritmo que se va a usar cuando se realicen distintas operaciones relacionadas con la seguridad. Por ejemplo, calcular un hash para una firma digital o cifrar un mensaje. En el código siguientes se muestra cómo derivar una clase de la clase SecurityAlgorithm:

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;
        }
    }


El registro se puede realizar en un archivo de configuración o en código imperativo. El registro de un algoritmo personalizado se lleva a cabo mediante la creación de una asignación entre una clase que implemente un proveedor de servicios criptográficos y un alias. A continuación, el alias se asigna a un URI que se usa cuando se especifica el algoritmo en el enlace del servicio WCF. En el siguiente fragmento de código de configuración se muestra cómo registrar un algoritmo personalizado en config:

<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://constoso.com/CustomAlgorithms/CustomHashAlgorithm"
              class="SHA256CSP" />
           </cryptoNameMapping>
        </cryptographySettings>
    </mscorlib>
</configuration>

La sección debajo del elemento <cryptoClasses> crea la asignación entre SHA256CryptoServiceProvider y el alias “SHA256CSP”.El elemento <[nameEntry]> crea la asignación entre el alias “SHA256CSP” y la URL especificada (http://constoso.com/CustomAlgorithms/CustomHashAlgorithm).

Use el método AddAlgorithm para registrar el algoritmo personalizado en código.Este método crea ambas asignaciones.En el ejemplo siguiente se muestra cómo llamar a este método:

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

Configure el enlace especificando la clase derivada de la clase SecurityAlgorithmSuite personalizada en la configuración del enlace como se muestra en el siguiente fragmento de código:

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


Para ver un ejemplo de código completo, vea el ejemplo Agilidad criptográfica en la seguridad de WCF.

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft