Question:
SSH - Si Eve a la phrase de passe et la clé publique, peut-elle dériver la clé privée?
unseen_rider
2017-03-14 02:35:19 UTC
view on stackexchange narkive permalink

J'ai utilisé ssh-keygen pour créer une paire de clés privée et publique SSH RSA 4096 bits. J'ai utilisé une phrase de passe pour la clé privée.

Si un attaquant, Eve, connaît la phrase de passe en plus de la clé publique:

  1. Peut-il dériver la clé privée? - Je présume que oui avec suffisamment de temps.
  2. S'ils peuvent dériver la clé publique, quels algorithmes peuvent-ils utiliser pour le faire? - Je ne sais pas.
  3. Quel est le nombre (ou l'ordre) des opérations nécessaires pour chaque algorithme pour dériver la clé privée?

Mise à jour - il semble que avec l'utilisation de "yafu" sur un ordinateur ( http://iamnirosh.blogspot.co.uk/2015/02/factoring-rsa-keys.html) que le processus de craquage par force brute / factorisation prend beaucoup moins de temps.

  • Il serait intéressant de voir combien de différence yafu fait sur un environnement distribué et sur des supercalculateurs.
Bien que les clés publiques et privées d'un utilisateur soient mathématiquement liées, la connaissance d'une clé publique ne permet pas de calculer la clé privée correspondante.Si l'attaquant connaissait la phrase de passe qui protège la clé privée, je suppose qu'il ne serait pas si loin d '«obtenir» la clé privée de l'utilisateur;)
Je me rends compte que, mais qu'en est-il si la phrase de passe est également connue?- C'est au cœur de ma question.
@unseen_rider: Compte tenu de votre commentaire ci-dessus, la réponse simple est que la phrase de passe ne fournit aucune valeur pour récupérer la clé privée à partir de la clé publique.Il n'a aucun rapport avec la relation mathématique des clés publiques et privées entre elles. La réponse de Michael Kjörling ci-dessous est très complète.
Il y a cependant du travail dans ce domaine.https://github.com/gdisneyleugers/NED-RSA.
@unseen_rider La phrase de passe n'a rien à voir avec les clés.Fondamentalement, lorsque vous fournissez une phrase de passe, ce qui se passe, c'est qu'au lieu de stocker la clé privée en clair, il la crypte à l'aide de votre phrase de passe.Cela signifie que pour accéder à la clé privée, l'attaquant ne peut pas simplement voler votre fichier, mais il doit également connaître la phrase de passe.Mais la phrase secrète n'a littéralement aucun rôle dans la production de la paire de clés privée et publique.
Cinq réponses:
a CVn
2017-03-14 02:54:31 UTC
view on stackexchange narkive permalink

La clé privée n'est pas liée à la phrase de passe. Il en va de même pour la clé publique. 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 de passe. (Des exceptions peuvent exister lorsque la clé publique est stockée sous une forme chiffrée, mais dans le cas de base et en supposant une clé suffisamment grande, cela n'offre aucune sécurité supplémentaire car la clé publique est destinée à être distribuée publiquement ou du moins peut être supposé disponible pour un adversaire.)

Maintenant, ne vous méprenez pas. Protéger votre clé privée avec une phrase secrète est une très bonne idée, et il est recommandé 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 nombre. Ce numéro n'est pas lié à la phrase de passe que vous utilisez pour crypter le fichier qui contient ce numéro, ce qui est tout ce que fait la phrase de passe.

Si un attaquant Eve connaît la phrase de passe en plus de la clé publique; Peuvent-ils dériver la clé privée? - Je suppose que oui avec suffisamment 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, on peut en déduire 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 mis en place, donc Eve (par convention Eve est une écoute passive; Mallory est un homme actif au milieu) peut voir ça.

Il est facile de dériver la clé publique de la clé privée dans RSA. La dérivation de la clé privée à partir de la clé publique est supposée être irréalisable d'un point de vue calcul, et avec des clés suffisamment grandes effectivement impossible. Pour autant que nous le sachions, il n'y a pas de moyen rapide de dériver les données de clé RSA privée à partir d'un module RSA public de 4096 bits sur un ordinateur classique (ce que nous avons actuellement). Même une attaque efficace sur un module RSA public de 2048 bits serait tout un exploit, bien que le RSA 1024 bits soit dans le domaine du possible dans des délais raisonnables et une clé privée RSA de 768 bits a été prise en compte en public (il a fallu l'équivalent de l'ordre de 2000 années CPU sur du matériel raisonnablement moderne).

Donc, "avec suffisamment de temps", c'est possible. Mais cela n'a aucun rapport avec la phrase de passe ou l'absence de phrase de passe.

Pour comprendre le pourquoi de ce qui précède, j'utiliserai le manuel RSA pour plus de simplicité. (Le RSA réel est similaire, mais pas exactement le même que le RSA manuel, car il existe de nombreuses attaques du monde réel que le RSA manuel ne traite pas.) Ici, parmi d'autres nombres, la clé privée est la paire des nombres premiers communément appelés p et q , et la clé publique est leur produit, n = pq , où n est appelé module public . Étant donné p et q , le calcul de n est à la limite de la simplicité (il suffit de multiplier deux - très grands - nombres ensemble), mais étant donné seulement n , la détermination des valeurs correspondantes pour p et q est extrêmement difficile. Cependant, nous n'avons aucune preuve qu'il en est ainsi; seulement l'absence d'un moyen facile et connu publiquement de le faire, même avec beaucoup de gens très intelligents ayant travaillé sur le problème pendant une longue période. C'est comme comprendre que 15 = 3 * 5, sauf qu'au lieu de nombres de quelques chiffres, les nombres impliqués sont plusieurs centaines de chiffres. Pour une approximation de premier ordre, avec votre clé RSA de 4096 bits, n fait environ 1300 chiffres décimaux, et p et q sont un peu plus de 600 chiffres décimaux chacun. Nous pouvons voir cela car le journal 10 (2 4096 ) ≈ 1233, et 10 615 * 10 615 = 10 1230.

S'ils peuvent dériver la clé publique, quels algorithmes peuvent-ils utiliser pour le faire? - Je ne sais pas.

Algorithmes de factorisation des nombres semi-temporels. L'état actuel de l'art pour les nombres supérieurs à 10 100 (100 chiffres décimaux, environ 332 bits) est l'algorithme General Number Field Sieve (GNFS).

Un ordinateur quantique pourrait utiliser l'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 que l’on appelle la cryptographie post-quantique. La dernière fois que j'ai entendu, l'état de l'art avait factorisé 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) des opérations nécessaires à chaque algorithme pour dériver la clé privée?

La complexité de la factorisation d'un nombre en utilisant le GNFS est discutée sur sa page Wikipédia. Il est vraiment difficile de discuter directement du nombre d'opérations, mais après quelques discussions sur les prérequis, l'article de Wikipedia résume en déclarant que le temps d'exécution du tamis de champ numérique est super-polynomial mais sous-exponentiel dans la taille de l'entrée . Vous pouvez comparer les différents temps de factorisation et algorithmes utilisés pour les différents numéros RSA, qui faisaient partie d'un concours lancé au début des années 1990 pour approfondir les connaissances relatives à la factorisation d'entiers, désormais inactive .

Comparez aussi Comment est-il possible que les personnes observant une connexion HTTPS en cours d'établissement ne sachent pas comment la déchiffrer? Notez que HTTPS fonctionne différemment de SSH, mais le fonctionnement de base le principe reste similaire.

"La clé publique est également généralement stockée non chiffrée."Non, la clé publique est * toujours * stockée non chiffrée car cela n'aurait aucun sens de la chiffrer.
«Il est facile de dériver la clé publique de la clé privée dans RSA.»C'est ça?Les clés publique et privée ne sont-elles pas essentiellement interchangeables (sauf pour la partie où l'une d'entre elles est gardée secrète, bien sûr)?Cela ne voudrait-il pas dire que dériver le public du privé devrait être * exactement * aussi difficile que dériver le privé du public?
@dr01 Il n'y a pas d'inconvénients importants * en soi * au stockage de la copie locale de la clé publique chiffrée.Il faudrait que certains flux de travail soient quelque peu différents, mais c'est à peu près tout.Je conviens que cela ne fournit aucun * avantage * significatif non plus, la façon dont le chiffrement de la clé privée pour le stockage offre un avantage par rapport à ne pas le faire.Et bien sûr, il ne s'agit que du client et de l'ensemble d'outils SSH;sur mon système, les clés publiques SSH sont stockées cryptées et les clés privées SSH doublement cryptées, en raison du cryptage complet du disque.Les cryptages sont là pour résoudre différents problèmes, cependant.
@Darkhogg Parmi une poignée d'autres valeurs, le manuel RSA définit la clé privée comme les deux nombres premiers (p, q) et la clé publique comme leur produit n = pq (c'est le module).Étant donné p et q, calculer n est trivial (après tout, ce n'est qu'une multiplication);étant donné n, calculer les p et q correspondants n'est * pas * trivial pour les grandes valeurs de p et q.(C'est comme comprendre que 15 = 3x5, sauf avec des nombres de plusieurs centaines ou même de milliers de chiffres.) Le RSA dans le monde réel stocke également d'autres nombres associés particulièrement associés à la clé privée pour accélérer divers calculs.
@MichaelKjörling Je vois.J'avais l'impression que les deux clés étaient indiscernables et ne devenaient pas réellement «publiques» et «privées» jusqu'à ce qu'elles aient été choisies comme telles.Ma faute.
@Darkhogg C'est une simplification (et dangereuse, en plus) de penser que les clés privées et publiques RSA sont interchangeables, où le cryptage est "crypter avec une clé publique, décrypter avec une clé privée" et la signature est "crypter avec une clé privée, décrypter avec publicclé".C'est vrai dans un sens strictement technique dans le RSA manuel, mais cela ouvre un camion de vers pour les traiter de cette façon, donc aucune mise en œuvre sensée ne le fait vraiment comme ça.
En passant, c'est pourquoi la capture en masse et en gros du trafic crypté est une chose si inquiétante.Le cryptage 1024 bits était très bien.En 20 ans, peut-être que tout le trafic que nous avons envoyé chiffré avec un chiffrement à 4096 bits est raisonnablement fissuré, de sorte que toutes ces vidéos de chat que vous avez tunnelisées sur votre connexion SSH peuvent maintenant être déchiffrées par les agences à trois lettres qui peuvent maintenantvous faire chanter.Bonne chance!
@WayneWerner Heureusement que je suis moi-même plus un chien!Mon partage et mon tunneling de vidéos de chats sont, pour le dire légèrement, limités, ce qui réduit évidemment dans une très large mesure le risque de scénarios de chantage comme celui que vous décrivez.
@waynewerder il y a eu de nombreuses vulnérabilités dans les protocoles de communication et les implémentations logicielles dans le passé, donc cela ne devrait surprendre personne qu'il y ait probablement de nombreuses vulnérabilités inconnues présentes, connues par trois agences de courrier qui peuvent être exploitées à volonté actuellement.
@MichaelKjörling Re personne de chien - vous n'avez donc rien à cacher, et donc rien à craindre!:-)
`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` Compte tenu de l'implémentation moderne avec` e` mis à 65537, je trouve cette affirmation discutable.La clé publique se compose de e et n.Vous savez n parce qu'il fait partie de la clé privée et vous connaissez e parce qu'il est prédéfini par l'implémentation.Il n'y a pas de "dérivation" ou de "temps" impliqué.
@AndrewSavinykh Je ne suis pas spécifiquement entré dans toutes les mathématiques, ni abordé les exposants de cryptage et de décryptage en plus de les regrouper dans «d'autres nombres», mais alors que le module (valeur de n) peut être stocké dans le cadre de la clé privée pour l'optimisationfins, le module est public.Pour calculer la clé privée correspondante, vous auriez besoin des facteurs premiers p et q de n, qui ne font pas partie de la clé publique.Rappelez-vous que [la génération de clé RSA commence par sélectionner p et q] (https://en.wikipedia.org/wiki/RSA_ (cryptosystem) #Key_generation), puis calculez les autres valeurs correspondantes.
@MichaelKjörling, la façon dont je vois (et l'article de wikipedia sur RSA semble être d'accord avec moi) «p» et «q» ne sont que des «variables temporaires» dans le processus de génération de clé.Ils ne font pas partie du ils.Le module, d'autre part, fait partie à la fois de la clé privée et de la clé publique.Vous n'avez pas * besoin de * `p` et` q` pour le déchiffrement, mais vous avez besoin du module.(Je sais que les valeurs dérivées de `p` et` q` peuvent être utilisées pour accélérer le déchiffrement en utilisant le théorème de rappel chinois, mais c'est complètement hors de propos)
Je suppose que nous pouvons convenir que ce que vous avez écrit est une simplification, et comme toutes les simplifications le font, ce n'est pas tout à fait exact, mais assez bien dans son contexte.
John Wu
2017-03-14 04:15:45 UTC
view on stackexchange narkive permalink

La phrase secrète empêche d'accéder à 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 peut utiliser la phrase de passe pour obtenir une copie du certificat qui comprendrait la clé privée. Espérons que les pirates informatiques n'ont pas systématiquement accès à votre magasin de certificats, mais parfois un pirate informatique n'est qu'un employé mécontent.

L'algorithme de clé publique empêche de dériver la clé privée

Si le pirate ne le fait pas avoir accès à votre magasin de certificats, et ne possède que la phrase de passe et la clé publique, il n'est pas possible de dériver la clé privée. Cela est dû à la manière intelligente de configurer l'algorithme RSA. 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 un sens mais pas dans l'autre.

Voici un exemple. Si je vous disais que X * Y = 3014569, et X et Y sont des nombres 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). Par contre, si je vous disais X = 1237 et Y = 2437, il serait très facile pour vous de me dire que X * Y = 3014569 (il suffit de multiplier!) Donc c'est facile dans un sens, difficile dans l'autre façon. C'est ce qu'on appelle le problème de la factorisation principale.

Cela étant dit, il pourrait passer quelques milliers d'années à passer la trappe encore et encore trouvez votre clé privée. Comme ceci:

  1. Parcourez toutes les clés privées possibles
  2. Pour chaque clé privée, dérivez la clé publique
  3. Vérifiez la clé publique calculée par rapport à la cible clé publique

C'est ce qu'on appelle une attaque par force brute. Cela prendrait beaucoup de temps.

Il peut y avoir des raccourcis (par exemple, utilisez 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).

Cela devrait être la réponse acceptée.
Pour développer cette bonne réponse, vous pouvez crypter avec une phrase de passe n'importe quel fichier sensible: archive zip, clé privée, base de données, peu importe.Rien d'unique à propos de la clé privée à cet égard, et une fois accédée, elle n'a aucun rapport avec votre utilisation.
user2233709
2017-03-14 02:53:05 UTC
view on stackexchange narkive permalink

Il est 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 de passe n'aidera pas du tout.

Vous devez comprendre que ssh-keygen génère d'abord une paire de clés qui n'a aucun rapport avec la phrase de passe, et que la phrase de passe sert alors uniquement à chiffrer la clé privée sur votre disque. Par conséquent, la phrase de passe n'est utile que pour quelqu'un qui connaît votre clé privée chiffrée.

Au fait, vous pouvez changer la phrase de passe de votre clé privée (avec ssh-keygen -p ) sans changer la clé publique.

Ok, et quels algorithmes sont là pour déterminer ce qu'est la clé privée?
Dériver la clé privée de la clé publique consiste à trouver les 2 facteurs d'un nombre énorme (4096 bits dans votre cas).Je ne connais pas le meilleur algorithme (public) pour cela, mais Michael Kjörling en a nommé un dans sa réponse (complète)
@unseen_rider L'algorithme de base est la factorisation.Vous avez fait cela à l'école lorsque, par exemple, vous avez fait la division - disons par exemple que la clé publique est le numéro 35 (ou 0x23 en hexadécimal).Alors, comment pouvez-vous diviser ce nombre avec un autre nombre sans reste?Essayons `35 / 2`, vous obtenez 17,5 - échouez.Essayons à nouveau `35 / 3` - échouez et essayez et essayez jusqu'à ce que vous obteniez` 35/5` et que vous obteniez 7 - vous avez trouvé la clé privée!C'est l'algorithme de base.Les gens ont passé beaucoup de temps à trouver des moyens optimisés de le faire
@unseen_rider: Notez que ce que j'ai dit ci-dessus est vrai pour RSA qui utilise la factorisation.Il existe d'autres algorithmes à clé publique comme les courbes elliptiques qui ne sont pas largement utilisés car la factorisation n'est pas encore interrompue (reste toujours difficile).
Peter Green
2017-03-14 18:17:02 UTC
view on stackexchange narkive permalink

Peuvent-ils dériver la clé privée? - Je présume que oui avec suffisamment de temps.

La phrase de passe 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é . Donc, cela revient simplement à savoir si l'attaquant peut dériver la clé privée de la clé publique.

La réponse à cela dépend du type et de la longueur de la clé et des ressources de calcul dont il dispose.

Pour une clé RSA, le moyen le plus connu de la fissurer est de factoriser le module. Une fois le module factorisé, il est alors simple de dériver la clé privée à partir des facteurs de module.

L'algorithme le plus connu pour la factorisation est le tamis général des nombres de champs. 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 elle est considérée comme réalisable pour les agences d'espionnage et les organisations dotées de ressources similaires. Le RSA 2048 bits devrait être sûr à moins qu'il y ait des avancées majeures dans les techniques de factorisation ou qu'une autre manière d'attaquer RSA soit trouvée. 4096 bits est un autre pas en avant dans la paranoïa.

Notez que nous ne pouvons absolument pas affirmer que même une clé de 4096 bits sera sécurisée. Il reste la possibilité 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 de log discret sur un champ modulo-premier . Il s'avère que les algorithmes les plus connus pour cela sont également le tamis général des nombres de champs, mais l'application de cet algorithme au problème du log discret est plus difficile que de l'appliquer au problème de la factorisation des nombres premiers. Figure qu'une clé DSA de 1024 bits est un peu plus difficile à déchiffrer qu'une clé RSA de 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 de log discret sur un champ de courbe elliptique. On pense que c'est beaucoup plus difficile que de le résoudre sur un champ modulo-premier et donc les clés peuvent être plus courtes pour un niveau donné de sécurité supposée.

user134702
2017-03-15 17:27:08 UTC
view on stackexchange narkive permalink

Le chiffrement par 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 dit asymétrique car il n’existe aucun algorithme connu pour produire la clé privée à partir de la clé publique . Cela ne veut pas dire qu'il n'existe pas d'algorithme de ce type, il n'est pas connu .

Étant donné qu'aucun algorithme «inverse» n'existe, le processus de crackage de votre clé privée nécessite du temps, de la 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 8 192 bits. En supposant que l'algorithme de génération de clé de votre plate-forme 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 rapport aux valeurs par défaut est le moyen le plus simple de se protéger des personnes suspectes.

Je dois donc convenir avec les autres qu'il n'y a aucun moyen connu que la phrase de passe et la clé publique peut être utilisée pour casser votre clé privée.



Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 3.0 sous laquelle il est distribué.
Loading...