J'ai récemment généré une nouvelle clé SSH au format ed25519. La clé publique ne fait que 69 octets de long tandis que mon ancienne clé RSA est de 373 octets.
D'après ma perception, ed25519 est le format le plus récent et le plus sécurisé.
Alors pourquoi n'est-ce pas mieux ici?
Non, plus ce n'est pas mieux.
Laisse-moi expliquer. En cryptographie symétrique , les clés ne sont que des paquets de bits, et toutes les séquences de bits sont des clés valides. Ils n'ont pas de structure interne. À condition que vous utilisiez des algorithmes décents, la meilleure attaque possible contre une clé pour le chiffrement symétrique est force brute: l'attaquant essaie toutes les clés possibles jusqu'à ce qu'il trouve la bonne. Si la clé a n bits, alors il y a 2 n clés possibles, et l'attaquant, en moyenne, trouvera la bonne après avoir essayé la moitié d'entre elles, soit 2 n - 1. Des touches plus longues rendent ainsi la force brute plus difficile; dans ce cas, plus c'est mieux.
(Notez qu'il y a une limite à cela; lorsque les clés sont suffisamment longues pour que la force brute ne soit plus réalisable, l'augmentation de la longueur de la clé ne rend pas les choses "plus sûres" de manière significative. ils sont assez longs, à quel moment plus est juste plus long.)
RSA et EdDSA concernent la cryptographie asymétrique où les choses sont complètement différentes. Une clé de la cryptographie asymétrique est un objet mathématique qui a une structure interne spécifique; briser la clé consiste à démêler cette structure et peut être fait beaucoup plus efficacement que d'essayer toutes les clés privées possibles. Notez les deux points:
Contre la force brute, ce qui compte n'est pas la longueur de la clé publique, mais celle de la clé privée, car ce que l'attaquant veut, c'est la clé privée, pas la clé publique.
La force brute n'est pas l'attaque la plus efficace contre les clés utilisées en cryptographie asymétrique.
Pour les clés RSA, l'attaque réussit en factorisant le module. factorisation entière est un problème étudié depuis longtemps; avec l'algorithme le plus connu, casser une clé RSA de 2048 bits (c'est-à-dire une clé publique RSA dont le module est un entier de 2048 bits) nécessite environ 2110 ou alors des opérations élémentaires.
Pour les clés EdDSA, la clé publique est un point [~ # ~] p [~ # ~] sur une courbe elliptique, tel que [~ # ~] p [~ # ~] = xG où x est la clé privée (un entier de 256 bits) et [~ # ~] g [~ # ~] est un point de courbe conventionnel. L'algorithme le plus connu pour récupérer x à partir de [~ # ~] p [~ # ~] et [~ # ~] g [~ # ~] nécessite environ 2128 opérations élémentaires, c'est-à-dire plus que pour une clé RSA 2048 bits. En général, pour casser une clé publique de courbe elliptique n - bit, l'effort est de 2 n/2.
Rompre l'une ou l'autre clé va bien au-delà de ce qui est faisable avec la technologie existante ou prévisible. Mais d'un point de vue "académique", la clé EdDSA est un peu plus forte que la clé RSA; De plus, les courbes elliptiques vous offrent plus de sécurité par bit (techniquement, nous disons que la factorisation entière est un problème sous-exponentiel).
Voir ce site pour plus d'informations à ce sujet.
Je ne suis pas satisfait de ma réponse précédente qui conduit à une hypothèse confuse sur la méthode de compression utilisée dans ed25519, donc je vais essayer une fois de plus pour ceux qui ne veulent pas sauter sur les mathématiques EC (Elliptic Curve plus loin) pour pouvoir comprendre pourquoi Les clés EC sont si courtes à comparer avec les clés RSA.
Puisque mon anglais est loin d'être parfait, je ferais mieux de déposer ici à mon humble avis de très bons liens vers ce sujet.
Pour ceux qui veulent vraiment comprendre la "magie" de EC (mais veulent éviter de tomber profondément amoureux des mathématiques) et être capables de comprendre - "pourquoi EC peut gérer un cryptage plus fort que RSA en utilisant des clés beaucoup plus petites", - I conseille de lire l'article complet sur arstechnica.com "Un amorce relativement facile à comprendre sur la cryptographie à courbe elliptique"
L'auteur y illustre Gist of EC avec des images qui aident à comprendre le concept en quelques étapes.
BTW, extrait intéressant sur EC:
Vous pouvez calculer la quantité d'énergie nécessaire pour briser un algorithme cryptographique et la comparer avec la quantité d'eau que cette énergie pourrait bouillir. Il s'agit d'une sorte d'empreinte carbone cryptographique. Selon cette mesure, casser une clé RSA de 228 bits nécessite moins d'énergie qu'il n'en faut pour faire bouillir une cuillère à café d'eau. Comparativement, briser une clé de courbe elliptique de 228 bits nécessite suffisamment d'énergie pour faire bouillir toute l'eau sur terre. Pour ce niveau de sécurité avec RSA, vous auriez besoin d'une clé de 2 380 bits.
Pour ceux qui ne veulent pas creuser les internes d'EC sous le capot, je conseille au moins de lire et de suivre un assez bon résumé pratique sur le chiffrement en SSH qui vaut la peine de passer du temps à lire cela. Le lien est ici: secure-secure-Shell
Des solutions prêtes à copier/coller (fournies par la communauté de github) pour différents systèmes d'exploitation sont ici: WiKi de Secure-Secure-Shell (mais je vous conseille vivement de lire l'article précédent sur github avant d'y aller)
Réponse précédente:
Q: "La clé publique ne fait que 69 octets de long alors que mon ancienne clé RSA est de 373 octets. Alors pourquoi n'est-il pas mieux ici?"
En plus de l'explication de Tom "pourquoi les clés sont plus courtes tout en étant au moins aussi sécurisées" - selon le papier original de ceux qui ont créé ed25519 à partir d'ici: http://ed25519.cr.yp.to/ed25519-20110926. pdf :
En plus des clés courtes "tout aussi sécurisées" d'ed25519, elles sont "en interne" compressées . La clé ed25519 non compressée serait presque deux fois plus longue.
P.S.
Pour éviter toute confusion ou mauvaise interprétation de la compression de points utilisée dans ed25519, ce n'est [~ # ~] pas [~ # ~] une compression régulière comme dans une archive Zip (!!!). Merci à @diagprov pour avoir aidé à corriger ma réponse dans les commentaires avec une bonne et simple explication de la compression de points et pour le lien décrivant compression de points
Référence du document ci-dessus (page n ° 2):
- Petites clés. Les clés publiques ne consomment que 32 octets. Les temps de compression et de décompression sont à nouveau inclus.