Algunas aplicaciones requieren una clave simétrica para el cifrado y el descifrado de las comunicaciones. En este procedimiento, se crea una clave simétrica y se la almacena.
Si su sitio cuenta con un generador de números aleatorios, puede utilizar el generador para crear un número aleatorio para la clave. Este procedimiento no utiliza el generador de números aleatorios de su sitio.
Utilice uno de los métodos siguientes.
La ventaja de almacenar una clave en un archivo es que se puede extraer la clave de este archivo para usarla en el archivo de claves de una aplicación, como el archivo /etc/inet/secret/ipseckeys o IPsec. La instrucción de uso muestra los argumentos.
% pktool genkey keystore=file ...genkey keystore=file outkey=key-fn [ keytype=aes|arcfour|des|3des|generic ] [ keylen=key-size (AES, ARCFOUR or GENERIC only)] [ print=y|n ]
El nombre de archivo donde se almacena la clave.
Para una clave simétrica de cualquier longitud, el valor es generic. Para un algoritmo determinado, especifique aes, arcfour, des o 3des.
Para los algoritmos aprobados por FIPS 140, seleccione un tipo de clave validado para FIPS. Consulte FIPS 140 Algorithms in the Cryptographic Framework de Using a FIPS 140 Enabled System in Oracle Solaris 11.2 .
La longitud de la clave en bits. El número debe ser divisible por 8. No especifique para des ni 3des.
Para los algoritmos aprobados por FIPS 140, seleccione una longitud de clave validada para FIPS. Consulte FIPS 140 Algorithms in the Cryptographic Framework de Using a FIPS 140 Enabled System in Oracle Solaris 11.2 .
Imprime la clave en la ventana de terminal. De manera predeterminada, el valor de print es n.
La ventaja del almacén de claves PKCS #11 es que se puede recuperar la clave por su etiqueta. Este método es útil para las claves para cifrar y descifrar archivos. Debe completar el Step 1 antes de utilizar este método. La instrucción de uso muestra los argumentos. Los corchetes alrededor del argumento del almacén de claves indican que cuando el argumento de almacén de claves no estás especificado, la clave se almacena en el almacén de claves PKCS #11.
$ pktool genkey keystore=pkcs11 ...genkey [ keystore=pkcs11 ] label=key-label [ keytype=aes|arcfour|des|3des|generic ] [ keylen=key-size (AES, ARCFOUR or GENERIC only)] [ token=token[:manuf[:serial]]] [ sensitive=y|n ] [ extractable=y|n ] [ print=y|n ]
Una etiqueta especificada por el usuario para la clave. La clave se puede recuperar del almacén de claves por su etiqueta.
Para una clave simétrica de cualquier longitud, el valor es generic. Para un algoritmo determinado, especifique aes, arcfour, des o 3des.
Para los algoritmos aprobados por FIPS 140, seleccione un tipo de clave validado para FIPS. Consulte FIPS 140 Algorithms in the Cryptographic Framework de Using a FIPS 140 Enabled System in Oracle Solaris 11.2 .
La longitud de la clave en bits. El número debe ser divisible por 8. No especifique para des ni 3des.
Para los algoritmos aprobados por FIPS 140, seleccione una longitud de clave validada para FIPS. Consulte FIPS 140 Algorithms in the Cryptographic Framework de Using a FIPS 140 Enabled System in Oracle Solaris 11.2 .
El nombre del token. De manera predeterminada, el token es Sun Software PKCS#11 softtoken.
Especifica la sensibilidad de la clave. Cuando el valor es y, la clave no se puede imprimir utilizando el argumento print=y. De manera predeterminada, el valor de sensitive es n.
Especifica que la clave se puede extraer del almacén de claves. Especifique n para evitar que se extraiga la clave.
Imprime la clave en la ventana de terminal. De manera predeterminada, el valor de print es n.
Debe completar el Step 1 antes de utilizar este método. La instrucción de uso muestra los argumentos.
$ pktool genkey keystore=nss ...genkey keystore=nss label=key-label [ keytype=aes|arcfour|des|3des|generic ] [ keylen=key-size (AES, ARCFOUR or GENERIC only)] [ token=token[:manuf[:serial]]] [ dir=directory-path ] [ prefix=DBprefix ]
Una etiqueta especificada por el usuario para la clave. La clave se puede recuperar del almacén de claves por su etiqueta.
Para una clave simétrica de cualquier longitud, el valor es generic. Para un algoritmo determinado, especifique aes, arcfour, des o 3des.
Para los algoritmos aprobados por FIPS 140, seleccione un tipo de clave validado para FIPS. Consulte FIPS 140 Algorithms in the Cryptographic Framework de Using a FIPS 140 Enabled System in Oracle Solaris 11.2 .
La longitud de la clave en bits. El número debe ser divisible por 8. No especifique para des ni 3des.
Para los algoritmos aprobados por FIPS 140, seleccione una longitud de clave validada para FIPS. Consulte FIPS 140 Algorithms in the Cryptographic Framework de Using a FIPS 140 Enabled System in Oracle Solaris 11.2 .
El nombre del token. De manera predeterminada, el token es el token interno NSS.
La ruta de directorio a la base de datos NSS. De manera predeterminada, el valor de directorio es el directorio actual.
El prefijo a la base de datos NSS. El valor predeterminado es sin prefijo.
Utilice uno de los siguientes comandos, según dónde haya guardado la clave.
% pktool list keystore=file objtype=key [infile=key-fn] Found n keys. Key #1 - keytype:location (keylen)
For PKCS #11, use the following command:
$ pktool list keystore=pkcs11 objtype=key Enter PIN for keystore: Found n keys. Key #1 - keytype:location (keylen)
Como alternativa, reemplace keystore=pkcs11 con keystore=nss en el comando.
En el siguiente ejemplo, un usuario crea un almacén de claves PKCS #11 por primera vez y, a continuación, genera una clave simétrica de gran tamaño para una aplicación. Por último, el usuario verifica que la clave se encuentre en el almacén de claves.
Tenga en cuenta que la contraseña inicial para un almacén de claves PKCS #11 es changeme. La contraseña inicial para un almacén de claves NSS es una contraseña vacía.
# pktool setpin Create new passphrase:Type password Re-enter new passphrase:Retype password Passphrase changed. % pktool genkey label=specialappkey keytype=generic keylen=1024 Enter PIN for Sun Software PKCS#11 softtoken :Type password % pktool list objtype=key Enter PIN for Sun Software PKCS#11 softtoken :Type password No. Key Type Key Len. Key Label ---------------------------------------------------- Symmetric keys: 1 Symmetric 1024 specialappkeyEjemplo 3-2 Creación de una clave AES aprobada por FIPS con el comando pktool
En el siguiente ejemplo, se crea una clave secreta para el algoritmo AES mediante un algoritmo y una longitud de clave aprobados por FIPS. La clave se almacena en un archivo local para un posterior descifrado. El comando protege el archivo con 400 permisos. Cuando se crea la clave, la opción print=y muestra la clave generada en la ventana de terminal.
El usuario que posee el archivo de claves recupera la clave mediante el comando od.
% pktool genkey keystore=file outkey=256bit.file1 keytype=aes keylen=256 print=y Key Value ="aaa2df1d10f02eaee2595d48964847757a6a49cf86c4339cd5205c24ac8c8873" % od -x 256bit.file1 0000000 aaa2 df1d 10f0 2eae e259 5d48 9648 4775 0000020 7a6a 49cf 86c4 339c d520 5c24 ac8c 8873 0000040Ejemplo 3-3 Creación de una clave simétrica para las asociaciones de seguridad IPsec
En el siguiente ejemplo, el administrador crea manualmente el material clave para las asociaciones de seguridad de IPsec y las almacena en archivos. A continuación, el administrador copia las claves al archivo /etc/inet/secret/ipseckeys y destruye los archivos originales.
En primer lugar, el administrador crea y muestra las claves que la política IPsec requiere:
# pktool genkey keystore=file outkey=ipencrin1 keytype=generic keylen=192 print=y Key Value ="294979e512cb8e79370dabecadc3fcbb849e78d2d6bd2049" # pktool genkey keystore=file outkey=ipencrout1 keytype=generic keylen=192 print=y Key Value ="9678f80e33406c86e3d1686e50406bd0434819c20d09d204" # pktool genkey keystore=file outkey=ipspi1 keytype=generic keylen=32 print=y Key Value ="acbeaa20" # pktool genkey keystore=file outkey=ipspi2 keytype=generic keylen=32 print=y Key Value ="19174215" # pktool genkey keystore=file outkey=ipsha21 keytype=generic keylen=256 print=y Key Value ="659c20f2d6c3f9570bcee93e96d95e2263aca4eeb3369f72c5c786af4177fe9e" # pktool genkey keystore=file outkey=ipsha22 keytype=generic keylen=256 print=y Key Value ="b041975a0e1fce0503665c3966684d731fa3dbb12fcf87b0a837b2da5d82c810"
A continuación, el administrador crea el siguiente archivo /etc/inet/secret/ipseckeys:
## SPI values require a leading 0x. ## Backslashes indicate command continuation. ## ## for outbound packets on this system add esp spi 0xacbeaa20 \ src 192.168.1.1 dst 192.168.2.1 \ encr_alg aes auth_alg sha256 \ encrkey 294979e512cb8e79370dabecadc3fcbb849e78d2d6bd2049 \ authkey 659c20f2d6c3f9570bcee93e96d95e2263aca4eeb3369f72c5c786af4177fe9e ## ## for inbound packets add esp spi 0x19174215 \ src 192.168.2.1 dst 192.168.1.1 \ encr_alg aes auth_alg sha256 \ encrkey 9678f80e33406c86e3d1686e50406bd0434819c20d09d204 \ authkey b041975a0e1fce0503665c3966684d731fa3dbb12fcf87b0a837b2da5d82c810
Después de verificar que la sintaxis del archivo ipseckeys sea válida, el administrador destruye los archivos de claves originales.
# ipseckey -c /etc/inet/secret/ipseckeys # rm ipencrin1 ipencrout1 ipspi1 ipspi2 ipsha21 ipsha22
El administrador copia el archivo ipseckeys al sistema de comunicación mediante el comando ssh u otro mecanismo seguro. En el sistema de comunicación, las protecciones se revierten. La primera entrada en el archivo ipseckeys protege los paquetes entrantes y la segunda entrada protege los paquetes salientes. No se generan claves en el sistema de comunicación.
Pasos siguientes
Para continuar con el uso de la clave para crear un código de autenticación de mensajes (MAC) para un archivo, consulte Cómo calcular un MAC de un archivo.