Claves y operaciones DES triple (DESede o 3DES)

Claves

La implementación JCE de hardware (IBMJCECCA) amplía la clave DES triple que está disponible en la implementación JCE de software. En la implementación JCE de software, el material de clave DES triple se almacena en el objeto de clave. La implementación IBMJCECCA lo amplía añadiendo las siguientes representaciones alternativas:

  • Una clave DES triple que se ha almacenado anteriormente en el área de almacenamiento de claves CCA. El objeto de clave contiene la etiqueta de área de almacenamiento de claves CCA para la clave.

    El ejemplo siguiente ilustra la creación de un objeto de clave DES triple para una clave que ya está almacenada en el área de almacenamiento de claves CCA con la etiqueta "MY.ENCRYPT.ED.TDESKEY", a continuación (a efectos de ilustración) suprimiendo la entrada de área de almacenamiento de claves CCA.
    // create a key object for an existing entry
    // (No checking is done to verify that the entry exists, or
    // that the key it contains is actually a DESede key.)
    //
    SecretKeyFactory desKeyFactory =
            SecretKeyFactory.getInstance("DESede", "IBMJCECCA");
    KeyLabelKeySpec spec =
            new KeyLabelKeySpec("MY.ENCRYPT.ED.TDESKEY");
    SecretKey key = desKeyFactory.generateSecret(spec);
    
    // delete the entry from the CCA key storage area.
    // (An exception is thrown if the CCA key storage area entry does not exist.)
    //
    key.deleteCKDSEntry();
    
    //
    // Note that, in this example, the Java key object still
    // exists, but the key entry it represents has been deleted.
    // Any attempt to use the object "key" will cause an exception
    // containing a hardware return code and reason code.
    //
    En máquinas z800 y z900 , un objeto de clave que contiene la etiqueta para una clave DES cifrada se puede utilizar para el cifrado y descifrado en modalidad CBC con el proveedor IBMJCECCA.

    En z890, z990y procesadores zSeries más recientes, se puede utilizar un objeto de clave que contenga la etiqueta para una clave DES clara para la modalidad CBC, la modalidad CFB o el cifrado y descifrado en modalidad ECB con el proveedor IBMJCECCA. Este entorno también da soporte a la utilización de un objeto de clave que contiene la etiqueta para una clave DES cifrada para el cifrado y descifrado en modalidad CBC con el proveedor IBMJCECCA.

    Un objeto de clave que contiene la etiqueta para una clave DES triple cifrada se puede pasar a un objeto de cifrado RSA IBMJCECCA para que se envuelva para exportarlo a otro host.

    Una clave DES triple envuelta por un cifrado RSA se puede pasar al cifrado RSA IBMJCECCA para que se desenvuelva para su importación desde otro host. De forma predeterminada, el objeto de clave resultante (sin envolver) contiene una clave DES triple. Si se crea un CCAAlgorithmParameterSpec sin ningún tipo especificado, o con el tipo CCAAlgorithmParameterSpec.SECURE_INTERNAL_TOKEN, y el cifrado RSA se inicializa con este CCAAlgorithmParameterSpec, el objeto de clave resultante (sin envolver) contiene una señal de hardware DES triple. Si se crea un CCAAlgorithmParameterSpec con el tipo CAAlgorithmParameterSpec.CKDS, y el cifrado RSA se inicializa con este CCAAlgorithmParameterSpec, el objeto de clave resultante (sin envolver) contiene la etiqueta para una entrada en el área de almacenamiento de claves CCA del sistema que contiene una señal de hardware DES triple.

    Para obtener más información sobre cómo encapsular y desencapsular claves DES triples, consulte Claves RSA.

  • Clave DES triple generada por una llamada IBMJCECCA al hardware subyacente. El objeto de clave contiene una señal de hardware. Esta señal contiene la clave cifrada con la clave primaria de host. El material de clave para este tipo de clave nunca reside en la memoria del sistema de forma clara.

    El ejemplo siguiente ilustra la generación de un objeto de clave DES triple que contiene una señal de clave de hardware
    // create a new key token and a key object to represent it
    //
    CCAAlgorithmParameterSpec ccaAlgParmSpec =
            new CCAAlgorithmParameterSpec();
    KeyGenerator keyGen =
            KeyGenerator.getInstance( "DESede", "IBMJCECCA" );
    keyGen.init( ccaAlgParmSpec, null );
    Key tdesKey = keyGen.generateKey();
    Un objeto de clave que contiene una señal de hardware DES triple se puede utilizar para el cifrado y descifrado en modalidad CBC con el proveedor IBMJCECCA.

    Un objeto de clave que contiene una señal de hardware DES triple se puede pasar a un objeto IBMJCECCA RSA Cipher que se debe envolver para exportarlo a otro host.

    Una clave DES triple envuelta por un cifrado RSA se puede pasar al cifrado RSA IBMJCECCA para que se desenvuelva para su importación desde otro host. De forma predeterminada, el objeto de clave resultante (sin envolver) contiene una clave DES triple. Si el objeto de cifrado RSA se inicializa con un CCAAlgorithmParameterSpec, el objeto de clave resultante (sin envolver) contiene una señal de hardware DES triple.

    Para obtener más información sobre cómo encapsular y desencapsular claves DES triples, consulte Claves RSA.

  • Clave DES triple generada por una llamada IBMJCECCA al hardware subyacente y, a continuación, almacenada en el área de almacenamiento de claves CCA. El objeto de clave contiene la etiqueta para la nueva entrada de clave CCA. La entrada de área de almacenamiento de claves CCA contiene una señal que contiene la clave cifrada con la clave primaria de host. El material de clave para este tipo de clave nunca reside en la memoria del sistema de forma clara.

    El ejemplo siguiente ilustra la generación de una señal de clave DES triple protegida, su almacenamiento en una nueva entrada de área de almacenamiento de claves CCA con una etiqueta generada automáticamente y la creación de un objeto de clave que contiene la etiqueta para la entrada de área de almacenamiento de claves CCA.
    // create a new CCA key storage area entry and a key object to represent it
    //
    CCAAlgorithmParameterSpec ccaAlgParmSpec =
            new CCAAlgorithmParameterSpec(CCAAlgorithmParameterSpec.CKDS);
    KeyGenerator keyGen = KeyGenerator.getInstance("DESede","IBMJCECCA");
    keyGen.init(ccaAlgParmSpec,null);
    Key thisKey = keyGen.generateKey();
    El ejemplo siguiente ilustra la generación de una señal de clave DES triple protegida, almacenándola en una nueva entrada de área de almacenamiento de claves CCA con la etiqueta "ATRIPLE.DESTOKEN.INCKDS" y la creación de un objeto de clave que contiene la etiqueta para la entrada de área de almacenamiento de claves CCA.
    // create a new CCA key storage area entry and a key object to represent it
    //
    CCAAlgorithmParameterSpec ccaAlgParmSpec =
            new CCAAlgorithmParameterSpec(CCAAlgorithmParameterSpec.CKDS,
                                          "ATRIPLE.DESTOKEN.INCKDS");
    KeyGenerator keyGen = KeyGenerator.getInstance("DESede", "IBMJCECCA");
    keyGen.init(ccaAlgParmSpec, null);
    Key thisKey = keyGen.generateKey();
    Un objeto de clave que representa una señal de hardware DES triple se puede utilizar para el cifrado y descifrado en modalidad CBC con el proveedor IBMJCECCA.

    Un objeto de clave que representa una señal de hardware DES triple se puede pasar a un objeto IBMJCECCA RSA Cipher que se debe envolver para exportarlo a otro host.

    Una clave DES triple envuelta por un cifrado RSA se puede pasar al cifrado RSA IBMJCECCA para que se desenvuelva para su importación desde otro host. De forma predeterminada, el objeto de clave resultante (sin envolver) contiene una clave DES triple. Si se crea un CCAAlgorithmParameterSpec sin ningún tipo especificado, o con el tipo CCAAlgorithmParameterSpec.SECURE_INTERNAL_TOKEN, y el cifrado RSA se inicializa con este CCAAlgorithmParameterSpec, el objeto de clave resultante (sin envolver) contiene una señal de hardware DES triple. Si se crea un CCAAlgorithmParameterSpec con el tipo CAAlgorithmParameterSpec.CKDS, y el cifrado RSA se inicializa con este CCAAlgorithmParameterSpec, el objeto de clave resultante (sin envolver) contiene la etiqueta para una entrada de área de almacenamiento de claves CCA que contiene una señal de hardware DES triple.

    Para obtener más información sobre cómo encapsular y desencapsular claves DES triples, consulte Claves RSA.

Operaciones

Aunque todos los cifrados DES triple están disponibles en el proveedor IBMJCECCA, no todos están disponibles en los dispositivos de hardware. Los dispositivos criptográficos de hardware soportan la versión de Cipher Block Chaining (CBC), Cipher feedback (CFB), Output feedback (OFB) y Electronic Code Book (ECB) de DES triple. Es decir, todos los cifrados DES triple están soportados por el proveedor IBMJCECCA, pero solo CBC, CFB, OFB y ECB pueden utilizar la criptografía de hardware.

Triple DES es ligeramente más intensivo en cálculo que DES, pero como DES es menos intensivo en cálculo que algoritmos asimétricos como RSA. Por lo tanto, para tamaños de datos más pequeños, la criptografía DES triple de software puede ser más rápida que la criptografía DES triple de hardware. Por esta razón, triple DES con CBC, CFB, OFB o ECB también se implementa en software dentro del proveedor IBMJCECCA. Se utiliza el mismo nivel de clip (especificado en una propiedad del sistema denominada ibm.DES.usehdwr.size) para determinar el tamaño de datos en el que se utiliza la criptografía de hardware para DES triple. Para obtener más información sobre la propiedad del sistema ibm.DES.usehdwr.size , consulte Operaciones.