anterior índice siguiente

Apéndice B. PBE según PKCS#5 v 1.5 y PKCS#12

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:

  • X509_ALGOR *PKCS5_pbe_set(int alg, int iter, unsigned char *salt, int saltlen);

Describamos los parámetros.

Vamos a ver un ejemplo:


<!--#include file="ejemplos/apendice_b/EVP_apendice_b_e1.c" -->

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
Tabla 1. NIDs compatibles con el PKCS#5 v.1.5.

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
Tabla 2. NIDs correspondientes a la recomendación PKCS#12

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:


<!--#include file="ejemplos/apendice_b/EVP_apendice_b_e2.c" -->

Ejemplo 2. Inicializa un contexto para PKCS#12.


anterior índice siguiente