68 votes

Étant donné une clé privée, est-il possible de dériver sa clé publique?

Quel que soit le peu que je comprends en lisant les divers matériaux, public-privé paire de clés sont à la base de chiffrement assymétrique et aussi quelque chose sur le choix de 2 nombres premiers (qui est à peu près votre clé privée) et en multipliant entre eux (ce qui est un peu votre clé publique), je semble qu'il est possible de générer une clé publique si vous connaissez la clé privée. Est-il correct ou je suis prenant quelque chose?

[MODIFIER]

Ce qui m'a fait plus de confusion, est qu'il n'est pas possible de sérialiser la clé RSA à XML avec seulement la clé privée (à l'aide .NET classe RSACryptoServiceProvider). Pas sûr de savoir si cette limitation est intentionnel ou pas!

62voto

vaab Points 1639

Dans la plupart asymétrique crypto mise en œuvre du système, le seul fait qui est assuré, c'est que vous ne pouvez pas trouver la clé privée de la clé publique. À l'inverse, la recherche de la clé publique à partir de la clé privée est négligeable dans la plupart des cas.

Par exemple, au RSA, vous pouvez créer la clé publique à partir de la clé privée:

openssl rsa -in private.pem -pubout -out public.pem

Ce qui est trompeur est la terminologie: "clé privée" se réfère à 2 concepts différents, si vous parlez de la théorie, ou si vous parlez de la mise en œuvre pratique:

  • L' théorique de la clé privée est le couple (d, n) qui partage parfaitement symétrique (mathématiques), en relation avec (e, n). Si vous comparez ces, on ne peut pas être calculée à partir de l'autre.
  • La pratique de la clé privée (comme dans openssl mise en œuvre par exemple), fait référence à un fichier contenant (d, n) , mais aussi plusieurs valeurs intermédiaires pour la vitesse de décodage but. En outre, la théorie de "inconnu", une partie de la clé publique e est fixé à une valeur commune par convention (qui est 0x10001 dans openssl). Donc en déduire la clé publique (e, n) à partir de la clé privée est trivial pour plus d'une raison.

41voto

sleske Points 29978

Cela dépend de la crypto système.

En RSA, nous avons (en citant Wikipédia):

La clé publique se compose du module n, et le public (ou chiffrement) exposant e. L' la clé privée se compose du module n et le privé (ou le déchiffrement) exposant d, qui doit être gardé secret.

Maintenant, si nous avons n et d (la clé privée), nous ne sommes en manque d'e pour la clé publique. Mais e est souvent assez faible (moins de trois chiffres), ou même fixe (une valeur commune est 65537). Dans ces cas, l'obtention de la clé publique est trivial.

Pour Elliptic Curve Diffie-Hellman, la clé privée est d, et la clé publique de la dG (avec G aussi du public), il est donc trivial ainsi.

9voto

erickson Points 127945

Il dépend de l'algorithme, et ce que vous entendez par "clé privée".

Clé privée RSA sont souvent stockés dans leur "Théorème des restes Chinois" forme. Par exemple, l' RSAPrivateKey structure définie dans PKCS #1 et ré-utilisé par de nombreux autres crypto normes de prendre cette forme. Ce formulaire comprend les deux numéros de secret souvent notée p et q, à partir de laquelle l'indicateur est calculé. Avec indicateur et le privé exposant, le public exposant est vite calculé.

En tout cas, la plupart des paires de clés RSA utilisation 65537 le public, exposant, et le module d'élasticité est toujours réalisé dans le cadre de la clé privée.

6voto

Adam Hawes Points 4153

Dans TOUTE la clé publique de chiffrement du système de la clé publique est mathématiquement liées à la clé privée. C'est très simple.

La clé publique est dérivé de la clé privée au moment de la génération, et avec la clé privée à tout moment dans l'avenir, il est possible de re-tirer la clé publique facilement.

Il n'est pas possible d'aller dans l'autre sens. Donné une clé publique, il n'est pas facile de dériver la clé privée. C'est pourquoi nous pouvons partager en toute sécurité les clés publiques avec d'autres personnes. Si vous avez assez de temps/de cycles CPU vous pourriez force brute, mais il est probablement plus facile d'attendre d'une mathématique attaque sur la touche.

3voto

Colonel Panic Points 18390

Pour le cas spécifique de OpenSSH et ssh-keygen, oui, vous pouvez:

ssh-keygen -y

Cette option va lire un privé OpenSSH format de fichier et d'impression d'une clé publique à stdout.


En général, il dépend de l'algorithme et de ce que vous l'étiquette de la clé privée. Cependant, n'importe quelle mise en œuvre comprendra l'ensemble des informations (les clés publique et privée) dans le dossier secret.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X