Ben, ça n'a rien à voir !!!
RSA est un algorithme à clef assymetrique :
On crée un couple de clés telles que tout message chiffré avec l'une des deux clés ne peut être déchoffré qu'avec l'autre. Une des deux clés est "prive" et connue uniquement du propriétaire. L'autre est distribuée le plus largement possible.
A "encrypte" un message avec la clé "publique" de B, B le dechiffre avec sa clé "privée" et il est le seul à pouvoir le faire...
B signe un message avec sa clé privée, et tout le monde peut vérifier à l'aide de la clé publique de B que c'est bien lui qui l'a fait.
Cet algorithme est très puissant, mais très lent. On l'utilise donc très souvent pour proteger un echange de clé symétrique.
Par ailleurs, il pose le problème de diistribution des clés privées et de certification des valeurs de clés publiques.
DH est quant à lui un algorithme de négociation de clé symetrique qui peut utiliser un canal clair pour la négociation de cette clé :
A et B s'echangent publiquement neux nombres, n et g. Il faut que n soit suffisament grand pour assurer la sécurité du protocole.
A choisit aléatoirement un très grand nombre x et calcule X=g^x mod n
B choisit aléatoirement un très grand nombre y et calcule Y=g^y mod n
ensuite, chacun de son coté :
A calcule k=Y^x mod n
B calcule k'=X^y mod n
et on a k=k' et on peut utiliser cette valeur comme clé pour chiffrer les echanges.
DH est un algorithme élégant, mais malheureusement vulnérable à une (très simple) attaque de man in the middle, puisque si C se place entre A et B, il n'a qu'à remplacer les valeurs publiques interceptées de n et g par d'autres de chaque coté, et il peut ecouter complètement la conversation ensuite !
Pour se proteger de cette attaque, on utilise... Des clés assymetriques pour signer les echanges de valuers de n et g
Voila, aucun protocole n'est parfait donc et ce sont deux choses très différentes.
t.
One hundred thousand lemmings can't be wrong...