Hallo Leute,
Ich habe Probleme beim Verstehen der asymmetrischen Verschlüsselung.
Hoffentlich kann mir jemand das hier erklären, denn sonst habe ich noch
weniger Vertrauen in verschlüsselte E-Mails und https/SSL+TLS als
sowieso schon.
Um es auf den Punkt zu bringen: wieso kann man trotz dessen, dass die
Algorithmen und die öffentlichen Schlüssel bekannt sind, nicht auf die
privaten Schlüssel durch reine Logik kommmen?
Welche Operationen kann man denn nicht umkehren, sodass man nicht mit
dem öffentlichen Schlüssel die damit verschlüsselte Nachricht wieder
entschlüsseln kann? Wie soll soetwas gehen? Klingt irgendwie nach
Zauberei...
Denn "mathematisch" gesehen müsste es doch so gehen:
1
A ------- Algorithmus 1 (öffentl. Schlüssel) -------> B
und laut PGP wieder zurück mit
1
B ------- Algorithmus 2 (privater Schlüssel) -------> A
<--- bedeutet Entschlüsseln (Umkehrung des geschriebenen)
3
4
Also Umkehrung von Algorithmus 1 mit öffentl. Schlüssel (=Entschlüsseln) = Algorithmus 2 mit privatem Schlüssel (=Entschlüsseln)
Die beiden Algorithmen sind bekannt, der öffentliche Schlüssel auch. Wie
wird der private Schlüssel generiert, wenn nicht in einem solchen
Zusammenhang?
Was ist mein Denkfehler?
Danke für jeden Tipp
https://de.wikipedia.org/wiki/Elgamal-Verschl%C3%BCsselungsverfahren
würde ich jetzt spontan empfehlen.
Da ist ein Beispiel mit dabei.
Einfach nachvollziehen.
Ansonsten die einschlägigen Scripte aus Mathe oder Informatik der
diversen Universitäten. Das ist schon grob eine millionen mal erklärt
worden.
hope that you can help me schrieb:> Was ist mein Denkfehler?
Dass es mathematische Operationen gibt, die zwar in beide Richtungen
durchführbar sind, aber nur in einer davon in realistischer Zeit. Sowas
wie eine Multiplikation zweier sehr grosser Primzahlen und die Zerlegung
des Produktes in beide Faktoren.
Ein Glas Milch und ein Glas Wasser zusammenschütten ist auch sehr
einfach. Auch wenn es prinzipiell möglich ist, das wieder rückgängig zu
machen, ist es in der Praxis schwierig ...
A. K. schrieb:> Sowas> wie eine Multiplikation zweier sehr grosser Primzahlen und die Zerlegung> des Produktes in beide Faktoren.
Das dürfte wohl eines der Standardverfahren sein.
Ich habe mir zwei Primzahlen gedacht. Das hat etwa zehn Sekunden
gedauert. Das Produkt dieser Zahlen ist 5561. Wie lange brauchst du, um
nur mit einem Taschenrechner die beiden Primzahlen rauszufinden?
Die Zahlen sind 67 und 83. Dafür hättest du aber sicher länger als zehn
Sekunden gebraucht. Genauso ist es bei Computern, dann natürlich mit
deutlich größeren Zahlen.
Restwertbildung kann man nicht umkehren. 17 % 5 = 2, aber aus der 2 und
der 5 wieder eindeutig die 17 zu generieren geht nicht.
Es gibt zudem sogenannte Einwegfunktionen, die sich in einer Richtung
sehr schnell, in der anderen (bei ausreichend großen Zahlen) praktisch
nicht berechnen lassen. Die Exponentialfunktion ist schnell, der
Logarithmus ist langsam. Darauf kann man wunderbar
Public-Key-Kryptografie aufbauen:
https://de.wikipedia.org/wiki/Diffie-Hellman-Schl%C3%BCsselaustausch#Funktionsweise
Was dabei das Verständnis erleichtert: 1) Verschlüsseln und
Entschlüsseln sind im Allgemeinen der gleiche Algorithmus mit
verschiedenen Teilen des gleichen Schlüsselpaars (wie im
Farbmisch-Beispiel).
2) Wenn man mit dem öffentlichen Schlüssel des Empfängers verschlüsselt,
kann nur der Empfänger mit seinem privaten Schlüssel die Nachricht
wieder entschlüsseln. Das nennt man Verschlüsseln (offensichtlich).
Wenn man aber mit seinem eigenen privaten Schlüssel verschlüsselt, kann
jeder Empfänger die Nachricht mit dem öffentlichen Schlüssel des
Absenders wieder entschlüsseln (was zur Geheimhaltung natürlich nicht
hilft :D). Das nennt man daher Signieren, weil damit eindeutig
sichergestellt ist, dass die Nachricht vom Besitzer des privaten
Schlüssels kommt.
MfG, Arno
Zunächst, deine Pfeile ergeben für mich so wenig sinn. Public Key: immer
verschlüsseln. Private Key: entschlüsseln oder signieren.
Wie das Private-Public Schlüsselpaar generiert wird, ist vom jeweiligen
Algorithmus abhängig. Oft wird der Public Key aus dem private Key
generiert. Man verwendet dazu sogenannte Einwegfunktionen.
https://de.wikipedia.org/wiki/Einwegfunktion
Einwegfunktionen(1) sind, wie alle Funktionen, in der tat umkehrbar, in
dem sinne, dass man mögliche ursprüngliche Resultate dazu finden oder
berechnen könnte. Mit momentaner Technik würden die momentan bekannten
Verfahren aber zu lange dauern, als dass man den Key rechtzeitig finden
würde, sofern man einen ausreichend gossen Wertebereich verwendet.
Ob es effektiv Funktionen gibt, die sich nicht in P zeit umzehren
lassen, ist unbekannt. Es gibt aber welche, von denen man annimmt, dass
sie nicht in P zeit umkehrbar sind.
Die meisten gehen mittlerweile von P!=NP aus, aber ich setze eher auf
P=NP.
Bei längeren Inhalten sollte man dann zusätzlich noch einen
Symmetrischen schlüssel verwenden, und mit diesem den eigentlichen
Inhalt verschlüsseln. Das wird z.B. bei TLS (war früher SSL), bei LUKS,
TrueCrypt, etc. so gemacht.
1) https://de.wikipedia.org/wiki/EinwegfunktionArno schrieb:> Wenn man aber mit seinem eigenen privaten Schlüssel verschlüsselt, kann> jeder Empfänger die Nachricht mit dem öffentlichen Schlüssel des> Absenders wieder entschlüsseln (was zur Geheimhaltung natürlich nicht> hilft :D). Das nennt man daher Signieren, weil damit eindeutig> sichergestellt ist, dass die Nachricht vom Besitzer des privaten> Schlüssels kommt.
Nein, Signierte Nachrichten sind nicht Verschlüsselt. Würde man das tun,
wäre der Private schlüssel schon nach wenigen Nachrichten nicht mehr so
privat.
Ein paar Klarstellungen:
1. Schlüsselerzeugung
Bei einer asymetrischen Verschlüsselung erstellt ein
Schlüsselerzeugungsalgorithmus aus einem "Geheimnis" ein
Schlüsselpärchen. Einer der beiden Schlüssel -egal welcher- wird per
Definition zum privaten Schlüssel und muss unbedingt geheimgehalten
werden. Dazu wird dieser oft nochmals mit einem symetrischen Verfahren
verschlüsselt, bei dem z.B. ein Passwort zum Ver- und Entschlüssel
genutzt wird.
2. Schlüsselgebrauch (Verschlüsseln)
Wenn mit jemand eine geheime Nachricht senden will, verschlüsselt dieser
die Nachricht mit meinem öffentlichen Schlüssel. Mit dem
geheimgehaltenen privaten Schlüssel kann ich (und nur ich) dann die
Nachricht entschlüsseln.
Das Verschlüsseln von Nachrichten mit dem privaten Schlüssel ist zwar
möglich, aber sinnlos, da diese ja mit dem öffentlichen Schlüssel
gelesen werden können.
Da das Verschlüsseln mit asymetrischen Verfahren sehr rechenaufwenddig
ist, wird die Nachricht in den meisten Verfahren mit einem on-the-fly
gebildeten symetrischen Schlüssel verschlüsselt. Dieser symetrische
Schlüssel wird dann mit dem asymetrischen Verfahren verschlüsselt und
mitübertragen.
So funktionieren dann auch viele Unternehmeslösungen, bei denen mehrer
Personen Zugriff auf verschlüsselte Dokumente haben sollen: Hier wird
der eigentlich symetrische Schlüssel dann einzeln mit mehreren
öffentlichen Schlüsseln verschlüsselt, so dass jeder Besitzer eines
entsprechenden Private-Key das Dokument entschlüsseln kann.
Administratoren können -ohne selbst die Nachricht lesen zu können-
Berechtigungen entfernen, indem einfach ein solcher Eintrag entfernt
wird. Weitere Berechtigungen erteilen kann nur jemand, der Zugriff auf
den unverschüsselten symetrischen Key hat.
3. Schlüsselgebrauch (Signatur)
Eine Signatur ist etwas anderes als eine Verschlüsselung. Bei einer
Signatur bleibt die Nachricht im Klartext enthalten, es wird jedoch ein
Hash darüber gebildet, der mit dem jeweils privaten Schlüssel
verschlüsselt wird. Der verschlüsselte Hash wird der Nachricht -analog
zu einer Unterschrift- hinzugefügt. Der Empfänger der Nachricht kann
den Hash entschlüsseln und die Nachricht somit verifizieren.
Meist ist eine Nachricht mit dem Public-Key des Empfängers verschlüsselt
und mit dem Private-Key des Absenders signiert. Wenn der Absender geheim
bleiben möchte, kann er zunächst signieren und die signierte Nachricht
verschlüsseln.
4. Schlüsselvertrauen
Allen Verfahren liegt zugrunde, dass die verwendeten öffentlichen
Schlüssel wirklich den Absendern gehören. Hier kommen Lösungen wir das
Web-of-Trust oder die Zertifizierungsstellen (CA) für X.500 Zertifikate
zum Einsatz. Ein Zertifikat ist nichts anderes, als ein öffentlicher
Schlüssel, der mit einem privaten Schlüssel einer "vertrauenswürdigen"
Instanz signiert ist.