End to End Verschlüsselung - Wie funktioniert das?

Flamingo26

Lieutenant
Registriert
Nov. 2010
Beiträge
708
Hey Leute,

Leider finde ich keine klare Antwort. Und zwar geht es um das Verständnis der End-to-End Verschlüsselung.
So wie ich das verstanden habe, hat jeder Nutzer einen privaten und einen öffentlichen Schlüssel.
Der private verbleibt auf dem Gerät und der öffentliche wird weiter gegeben, damit Andere einem Nachrichten schicken können und den Schlüssel dafür benutzen können.
Mit Hilfe von diesem öffentlichen Schlüssel wird ein neuer Schlüssel erstellt mit dem die Nachricht verschlüsselt wird.
Wie aber erkennt der Empfänger den Schlüssel um die Nachricht zu entschlüsseln?
Ich meine wenn man einen öffentlichen Schlüssel hat, kann doch jeder die Nachricht lesen der diesen Schlüssel hat.
Was verstehe ich da falsch?

Danke schon mal und ich hoffe ich habe keinen Thread überlesen!

Gruß,

Flamingo26
 
Hi,
nein, du verwendest den öffentlichen Schlüssel des Empfängers um eine Nachricht zu verschlüsseln. Der Empfänger kann dann mit seinem privaten Schlüssel die Nachricht wieder entschlüsseln. Das entschlüsseln funktioniert dann ausschließlich mit dem privaten Schlüssel des Empfängers.

Greetz
hroessler
 
Zuletzt bearbeitet von einem Moderator:
Ach okay, wobei mich mir noch nicht so ganz erschließt wieso man das nicht mit dem öffentlichen Schlüssel machen kann, weil man mit diesem ja wissen müsste, in welcher Form die Nachricht verschlüsselt wurde. So grob hab ich es verstanden, aber vielleicht kannst du mir das ja noch erklären?
 
Zuletzt bearbeitet:
Hi,
der öffentlichen Schlüssel des Empfängers dient nur zum Verschlüsslen. Wenn eine Nachricht an dich geschickt werden würde, wäre diese mit deinem öffentlichen Schlüssel verschlüsselt. Nur du mit deinem privaten Schlüssel kannst diese dann entschlüsslen.

Greetz
​hroessler
 
Dahinter stecken komplexe Mathematische Operationen mit dem Ergebnis, das man mit einem öffentlichen Schlüssel zwar verschlüsseln, aber nicht entschlüsseln kann. Entschlüsseln kann man nur mit dem Privaten.


Ein asymmetrisches Kryptosystem oder Public-Key-Kryptosystem ist ein kryptographisches Verfahren, bei dem im Gegensatz zu einem symmetrischen Kryptosystem die kommunizierenden Parteien keinen gemeinsamen geheimen Schlüssel zu kennen brauchen. Ein Benutzer erzeugt hier ein Schlüsselpaar, das aus einem geheimen Teil (privater Schlüssel) und einem nicht geheimen Teil (öffentlicher Schlüssel) besteht. Der öffentliche Schlüssel ermöglicht es jedem, Daten für den Inhaber des privaten Schlüssels zu verschlüsseln, dessen digitale Signaturen zu prüfen oder ihn zu authentifizieren. Der private Schlüssel ermöglicht es seinem Inhaber, mit dem öffentlichen Schlüssel verschlüsselte Daten zu entschlüsseln, digitale Signaturen zu erzeugen oder sich zu authentisieren.

Seite „Asymmetrisches Kryptosystem“. In: Wikipedia, Die freie Enzyklopädie. Bearbeitungsstand: 19. Februar 2014, 12:34 UTC. URL: http://de.wikipedia.org/w/index.php?title=Asymmetrisches_Kryptosystem&oldid=127730086 (Abgerufen: 22. Februar 2014, 22:40 UTC)

Der Link zu Wikipedia erklärt das ganz gut.
 
Zuletzt bearbeitet:
Dann könnte jeder der den öffentlichen Schlüssel hat, jede Nachricht entschlüsseln. Es geht aber nur den Empfänger was an. Er hat (hoffentlich) als einziger seinen privaten Schlüssel. Somit kann nur er die Nachricht lesen. Sonst könntest du das mit dem Verschlüsseln auch bleiben lassen ;-)

Greetz
​hroessler
 
Zuletzt bearbeitet von einem Moderator:
Wie gesagt, das ist höhere Algebra. Du kannst dich gern mal mit Elgamal befassen, das ist eines der elementaren asymmetrischen Verfahren. Nach ein paar Beispielen wirst du auch sehen, wieso nur der PRIVATE Schlüssel entschlüsseln kann bzw. der öffentliche nur verschlüsselt.

Fakt ist:
Du machst deinen öffentlichen Schlüssel öffentlich (döööh) bekannt, behältst deinen privaten aber streng geheim.
Jemand will dir eine Nachricht zukommen lassen: Er nimmt deinen öffentlichen Schlüssel, verschlüsselt damit und ab die Post. Nur du, mit deinem Privaten, kannst entschlüsseln. Sonst niemand. Aber jeder kann deinen öffentlichen Schlüssel verwenden, um dir verschlüsselte Nachrichten zukommen zu lassen.

Alles andere (also symmetrische Verschlüsselung) würde auch keinen Sinn ergeben, denn hierfür muss der Schlüssel (derselbe für Ver- UND Entschlüsselung) irgendwie übertragen werden -> kann abgefangen werden -> ist ein Problem.
 
Flamingo26 schrieb:
Ach okay, wobei mich mir noch nicht so ganz erschließt wieso man das nicht mit dem öffentlichen Schlüssel machen kann, weil man mit diesem ja wissen müsste, in welcher Form die Nachricht verschlüsselt wurde. So grob hab ich es verstanden, aber vielleicht kannst du mir das ja noch erklären?
Das läßt sich leicht erklären:

Mal stark vereinfacht:
Du kenst die Modulo-Funktion (bzw. den Rest). 10/3=3 Rest 1. Und 20/19=1 Rest 1.

Das bedeutet, wenn Du eine 10 verschlüsselst und die 1 weitergibst, kann ein Fremder (fast) nicht erraten, was die ursprüngliche Zahl war. Das kann nur der Empfänger mit dem privaten Schlüssel, der wesentlich größer ist als der öffentliche.
"Fast" deshalb, weil man es mit riesigem Rechenaufwand erraten kann. Diese Art der Verschlüsselung ist eigentlich eine "Asymetrische" verschlüsselung. Eine End-2-End-Verschlüsselung ist schlicht eine Verschlüsselung an beiden Seiten.

Die oben erwähnte asymetrische Verschlüsselung ist auch mit Key sehr aufwändig, deshalb wird das nur zum Verbindungsaufbau verwendet. Dabei tauscht man dann einen SYMMETRISCHEN Session-Key aus, der auf beiden Seiten gleich ist.

Das symmetrische Verschlüsseln ist wesentlich schneller, aber den kann man natürlich nicht öffentlich machen.
 
Lies dir den Wikipediaartikel zur RSA.-Verschlüsselung durch, das ist ein recht gutes Beispiel.
Basiert immerhin auf DEN Einweg bzw Falltürfunktionen schlechthin.

Die Multiplikation zweier Primzahlen ist die typische Einwegfunktion (nach heutigem Kenntnisstand). Man kann 2 große Primzahlen relativ gut multiplizieren. Hast du jedoch nur diese große Zahl, so gibt es momentan keine bekannte Möglichkeit, diese in akzeptabler Zeit wieder in seine beiden Faktoren zu zerlegen.

Die Potenzierung innerhalb einer endlichen Gruppe ist dabei die Falltürfunktion:
Ist a^b = c (mod n) und wir kennen immer nur die c (die verschlüsselte Nachricht), so suchen wir also das multiplikative Inverse d zu b mit bd=1 (mod n), denn dann kommen wir recht simpel wieder an a entsprechend a=a^1=a^(bd)=(a^b)^d=c^d (mod n).

Da n keine Primzahl ist, existiert ein solches Inverses nicht zu jeder Zahl b, sondern nur zu solchen, die Teilerfremd zu n sind.
(einfachstes Beispiel in Z/4Z: die 2 hat kein multiplikatives inverses modulo 4 (1*2=2, 2*2=4=0, 3*2=6=2, 4*2=8=0)).
Wäre n eine Primzahl, so wäre die Suche nach dem Inversen übrigens sehr einfach, welches wäre es nämlich? ;)


Unsere möglichen b sind nun aus der Gruppe der Teilerfremden Elemente zu wählen. Diese Gruppe ist so groß wie die Anzahl der teilerfremden Elemente. Ist n=pq das Produkt zweier Primzahlen, so ist es eben grad (p-1)(q-1).
Und die Gruppe der teilerfremden Elemente ist isomorph zu Z/(p-1)(q-1)Z (multiplikativ).

Wählen wir also hieraus unseren Exponenten b, so erhalten wir einen invertierbaren Exponenten.
Das inverse lässt sich lösen, indem man die Gleichung 1 = bd + k(p-1)(q-1) (welche ja genau das beschreibt, was wir suchen, nämlich eine Zahl d, die mod (p-1)(q-1) mit b Multipliziert 1 ergibt) nach dem inversen d und dem nutzlosen k löst (erweiterter euklidischer Algorithmus, siehe Wiki).

Da der öffentliche Schlüssel aber nur aus den Zahlen n(=p*q) und dem Exponenten b besteht, lässt sich der euklidische Algorithmus nur ausführen, wenn man zurvor n wieder in seine Primfaktoren zerlegt (um dann (p-1)(q-1) zu berechnen) oder alle Zahlen <n auf Teilerfremdheit zu n überprüft. Das jedoch ist beides wie gesagt nicht so leicht möglich... Während derjenige der p und q kennt, das Inverse nach dem Algorthmus errechnen kann.

Bliebe nun noch zu zeigen, dass es keine andere einfache Möglichkeit gibt, ans Inverse zu kommen. Oder man glaubt es einfach ;)

((EDIT: Doch nicht so einfach das Inverse bei n=prim zu finden. Zwar haben in Z/pZ alle Elemente b ein Multiplikatives Inverses (da b*x=0 mod p aufgrund der Teilerfremdheit erst bei x=p auftritt), aber einfach zu finden ist es trotzdem nicht.
Klar ist, es existiert offensichtlich eine Zahl s mit p-1 = s*b (aus dem selben Grunde wie oben), die man einfach durch umformen errechnen kann.
Dann gilt p = s*b + 1, also 1 = p - s*b. Das Inverse ist also -s mod p = -s + p mod p.))
 
Zuletzt bearbeitet:
Hi,

Nach ein paar Beispielen wirst du auch sehen, wieso nur der PRIVATE Schlüssel entschlüsseln kann bzw. der öffentliche nur verschlüsselt.

Die Aussage ist so nicht ganz korrekt. Der private Schlüssel kann nur entschlüsseln, was mit dem öffentlichen Schlüssel verschlüsselt wurde. Der öffentliche Schlüssel kann nur entschlüsseln, was mit dem privaten Schlüssel verschlüsselt wurde. Sieht man hier ganz nett als Grafik.

Umgekehrt geht es also auch, wird auch häufig genutzt, um eine Quelle eindeutig zu identifizieren: Ich behaupte, ich bin ich. Ich verschlüssle etwas mit meinem privaten Schlüssel und sage dir, was der Klartext ist. Wenn du das Chiffre nun mit meinem öffentlichen Schlüssel entschlüsselst kommt genau dieser Klartext heraus. Damit bin ich eindeutig der, der ich zu sein Vorgebe.

Die beiden Zahlen sind ja nicht per se "privat" und "öffentlich". Ich muss nur einen der beiden öffentlich verfügbar machen und den anderen geheim halten. Was mit a verschlüsselt ist kann nur b entschlüsseln (a kann es auch nicht mehr), was mit b verschlüsselt wurde kann nur a entschlüsseln (auch b kann es nicht mehr).

Nur als Ergänzung :)

VG,
Mad
 
Kowa schrieb:
Mal stark vereinfacht:
Du kenst die Modulo-Funktion (bzw. den Rest). 10/3=3 Rest 1. Und 20/19=1 Rest 1.

Das bedeutet, wenn Du eine 10 verschlüsselst und die 1 weitergibst, kann ein Fremder (fast) nicht erraten, was die ursprüngliche Zahl war. Das kann nur der Empfänger mit dem privaten Schlüssel, der wesentlich größer ist als der öffentliche.

Das ist eher eine Hashfunktion, insbesondere bildest du etliche verschiedene Zahlen auf den selben Wert ab. Das kann man nicht wieder entschlüsseln. Wie sollte das gehen?

Der Trick von asymetrischen Verschlüsselungen liegt darin, dass zwar eigentlich alle Informationen im öffentlichen Schlüssel vorhanden sind, die Rechnung jedoch nur in eine Richtung schnell geht. Die andere dauert ewig.

Beispiel (wieder nach RSA):
Wir verschlüsseln mit dem Teiler 10 (Primfaktorzerlegung 2*5) und dem Exponenten 3 (beides ist somit bekannt - außer der Zerlegung)
Klartext 3: 3^3 (mod 10) = 27 (mod 10) = 7

Du erhälst nun die Zahl 7, den Teiler 10 und den Exponenten 3.
Wie würdest du nun versuchen, das wieder zu entschlüsseln?

Klar, eine Methode geht immer. Ich verschlüssel einfach alle in Frage kommenden Zahlen mit dem öffentlichen Schlüssel und warte bis die richtige herauskommt.
In diesem Falle sind es ja nur 10 ;)
Wählt man den Teiler jedoch RIESIG, so ist diese Methode wohl nicht mehr so praktikabel. Müsste im Zweifelsfall jedoch bei jeder asymetrischen Verschlüsselung zum Ziel führen, wie ich das sehe.
Allerdings ist das in diesem Falle mindestens genauso aufwändig wie die Primfaktorzerlegung des Teilers... und mit dieser könnte man ja (wie oben beschrieben), das inverse des Exponenten bestimmen,

P.S.: Das Inverse ist in diesem Beispiel übrigens ebenfalls 3... Das ist allerdings Zufall und dem Beispiel geschuldet.
Der private Schlüssel ist in diesem Falle also auch 3.
Entschlüsseln: 7^3 (mod 10) = 343 (mod 10) = 3 passt.

Übrigens natürlich auch für andere Zahlen:
5^3 (mod 10) = 125 (mod 10) =5 (naja, hier kommt das selbstinverse der 3 zum Tragen, die entschlüsselung sieht also genauso aus ;))
8^3 (mod 10) = 512 (mod 10) =2 und zurück 2^3 (mod 10) = 8 (mod 10) = 8

Wie gesagt, dass 3 in diesem Falle selbstinvers ist, ist ein blöder Zufall.
 
Zuletzt bearbeitet:
Zurück
Oben