Gestion du chiffrement et des certificats dans Oracle® Solaris 11.2

Quitter la vue de l'impression

Mis à jour : Septembre 2014
 
 

Génération d'une clé symétrique à l'aide de la commande pktool

Certaines applications exigent une clé symétrique pour le chiffrement et le déchiffrement des communications. Dans cette procédure, vous créez une clé symétrique et la stockez.

Si votre site dispose d'un générateur de nombres aléatoires, vous pouvez l'utiliser pour créer un nombre aléatoire pour la clé. Cette procédure n'utilise pas le générateur de nombres aléatoires de votre site Web.

  1. (Facultatif) Si vous prévoyez d'utiliser un keystore, créez-le.
  2. Générez un nombre aléatoire pour l'utiliser comme clé symétrique.

    Choisissez l'une des méthodes suivantes.

    • Générez une clé et stockez-la dans un fichier.

      L'avantage d'une clé stockée dans un fichier est que vous pouvez extraire la clé de ce fichier pour l'utiliser dans le fichier de clés d'une application, tel que le fichier /etc/inet/secret/ipseckeys ou IPsec. L'instruction d'utilisation indique les arguments.

      % 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 ]
      outkey=key-fn

      Nom de fichier contenant la clé.

      keytype=specific-symmetric-algorithm

      Pour une clé symétrique d'une longueur quelconque, la valeur est generic. Pour un algorithme spécifique, indiquez aes, arcfour, des ou 3des.

      Pour configurer des algorithmes approuvés par FIPS 140, sélectionnez un type de clé validé pour FIPS. Voir la section FIPS 140 Algorithms in the Cryptographic Framework du manuel Using a FIPS 140 Enabled System in Oracle Solaris 11.2 .

      keylen=size-in-bits

      Longueur de la clé en bits. Le nombre doit être divisible par 8. Ne spécifiez rien pour des ou 3des.

      Pour configurer des algorithmes approuvés par FIPS 140, sélectionnez une longueur de clé validée pour FIPS. Voir la section FIPS 140 Algorithms in the Cryptographic Framework du manuel Using a FIPS 140 Enabled System in Oracle Solaris 11.2 .

      print=n

      Imprime la clé de la fenêtre de terminal. Par défaut, la valeur de print est n.

    • Générez une clé et stockez-la dans un keystore PKCS #11.

      L'avantage du keystore PKCS #11 est que vous pouvez extraire la clé par son étiquette. Cette méthode est utile pour les clés qui chiffrent et déchiffrent des fichiers. Vous devez effectuer l'Step 1 avant d'utiliser cette méthode. L'instruction d'utilisation indique les arguments. Les crochets qui entourent l'argument de keystore indiquent que lorsqu'il n'est pas spécifié, la clé est stockée dans le keystore 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 ]
      label=key-label

      Etiquette spécifiée par l'utilisateur pour la clé. La clé peut être récupérée à partir du keystore par son étiquette.

      keytype=specific-symmetric-algorithm

      Pour une clé symétrique d'une longueur quelconque, la valeur est generic. Pour un algorithme spécifique, indiquez aes, arcfour, des ou 3des.

      Pour configurer des algorithmes approuvés par FIPS 140, sélectionnez un type de clé validé pour FIPS. Voir la section FIPS 140 Algorithms in the Cryptographic Framework du manuel Using a FIPS 140 Enabled System in Oracle Solaris 11.2 .

      keylen=size-in-bits

      Longueur de la clé en bits. Le nombre doit être divisible par 8. Ne spécifiez rien pour des ou 3des.

      Pour configurer des algorithmes approuvés par FIPS 140, sélectionnez une longueur de clé validée pour FIPS. Voir la section FIPS 140 Algorithms in the Cryptographic Framework du manuel Using a FIPS 140 Enabled System in Oracle Solaris 11.2 .

      token=token

      Nom du jeton. Par défaut, le jeton est Sun Software PKCS#11 softtoken.

      sensitive=n

      Détermine la sensibilité de la clé. Lorsque la valeur est y, la clé ne peut pas être imprimée à l'aide de l'argument print=y. Par défaut, la valeur de sensitive est n.

      extractable=y

      Indique que la clé peut être extraite du keystore. Spécifiez n afin d'empêcher l'extraction de la clé.

      print=n

      Imprime la clé de la fenêtre de terminal. Par défaut, la valeur de print est n.

    • Générez une clé et stockez-la dans un keystore NSS.

      Vous devez effectuer l'Step 1 avant d'utiliser cette méthode. L'instruction d'utilisation indique les arguments.

      $ 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 ]
      label=key-label

      Etiquette spécifiée par l'utilisateur pour la clé. La clé peut être récupérée à partir du keystore par son étiquette.

      keytype=specific-symmetric-algorithm

      Pour une clé symétrique d'une longueur quelconque, la valeur est generic. Pour un algorithme spécifique, indiquez aes, arcfour, des ou 3des.

      Pour configurer des algorithmes approuvés par FIPS 140, sélectionnez un type de clé validé pour FIPS. Voir la section FIPS 140 Algorithms in the Cryptographic Framework du manuel Using a FIPS 140 Enabled System in Oracle Solaris 11.2 .

      keylen=size-in-bits

      Longueur de la clé en bits. Le nombre doit être divisible par 8. Ne spécifiez rien pour des ou 3des.

      Pour configurer des algorithmes approuvés par FIPS 140, sélectionnez une longueur de clé validée pour FIPS. Voir la section FIPS 140 Algorithms in the Cryptographic Framework du manuel Using a FIPS 140 Enabled System in Oracle Solaris 11.2 .

      token=token

      Nom du jeton. Par défaut, le jeton est le jeton interne NSS.

      dir=directory

      Chemin d'accès au répertoire de la base de données NSS. Par défaut, directory est le répertoire courant.

      prefix=directory

      Préfixe de la base de données NSS. Par défaut, le champ de préfixe est vide.

  3. (Facultatif) Vérifiez que la clé existe.

    Utilisez l'une des commandes suivantes, en fonction de l'endroit où vous avez stocké la clé.

    • Vérifiez la clé dans le fichier key-fn.
      % pktool list keystore=file objtype=key [infile=key-fn]
      Found n keys.
      Key #1 - keytype:location (keylen)
    • Vérifiez la clé dans le keystore PKCS #11 ou NSS.
      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)

      Sinon, remplacez keystore=pkcs11 par keystore=nss dans la commande.

Exemple 3-1  Création d'une clé symétrique à l'aide de la commande pktool

Dans l'exemple suivant, un utilisateur crée un keystore PKCS#11 pour la première fois, puis génère une longue clé symétrique pour une application. Enfin, l'utilisateur vérifie que la clé se trouve dans le keystore.

Notez que le mot de passe d'origine pour un keystore PKCS #11 est changeme. Le mot de passe initial pour un keystore NSS est un mot de passe vide.

# 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          specialappkey
Exemple 3-2  Création d'une clé approuvée par FIPS à l'aide de la commande pktool

Dans l'exemple suivant, une clé secrète pour l'algorithme AES est créée à l'aide d'un algorithme et d'une longueur de clé approuvés par FIPS. La clé est stockée dans un fichier local pour un déchiffrement ultérieur. La commande protège le fichier avec 400 autorisations. Si la clé est créée, l'option print=y affiche la clé générée dans la fenêtre de terminal.

L'utilisateur propriétaire du fichier de clés récupère la clé à l'aide de la commande 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
0000040
Exemple 3-3  Création d'une clé symétrique pour les associations de sécurité (SA) IPsec

Dans l'exemple suivant, l'administrateur crée manuellement les numéros de clé pour les SA IPsec et les stocke dans des fichiers. Ensuite, l'administrateur copie les clés pour le fichier /etc/inet/secret/ipseckeys et détruit les fichiers d'origine.

Tout d'abord, l'administrateur crée et affiche les clés requises par la stratégie IPsec :

# 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"

Ensuite, l'administrateur crée le fichier suivant /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

Après avoir vérifié que la syntaxe du fichier ipseckeys est valide, l'administrateur détruit les fichiers clé d'origine.

# ipseckey -c /etc/inet/secret/ipseckeys
# rm ipencrin1 ipencrout1 ipspi1 ipspi2 ipsha21 ipsha22

L'administrateur copie le fichier ipseckeys au système de communication en utilisant la commande ssh ou un autre mécanisme sécurisé. Sur le système de communication, les protections sont inversées. La première entrée dans le fichier ipseckeys protège les paquets entrants, et la seconde entrée protège les paquets sortants. Aucune clé n'est générée sur le système de communication.

Etapes suivantes

Pour continuer à utiliser la clé afin de créer un code d'authentification des messages (MAC) pour un fichier, voir Calcul du code MAC d'un fichier.