Kann man den Private mit dem Public Key vertauschen?
Wenn ich ein Text mit meinem Private Key verschlüssele, kann man ihn nur mit meinem Public Key entschlüsseln.
Wenn ich ein Text mit meinem Public Key verschlüssele, kann man ihn nur mit meinem Private Key entschlüsseln.
Public und Private Key kann man also sozusagen vertauschen, das Prinzip funktioniert immer noch?
Vielen Dank
4 Antworten
Ja das ist möglich und für moderne Kryptosysteme auch essentiell. Verschlüsselung mit einem öffentlichen Schlüssel stellt nur sicher, dass nur der gewünschte Empfänger die Nachricht lesen kann, gibt dem Empfänger jedoch keine Angabe über die Herkunft der Nachricht. Durch Verschlüsselung mit dem privaten Schlüssel ist das möglich, weshalb man das auch Signatur nennt.
Solch eine Signatur ist zum Beispiel für SSL/TLS relevant, da so die Zertifikate von Zertifizierungsstellen signiert werden.
Doch im Prinzip ist es das. Meist wird jedoch nur ein Hash signiert, weil das Verschlüsseln von großen Datenmengen mit asymmetrischer Verschlüsselung sehr rechenintensiv ist.
Hier zum Beispiel die Signaturalgorithmen in java.security:
https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#Signature
Jedes mal Hash + asymmetrisches Verschlüsselungsverfahren.
Na,meist willst Du ja nicht die Datenmenge doppelt schicken, von daher nutzt Du eine Einwegfunktionfunktion, deren Ergebnis Du mit dem privaten Schlüssel verschlüsselst (signierst).
Der Empfänger kann dann den Fingerabdruck entschlüsseln und schauen, ob der Text den gleichen Abdruck liefert.
Ich habe die Darstellung bewußt einfach gehalten.
Frage: Ich generiere mir ein Schlüsselpaar, also zuerst einen private Key, und von diesem leite ich einen public Key her.
Wenn ich nun den hergeleiteten public Key als private Key benutzte, also geheim halte, und den private Key als public Key missbrauche, also die beiden Schlüssel einfach von Anfang an vertausche,
besteht dann die Gefahr, dass ein Angreiffer vom veröffentlichten Schlüssel meinen geheimen Schlüssel herleitet, genau so wie ich es bei der Key-Pair Generierung gemacht habe?
Um den jeweils anderen Verschlüsselungsexponenten mit dem erweiterten euklidischen Algorithmus zu berechnen benötigt man den Totient des RSA-Moduls, welcher aber nur in absehbarer errechenbar ist, wenn man die Primfaktoren kennt, aus welchen das RSA-Modul berechnet wurde. Diese sind aber nach der Schlüsselerstellung nicht mehr vorhanden.
Wie du die Reihenfolge beschrieben hast, ist sie eigentlich falsch herum. Man beginnt mit dem öffentlichen Exponent und berechnet dann den privaten Exponent. Du solltest die Funktion der Schlüssel aber trotzdem nicht tauschen, da der öffentliche Exponent meist nicht zufällig gewählt wird.
Ja, vom Grundprinzip her sind beide Schlüssel in ihrer Funktion untereinander tauschbar. Welcher auf DAUER welche der Rollen übernimmt, ist reine Festlegungssache und natürlich können die Rollen nach einmaliger Festlegung nicht mehr gewechselt werden, denn Du hast den öffentlichen Schlüssel ja in der Regel veröffentlicht.
Ja, vom Grunzprinzip her sind beide Schlüssel in ihrer Funktion untereinander tauschbar.
Wie bei den Schweinen. :)
Frage: Ich generiere mir ein Schlüsselpaar, also zuerst einen private Key, und von diesem leite ich einen public Key her.
Wenn ich nun den hergeleiteten public Key als private Key benutzte, also geheim halte, und den private Key als public Key missbrauche, also die beiden Schlüssel einfach von Anfang an vertausche,
besteht dann die Gefahr, dass ein Angreiffer vom veröffentlichten Schlüssel meinen geheimen Schlüssel herleitet, genau so wie ich es bei der Key-Pair Generierung gemacht habe?
Du kannst weder aus dem privaten Schlüssel den öffentlichen ableiten, noch umgekehrt, es sei denn, Du kennst deren Produkt, dann wird es ja trivial.
Der public Key wird auch nicht aus dem private Key abgeleitet, sie werden unabhängig voneinander generiert.
So funktioniert das nicht. Bei antisymmetrischen Verschlüsselungsverfahren kann der public key nur verschlüsseln und der der private key nur entschlüsseln. Das macht doch sonst keinen Sinn, wenn du mit deinem private key etwas verschlüsselst, aber der public key so wie der name schon sagt öffentlich zugänglich ist. Dann braucht man auch keine Verschlüsselung.
Vielleicht meinst du ja signieren? Du kannst mit einem private key etwas signieren und mit einem public key verifizieren.
Mit dem privaten Schlüssel zu verschlüsseln ist signieren, da besteht kein Unterschied.
Das, was du schreibst, ist falsch!
Es ist zwar unüblich mit dem Public-Key zu verschlüsseln und mit dem Privaten zu entschlüsseln, aber dafür gibt es tatsächlich sehr gute Anwendungsfälle.
Nicht umsonst bieten so ziemlich alle größeren Cryptobibliotheken extra Funktionalitäten dafür an. :)
Das wird oft genutzt, um eine Art von signierten und verschlüsselten Nachrichten zu erzeugen.
Frage: Ich generiere mir ein Schlüsselpaar, also zuerst einen private Key, und von diesem leite ich einen public Key her.
Wenn ich nun den hergeleiteten public Key als private Key benutzte, also geheim halte, und den private Key als public Key missbrauche, also die beiden Schlüssel einfach von Anfang an vertausche,
besteht dann die Gefahr, dass ein Angreiffer vom veröffentlichten Schlüssel meinen geheimen Schlüssel herleitet, genau so wie ich es bei der Key-Pair Generierung gemacht habe?
Vielen Dank!
Habe auch noch einen Stackoverflow-Beitrag gefunden der Dir zustimmt :)
Das Signieren mit dem Private Key und das Verschlüsseln mit selbigem ist also grundsätzlich für das Selbe (authentifizierung) zu gebrauchen, oder gibt es grössere Unterschiede?
Also ist Signieren = Verschlüsseln (mit dem Private Key)? Ist das Signieren nicht etwas (wenig) anderes?