Question

De quelque peu que je comprends en lisant divers matériaux, clé privée ou publique, sont la base de cryptage assymétrique et aussi quelque chose sur le choix 2 nombres premiers (ce qui est à peu près votre clé privée) et les multiplier (ce qui est à peu près 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 exact ou je confondais quelque chose?

[EDIT]

Ce qui me fait plus confuse est qu'il est impossible de sérialisation la clé RSA au format XML avec uniquement clé privée (en utilisant la classe .NET RSACryptoServiceProvider). Je ne sais pas si cette limitation est intentionnelle ou non!

Était-ce utile?

La solution

Cela dépend du système Crypto.

RSA , nous avons (citant Wikipedia):

  

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

Maintenant, si nous avons n et d (la clé privée), il nous manque seulement 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, devient la clé publique est trivial.

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

Autres conseils

Dans la mise en œuvre du système de chiffrement les plus asymétrique, le seul fait qui est assuré est que vous ne pouvez pas trouver la clé privée de la clé publique. Dans l'autre sens, trouver la clé publique de la clé privée est trivial dans la plupart des cas.

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

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

Ce qui est trompeur la terminologie: « clé privée » fait référence à 2 concepts différents si vous parlez de la théorie, ou castrés vous parlez de mise en œuvre pratique:

  • théorique clé privée est le couple (d, n) qui partage relation symétrique parfaite (mathématique) avec (e, n) . Si vous comparez ces derniers, on ne peut pas être calculé à partir de l'autre.
  • pratique clé privée (comme dans la mise en œuvre de OpenSSL par exemple), fait référence à un fichier contenant (d, n) , mais aussi plusieurs valeurs intermédiaires importantes pour la vitesse de décodage objectif . En plus de cela, la théorie partie de la clé publique « inconnue » e est souvent fixé à des valeurs communes par convention (qui est 0x10001 par défaut dans OpenSSL et bien qu'elle peut être modifiée, il est fortement recommandé tenir à seulement valeurs très spécifiques ). Alors déduisant la clé publique (e, n) de la clé privée est trivial pour plus d'une raison.

Cela dépend de l'algorithme, et ce que vous entendez par « clé privée ».

clés RSA privées sont souvent stockées dans leur forme « Restes Chinois Théorème ». Par exemple, la structure RSAPrivateKey définie dans PKCS # 1 et réutilisée par de nombreuses autres normes prennent crypto ce formulaire. Cette forme comprend les deux nombres secrets et souvent désigné p q, à partir de laquelle le indicatrice est calculé. Avec l'exposant et totient privé, l'exposant public est rapidement calculé.

Dans tous les cas, la plupart des paires de clés RSA utilisent 65537 comme l'exposant public, et le module est toujours effectué dans le cadre de la clé privée.

En tout système public Crypto clé la clé publique est mathématiquement liée à la clé privée. Il 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 est impossible d'aller dans l'autre sens. Étant donné une clé publique, il est difficile de tirer la clé privée. Voilà pourquoi nous pouvons partager en toute sécurité les clés publiques avec d'autres personnes. Si vous avez des cycles assez de temps / CPU, vous pouvez la force brutale, mais il est probablement plus facile d'attendre une attaque mathématique sur la touche.

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

  

ssh-keygen -y

     

Cette option lire un fichier au format OpenSSH privé et imprimer une clé publique à stdout.


En général, cela dépend de l'algorithme et ce que vous l'étiquette de la clé privée. Cependant, toute mise en œuvre raisonnable comprendra les informations complètes (clés publiques et privées) dans le fichier secret.

Il y a une idée fausse sur ce qui est la clé privée. La clé privée est juste le (d, n) paire et, étant donné que cela, il est impossible de générer la clé publique sauf si vous pouvez supposer que l'exposant public est 65537, ce qui est le cas sur presque toutes les clés rsa.

Si, pour une raison quelconque, l'exposant public est un plus grand nombre, vous ne pouvez pas créer la clé publique du privé.

Cela dit, la valeur stockée sous forme de « clé privée » aux fichiers GDP est non seulement la clé privée, mais contient aussi les principaux facteurs (entre autres) et, par conséquent, il est facile de générer la clé publique de celle-ci.

Oui avec accès à la clé privée de la clé publique peut être générée

clé publique est le module N (et exposant public e, habituellement 65537), la clé privée est donnée par l'deux nombres premiers p, q (et exposant privé d, parfois aussi des parties CRT D_P, d_q pour accélération) Essentiellement, vous avez N = pq et e d = 1 mod ((p-1) (q-1)), vous pouvez également calculer D_P et d_q en utilisant CRT étant donné la clé privée, calcul du module clé publique est la multiplication « ennuyeux » et exposant public est conforme aux spécifications ou calculées en utilisant l'algorithme d'Euclide étendu si la norme e était pas assez bon. étant donné la clé publique, le calcul de la clé privée nécessite soit trouver d (problème RSA) ou p, q (affacturage, voir tamis de champ numérique pour le meilleur algo pour le faire). Ces problèmes sont révélées équivalentes dans des conditions raisonnables [RSA Briser Génériquement équivaut à Factoring, D. Aggarwal et U. Maurer, 2008]

Il est théoriquement possible, mais pour les grandes touches infaisable.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top