Frage

Von welcher wenig ich durch das Lesen verschiedener Material, öffentlich-private Schlüsselpaar sind die Basis für asymmetrisches Verschlüsselungs und auch etwas verstehen, über die Wahl 2 Primzahlen (was in etwa ist Ihr privater Schlüssel) und multipliziert sie (was in etwa den öffentlichen Schlüssel ist ) scheint ich, dass es möglich ist, einen öffentlichen Schlüssel zu generieren, wenn Sie den privaten Schlüssel kennen. Ist es richtig, oder ich bin zu verkennen etwas?

[EDIT]

Was mich eher verwirrend war, dass es nicht möglich ist, den RSA-Schlüssel zu XML mit nur privaten Schlüsseln (mit .NET-Klasse RSACryptoServiceProvider) serialisiert werden. Nicht sicher, ob diese Einschränkung beabsichtigt ist oder nicht!

War es hilfreich?

Lösung

Das hängt von dem Krypto-System.

RSA , wir haben (Zitat Wikipedia):

  

Der öffentliche Schlüssel besteht aus dem Modulus n und der Öffentlichkeit (oder Verschlüsselung) Exponenten e. Das   private Schlüssel bestehen aus dem Modulus n und dem privaten (oder Entschlüsselung) Exponent d, die   geheim gehalten werden muss.

Wenn wir nun n und d (der private Schlüssel) haben, sind wir nur e für den öffentlichen Schlüssel fehlt. Aber e ist oft ziemlich klein (weniger als drei Ziffern) oder sogar fest (ein gemeinsamer Wert ist 65537). In diesen Fällen immer der öffentliche Schlüssel ist trivial.

Elliptic Curve Diffie-Hellman , der private Schlüssel d, und der öffentliche Schlüssel dG (mit G auch der Öffentlichkeit), so ist es auch trivial ist.

Andere Tipps

In den meisten asymmetrischen Kryptosystem-Implementierung, die einzige Tatsache, dass sichergestellt ist, dass Sie nicht den privaten Schlüssel aus dem öffentlichen Schlüssel finden können. Andersherum, den öffentlichen Schlüssel aus dem privaten Schlüssel zu finden, ist trivial in den meisten Fällen.

Zum Beispiel in RSA, können Sie einen öffentlichen Schlüssel aus privaten Schlüssel erstellen mit:

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

Was ist irreführend ist die Terminologie: „Private Key“ bezieht sich auf zwei verschiedene Konzepte, ob Sie von der Theorie sprechen, oder ob Sie sprechen von der praktischen Umsetzung:

  • Die theoretischen private Schlüssel ist das Paar (d, n) , die mit perfekt symmetrisch (mathematischen) Beziehung teilt (e, n) . Wenn Sie diese zu vergleichen, kann man nicht von dem anderen berechnet werden.
  • Das praktische private Schlüssel (wie in Openssl Umsetzung zum Beispiel), bezieht sich auf eine Datei mit (d, n) , aber auch mehrere wichtigen Zwischenwerte für die Dekodierungsgeschwindigkeit Zweck . Zusätzlich zu, dass die theoretisch „unbekannt“ Teil des öffentlichen Schlüssels e festgelegt ist oft auf gemeinsame Werte durch Konvention (die standardmäßig in openssl 0x10001 wird und wenn auch sie geändert werden kann, wird dringend empfohlen, nur halten Sie sich an ganz bestimmte Werte ). Also den öffentlichen Schlüssel herzuleiten (e, n) aus dem privaten Schlüssel ist trivial für mehr als einen Grund.

Es hängt von dem Algorithmus, und was Sie mit „privaten Schlüssel“.

privaten RSA-Schlüssel werden oft in ihrer "Chinese Remainder Theorem" Form gespeichert. Nehmen wir zum Beispiel die RSAPrivateKey Struktur definiert in PKCS # 1 und wiederverwendet von vielen anderen Verschlüsselungsstandards dieses Formular. Diese Form umfasst die beiden Geheimnummern oft bezeichnet p und q, aus dem das totient berechnet wird. Mit totient und dem privaten Exponenten wird der öffentliche Exponent schnell berechnet werden.

Auf jedem Fall der meisten RSA-Schlüsselpaar 65537 als öffentliche Exponenten verwenden, und die Modul immer als Teil des privaten Schlüssels durchgeführt wird.

In jedem öffentlichen Schlüssel Kryptosystem ist der öffentliche Schlüssel mathematisch im Zusammenhang mit dem privaten Schlüssel. Es ist sehr einfach.

Der öffentliche Schlüssel wird von dem privaten Schlüssel bei der Generierung abgeleitet und mit dem privaten Schlüssel an einem beliebigen Punkt in der Zukunft ist es möglich, die öffentlichen Schlüssel leicht neu zu ziehen.

Es ist nicht möglich, den anderen Weg zu gehen. Bei einem öffentlichen Schlüssel ist es nicht einfach, den privaten Schlüssel abzuleiten. Deshalb sind wir sicher öffentlichen Schlüssel mit anderen Menschen teilen können. Wenn Sie genügend Zeit / CPU-Zyklen haben könnten Sie Brute zwingen, aber es ist wahrscheinlich einfacher, für einen mathematischen Angriff auf dem Schlüssel zu warten.

Für den speziellen Fall von OpenSSH und ssh-keygen , ja, Sie können :

  

ssh-keygen -y

     

Mit dieser Option eine private OpenSSH-Format-Datei lesen und einen öffentlichen Schlüssel an stdout drucken.


Im Allgemeinen kommt es auf den Algorithmus und was Sie mit dem privaten Schlüssel beschriften. Jedoch kann jede vernünftige Implementierung wird die vollständige Information (Öffentliche und private Schlüssel) in der geheimen Datei enthalten.

Es ist ein Irrglaube, was der private Schlüssel ist. Der private Schlüssel ist nur das (d, n) Paar und, da nur das, ist es unmöglich, den öffentlichen Schlüssel von ihm zu erzeugen, es sei denn, dass der öffentliche Exponent 65537 ist annehmen kannst, was den Fall ist auf fast all RSA-Schlüssel.

Wenn Sie aus irgendeinem Grund, der öffentliche Exponent eine größere Anzahl ist Sie den öffentlichen Schlüssel aus dem privaten man nicht schaffen kann.

Wie gesagt, gespeichert der Wert als „private Schlüssel“ zu pem Dateien ist nicht nur der private Schlüssel, sondern enthält auch die Primfaktoren (unter anderem), und daher ist es einfach, den öffentlichen Schlüssel von ihm zu erzeugen.

Ja mit Zugriff auf den privaten Schlüssel kann der öffentliche Schlüssel erzeugt wird

öffentliche Schlüssel Modul N (und öffentlichen Exponenten e, in der Regel 65537), private Schlüssel werden durch die zwei Primzahlen p, q (und privaten Exponenten d, manchmal auch CRT Teile d_P, d_q für Beschleunigung) gegeben Sie haben im Wesentlichen N = pq und e d = 1 mod ((P-1) (q-1)), kann man auch berechnen D_P und d_q CRT unter Verwendung gegeben private Schlüssel, Berechnung von Public-Key-Modul ist „langweilig“ Multiplikation und Öffentliche Exponenten sind in der Spezifikation oder berechnete erweiterten Euclid-Algorithmus, wenn Standard-E nicht gut genug war. Öffentliche Schlüssel gegeben, Berechnung des privaten Schlüssels erfordert entweder zu finden, d (RSA Problem) oder p, q (Factoring, Zahlkörpersieb sieht für die besten algo, dies zu tun). Diese Probleme werden gezeigt als gleichwertig zu angemessenen Bedingungen [Brechen von RSA generisch ist Entspricht Factoring, D. Aggarwal und U. Maurer, 2008]

Es ist theoretisch möglich, aber für große Tasten rechnerisch nicht machbar.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top