Je ne comprends pas vraiment celui-ci:
selon: http://www.madboa.com/geek/openssl/#key-rsa , vous pouvez générer une clé publique à partir d'une clé privée.
openssl genrsa -out mykey.pem 1024
openssl rsa -in mykey.pem -pubout > mykey.pub
Ma pensée initiale était qu'ils sont générés par paire ensemble. La clé privée RSA contient-elle la somme? ou la clé publique?
Réponses:
produira en fait une paire de clés publique-privée. La paire est stockée dans le
mykey.pem
fichier généré .va extraire la clé publique et l'imprimer. Voici un lien vers une page qui décrit mieux cela.
EDIT: Consultez la section des exemples ici . Pour simplement sortir la partie publique d'une clé privée:
Pour obtenir une clé publique utilisable à des fins SSH, utilisez ssh-keygen :
la source
e
etd
dans la littérature courante). Ni l'un ni l'autre n'est mathématiquement privé ou public, ce sont des étiquettes qui sont arbitrairement attribuées lors de la création. Ils pourraient tout aussi bien être affectés à l'envers. Générer l'un à partir de l'autre est un problème équivalent. Le.pem
format contient tout un tas d'informations, y compris les deux exposants, et donc les deux clés, non?openssl genrsa
commande. Cependant, un fichier de clé publique distinct n'est pas créé à la même étape. Pour extraire la clé publique du fichier de clé privée dans un fichier de clé publique distinct, vous utilisez votreopenssl rsa -in private.pem -pubout -out public.pem
commande. Lorsque vous produisez une clé publique de cette façon, elle est extraite du fichier de clé privée, non calculée. Voir ma réponse ci-dessous pour plus de détails.Les personnes recherchant une clé publique SSH ...
Si vous cherchez à extraire la clé publique pour l'utiliser avec OpenSSH, vous devrez obtenir la clé publique un peu différemment
Ce format de clé publique est compatible avec OpenSSH. Ajoutez la clé publique à
remote:~/.ssh/authorized_keys
et vous serez prêt à partirdocuments de
SSH-KEYGEN(1)
la source
openssl rsa -in key.pem -pubout -out pubkey.pem
n'a pas été acceptée, car la sortie est évidemment une clé publique au format PEM. J'ai donc eu cette erreur: "La clé n'est pas valide. Elle doit commencer par 'ssh-rsa' ou 'ssh-dss'. Vérifiez que vous copiez la moitié publique de la clé".ssh-keygen -y [-f input_keyfile]
Génère cependant le format correct que prend Github.Dans la plupart des logiciels qui génèrent des clés privées RSA, y compris openssl, la clé privée est représentée comme un objet PKCS # 1 RSAPrivatekey ou une variante de celui-ci:
Comme vous pouvez le voir, ce format a un certain nombre de champs, y compris le module et l'exposant public et est donc un sur-ensemble strict des informations dans une clé publique RSA .
la source
Ma réponse ci-dessous est un peu longue, mais j'espère qu'elle fournit certains détails qui manquent dans les réponses précédentes. Je vais commencer par quelques déclarations connexes et enfin répondre à la question initiale.
Pour crypter quelque chose à l'aide de l'algorithme RSA, vous avez besoin d'un module et d'une paire d'exposants de cryptage (public) (n, e). Voilà votre clé publique. Pour décrypter quelque chose à l'aide de l'algorithme RSA, vous avez besoin d'un module et d'une paire d'exposants de décryptage (privés) (n, d). Voilà votre clé privée.
Pour crypter quelque chose à l'aide de la clé publique RSA, vous traitez votre texte en clair comme un nombre et vous l'élevez à la puissance du module e n:
Pour décrypter quelque chose à l'aide de la clé privée RSA, vous traitez votre texte chiffré comme un nombre et l'élevez à la puissance du module d n:
Pour générer une clé privée (d, n) en utilisant openssl, vous pouvez utiliser la commande suivante:
Pour générer une clé publique (e, n) à partir de la clé privée en utilisant openssl, vous pouvez utiliser la commande suivante:
Pour disséquer le contenu de la clé RSA privée private.pem générée par la commande openssl ci-dessus, exécutez la commande suivante (sortie tronquée aux étiquettes ici):
La clé privée ne doit-elle pas consister en une paire (n, d) uniquement? Pourquoi y a-t-il 6 composants supplémentaires? Il contient e (exposant public) afin que la clé RSA publique puisse être générée / extraite / dérivée de la clé RSA privée private.pem. Les 5 autres composants sont là pour accélérer le processus de décryptage. Il s'avère qu'en pré-calculant et en stockant ces 5 valeurs, il est possible d'accélérer le décryptage RSA par un facteur de 4. Le décryptage fonctionnera sans ces 5 composants, mais cela peut être fait plus rapidement si vous les avez à portée de main. L'algorithme d'accélération est basé sur le théorème des restes chinois .
Oui, la clé privée RSA private.pem contient en fait toutes ces 8 valeurs; aucun d'eux n'est généré à la volée lorsque vous exécutez la commande précédente. Essayez d'exécuter les commandes suivantes et comparez la sortie:
Cette structure de la clé privée RSA est recommandée par le PKCS # 1 v1.5 comme représentation alternative ( seconde ). La norme PKCS # 1 v2.0 exclut complètement les exposants e et d de la représentation alternative. PKCS # 1 v2.1 et v2.2 propose d'autres modifications à la représentation alternative, en incluant éventuellement plus de composants liés au CRT.
Pour voir le contenu de la clé publique RSA public.pem, exécutez ce qui suit (sortie tronquée aux étiquettes ici):
Pas de surprise ici. C'est juste (n, e) paire, comme promis.
Répondant enfin à la question initiale: comme cela a été montré ci-dessus, la clé RSA privée générée à l'aide d'openssl contient des composants des clés publiques et privées et d'autres encore. Lorsque vous générez / extrayez / dérivez une clé publique à partir de la clé privée, openssl copie deux de ces composants (e, n) dans un fichier séparé qui devient votre clé publique.
la source
e
soit toujours 655370x010001
. C'est probablement un défaut pour choisir l'exposant public et c'est probablement pourquoi dans la page de manuel, et presque partout oùgenrsa
est expliqué commeto generate the private key
. Le public est un peu évident.La clé publique n'est pas stockée dans le fichier PEM comme certains le pensent. La structure DER suivante est présente dans le fichier de clé privée:
Il y a donc suffisamment de données pour calculer la clé publique (module et exposant public), ce qui
openssl rsa -in mykey.pem -pubout
faitla source
ici, dans ce code, nous créons d'abord une clé RSA qui est privée, mais elle a également une paire de sa clé publique, donc pour obtenir votre clé publique réelle, nous le faisons simplement
j'espère que vous l'obtiendrez pour plus d'informations vérifier cette
la source
Tout d'abord un bref récapitulatif sur la génération de clés RSA.
La clé publique est constituée du module et de l'exposant public.
Une clé privée minimale serait constituée du module et de l'exposant privé. Il n'y a aucun moyen infaillible faisable sur le plan informatique de passer d'un module connu et d'un exposant privé à l'exposant public correspondant.
Toutefois:
Ainsi, dans la plupart des implémentations RSA pratiques, vous pouvez obtenir la clé publique à partir de la clé privée. Il serait possible de construire un cryptosystème basé sur RSA là où cela n'était pas possible, mais ce n'est pas chose faite.
la source
la source