565 Stimmen

Privater RSA-Schlüssel zum Erzeugen des öffentlichen Schlüssels verwenden?

Das verstehe ich nicht wirklich:

Nach Angaben von https://www.madboa.com/geek/openssl/#key-rsa können Sie einen öffentlichen Schlüssel aus einem privaten Schlüssel erzeugen.

openssl genrsa -out mykey.pem 1024
openssl rsa -in mykey.pem -pubout > mykey.pub

Ursprünglich dachte ich, dass sie zusammen in einem Paar erzeugt werden.

Enthält der private RSA-Schlüssel die Summe? Oder den öffentlichen Schlüssel?

8voto

Rdx Punkte 195

In diesem Code erstellen wir zunächst einen RSA-Schlüssel, der privat ist, aber auch ein Paar öffentlicher Schlüssel enthält. Um den aktuellen öffentlichen Schlüssel zu erhalten, machen wir einfach Folgendes

openssl rsa -in mykey.pem -pubout > mykey.pub

Ich hoffe, Sie erhalten es für weitere Informationen Prüfen Sie dies

8voto

plugwash Punkte 8413

Zunächst eine kurze Zusammenfassung der RSA-Schlüsselerzeugung.

  1. Wähle zufällig zwei wahrscheinliche Primzahlen der entsprechenden Größe (p und q).
  2. Multiplizieren Sie die beiden Primzahlen miteinander, um den Modulus (n) zu erhalten.
  3. Wählen Sie einen öffentlichen Exponenten (e).
  4. Rechnen Sie mit den Primzahlen und dem öffentlichen Exponenten, um den privaten Exponenten (d) zu ermitteln.

Der öffentliche Schlüssel besteht aus dem Modulus und dem öffentlichen Exponenten.

Ein minimaler privater Schlüssel würde aus dem Modulus und dem privaten Exponenten bestehen. Es gibt keinen rechnerisch machbaren, sicheren Weg, um von einem bekannten Modulus und privaten Exponenten zum entsprechenden öffentlichen Exponenten zu gelangen.

Allerdings:

  1. Praktische private Schlüsselformate speichern fast immer mehr als n und d.
  2. e wird normalerweise nicht willkürlich gewählt, sondern es wird einer von einer Handvoll bekannter Werte verwendet. Wenn e einer der bekannten Werte ist und man d kennt, ist es einfach, e durch Ausprobieren herauszufinden.

In den meisten praktischen RSA-Implementierungen kann man also den öffentlichen Schlüssel aus dem privaten Schlüssel gewinnen. Es wäre möglich, ein RSA-basiertes Kryptosystem zu entwickeln, bei dem dies nicht möglich wäre, aber das ist nicht die Regel.

6voto

Mendi Barel Punkte 2886

Die Datei mit dem Namen "privater Schlüssel" enthält viel mehr Informationen als nur den privaten Schlüssel, sie enthält alle Daten (Primzahlen, Modulus, Exponenten usw.), die zur Erzeugung des Paares aus privatem und öffentlichem Schlüssel erforderlich sind.

Und es ist sehr einfach, diese Informationen zu sehen:

openssl genrsa -out private.pem 1024   #generate private key file
openssl rsa -in private.pem -text      #view info in the private key file
openssl rsa -in private.pem -pubout -out public.pem  #extract public key to file
openssl rsa -in public.pem -pubin -text  #view info in the public key file

Sie werden sehen, dass die private Schlüsseldatei die Primzahlen mit allen anderen Informationen enthält, während die öffentliche Datei nur den Modulus und den öffentlichen Exponenten enthält.

0voto

Zimba Punkte 1969

Dies scheint ein gemeinsames Merkmal der vorherrschenden asymmetrischen Kryptographie zu sein; die Erzeugung von öffentlichen/privaten Schlüsseln beinhaltet die Erzeugung des privaten Schlüssels, der das Schlüsselpaar enthält:

openssl genrsa -out mykey.pem 1024

Veröffentlichen Sie dann den öffentlichen Schlüssel:

openssl rsa -in mykey.pem -pubout > mykey.pub

ou

openssl rsa -in mykey.pem -pubout -out mykey.pub

DSA- und EC-Kryptoschlüssel haben dieselbe Funktion: z.B..

openssl genpkey -algorithm ed25519 -out pvt.pem

Dann

openssl pkey -in pvt.pem -pubout > public.pem

ou

openssl ec -in ecprivkey.pem -pubout -out ecpubkey.pem

Die öffentliche Komponente ist an der Entschlüsselung beteiligt, und ihre Beibehaltung als Teil des privaten Schlüssels beschleunigt die Entschlüsselung; sie kann aus dem privaten Schlüssel entfernt und bei Bedarf (zur Entschlüsselung) berechnet werden, als Alternative oder Ergänzung zur Verschlüsselung oder zum Schutz des privaten Schlüssels mit einem Kennwort/Schlüssel/Phrase. z. B.

openssl pkey -in key.pem -des3 -out keyout.pem

ou

openssl ec -aes-128-cbc -in pk8file.pem -out tradfile.pem

Sie können das erste Argument "aes-128-cbc" durch jeden anderen gültigen openssl-Verschlüsselungsnamen ersetzen

-1voto

Ankit Jain Punkte 2146

Verwenden Sie die folgenden Befehle:

  1. openssl req -x509 -nodes -days 365 -sha256 -newkey rsa:2048 -keyout mycert.pem -out mycert.pem

     Loading 'screen' into random state - done
     Generating a 2048 bit RSA private key
     .............+++
     ..................................................................................................................................................................+++
     writing new private key to 'mycert.pem'
     -----
     You are about to be asked to enter information that will be incorporated
     into your certificate request.
     What you are about to enter is what is called a Distinguished Name or a DN.
     There are quite a few fields but you can leave some blank
     For some fields there will be a default value,
     If you enter '.', the field will be left blank.
  2. Wenn Sie dies überprüfen, wird eine Datei mit dem Namen : mycert.pem

  3. openssl rsa -in mycert.pem -pubout > mykey.txt

    writing RSA key
  4. Wenn Sie denselben Dateispeicherort überprüfen, wird ein neuer öffentlicher Schlüssel mykey.txt erstellt worden ist.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X