anterior | índice | siguiente |
En el apartado de las PBE routines abordamos el tema bajo las recomendaciones de la versión 2.0 del estándar PKCS#5. Ese es el modo recomendado para las nuevas aplicaciones. También comentamos que el PKCS#12 describe una función de derivación de claves, que se encuentra implementada en OpenSSL. Lo que vamos a ver ahora es cómo seguir las recomendaciones de estos dos últimos estándares. Como veremos la cuestión no difiere mucho de lo que ya dijimos.
La función de inicialización que utilizaremos será la misma, lo único que va a cambiar es la obtención del identificador de algoritmo. Ésta es la función que vamos a utilizar:
|
Describamos los parámetros.
Vamos a ver un ejemplo:
|
Ejemplo 1. Inicializa un contexto para PKCS#5 v.1.5.
En esta ocasión utilizamos un NID que ya identifica qué algoritmo vamos a utilizar. Los NIDs de los algoritmos compatibles con el PKCS#5 v. 1.5 se muestran en la tabla siguiente:
NID | Descripción |
NID_pbeWithMD5AndDES_CBC | DES en modo CBC |
NID_pbeWithMD2AndDES_CBC | DES en modo CBC |
NID_pbeWithSHA1AndDES_CBC | DES en modo CBC |
NID_pbeWithMD5AndRC2_CBC | RC2 en modo CBC |
NID_pbeWithMD2AndRC2_CBC | RC2 en modo CBC |
NID_pbeWithSHA1AndRC2_CBC | RC2 en modo CBC |
Observando la tabla uno se da cuenta enseguida de la debilidad de la recomendación. Es por este motivo que únicamente debe ser usada por motivos de compatibilidad con otras aplicaciones.
Los NIDs correspondientes a la función de derivación de claves del pkcs#12 se muestran en la tabla 2.
NID | Descripción |
NID_pbe_WithSHA1And128BitRC4 | RC4 con 128 bits de clave |
NID_pbe_WithSHA1And40BitRC4 | RC4 con 40 bits de clave |
NID_pbe_WithSHA1And3_Key_TripleDES_CBC | Triple DES con tres claves en modo CBC |
NID_pbe_WithSHA1And2_Key_TripleDES_CBC | Triple DES con dos claves en modo CBC |
NID_pbe_WithSHA1And128BitRC2_CBC | RC2 en modo CBC con |
NID_pbe_WithSHA1And40BitRC2_CBC | RC2 en modo CBC con |
OpenSSL utiliza un lista que relaciona los NIDs con su respectiva función de derivación de claves (entre otras cosas). De modo que la utilización de una u otra recomendación es transparente al programador. Veamos un ejemplo:
|
Ejemplo 2. Inicializa un contexto para PKCS#12.