J'ai utilisé ssh-keygen
pour la création d'une paire de clés privée et publique SSH RSA 4096 bits. J'ai utilisé un mot de passe pour la clé privée.
Si un attaquant, Eve, connaît la phrase secrète en plus de la clé publique:
Mise à jour - il semble qu'avec l'utilisation de "yafu" sur un ordinateur ( http://iamnirosh.blogspot.co.uk/2015/02/factoring-rsa-keys.html ) que le craquage par force brute le processus/l'affacturage prend beaucoup moins de temps.
La clé privée n'est pas liée à la phrase secrète. La clé publique aussi. La clé publique est également généralement stockée non chiffrée, même lorsque la clé privée est protégée par une phrase secrète. (Des exceptions peuvent exister lorsque la clé publique est stockée sous une forme cryptée, mais dans le cas de base et en supposant une clé suffisamment grande, cela n'apporte aucune sécurité supplémentaire car la clé publique est destinée pour être distribué publiquement ou au moins peut être supposé être à la disposition d'un adversaire.)
Maintenant, ne vous méprenez pas. La protection de votre clé privée avec une phrase secrète est une très bonne idée et il est préférable de le faire. La clé privée et la clé publique ont une relation mathématique l'une avec l'autre. Mais votre clé privée n'est encore qu'un chiffre. Ce numéro n'est pas lié à la phrase secrète que vous utilisez pour crypter le fichier qui contient ce numéro, ce qui correspond à la phrase secrète.
Si un attaquant Eve connaît la phrase secrète en plus de la clé publique; Peuvent-ils dériver la clé privée? - Je suppose que oui avec assez de temps.
La clé publique est mathématiquement liée à la clé privée, et la réponse simple est que oui, avec suffisamment de temps, en théorie, l'une peut être dérivée de l'autre. La clé publique doit presque par définition être transmise en clair afin d'établir une identité avant que le canal de communication crypté ne soit configuré, donc Eve (par convention Eve est une écoute passive; Mallory est un homme actif au milieu) peut voir il.
Dériver la clé publique de la clé privée dans RSA est facile. Dériver la clé privée de la clé publique est censé être impossible à calculer, et avec des clés suffisamment grandes, il est effectivement impossible. Pour autant que nous le sachions, il n'existe aucun moyen rapide de dériver les données de clé RSA privées à partir d'un module RSA public de 4096 bits sur un ordinateur classique (ce que nous avons actuellement). Même une attaque efficace contre un module RSA public de 2048 bits serait tout un exploit, bien que le RSA de 1024 bits soit dans le domaine du possible dans des délais raisonnables et ne clé privée RSA de 768 bits a été prise en compte dans public (il a fallu l'équivalent de l'ordre de 2 000 années CPU sur du matériel raisonnablement moderne).
Donc, "avec assez de temps", c'est possible. Mais cela n'a rien à voir avec la phrase secrète ou l'absence de phrase secrète.
Pour comprendre le pourquoi de ce qui précède, j'utiliserai le manuel RSA pour plus de simplicité. (Le RSA du monde réel est similaire, mais pas exactement le même que, le RSA des manuels, car il existe de nombreuses attaques du monde réel que le RSA des manuels ne traite pas.) Ici, parmi d'autres chiffres, la clé privée est la paire des nombres premiers communément appelés p et q , et le public clé est leur produit, n = pq , où n est appelé module public . Étant donné p et q , calculer n est borderline trivial (il suffit de multiplier deux - très grands - nombres ensemble), mais donné uniquement n , déterminer les valeurs correspondantes pour p et q est extrêmement difficile. Nous n'avons pas de preuve que ce soit le cas, cependant; seule l’absence de moyen facile et connu de le faire, même avec beaucoup de gens très intelligents qui ont longtemps travaillé sur le problème. C'est comme comprendre que 15 = 3 * 5, sauf qu'au lieu de quelques chiffres, les nombres impliqués sont plusieurs centaines de chiffres. Pour une approximation de premier ordre, avec votre clé RSA 4096 bits, n est d'environ 1300 chiffres décimaux et p et q ont chacun un peu plus de 600 chiffres décimaux. Nous pouvons voir cela parce que le journaldix(24096) ≈ 1233 et 10615* dix615= 101230.
S'ils peuvent dériver la clé publique, quels algorithmes peuvent-ils utiliser pour ce faire? - Je ne sais pas.
demi-temps algorithmes de factorisation des nombres. L'état actuel de la technique pour les nombres supérieurs à 10100 (100 chiffres décimaux, environ 332 bits) est l'algorithme General Number Field Sieve (GNFS).
Un ordinateur quantique pourrait utiliser algorithme de Shor pour factoriser efficacement un semi-premier, mais (au moins en public), nous ne savons pas encore comment construire un ordinateur quantique suffisamment grand qui fonctionne réellement. Cela fait partie de ce qu'est la poussée vers ce qu'on appelle cryptographie post-quantique . La dernière fois que j'en ai entendu parler, l'état de l'art avait pris en compte le nombre 15, mais c'était il y a quelques années; il est possible que les ordinateurs quantiques connus du public soient désormais capables de factoriser des nombres supérieurs à 15.
Quel est le nombre (ou l'ordre) d'opérations nécessaires pour que chaque algorithme dérive la clé privée?
La complexité de la factorisation d'un nombre à l'aide du GNFS est discutée sur sa page Wikipedia. Il est vraiment difficile de discuter directement du nombre d'opérations, mais après quelques discussions sur les conditions préalables, l'article Wikipedia résume en déclarant que le temps d'exécution du tamis du champ numérique est super polynomial mais sous-exponentiel dans la taille de l'entrée. Vous pouvez comparer les différents temps d'affacturage et algorithmes utilisés pour les divers numéros RSA , qui faisaient partie d'un concours lancé au début des années 1990 d'élargir les connaissances relatives à la factorisation entière, désormais inactive.
Comparez également Comment est-il possible que les personnes observant une connexion HTTPS établie ne sachent pas comment la décrypter? Notez que HTTPS fonctionne différemment de SSH, mais le principe de fonctionnement de base reste similaire.
La phrase secrète protège contre accès la clé privée
La phrase secrète est destinée à protéger la clé privée en cas d'accès physique . Si le pirate peut se connecter à votre serveur et accéder à votre magasin de certificats, il pourrait utiliser la phrase secrète pour obtenir une copie du certificat qui inclurait la clé privée . J'espère que les pirates n'ont pas systématiquement accès à votre magasin de certificats, mais parfois un pirate n'est qu'un employé mécontent.
La clé publique algorithme évite de dériver la clé privée
Si le pirate a pas a accès à votre magasin de certificats, et n'a que la phrase secrète et la clé publique, il n'est pas possible de dériver la clé privée. Cela est dû à la manière intelligente dont l'algorithme RSA est configuré. La relation entre la clé privée et la clé publique est une fonction de trappe , ce qui signifie qu'il est facile de la calculer dans une direction mais pas dans l'autre.
Voici un exemple. Si je vous disais que X * Y = 3014569, et X et Y sont des entiers, pourriez-vous me dire X ou Y? Ce serait très difficile (à cause de la façon dont j'ai choisi X et Y). D'un autre côté, si je vous disais X = 1237 et Y = 2437, il serait très facile pour vous de me dire que X * Y = 3014569 (il vous suffit de multiplier!) Donc c'est facile dans un sens, dur dans l'autre façon. Ceci est connu comme le problème factorisation principale .
Cela étant dit, il pourrait passer plusieurs milliers d'années à passer la trappe encore et encore pour trouver votre clé privée. Comme ça:
C'est ce qu'on appelle une attaque par force brute. Cela prendrait beaucoup de temps.
Il peut y avoir des raccourcis (par exemple, utiliser un ordinateur quantique ) et les mathématiciens trouvent toujours de nouvelles façons de contourner des choses comme celle-ci. Mais pour l'instant, une clé de 4096 bits est considérée comme très longue pour durer dans un avenir prévisible (voir ce lien pour plus de détails).
Il peut être possible de dériver votre clé privée de la clé publique (on pense seulement que personne ne sait comment le faire efficacement), mais la phrase secrète n'aidera pas du tout.
Vous devez comprendre que ssh-keygen génère d'abord un pair de clés qui n'est absolument pas lié à la phrase secrète, et que la phrase secrète ne sert alors qu'à crypter la clé privée sur votre disque. Par conséquent, la phrase secrète n'est utile que pour quelqu'un qui connaît votre clé privée chiffrée.
Soit dit en passant, vous pouvez modifier la phrase secrète de votre clé privée (avec ssh-keygen -p
) sans changer la clé publique.
Peuvent-ils dériver la clé privée? - Je suppose que oui avec assez de temps.
La phrase secrète est juste utilisée pour crypter le stockage de la clé privée sur le système client, elle n'est donc utile que s'ils ont le fichier de clé privée cryptée. Cela revient donc simplement à savoir si l'attaquant peut dériver la clé privée de la clé publique.
La réponse à cette question dépend du type et de la longueur de la clé et des ressources de calcul dont elle dispose.
Pour une clé RSA, la méthode de fissuration la plus connue consiste à factoriser le module. Une fois le module pris en compte, il est alors simple de dériver la clé privée à partir des facteurs de module.
L'algorithme le plus connu pour l'affacturage est le tamis de numéro de champ général. La factorisation de 768 bits a été démontrée publiquement. La factorisation des nombres de 1024 bits n'a pas été démontrée publiquement mais est considérée comme réalisable pour les agences d'espionnage et les organisations disposant de ressources similaires. Le RSA à 2048 bits doit être sûr à moins qu'il n'y ait des avancées majeures dans les techniques de factorisation ou une autre manière d'attaquer le RSA. 4096 bits est une autre étape dans la paranoïa.
Notez que nous ne pouvons pas affirmer absolument que même une clé de 4096 bits sera sécurisée. Il reste possible qu'il y ait une percée dans les algorithmes de factorisation ou qu'une autre voie pour attaquer RSA soit trouvée.
Pour le DSA traditionnel, la voie d'attaque la plus connue consiste à résoudre le problème du journal discret sur un champ modulo-prime. Comme il s'avère que les algorithmes les plus connus pour cela sont également le tamis de nombre de champs général, mais l'application de cet algorithme au problème de log discret est plus difficile que de l'appliquer au problème de factorisation principale. Figure une clé DSA 1024 bits est un peu plus difficile à casser qu'une clé RSA 1024 bits mais probablement pas totalement irréalisable.
Pour le DSA à courbe elliptique, la voie d'attaque la plus connue consiste à résoudre le problème du log discret sur un champ de courbe elliptique. On pense que cela est beaucoup plus difficile que de le résoudre sur un champ modulo-prime et donc les clés peuvent être plus courtes pour un niveau donné de sécurité supposée.
Le chiffrement de la clé publique repose sur la conviction qu'il n'y a aucun moyen de dériver la clé privée de la clé publique. Le chiffrement est appelé asymétrique car il y a aucun algorithme connu pour produire la clé privée à partir de la clé publique. Cela ne signifie pas qu'il n'existe pas d'algorithme de ce type, il s'agit simplement de n'est pas conn.
Étant donné qu'aucun algorithme "inverse" n'existe, le processus de craquage de votre clé privée nécessite du temps, une puissance de calcul et des suppositions/hypothèses. Si vous êtes préoccupé par la sécurité de vos clés RSA, utilisez une taille de clé minimale de 8192 bits. En supposant que l'algorithme de génération de clés de votre plateforme ne prend pas de raccourcis qui compromettent la sécurité de la clé générée. Tant qu'il n'y a pas d'algorithme inverse, augmenter la taille de la clé par défaut est le moyen le plus simple de vous protéger contre les personnes suspectes.
Je dois donc convenir avec les autres qu'il n'y a aucun moyen connu d'utiliser la phrase secrète et la clé publique pour casser votre clé privée.