Archives par mot-clef : dsa

clés RSA et DSA

Partout sur le net on trouve des articles parlant de ssh et de l’identification par clé.
Cette clé est généralement soit DSA, soit RSA.

Par contre l’auteur oubli en général de nous dire pourquoi il a choisi l’un plutôt que l’autre.
Moi même dans de précédents articles, je n’explique pas ce choix.

Je vais donc ici, parler ces clés qui nous rendent bien des services.

En réalité, le choix d’un type ou de l’autre n’a pas beaucoup d’incidence.
En effet, avec SSH, seul l’authentification est faite en utilisant ces algorithmes.
Lorsque la phase d’authentification est terminée, le reste de la communication utilise un autre protocole qui sera selon votre configuration IDEA, DES ou encore Blowfish.
Le système utilisera en outre une fonction de hachage en utilisant l’algorithme SHA-1, pour contrôler l’intégrité des données échangées.
Voila pourquoi je dis que le choix de l’algorithme n’a pas beaucoup d’incidence.

Alors pourquoi choisir l’un plutôt que l’autre ?
Pour ceux qui utilise l’antique SSH1, seul RSA est supporté.
Comme plus personne n’utilise SSH1 ( ;-) ) il faut trouver d’autre raisons à utiliser l’un plutôt que l’autre.

Voici donc une liste d’arguments pour l’un et l’autre :
- DSA est plus rapide pour signer, que son concurrent RSA.
- RSA est plus rapide pour vérifier, que le DSA

- Avant 2009, DSA était limité à 1024 bits. Depuis Juin 2009, il est possible d’avoir une clé 2048 bits, voir 3072 bits. Mais du fait que le contrôle d’intégrité des données est effectué en SHA-1 (empreinte sur 160 bits), une clé DSA est obligatoirement limité à 1024 bits.
Au delà, la sécurité de l’échange n’est pas renforcée, au contraire, on augmente les risques de collusions et donc l’échange s’en trouve fragilisé.
Voir : http://csrc.nist.gov/publications/fips/fips186-3/fips_186-3.pdf vers la page 28.
C’est pour cette raison que l’outil ssh-keygen, qui nous permet de générer des clés, dans le cas de DSA, nous limite à 1024 bits.
-Il est possible d’avoir une clé RSA signée sur 4096 bits
- DSA est (presque) aussi rapide en signature qu’en vérification.

Dans la capture ci-dessous, on peut voir le résultat de la commande

user@computer:$ openssl speed


Ce résultat est obtenu dans une machine virtuelle.
A sa lecture on peut voir que le RSA signe des clés 2048 bits en 0,012s et les vérifie en 0,0010s, alors que pour le DSA, le temps est respectivement de 0,003s et 0,003s.
Il est d’ailleurs conseillé d’utiliser, en RSA, depuis 2010, et jusqu’en 2030, des clés sur 2048 bits.

Conclusion.
L’algorithme DSA est aussi efficace en signature qu’en vérification, alors que le RSA est bien plus performant en vérification qu’en signature.
Il est également beaucoup plus performant en vérification que le DSA.
Il est donc préférable d’utiliser l’algorithme RSA sur des certificats et de réserver le DSA aux mécanismes d’authentification initial d’une connexion réseau (PSEC, TLS/SSL etc).
La durée de la signature et de la vérification durant aussi longtemps, c’est leur somme à chaque connexion qui donne cet avantage.

Le site (Américain) avec les spécifications officielles :
http://csrc.nist.gov/publications/PubsFIPS.html

La spécification officiel sur les standards de signature numérique :
http://csrc.nist.gov/publications/fips/fips186-3/fips_186-3.pdf

Quelques exemple de vitesse de processeurs avec openssl :
http://ubuntuforums.org/archive/index.php/t-1186420.html

Quelques exemples de lignes de commandes pour générer clés et certificats :
http://www.cryptopp.com/wiki/Keys_and_Formats#DSA_Private_Key_.28PrivateKeyInfo.29_2

Une autre lecture intéressante sur le sujet :
http://www.ncsa.illinois.edu/~hkhurana/GridCrypto.pdf
ainsi que :
http://en.wikipedia.org/wiki/Key_size

A lire sur le même sujet, ou presque :

Publié dans shell | Marqué avec , , , , , , | Laisser un commentaire