RSA - Können Sie einen öffentlichen Schlüssel aus einem privaten Schlüssel erstellen?

7

Ich erstelle eine Verschlüsselungsstrategie für ein Laborprojekt und möchte wissen, ob die Möglichkeit besteht, einen öffentlichen Schlüssel nur mit dem privaten Schlüssel zu erstellen?

Kann der öffentliche Schlüssel andernfalls nur gleichzeitig mit dem privaten Schlüssel eines Schlüsselgenerators erstellt werden?

P.S. Ein schnelles Google hat nicht wirklich geholfen.

    
Steven 15.06.2011, 01:30
quelle

4 Antworten

10

Der private und der öffentliche Schlüssel werden zusammen erstellt. Außerdem enthält das Standardspeicherformat für einen privaten RSA-Schlüssel alle öffentlichen Schlüsselfelder, da es für optimierte Implementierungen und Maskierung (Schutz gegen einige Seitenkanalangriffe) nützlich ist. Siehe den RSA-Standard selbst: PKCS # 1 .

Bearbeiten: Frage wurde bearbeitet, ursprünglich war es nur RSA. Für einen anderen asymmetrischen Algorithmus besteht keine Anforderung, dass der öffentliche Schlüssel von dem privaten Schlüssel abgeleitet werden kann, und es besteht auch keine Anforderung des Gegenteils. Für auf diskreten Logarithmen basierende Algorithmen (Diffie-Hellman, El-Gamal, DSA und die elliptischen Kurvenvarianten von all diesen) wird der öffentliche Schlüssel leicht aus dem privaten Schlüssel berechnet. Es ist möglich, eine degenerierte RSA zu konzipieren, in der die Kenntnis des privaten Schlüssels die Rekonstruktion des öffentlichen Schlüssels nicht erlaubt, aber dies erfordert nicht das Speichern einiger Schlüsselelemente, die für eine gute Leistung benötigt werden (in allen Details ermöglicht das Speichern der RSA-Modulfaktoren) für eine 4x-Geschwindigkeitssteigerung durch den Chinesischen Restsatz, so dass jeder die Faktoren speichert). Auf einer eher konzeptuellen Basis ist der öffentliche Schlüssel, naja, öffentlich, daher wird angenommen, dass "jeder" es weiß; Praktisch gesehen enthält das Speicherformat für private Schlüssel fast immer auch Vorkehrungen zum Speichern des öffentlichen Schlüssels oder zumindest ausreichende Daten, um den öffentlichen Schlüssel wieder aufzubauen.

    
Thomas Pornin 15.06.2011, 01:33
quelle
7

Ja, Sie können dies tun (für einige, wahrscheinlich nicht alle, pkc Schemata). Aus der ssh-keygen-Man-Datei:

-y Lesen Sie die private Schlüsseldatei und drucken Sie den öffentlichen Schlüssel.

    
jkraybill 15.06.2011 01:39
quelle
2

Hängt vom Algorithmus ab. Mit RSA können Sie nicht, mit EC können Sie. Der öffentliche Schlüssel wird jedoch normalerweise immer zusammen mit dem privaten Schlüssel gespeichert (natürlich nicht umgekehrt), also ist das nicht wirklich ein Problem (wenn Sie den privaten Schlüssel haben, enthält dieselbe Datei auch den öffentlichen Schlüssel ).

    
Thilo 15.06.2011 02:11
quelle
0

Extrahieren eines öffentlichen RSA-Schlüssels von einem privaten Schlüssel über die Befehlszeile

Der Befehlszeilenvergleich zeigt, dass es keinen Unterschied zwischen einem öffentlichen RSA-Schlüssel und einem extrahierten Schlüssel gibt, wenn Sie Leerzeichen ignorieren.

  1. Generieren Sie die öffentliche private Schlüsselpaarung unter dem Home-Verzeichnis ohne Passphrase und kein coment.

    ssh-keygen -t rsa -f ~/id_rsa -N '' -C ""

  2. Generieren Sie den öffentlichen Schlüssel in die Datei 'extrahierter_öffentlicher_Schlüssel'

    ssh-keygen -y -f '/home/vagrant/id_rsa' > extracted_public_key

  3. Vergleichen Sie den öffentlichen Schlüssel mit der Datei 'extrahierter_öffentlicher_Schlüssel' und ignorieren Sie Leerraum.

    diff -b id_rsa.pub extracted_public_key

Bei der Ignorierung von Leerzeichen am Ende von id_rsa.pub gibt es keinen Unterschied zwischen einem öffentlichen Schlüssel und einem extrahierten Schlüssel.

    
not a patch 19.05.2014 15:32
quelle

Tags und Links