Commandes Linux : dnssec-keygen

DNSSEC-KEYGEN

Installé avec le paquet bind9utils

 

Afficher la version de la commande dnssec-keygen

apt-cache policy bind9utils

 

Générer une clef TSIG

# dnssec-keygen -a key-algorithm -b keysize -n keytype keyname

 

Générer une clef TSIG avec l’algorithme de hachage MD5 (cas pratique)

# dnssec-keygen -a HMAC-MD5 -b 512 -n HOST tsig-key
Ktsig-key.+157+14670
  • Algorithme de hachage : HMAC-MD5
  • Longueur de la clef : 512 bits (le maximum en MD5; valeur comprise entre 1 et 512 bits)
  • Type de clef : HOST
  • Nom de la clef : tsig-key (peu importe le nom choisi)

Cette dernière commande génère deux fichiers :

-rw-------   root bind   Ktsig-key.+157+14670.private
-rw-------   root bind   Ktsig-key.+157+14670.key

Les deux fichiers générés sont du type :

Kname+algorithm+footprint.[private|key]

Ils contiennent respectivement la clef privée et la clef publique. Toutefois avec la fonction de hachage MD5 utilisée, ces deux clefs sont strictement identiques.

# cat Ktsig-key.+157+14670.private
Private-key-format: v1.3
Algorithm: 157 (HMAC_MD5)
Key: pzDEGpd36rKTJJChe/z9K/BFwZ3SQqPjtbD4mIAhRoIY5uYl9KXiV4wyllv85MbXAWsW6Qkjavld070MPdNq3A==
Bits: AAA=
Created: 20160605004310
Publish: 20160605004310
Activate: 20160605004310
# cat Ktsig-key.+157+14670.key
tsig-key. IN KEY 512 3 157 pzDEGpd36rKTJJChe/z9K/BFwZ3SQqPjtbD4mIAhRoIY5uYl9KXiV4wyllv85MbXAWsW6Qkjavld070MPdNq3A==

La génération de clés, de manière générale, peut être très longue car elle se base sur le fichier spécial de génération de nombres aléatoires /dev/random. Le caractère aléatoire de la clé générée est fonction de ce fichier.
Or, ce dernier fichier, est directement dépendant du nombres de bits stockés dans le réservoir d’entropie. Ces bits d’entropie s’accumulent par le bruit lié à l’environnement par le biais des pilotes des périphériques et d’autres sources. En d’autres termes, les octets aléatoires sont générés par l’activité d’entrée/sortie (I/O) : taper au clavier, déplacer la souris, utiliser les disques, etc. Lorsque la jauge d’entropie est atteinte, la clef est alors générée.
Le niveau, à un instant t, d’entropie est visualisable en affichant la valeur stockée dans le fichier suivant :

cat /proc/sys/kernel/random/entropy_avail
entropie

On voit clairement, sur l’animation ci-dessus, que le réservoir d’entropie chute, car remis à 0, au moment où la clé est générée du fait que cette dernière puise sur tout le stock d’entropie disponible.
Plus le niveau d’entropie sera élevé, plus le fichier /dev/random bénéficiera de bits d’entropie, et plus la clef générée sera aléatoire et donc moins prévisible.
Si la génération de la clef est trop longue, il y a trois possibilités :

  • Générer de l’entropie naturellement : taper au clavier, bouger la souris, ouvrir/fermer des fichiers, etc.
  • Générer de l’entropie via un programme tiers comme haveged ou rng-tools
  • Utiliser le fichier /dev/urandom à la place de /dev/random

Le problème avec le fichier /dev/urandom c’est que les valeurs renvoyées pourraient être théoriquement vulnérables à une cryptanalyse basée sur l’algorithme employé par le pilote. En d’autres termes, la clé générée est moins aléatoire et donc plus vulnérable, en théorie.

# dnssec-keygen -a HMAC-MD5 -b 512 -r /dev/urandom -n HOST tsig-key
Ktsig-key.+157+52223
Fermer le menu
%d blogueurs aiment cette page :