In diesem Adventskalender-Beitrag beschreibt Inpsyder Dario Kryptografie und Verschlüsselungsverfahren. Zuerst erklärt er, was Kryptografie ist und was nicht. Dann konzentriert er sich auf symmetrische und asymmetrische Schlüssel. Um zu erklären, wie sie funktionieren, gibt er Beispiele und nennt ihre Vor- und Nachteile.
Bevor wir schlafen gehen, müssen wir in der Lage sein, alle Sorgen aufzugeben. Wir sorgen dafür, dass die Tür gut verschlossen ist, damit wir uns geschützt fühlen. Dann glauben wir, dass unsere Lieben und auch unsere Sachen in Sicherheit sind. In der realen Welt gibt uns eine solide Tür und ein guter Einbruchalarm das Gefühl, geschützt zu sein. In der realen Welt.
Was ist mit der digitalen Welt? Verschließen wir die Türen dort gut? Sind unsere Daten, ist unsere Kommunikation sicher?
Nun können wir vielleicht nicht mehr schlafen.
Damit einher geht die Frage, ob wir überhaupt angemessene Sicherheitsmechanismen in der digitalen Welt haben?
Die Antwort ist Ja. Das richtige Wort dafür ist Kryptografie. Und es ist die Wissenschaft, die uns erlauft, unsere Daten zu sichern.
Das ist keine Kryptografie
Wie kann man unsere Informationen schützen? Der erste Ansatz, der in der Vergangenheit verwendet wurde, basierte auf dem Verstecken des Objekts, das wir sichern wollten. Also ein Ansatz, der ausschließlich auf Geheimhaltung basiert.
Diese Methode hat mehrere Nachteile. Ein Beispiel: Es ist, als ob wir beschlossen haben, unser Haus an einem geheimen Ort zu bauen, um sicher vor Dieben zu leben. Eher unangenehm, würde ich sagen. Und wenn dann jemand zu uns kommen muss, müssen wir dieses Geheimnis teilen. Und was wäre, wenn ein Dieb herausfinden würde, wo unser Haus ist, wenn wir dieses dieses Geheimnis teilen? Wir müssten an einen anderen geheimen Ort gehen.
Ebenso hat der Aufbau eines Algorithmus zur Verheimlichung unserer Informationen, dessen Stärke ausschließlich in der Geheimhaltung seiner Umsetzung liegt, eine kurze Lebensdauer und kann kaum ein hohes Maß an Sicherheit garantieren. Ein kurzes Leben, denn wenn man es mit jemand anderem teilt, riskiert man, dass es nicht mehr geheim ist. Außerdem ist es nicht wirklich sicher, da es wahrscheinlich nur von wenigen Leute gebaut wurde. Es wurde also nicht umfassend analysiert und getestet.
Das ist Kryptografie
Betrachten wir eine ganz andere Lösung. Wir bauen einen Algorithmus, der für jeden frei zugänglich ist. Mit diesem Algorithmus kannst du deine Daten jedoch verstecken und nur autorisierten Benutzern zugänglich machen.
Also ein Prozess, der für jeden zugänglich, analysierbar und testbar ist, weil er nicht geheim gehalten wird. Ein Prozess, der seine Stärke nicht ausschließlich auf Geheimhaltung gründet. Tatsächlich muss nur eine kleine Komponente geheim gehalten werden.
Diese Komponente sollte schnell und einfach erstellt werden können. Die Kenntnis dieser Komponente ermöglicht den Zugriff auf die geschützten Informationen.
Klingt nach einer komplizierten Sache. Brauchen wir das wirklich?
Das Problem liegt darin, dass die Kommunikationskanäle nicht sicher sind. Informationen laufen über Routen, die wir nicht schützen können. Jeder, der auf dem Kanal hört, kann auf diese Daten zugreifen, sie lesen, bearbeiten und vieles mehr. Illegale Praktiken gibt es mehrere.
Der Versuch, den Kanal sicher zu machen, ist lästig und schwierig. Die Lösung besteht darin, Informationen zu schützen und sie in etwas zu verwandeln, das für einen Lauscher nicht verständlich ist. Diese Aufgabe wird durch kryptografische Techniken erfüllt. Sie sind in zwei Hauptfamilien unterteilt: Symmetrische Algorithmen und asymmetrische (Public Key) Algorithmen.
Symmetrische Algorithmen
Im vorherigen Absatz haben wir uns auf eine Komponente bezogen, deren Geheimhaltung es uns ermöglicht, unsere Informationen zu schützen. Diese Komponente wird als Key bezeichnet. Der Schlüssel k ist daher ein kleines Stück Information, die es uns zusammen mit dem symmetrischen Algorithmus S ermöglicht, Klartext p in einen verschlüsselten Text c umzuwandeln, der nicht lesbar ist.
Oder besser gesagt: Der Text wurde in eine Art Zufallsinformation verwandelt, die nicht mehr die Form und den Sinn des ursprünglichen Textes hat und die in den meisten Fällen für diejenigen, die darauf zugreifen, keinen wirklichen Sinn ergibt.
Daher haben wir eines Situation des folgendes Typs:
Sk(p) = c
Das heißt durch die Anwendung des Algorithmus S, unter Verwendung des Schlüssels k, auf mein Informationspaket p, erhalte ich eine neue Information c.
Wenn ich also diese Informationen einem legitimen Empfänger im Netzwerk kommunizieren möchte, kann ich c senden. Und der Empfänger muss den gleichen Algorithmus S erneut mit dem Schlüssel k auf die verschlüsselte Information c anwenden, um p zu erhalten:
Sk(c) = p
Unsere Information ist in verschlüsselter Form, während sie im Netz unterwegs ist. Also ist sie geschützt.
Worauf basiert die Sicherheit dieses Prozesses? Auf zwei Faktoren:
- Der Reliabilität des S Algorithmus
- Der Geheimhaltung des Keys k, der nur dem Absender und dem Empfänger bekannt sein darf.
Die Zuverlässigkeit des Algorithmus ist nachgewiesen. Mathematiker und Kryptoanalytiker haben an der Umsetzung mitgewirkt. Die Geheimhaltung von k obliegt dem Absender und dem Empfänger. Ein Lauscher, der auf dem Kanal lauscht, kann nur c sehen, vielleicht hat er auch S, aber ohne den Key k bekommt er den Klartext p nicht.
Beispiel Symmetrische Algorithmen
Wie im folgenden Beispiel, wo Bob und Alice sicher kommunizieren, indem sie den gleichen Key teilen.
Was wäre, wenn der Lauscher den Key stehlen konnte? Wäre der Algorithmus gefährdet? Auf keinen Fall: Nur der Key und die mit diesem Key verschlüsselten Daten sind gefährdet. Aber wenn wir einen neuen Key erstellen, können wir die gleichen Informationen wieder mit dem gleichen Algorithmus S verschlüsseln. Und der Lauscher hat keinen Zugriff mehr auf den Klartext.
Symmetrische Algorithmen: Vor- und Nachteile
Der Hauptvorteil symmetrischer Algorithmen ist die Geschwindigkeit: Der Ver- und Entschlüsselungsprozess ist schnell.
Der größte Nachteil ist, dass der Sender und der Empfänger den Key austauschen müssen. Dieser Teil ist der empfindliche Part. Wenn der Key abgefangen wird, kann ein Lauscher auf die Informationen zugreifen und den Inhalt lesen.
Aber er könnte auch das Schlimmste tun: den Inhalt ändern, z. B. wieder verschlüsseln und an den Empfänger senden, der nicht merkt, dass der Inhalt verändert wurde.
Der Key: Weitere Überlegungen
Es gibt noch einen weiteren Schwachpunkt bei kryptografischen Algorithmen, denn man kann auch einen zu schwachen Key verwenden. Ein Key ist eine zufällige Zeichenkette, die zum Verschlüsseln von Informationen verwendet wird.
Ist es möglich, seinen Wert ausgehend vom verschlüsselten Inhalt zu berechnen? Das heißt: Kennt man den Algorithmus S und die verschlüsselte Nachricht c, ist es möglich, eine “Hacking”-Funktion H so zu identifizieren, dass H(S, c) = k?
Es kommt auf den Schlüssel an. Die Robustheit des Systems wird durch die Länge des Schlüssels und seine tatsächliche Randomisierung bestimmt. Ein ausreichend langer und wirklich zufällig gewählter Key machen es unmöglich, seinen Wert aus dem Algorithmus und dem verschlüsselten Text abzuleiten.
Häufig werden die Keys jedoch durch pseudozufällige Algorithmen erzeugt. Dies bedeutet, dass bei der Erstellung dieser Schlüssel eine gewisse Möglichkeit zur Wiederholung gegeben ist. Die Identifizierung solcher Wiederholungsmuster hilft, den Verschlüsselungsmechanismus herauszufinden. Darüber hinaus ermöglicht ein nicht ausreichend langer Schlüssel, das System durch eine ausreichende Rechenleistung zu bezwingen und den Schlüssel selbst zu berechnen.
One Time Pad
Nun stelle dir einen Key vor, dessen Länge mindestens gleich dem zu verschlüsselnden Inhalt ist. Nehmen wir einmal an, der Schlüssel wurde wirklich zufällig generiert und wird nach der Erstellung der verschlüsselten Nachricht versteckt oder zerstört und daher nie wieder verwendet.
In diesem Fall ist es unmöglich, den Klartext wiederherzustellen. Diese soeben veranschaulichte Hypothese ist als “One Time Pad” bekannt.
In einem solchen Fall wird keine Technologie in der Lage sein, die ursprüngliche Botschaft wiederherzustellen, weder heute noch in der Zukunft, selbst wenn sich Außerirdische mit speziellen Technologiekräften daran versuchen würden.
Es ist nicht nur wichtig, zu verstehen, wie die Geheimhaltung eines Keys gewahrt werden muss, um zu verhindern, dass unsere Daten unrechtmäßig abgerufen werden. Man muss auch begreifen, wie gefährlich der Verlust des Keys ist. Ohne ihn wird der rechtmäßige Eigentümer nicht mehr in der Lage sein, die Originaldaten wiederherzustellen, wodurch die verschlüsselten Inhalte für ihn und andere unbrauchbar werden.
Asymmetrische (Public Key) Algorithmen
Im vorherigen Abschnitt haben wir bei der symmetrischen Verschlüsselung gesehen, dass die Schwäche des Systems auf die Verwendung eines Keys zurückgeführt werden kann, der zwischen den Parteien geteilt werden muss. Während dieses Prozesses könnte der Key von einem Lauscher abgefangen werden, was die Verschlüsselung nutzlos macht.
Dieses Problem kann durch die Verwendung von asymmetrischen Algorithmen gelöst werden. In diesem Fall haben wir zwei verschiedene Keys: einen zum Verschlüsseln, der Public Key genannt wird und einen zum Entschlüsseln, der Private Key genannt wird.
In diesem Fall, haben wir den asymmetrischen Algorithmus A, ein Paar Keys (k-public und k-private) und ein Klartext p:
Ak-public(p) = c
Ak-private(c) = p
Nun können wir die Nachricht durch den Public Key verschlüsseln. Aber um den Klartext zurückzubekommen, müssen wir den entsprechenden private Key verwenden.
Wir haben jetzt einen entscheidenden Vorteil: Wenn wir jedem Benutzer ein Key-Paar zuweisen, dann kann der public Key problemlos mit jedem geteilt werden. Das liegt daran, dass er nur zur Verschlüsselung verwendet wird. Stattdessen wird der private Key, mit dem Nachrichten entschlüsselt werden, die mit dem entsprechenden public Key verschlüsselt wurden, nicht geteilt, sodass es möglich ist, dass ihn nur der legitime Eigentümer entschlüsseln kann.
Beispiel Asymmetrische Algorithmen
Bob und Alice wollen kommunizieren. Jeder hat ein generiertes Key-Paar, und jeder teilt seinen/ihren Public Key mit dem anderen.
In der ersten Sequenz:
- Bob verschlüsselt und sendet eine Nachricht, indem er den Public Key von Alice nutzt.
- Das Paket wandert verschlüsselt durch das Netz, der Lauscher kann es sehen, aber er kann es weder lesen noch verändern, selbst wenn er den Public Key von Bob und Alice hat.
- Die verschlüsselte Nachricht erreicht Alice. Nun kann Alice ihren private Key nutzen, um die Nachrichten zu entschlüsseln.
Nun möchte Alice eine Antwort senden. Die zweite Sequenz beschreibt die Schritte:
- Alice verschlüsselt und sendet eine Nachricht, indem sie den Public Key von Bob nutzt.
- Das Paket wandert verschlüsselt durch das Netz, der Lauscher kann es sehen, aber er kann es weder lesen noch verändern, selbst wenn er den Public Key von Bob und Alice hat.
- Die verschlüsselte Nachricht erreicht Bob. Nun kann Bob seinen private Key nutzen, um die Nachrichten zu entschlüsseln.
Asymmetrische Algorithmen: Vor- und Nachteile
Der Hauptvorteil der asymmetrischen Kryptografie liegt in der Möglichkeit, das Teilen des Keys, der zum Entschlüsseln verwendet wird, zu vermeiden. Im symmetrischen Fall musste der Key zwischen dem Sender und Empfänger ausgetauscht werden; jetzt wird der Private Key nicht mehr geteilt. So bleibt er geheim. Damit wird verhindert, dass ein Lauscher ihn in die Finger bekommen und dann Nachrichten entschlüsseln kann.
Der Nachteil liegt in der erhöhten Verarbeitungskomplexität. Public-Key-Algorithmen sind langsamer als symmetrische Algorithmen.
Die Keys: Weitere Überlegungen
Der Prozess der Erzeugung von Schlüsselpaaren erfordert wie im symmetrischen Fall, dass man die Länge der Schlüssel richtig wählt.
Wenn wir eine Nachricht mit kurzen Keys verschlüsselt haben, dann könnte es möglich sein, den privaten Key über den public Key zu berechnen.
Um dies zu vermeiden, müssen wir entsprechend lange Keys erzeugen: Auf diese Weise würde der Versuch, den private Key zu berechnen, viel mehr Rechenleistung und/oder zu lange Verarbeitungszeiten erfordern. Auch in diesem Fall ist daher die Länge der Keys von grundlegender Bedeutung.
Beispiel: Ausgewählter Klartext-Angriff
Eine Angriffsart, die bei asymmetrischer Verschlüsselung implementiert werden kann, ist der Klartextangriff. Wenn der Lauscher weiß, dass die Domain der möglichen ausgetauschten Nachrichten begrenzt ist, kann er versuchen, diese Technik zu implementieren.
Wenn also der Klartextraum P = [p1, p2, …., pn] ist, ist es möglich, den Public Key des Absenders zu verwenden und den entsprechenden verschlüsselten Nachrichtenraum C =[c1, c2, …., cn] zu berechnen.
Jetzt kann der Lauscher auf dem Kanal lauschen und jedes Mal, wenn es ihm gelingt, eine verschlüsselte cx-Nachricht abzufangen, kann er sie mit dem zuvor berechneten C-Raum vergleichen, den entsprechenden Wert finden und dann den Klartext px erhalten.
Bitte bedenke: Auf diese Weise bleibt der private Key weiterhin geheim. Diese Art von Angriff ist auf einen entsprechend begrenzten Raum von Nachrichten anwendbar.
Wenn es sich beispielsweise um numerische Geldwerte im Bereich von 0 bis 1 Million Dollar beinhalten würde, würde ein ähnliches Verfahren dazu führen, dass wir die übertragenen Werte enthüllen.
Ibrid Verschlüsselung
Ich beende meinen Beitrag mit der Erwähnung einer Technik, die die beiden vorherigen kombiniert und versucht, deren Vorteile zu nutzen.
Da die asymmetrische Kryptografie langsamer als die symmetrische ist, ist es ein weit verbreiteter Ansatz, sie nur während der Initialisierungsphase eines Kommunikationsprotokolls zu verwenden, um den sicheren Austausch eines symmetrischen Keys durchzuführen.
Auf diese Weise wird der Hauptnachteil des symmetrischen Algorithmus überwunden: Der Key wird auf sichere Weise zwischen Sender und Empfänger geteilt. Dieser Key wird “Sitzungs-Key” genannt, da für jede Kommunikationssitzung ein neuer Key generiert wird, der das Sicherheitsniveau des Protokolls erhöht.
Die Übertragung erfolgt dann mit einem symmetrischen Algorithmus: Auf diese Weise überwinden wir den Nachteil, der mit der Langsamkeit asymmetrischer Algorithmen verbunden ist.
Fazit
Verschlüsselungstechniken sind ausgefeilte und komplexe Methoden, die es uns ermöglichen, sicher zu kommunizieren und unsere Daten vor unbefugtem Zugriff zu schützen.
Beide Haupttechniken, die symmetrische oder asymmetrische Kryptografie erfordern immer noch eine genaue Key-Verwaltung. Eine übermäßige Weitergabe oder ein Verlust solcher Informationen führt dazu, dass die Wirksamkeit dieser Techniken zunichte gemacht wird oder sie sogar schädlich für unsere Daten sind.
Ein bewusster Gebrauch hingegen bietet uns eine undurchdringliche Verteidigung und sorgt für einen ruhigen Schlaf.
* Vielen Dank an Markus Spiske für das Foto, das wir in diesem Beitrags-Header verwenden.
Failed to submit:
one or more fields are invalid.