[Ausbildung] Grundlagen Kryptographie

In dieser Einheit sollen die Teilnehmer die Grundlagen hinter moderner Kryptographie Kennenlernen und verstehen.

Asymmetrische Verschlüsselung, Private-Public-Keys und Zertifikate sind ebenfalls Bestandteil der Einheit.

Voraussetzungen

  • Keine

Materialien

  • Beamer
  • Flipchart
  • Metaplanwand
  • Moderationskoffer
  • 2 Umschläge
  • 9 transparente Becher
  • Farbiges Wasser: Blau, Rot, Gelb

Dauer

3 – 4 Stunden

Themen

Kryptographie, Verschlüsselung, PKI, Zertifikate

Ablauf

Zunächst stellen wir das Thema vor und grenzen es vom Thema Hacking ab. Dies visualisieren wir mit einer kleinen Animation aus dem Film „Kung Fury“.

hackerman, quelle: Kung Fury, https://www.youtube.com/watch?v=bS5P_LAqiVg
hackerman, quelle: Kung Fury, https://www.youtube.com/watch?v=bS5P_LAqiVg

Nun fragen wir die Teilnehmer was sie schon zum Thema wissen und ob und wo sie Verschlüsselung einsetzen.

Bevor wir fortfahren klären wir noch kurz die Herkunft des Wortes:

  • κρυπτός kryptós, deutsch ‚verborgen‘, ‚geheim‘
  • γράφειν gráphein, deutsch ‚schreiben‘

Und erklären, dass das S bei HTTPS für „Secure“ steht und bedeutet, dass die Kommunikation zwischen Client (Web-Browser) und Server (Web-Seite) verschlüsselt stattfindet.

Gerade in Zeiten der DSGVO ist dies ein wichtiger Bestandteil der Sicherheit und Vertraulichkeit der Daten, z.B. bei Kontaktformularen.

Der nächste Punkt betrifft die Art, wie technisch verschüsselt wird.

Hierzu wiederholen wir 3 Logikgatter, die wir an der Flipchart aufbauen:

AND:

Eingabe 1 0 0 1
Transformation 0 1 0 1
Ergebnis 0 0 0 1

OR:

Eingabe 1 0 0 1
Transformation 0 1 0 1
Ergebnis 1 1 0 1

XOR:

Eingabe 1 0 0 1
Transformation 0 1 0 1
Ergebnis 1 1 0 0

Als Ergebnis stellen wir fest:

Nur mit XOR können wir die Transformation rückgängig machen.

Die Felder können also folgendermaßen umbenannt werden:

Klartext 1 0 0 1
Key 0 1 0 1
Cypher 1 1 0 0

Schlüssel

Als nächstes widmen wir uns noch kurz Kerckhoffs Prinzip:

Das Kerckhoffs’sche Prinzip oder Kerckhoffs’ Maxime ist ein im Jahr 1883 von Auguste Kerckhoffs formulierter Grundsatz der modernen Kryptographie, welcher besagt, dass die Sicherheit eines Verschlüsselungsverfahrens auf der Geheimhaltung des Schlüssels beruht anstatt auf der Geheimhaltung des Verschlüsselungsalgorithmus. Dem Kerckhoffs’schen Prinzip wird oft die sogenannte Security through obscurity gegenübergestellt: Sicherheit durch Geheimhaltung des Verschlüsselungsalgorithmus selbst, möglicherweise zusätzlich zur Geheimhaltung des bzw. der verwendeten Schlüssel. (Quelle: https://de.wikipedia.org/wiki/Kerckhoffs%E2%80%99_Prinzip)

Dies verdeutlichen wir am Bespiel der klassischen Haustür. Die Technik hinter dem Schloss ist bekannt, aber nur mit dem passenden Schlüssel kann ich die Tür öffnen.

Animation: Schlüssel und Schloß
Animation: Schlüssel und Schloß

Die Sicherheit einer Verschlüsselung ist direkt abhängig von der Länge des verwendeten Schlüssels.

Als aktuell sicher gilt eine Schlüssel-länge von 128 bit (https://www.keylength.com/en/8/)

Dies führt zur Zahl 2128. Rechnet man das aus erhält man:
3,4 x 1038, eine Zahl mit 39 Stellen.

Diese Zahl wirkt erstmal nicht so groß, demonstriert wird das durch das Aufschreiben einer Zufallszahl mit 39 Stellen auf der Flipchart, was schnell gemacht ist.

Um zu zeigen, dass diese Zahl dennoch sehr groß ist, benutzen wir 2 Beispiele.

Nummer 1: Papier

Die Dicke eines Blattes Papier beträgt ca. 0,1mm.

Falten wir das nun 128 mal, erhalten wir einen Stapel der Dicke 1036 Meter.
Umgerechnet in Lichtjahre sind das: 1.057×1020 ly
Vergleichen wir das nun mit eine bekannten Größe:

minimale[…] Gesamtgröße des Universums von 78 Mrd. Lichtjahren (https://de.wikipedia.org/wiki/Universum#Form_und_Volumen)

Nummer 2: Reiskörner und Schach

Schachbrett
Schachbrett

Die Geschichte mit dem Reiskorn ist bekannt:

Im alten Persien erzählten sich die Menschen einst dieses Märchen: Es war einmal ein kluger Höfling, der seinem König ein kostbares Schachbrett schenkte. Der König war über den Zeitvertreib sehr dankbar, weil er sich mit seinen Ministern bei Hofe oft ein wenig langweilte. So sprach er zu seinem Höfling: „Sage mir, wie ich dich zum Dank für dieses wunderschöne Geschenk belohnen kann. Ich werde dir jeden Wunsch erfüllen.“ Nachdenklich rieb der Höfling seine Nase. Nachdem er eine Weile nachgedacht hatte, sagte er: „Nichts weiter will ich, edler Gebieter, als daß Ihr das Schachbrett mit Reis auffüllen möget. Legt ein Reiskorn auf das erste Feld, und dann auf jedes weitere Feld stets die doppelte Anzahl an Körnern. Also zwei Reiskörner auf das zweite Feld, vier Reiskörner auf das dritte, acht auf das vierte und so fort.“ Der König war erstaunt. „Es ehrt dich, lieber Höfling, daß du einen so bescheidenen Wunsch äußerst“, sprach er. „Er möge dir auf der Stelle erfüllt werden.“ Der Höfling lächelte, eine Spur zu breit vielleicht, und verneigte sich tief vor seinem Herrscher.

Sofort traten Diener mit einem Sack Reis herbei und schickten sich an, die Felder auf dem Schachbrett nach den Wünschen des Höflings zu füllen. Bald stellten sie fest, daß ein Sack Reis gar nicht ausreichen würde, und ließen noch mehr Säcke aus dem Getreidespeicher holen.

64 Felder hatte das Schachspiel. Schon das zehnte Feld mußte für den Höfling mit 512 Körnern gefüllt werden. Beim 21. Feld waren es schon über eine Million Körner. Und beim 64. Feld stellten die Diener fest, daß es im ganzen Reich des Königs nicht genug Reiskörner gab, um es aufzufüllen. Mit seinem Wunsch wurde der Höfling zum reichsten Mann im ganzen Land, und der König wünschte, er hätte ihm nie etwas geschuldet.
http://www.martinroedel.de/25er/maerchen.htm

Wir verdoppeln also die Anzahl Reiskörner pro Feld, was uns zur Zahl 264 führt, die Hälfte von 2128.
Rechnen wir die Zahl aus, kommen wir auf 1,8 * 1019 Reiskörner.
Bei einem Gewicht pro Reiskorn von ca. 0,025 g kommen wir auf ein Gesamtgewicht von 4.5 * 1014 Tonnen.
Stellen wir nun einen Zug auf, bei dem jeder Wagen 20 Tonnen fast, benötigen wir 2.25 * 1013 Wägen.
Lassen wir nun den Zug mit 80 km/h vorbeifahren, dauert es ca. 730 Jahre, bis der Zug vorbeigefahren ist.

Zusammenfassung

Schlüsselaustausch

Nun wissen wir, dass ein langer Schlüssel sicher ist und das einzige ist, was geheim bleiben muss. Wichtig ist nun:

Wie können 2 Kommunikationspartner so einen Schlüssel austauschen?

Hier gibt es 2 Möglichkeiten:

  • Symmetrisch
  • Asymmetrisch

Symmetrischer Austausch

Hier pinnen wir zunächst an die Metaplanwand links einen Zettel „Alice“ und rechts einen Zettel „Bob“. In die Mitte hängen wir noch einen Zettel „Eve“.

Gleichzeitig stellen wir 3 Freiwillige auf: Links, Rechts, Mitte.

Wir schreiben eine Nachricht auf einen Zettel, legen diese in einen Umschlag (mit einem blauen Schloss beklebt) und geben Alice 2 Schlüssel in Blau.

Nun betrachten wir 3 Fälle:

Fall 1: Niemand hört die Verbindung ab
  1. Alice gibt eine Kopie des Schlüssels an Bob
  2. Alice schickt die Nachricht im Umschlag an Bob
  3. Bob kann diese nun öffnen und lesen
Fall 2: Jemand hört mit, der Schlüssel ist sicher getauscht
  1. Alice gibt eine Kopie des Schlüssels an Bob
  2. Alice schickt die Nachricht im Umschlag an Bob
  3. Eve nimmt die Nachricht, kann diese aber nicht öffnen.
  4. Bob kann die Nachricht öffnen und lesen
Fall 3: Der Schlüssel kann nicht sicher getauscht werden
  1. Alice gibt eine Kopie des Schlüssels an Bob
  2. Eve kopiert sich den Schlüssel ebenfalls
  3. Alice schickt die Nachricht im Umschlag an Bob
  4. Eve nimmt die Nachricht, kann nun öffnen und lesen.
  5. Bob kann die Nachricht öffnen und lesen
  6. Alice und Bob wissen aber nicht, dass Eve mitgelesen hat

Dies führt uns zur Schwachstelle dieses Systems: Der Schlüsseltausch.

Die Lösung:

Asymmetrischer Austausch

Das meist verwendete System ist das RSA-Kryptosystem (https://de.wikipedia.org/wiki/RSA-Kryptosystem)

Hier hat jeder Partner 2 Schlüssel:

  • Einen öffentlichen Schlüssel
  • Einen geheimen, privaten Schlüssel

Wir verteilen die privaten Schlüssel und die öffentlichen Schlüssel an Alice, Eve und Bob

Dieses Schlüsselpaar hat folgende Eigenschaften:

  • Mit dem Private Key kann zwar der Public Key berechnet werden, mit dem Public Key jedoch nicht der Private Key
  • Eine Nachricht die mit einem der Schlüssel verschlüsselt wurde, kann nur mit dem anderen Schlüssel entschlüsselt werden

Das führt zu folgendem Ablauf:

  1. Alice hat den öffentlichen Schlüssel von Bob und verschlüsselt damit den Umschlag
  2. Eve hat diesen Schlüssel ebenfalls!
  3. Alice schickt die Nachricht im Umschlag an Bob
  4. Eve nimmt die Nachricht, kann diese aber nicht öffnen, da sie nicht den privaten Schlüssel von Bob hat
  5. Bob kann die Nachricht mit seinem privaten Schlüssel öffnen und lesen
Mission accomplished!
Mission accomplished!

Anwendungsfälle

Wir haben 3 grundlegende Anwendungsfälle:

  • Schlüsselaustausch
  • Authentifizierung
  • Digitale Signaturen

Schlüsselaustausch

  1. Alice möchte mit Bob verschlüsselt kommunizieren
  2. Alice sendet Bob ihren Public Key
  3. Bob erzeugt einen symmetrischen Schlüssel (Session Key), verschlüsselt ihn mit dem Public Key von Alice und sendet ihn an Alice
  4. Nur Alice kann den Session Key entschlüsseln, da nur sie den passenden Private Key (zu dem Public Key mit dem Bob den Session Key verschlüsselt hat) besitzt
  5. Nun verfügen Alice und Bob über einen gemeinsamen, geheimen Session Key und können mit diesem Nachrichten verschlüsseln und sie dann zum Kommunikationspartner senden

Authentifizierung (z. B. schlüsselbasierte Anmeldung bei SSH)

  1. Der Public Key von Alice wird auf dem System hinterlegt auf das Alice Zugriff haben soll
  2. Will Alice auf das System zugreifen, sendet Sie zunächst ihren Public Key (ihre Identität) an das System
  3. Das System erkennt am Vergleich des gesendeten Schlüssels mit den hinterlegten Schlüsseln, dass Alice zugriffsberechtigt ist, muss aber noch die Identität von Alice überprüfen
  4. Dazu sendet das System einen String an Alice die diesen String signiert und zurückschickt
  5. Das System überprüft die Signatur (mit dem Public Key) und gewährt Alice den Zugriff (oder auch nicht)

Digitale Signatur

  1. Digitale Signatur wird realisiert durch Verschlüsselung mit dem Private Key
  2. Der Absender bildet einen Hash der Nachricht, verschlüsselt den Hash mit seinem Private Key und sendet die Nachricht mit dem anhängenden Hash (+ Metadaten wie z. B. das verwendete Hashverfahren)
  3. Der Empfänger bildet ebenfalls einen Hash der Nachricht, entschlüsselt den empfangenen Hash und vergleicht beide Hashes
  4. Sind beide gleich, so kann der Empfänger davon ausgehen, dass die Nachricht nicht verändert wurde und tatsächlich vom Absender stammt

Zertifikate

Aber es gibt auch ein Problem: Wenn ich den public Key von Bob will, könnte ja auch Eve antworten und mir einfach ihren Schlüssel senden. Ich kann anhand des Schlüssels nicht entscheiden, wer der Besitzer ist.

Hier kommen Zertifikaten ins Spiel. Das ist nichts anderes als ein Ausweis:

Ausweis Zertifikat
Bild Public Key
Name, Geburtsdatum, … Technische Daten
Bundesdruckerei CA

Ich vertraue einem Ausweis, weil die Bundesdruckerei bestätigt, dass die Daten zu dem Bild passen. Und so kann ich mich ausweisen.
Bei Zertifikaten ist das genauso:
Ich vertraue darauf, dass der public Key wirklich zu einem Server, einer Person gehört, weil eine Zertifizierungsstelle (Certificate Authority, CA) das bestätigt hat.

Daraus folgt noch ein wichtiger Punkt:

Die CA muss absolut sicher sein!

Falls diese gehackt wird, kann der Hacker beliebige Zertifikate ausstellen(auch Falsche!)

Ein Beispiel ist hier: Ausweis mit falschem Bild aus der (gehackten) Bundesdruckerei.

Deshalb müssen CA’s auch sofort bekannt geben, wenn sie unsicher geworden sind und alle Zertifikate als ungültig erklären.

So etwas passiert immer wieder, zum Beispiel:

https://www.heise.de/security/meldung/Ueber-500-Zertifikate-Ausmass-des-CA-Hacks-schlimmer-als-erwartet-1336603.html

Die Angreifer konnten jeweils mehrere Zertifikate für www.sis.gov.uk (MI6), www.cia.gov und www.mossad.gov.il ausstellen. Auch für diverse Microsoft-Domains wurden missbräuchlich Zertifikate ausgestellt, darunter microsoft.com, windowsupdate.com, login.live.com und skype.com. Weitere Prominente Opfer sind facebook.com, twitter.com, aol.com, android.com und secure.logmein.com.

Das Internet ist Dunkel und voller Gefahren
Das Internet ist Dunkel und voller Gefahren

Als Abschluss demonstrieren wir noch ein Verfahren dass alternativ zu RSA verfügbar ist:

Diffie-Hellman

Dies ist ein Verfahren zum Schlüssel austausch, dass ohne gespeicherte private Schlüssel auskommt. Wir können jedesmal neue Schlüssel erzeugen. Dadurch kann niemand, der die verschlüsselte Kommunikation speichert, diese mit Hilfe des privaten Schlüssels, der eingefordert wurde, entschlüsseln. (https://www.security-insider.de/was-ist-perfect-forward-secrecy-pfs-a-673063/)

Das Diffie-Hellman-Verfahren sieht einen öffentlichen Schlüssel und geheime Schlüssel vor, die in einem komplexen Verfahren verrechnet werden.

Zur Demonstration stellen wir wieder Alice, Bob und Eve auf. Jeder bekommt 3 Behälter.

In einen kommt gelbes Wasser als öffentlicher Schlüssel.

Alice bekommt einen Behälter mit roter Farbe als privaten Schlüssel, Bob einen mit blauer Farbe.

Alice mischt nun die Hälfte ihrer Rot in den gelben Becher und gibt diesen über Eve an Bob. Eve gibt davon die Hälfte in einen Becher, den Rest kippt Bob in einen leeren Becher.

Bob macht nun dasselbe mit seiner Blau.

Alice mischt nun ihre Rot mit der Mischung von Bob und Bob seine Blau mit der Mischung von Alice.

Wir sehen, dass die Farbe gleich ist, wir haben also einen gemeinsamen Schlüssel!

Eve versucht nun ihre beiden Farben zu mischen, dass bringt aber nichts, die Farbe sieht anders aus.

Das ganze kann als Video noch hier betrachtet werden:

Cryptocurrency

Zum Abschluss noch ein Video über BitCoin, mit dem das erlernte Wissen geprüft werden kann:

Slides

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.