- [Einleitung](#einleitung) - [Was ist eine Bedrohung in einem Kommunikationsnetz?](#was-ist-eine-bedrohung-in-einem-kommunikationsnetz) - [Sicherheitsziele in Abhängigkeit von der Anwendungsumgebung](#sicherheitsziele-in-abhängigkeit-von-der-anwendungsumgebung) - [Sicherheitsziele technisch definiert](#sicherheitsziele-technisch-definiert) - [Technisch definierte Bedrohungen](#technisch-definierte-bedrohungen) - [Bedrohungen und technische Sicherheitsziele](#bedrohungen-und-technische-sicherheitsziele) - [Analyse der Netzwerksicherheit](#analyse-der-netzwerksicherheit) - [Angriffe auf die Kommunikation auf der Nachrichtenebene](#angriffe-auf-die-kommunikation-auf-der-nachrichtenebene) - [Schutzmaßnahmen gegen Bedrohungen der Informationssicherheit](#schutzmaßnahmen-gegen-bedrohungen-der-informationssicherheit) - [Kommunikationssicherheit: Einige Terminologie](#kommunikationssicherheit-einige-terminologie) - [Sicherheitsdienste - Überblick](#sicherheitsdienste---überblick) - [Sicherheitsunterstützende Mechanismen](#sicherheitsunterstützende-mechanismen) - [Kryptologie - Definition und Terminologie](#kryptologie---definition-und-terminologie) - [Kryptologie - einige historische Anmerkungen](#kryptologie---einige-historische-anmerkungen) - [Grundlagen der Kryptographie](#grundlagen-der-kryptographie) - [Kryptographische Algorithmen: Überblick](#kryptographische-algorithmen-überblick) - [Angriff auf die Kryptographie](#angriff-auf-die-kryptographie) - [Kryptoanalyse](#kryptoanalyse) - [Brute-Force-Angriff](#brute-force-angriff) - [Wie groß ist groß?](#wie-groß-ist-groß) - [Wichtige Eigenschaften von Verschlüsselungsalgorithmen](#wichtige-eigenschaften-von-verschlüsselungsalgorithmen) - [Klassifizierung von Verschlüsselungsalgorithmen: Drei Dimensionen](#klassifizierung-von-verschlüsselungsalgorithmen-drei-dimensionen) - [Kryptographische Algorithmen - Überblick](#kryptographische-algorithmen---überblick) - [Symmetrische Kryptographie](#symmetrische-kryptographie) - [Symmetrische Verschlüsselung](#symmetrische-verschlüsselung) - [Symmetrische Blockchiffren - Verschlüsselungsarten](#symmetrische-blockchiffren---verschlüsselungsarten) - [Der Datenverschlüsselungsstandard (DES)](#der-datenverschlüsselungsstandard-des) - [DES - Einzelne Iteration](#des---einzelne-iteration) - [DES - Entschlüsselung](#des---entschlüsselung) - [DES - Sicherheit](#des---sicherheit) - [Erweiterung der Schlüssellänge von DES durch Mehrfachverschlüsselung](#erweiterung-der-schlüssellänge-von-des-durch-mehrfachverschlüsselung) - [Der fortgeschrittene Verschlüsselungsstandard AES](#der-fortgeschrittene-verschlüsselungsstandard-aes) - [AES - Sicherheit](#aes---sicherheit) - [Der Stromchiffre-Algorithmus RC4](#der-stromchiffre-algorithmus-rc4) - [KASUMI](#kasumi) - [KASUMI - Sicherheitsdiskussion](#kasumi---sicherheitsdiskussion) - [Asymmetrische Kryptographie](#asymmetrische-kryptographie) - [Einige mathematische Hintergründe](#einige-mathematische-hintergründe) - [Der RSA Public Key Algorithmus](#der-rsa-public-key-algorithmus) - [Einige weitere mathematische Hintergründe](#einige-weitere-mathematische-hintergründe) - [Diffie-Hellman-Schlüsselaustausch](#diffie-hellman-schlüsselaustausch) - [ElGamal Algorithmus](#elgamal-algorithmus) - [Elliptische Kurven Kryptographie](#elliptische-kurven-kryptographie) - [Gruppenelemente](#gruppenelemente) - [Punktaddition](#punktaddition) - [Grundlagen des ECC - Algebraische Addition](#grundlagen-des-ecc---algebraische-addition) - [Multiplikation](#multiplikation) - [Kurven über $\mathbb{Z}_p$](#kurven-über-mathbbz_p) - [Berechnen Sie die y-Werte in $\mathbb{Z}_p$](#berechnen-sie-die-y-werte-in-mathbbz_p) - [Addition und Multiplikation in $\mathbb{Z}_p$](#addition-und-multiplikation-in-mathbbz_p) - [Foundations of ECC - Größe der erzeugten Gruppen](#foundations-of-ecc---größe-der-erzeugten-gruppen) - [ECDH](#ecdh) - [EC-Version des ElGamal-Algorithmus](#ec-version-des-elgamal-algorithmus) - [Sicherheit](#sicherheit) - [Weitere Anmerkungen](#weitere-anmerkungen) - [Schlussfolgerung](#schlussfolgerung) - [Modifikationsprüfwerte](#modifikationsprüfwerte) - [Motivation](#motivation) - [Kryptographische Hash-Funktionen](#kryptographische-hash-funktionen) - [Nachrichten-Authentifizierungs-Codes (MAC)](#nachrichten-authentifizierungs-codes-mac) - [Ein einfacher Angriff gegen einen unsicheren MAC](#ein-einfacher-angriff-gegen-einen-unsicheren-mac) - [Anwendungen für kryptographische Hash-Funktionen und MACs](#anwendungen-für-kryptographische-hash-funktionen-und-macs) - [Angriffe basierend auf dem Geburtstagsphänomen](#angriffe-basierend-auf-dem-geburtstagsphänomen) - [Übersicht über die gebräuchlichen MDCs](#übersicht-über-die-gebräuchlichen-mdcs) - [Gemeinsame Struktur von kryptografischen Hash-Funktionen](#gemeinsame-struktur-von-kryptografischen-hash-funktionen) - [Der Message Digest 5](#der-message-digest-5) - [Der sichere Hash-Algorithmus SHA-1](#der-sichere-hash-algorithmus-sha-1) - [Der sichere Hash-Algorithmus SHA-3](#der-sichere-hash-algorithmus-sha-3) - [Cipher Block Chaining Message Authentication Codes](#cipher-block-chaining-message-authentication-codes) - [Konstruktion eines MAC aus einem MDC](#konstruktion-eines-mac-aus-einem-mdc) - [Authentifizierte Verschlüsselung mit zugehörigen Daten (AEAD) Modi](#authentifizierte-verschlüsselung-mit-zugehörigen-daten-aead-modi) - [Galois/Zähler-Modus (GCM) [MV04]](#galoiszähler-modus-gcm-mv04) - [Kleiner Exkurs: Rechenoperationen in $GF(2^n)$](#kleiner-exkurs-rechenoperationen-in-gf2n) - [SpongeWrap](#spongewrap) - [Zufallszahlengenerierung](#zufallszahlengenerierung) - [Kryptographische Protokolle](#kryptographische-protokolle) - [Sichere Gruppenkommunikation](#sichere-gruppenkommunikation) - [Zugriffskontrolle](#zugriffskontrolle) - [Integration von Sicherheitsdiensten in Kommunikationsarchitekturen](#integration-von-sicherheitsdiensten-in-kommunikationsarchitekturen) - [Sicherheitsprotokolle der Datenübertragungsschicht](#sicherheitsprotokolle-der-datenübertragungsschicht) - [Die IPsec-Architektur für das Internet-Protokoll](#die-ipsec-architektur-für-das-internet-protokoll) - [Security protocols of the transport layer](#security-protocols-of-the-transport-layer) - [Sicherheitsaspekte der mobilen Kommunikation](#sicherheitsaspekte-der-mobilen-kommunikation) - [Sicherheit von drahtlosen lokalen Netzen](#sicherheit-von-drahtlosen-lokalen-netzen) - [Sicherheit von GSM- und UMTS-Netzen](#sicherheit-von-gsm--und-umts-netzen) - [References](#references) # Einleitung ## Was ist eine Bedrohung in einem Kommunikationsnetz? - Abstrakte Definition - Eine Bedrohung in einem Kommunikationsnetz ist ein mögliches Ereignis oder eine Folge von Aktionen, die zu einer Verletzung eines oder mehrerer Sicherheitsziele führen können. - Die tatsächliche Realisierung einer Bedrohung wird als Angriff bezeichnet. - Beispiele - Ein Hacker bricht in einen Firmencomputer ein - Offenlegung von E-Mails während der Übertragung - Jemand ändert Finanzbuchhaltungsdaten - Ein Hacker, der eine Website vorübergehend außer Betrieb setzt - Jemand, der Dienstleistungen in Anspruch nimmt oder Waren im Namen anderer bestellt - Was sind Sicherheitsziele? - Sicherheitsziele können definiert werden - in Abhängigkeit von der Anwendungsumgebung oder - auf eine allgemeinere, technische Weise ## Sicherheitsziele in Abhängigkeit von der Anwendungsumgebung - Bankwesen - Schutz vor betrügerischen oder versehentlichen Änderungen von Transaktionen - Identifizierung von Kunden bei Privatkundentransaktionen - Schutz von PINs vor Offenlegung - Sicherstellung der Privatsphäre der Kunden - Elektronischer Handel - Sicherstellung der Herkunft und Integrität von Transaktionen - Schutz der Privatsphäre von Unternehmen - Rechtsverbindliche elektronische Signaturen für Transaktionen bereitstellen - Regierung - Schutz vor Offenlegung sensibler Informationen - Bereitstellung elektronischer Signaturen für Regierungsdokumente - Öffentliche Telekommunikationsanbieter - Beschränken Sie den Zugang zu Verwaltungsfunktionen auf autorisiertes Personal - Schutz vor Dienstunterbrechungen - Schutz der Privatsphäre der Teilnehmer - Firmen-/Privatnetzwerke - Schutz der Privatsphäre von Unternehmen/Personen - Sicherstellung der Authentizität von Nachrichten - Alle Netzwerke - Verhinderung des Eindringens von außen (wer will schon Hacker?) - Manchmal werden Sicherheitsziele auch als Sicherheitsvorgaben bezeichnet ## Sicherheitsziele technisch definiert - **Vertraulichkeit (Confidentiality)** - Übertragene oder gespeicherte Daten sollten nur einem bestimmten Personenkreis zugänglich gemacht werden. - Die Vertraulichkeit von Entitäten wird auch als Anonymität bezeichnet. - **Integrität der Daten (Data Integrity)** - Es sollte möglich sein, jede Veränderung von Daten zu erkennen. - Dies setzt voraus, dass der Ersteller bestimmter Daten identifiziert werden kann. - **Rechenschaftspflicht (Accountability)** - Es sollte möglich sein, die für ein Kommunikationsereignis verantwortliche Stelle zu identifizieren. - **Verfügbarkeit (Availability)** - Die Dienste sollten verfügbar sein und korrekt funktionieren. - **Kontrollierter Zugang (Controlled Access)** - Nur autorisierte Stellen sollten auf bestimmte Dienste oder Informationen zugreifen können. ## Technisch definierte Bedrohungen - **Maskerade (oder Man-in-the-Middle-Angriff, Masquerade)** - Eine Entität gibt sich als eine andere Entität aus - **Lauschangriff (Eavesdropping)** - Eine Entität liest Informationen, die sie nicht lesen soll - **Verletzung der Berechtigung (Authorization Violation)** - Eine Entität nutzt einen Dienst oder Ressourcen, für die sie nicht vorgesehen ist - **Verlust oder Veränderung** von (übertragenen) Informationen (Loss or Modification of (transmitted) Information) - Daten werden verändert oder zerstört - **Verweigerung von Kommunikationsakten (Denial of Communication Acts, Repudiation)** - Ein Unternehmen leugnet fälschlicherweise seine Teilnahme an einer Kommunikationshandlung - **Fälschung von Informationen (Forgery of Information)** - Ein Unternehmen erstellt neue Informationen im Namen eines anderen Unternehmens - **Sabotage (oder Denial-of-Service-Angriffe)** - Jede Aktion, die darauf abzielt, die Verfügbarkeit und/oder das ordnungsgemäße Funktionieren von Diensten oder Systemen zu beeinträchtigen. ## Bedrohungen und technische Sicherheitsziele Diese Bedrohungen werden oft kombiniert, um einen Angriff durchzuführen! | Technische Sicherheitsziele | Maskerade | Abhören | Autorisierungsverletzung | Verlust oder Modifikation von (übertragenen) Informationen | Denial of Communication-Aktionen | Fälschung von Informationen | Sabotage (z.B. durch Überlastung) | | --------------------------- | --------- | ------- | ------------------------ | ---------------------------------------------------------- | -------------------------------- | --------------------------- | --------------------------------- | | Vertraulichkeit | x | x | x | | Datenintegrität | x | | x | x | x | x | | Rechenschaftspflicht | x | | x | | x | x | | | Verfügbarkeit | x | | x | x | | | x | | | Kontrollierter Zugriff | x | | x | | | x | | ## Analyse der Netzwerksicherheit - Um geeignete Gegenmaßnahmen gegen Bedrohungen ergreifen zu können, müssen diese für eine gegebene Netzkonfiguration angemessen bewertet werden. - Daher ist eine detaillierte Netzsicherheitsanalyse erforderlich, die - das Risikopotenzial der allgemeinen Bedrohungen für die ein Netz nutzenden Einheiten bewertet und - den Aufwand (Ressourcen, Zeit usw.) abschätzt, der zur Durchführung bekannter Angriffe erforderlich ist. - Achtung! Es ist im Allgemeinen unmöglich, unbekannte Angriffe zu bewerten! - Eine detaillierte Sicherheitsanalyse einer bestimmten Netzkonfiguration / spezifischen Protokollarchitektur - kann auch erforderlich sein, um die Finanzkontrolleure eines Unternehmens davon zu überzeugen, Mittel für Sicherheitsverbesserungen bereitzustellen, und - kann besser nach den feinkörnigeren Angriffen auf der Nachrichtenebene strukturiert werden. ## Angriffe auf die Kommunikation auf der Nachrichtenebene - Passive Angriffe - Lauschangriff - Aktive Angriffe - Verzögerung von PDUs (Protocol Data Units) - Wiederholung von PDUs - Löschung von PDUs - Modifikation von PDUs - Einfügung von PDUs - Die erfolgreiche Durchführung eines der oben genannten Angriffe erfordert - Es gibt keine erkennbaren Nebeneffekte auf andere Kommunikationen (Verbindungen/verbindungslose Übertragungen) - Es gibt keine Nebenwirkungen auf andere PDUs der gleichen Verbindung/verbindungslosen Datenübertragung zwischen den gleichen Entitäten - Eine Sicherheitsanalyse einer Protokollarchitektur muss diese Angriffe entsprechend den Schichten der Architektur analysieren ## Schutzmaßnahmen gegen Bedrohungen der Informationssicherheit - Physische Sicherheit - Schlösser oder andere physische Zugangskontrollen - Manipulationssicherung empfindlicher Geräte - Umweltkontrollen - Personelle Sicherheit - Identifizierung von sensiblen Positionen - Verfahren zur Überprüfung der Mitarbeiter - Sicherheitsschulung und -bewusstsein - Administrative Sicherheit - Kontrolle des Imports von Fremdsoftware - Verfahren zur Untersuchung von Sicherheitsverstößen - Überprüfung von Prüfpfaden - Überprüfung von Kontrollen der Rechenschaftspflicht - Strahlungssicherheit - Kontrolle von Funkfrequenzen und anderen elektromagnetischen Abstrahlungen - Bezeichnet als TEMPEST-Schutz - Mediensicherheit - Absicherung der Speicherung von Informationen - Kontrolle der Kennzeichnung, Vervielfältigung und Vernichtung von sensiblen Informationen - Sicherstellen, dass Medien mit sensiblen Informationen sicher vernichtet werden - Scannen von Medien auf Viren - Lebenszyklus-Kontrollen - Vertrauenswürdiger Systementwurf, -implementierung, -bewertung und -übernahme - Programmierstandards und -kontrollen - Kontrollen der Dokumentation - Computer-Sicherheit - Schutz von Informationen während der Speicherung/Verarbeitung in einem Computersystem - Schutz der Datenverarbeitungsgeräte selbst - Sicherheit der Kommunikation - Schutz von Informationen während des Transports von einem System zu einem anderen - Schutz der Kommunikationsinfrastruktur selbst ## Kommunikationssicherheit: Einige Terminologie - Sicherheitsdienst - Ein abstrakter Dienst, der eine bestimmte Sicherheitseigenschaft gewährleisten soll. - Ein Sicherheitsdienst kann sowohl mit Hilfe von kryptografischen Algorithmen und Protokollen als auch mit herkömmlichen Mitteln realisiert werden - Man kann ein elektronisches Dokument auf einem USB-Stick vertraulich halten, indem man es in einem verschlüsselten Format auf dem Datenträger speichert und den Datenträger in einem Tresor wegschließt. - In der Regel ist eine Kombination aus kryptografischen und anderen Mitteln am effektivsten - Kryptographischer Algorithmus - Eine mathematische Umwandlung von Eingabedaten (z. B. Daten, Schlüssel) in Ausgabedaten - Kryptografische Algorithmen werden in kryptografischen Protokollen verwendet. - Kryptografisches Protokoll - Eine Reihe von Schritten und der Austausch von Nachrichten zwischen mehreren Einheiten, um ein bestimmtes Sicherheitsziel zu erreichen ## Sicherheitsdienste - Überblick - **Authentifizierung (Authentication)** - Der grundlegendste Sicherheitsdienst, der sicherstellt, dass eine Entität tatsächlich die Identität besitzt, die sie vorgibt zu haben - **Integrität (Integrity)** - In gewisser Weise der "kleine Bruder" des Authentifizierungsdienstes, da er sicherstellt, dass Daten, die von bestimmten Entitäten erstellt wurden, nicht unentdeckt verändert werden können - **Vertraulichkeit (Confidentiality)** - Der beliebteste Sicherheitsdienst, der die Geheimhaltung der geschützten Daten gewährleistet - **Zugriffskontrolle (Access Control)** - Kontrolliert, dass jede Identität nur auf die Dienste und Informationen zugreift, zu denen sie berechtigt ist - **Nicht-Abstreitbarkeit (Non Repudiation)** - Schützt davor, dass an einem Kommunikationsaustausch beteiligte Entitäten später fälschlicherweise abstreiten können, dass der Austausch stattgefunden hat ## Sicherheitsunterstützende Mechanismen - Allgemeine Mechanismen - Schlüsselverwaltung: Alle Aspekte des Lebenszyklus von kryptografischen Schlüsseln - Zufallszahlengenerierung: Generierung von kryptographisch sicheren Zufallszahlen - Ereigniserkennung / Sicherheitsprüfpfad: Erkennung und Aufzeichnung von Ereignissen, die zur Erkennung von Angriffen oder Bedingungen, die von Angriffen ausgenutzt werden könnten, verwendet werden können - Erkennung von Eindringlingen: Analyse der aufgezeichneten Sicherheitsdaten, um erfolgreiche Einbrüche oder Angriffe zu erkennen - Beglaubigung: Registrierung von Daten durch eine vertrauenswürdige dritte Partei, die später bestimmte Eigenschaften (Inhalt, Ersteller, Erstellungszeitpunkt) der Daten bestätigen kann - Kommunikationsspezifische Mechanismen - Traffic Padding & Cover Traffic: Erzeugung von gefälschtem Verkehr, um die Analyse des Verkehrsflusses zu verhindern - Routing-Kontrolle: Beeinflussung des Routings von PDUs in einem Netzwerk ## Kryptologie - Definition und Terminologie - Kryptologie - Wissenschaft, die sich mit sicherer und meist geheimer Kommunikation beschäftigt - Der Begriff leitet sich von den griechischen Wörtern kryptós (verborgen) und lógos (Wort) ab. - Kryptologie umfasst - Kryptographie ( gráphein = schreiben): die Lehre von den Prinzipien und Techniken, mit denen Informationen in verschlüsseltem Text verborgen und später von legitimen Nutzern mit Hilfe eines geheimen Schlüssels offengelegt werden können - Kryptoanalyse ( analýein = lýsen, losbinden): die Wissenschaft (und Kunst) der Wiedergewinnung von Informationen aus Chiffren ohne Kenntnis des Schlýssels - Chiffre (Quelle Encyclopaedia Britannica) - Methode zur Umwandlung einer Nachricht (Klartext), um ihre Bedeutung zu verschleiern - Wird auch als Synonym für den verborgenen Chiffretext verwendet. - Chiffren sind eine Klasse von kryptografischen Algorithmen - Die Umwandlung erfolgt in der Regel mit der Nachricht und einem (geheimen) Schlüssel als Eingabe ## Kryptologie - einige historische Anmerkungen - 400 v. Chr.: Die Spartaner verwenden ein Chiffriergerät namens Scytale für die Kommunikation zwischen militärischen Befehlshabern. - Die Scytale bestand aus einem spitz zulaufenden Stab, um den spiralförmig ein Streifen Pergament oder Leder gewickelt war, auf den die Nachricht geschrieben wurde - Beim Aufwickeln wurden die Buchstaben der Reihe nach durcheinander gewürfelt und bildeten die Chiffre. - Wurde der Streifen um einen anderen Stab mit den gleichen Proportionen wie das Original gewickelt, kam der Klartext wieder zum Vorschein - Im 4. Jahrhundert v. Chr: - Aeneas Tacticus (Grieche) schreibt "Über die Verteidigung von Festungen", wobei ein Kapitel der Kryptographie gewidmet ist - Polybius (Grieche) erfindet eine Methode zur Kodierung von Buchstaben in Symbolpaaren mit Hilfe eines Geräts namens Polybius-Schachbrett, das eine bi-literale Substitution ermöglicht und viele Elemente späterer Kryptosysteme vorwegnimmt - Die Römer verwendeten eine monoalphabetische Substitution mit einfacher zyklischer Verschiebung des Alphabets: - Julius Caesar verwendete eine Verschiebung von drei Buchstaben (A ergibt D, ..., Z ergibt C) - Augustus Caesar verwendete eine einzige Verschiebung (A ergibt B, ...) - Die Araber waren die ersten, die die Prinzipien der Kryptographie verstanden und die Anfänge der Kryptoanalyse entdeckten: - Entwurf und Verwendung von Substitutions- und Transpositions-Chiffren - Entdeckung der Verwendung von Buchstabenhäufigkeitsverteilungen und wahrscheinlichen Klartexten in der Kryptoanalyse - Bis 1412 n. Chr. enthält Al-Kalka-Shandi in seiner Enzyklopädie Subh al-a'sha eine elementare und respektable Behandlung mehrerer kryptographischer Systeme und ihrer Kryptoanalyse - Europäische Kryptographie: - Die Entwicklung begann im Kirchenstaat und in den italienischen Stadtstaaten im Mittelalter - Die ersten Chiffren verwendeten nur Vokalsubstitutionen - 1397: Gabriele de Lavinde von Parma verfasst das erste europäische Handbuch zur Kryptographie, das eine Zusammenstellung von Chiffren sowie eine Reihe von Schlüsseln für 24 Korrespondenten enthält und Symbole für Buchstaben, Zahlen und mehrere zweistellige Codeäquivalente für Wörter und Namen umfasst - Code-Vokabulare, Nomenklatoren genannt, wurden für mehrere Jahrhunderte zur Hauptstütze der diplomatischen Kommunikation der meisten europäischen Regierungen - 1470: Leon Battista Alberti veröffentlicht Trattati In Cifra, in denen er die erste Chiffrierscheibe beschreibt und bereits vorschreibt, die Scheibe regelmäßig neu einzustellen, wobei er den Begriff der Polyalphabetizität entwickelt - 1563: Giambattista della Porta liefert eine abgewandelte Form einer quadratischen Tabelle und das früheste Beispiel einer digraphischen Chiffre (2-Buchstaben-Substitution) - 1586: Blaise de Vigenère veröffentlicht Traicté des chiffres, das die ihm zugeschriebene quadratische Tabelle enthält - Bis 1860 wurden große Codes für die diplomatische Kommunikation verwendet, und Chiffren wurden nur in der militärischen Kommunikation eingesetzt (außer auf hoher Kommandoebene), da es schwierig war, Codebücher im Feld zu schützen. - Entwicklungen während der Weltkriege 1 und 2: - Während des 1. Weltkriegs: Chiffriersysteme wurden hauptsächlich für die taktische Kommunikation verwendet und die Kommunikation auf hoher Ebene wurde durch Codes geschützt. - 1920: Die Kommunikationsbedürfnisse der Telekommunikation und die Weiterentwicklung der elektromechanischen Technik führen zu einer wahren Revolution bei den Verschlüsselungsgeräten - der Entwicklung von Rotor-Chiffriermaschinen: - Das Rotorprinzip wird unabhängig voneinander von E. E. Hebern (USA), H. A. Koch (Niederlande) und A. Scherbius (Deutschland) entdeckt - Rotor-Chiffriermaschinen kaskadieren eine Sammlung von Chiffrierscheiben, um eine polyalphabetische Substitution von hoher Komplexität zu realisieren - Die Kryptoanalyse der taktischen Kommunikation spielt während des Zweiten Weltkriegs eine sehr wichtige Rolle. Die größten Erfolge sind die britische und polnische Lösung der deutschen Enigma- und der beiden Fernschreiber-Chiffren sowie die amerikanische Kryptoanalyse der japanischen Chiffren. - Entwicklungen nach dem 2. Weltkrieg: - Die moderne Elektronik ermöglicht noch komplexere Chiffren, die zunächst den Rotorprinzipien folgen (und deren Schwächen einbeziehen) - Die meisten Informationen über elektronische Chiffriermaschinen, die von verschiedenen nationalen Kryptodiensten verwendet wurden, sind nicht öffentlich zugänglich. - Ende der 1960er Jahre war die kommerziell verfügbare Kryptographie kaum bekannt, und starke Kryptographie war den nationalen Behörden vorbehalten - 1973-1977: Entwicklung des Data Encryption Standard (DES) - 1976-1978: Entdeckung der Public-Key-Kryptografie - 1976: W. Diffie und M. Hellman veröffentlichen "New Directions in Cryptography" (Neue Wege in der Kryptographie), in dem sie die Konzepte der Public-Key-Kryptographie einführen und ein Verfahren zum Austausch von Schlüsseln über unsichere Kanäle beschreiben. - R. Merkle entdeckt unabhängig das Prinzip des öffentlichen Schlüssels, seine ersten Veröffentlichungen erscheinen jedoch erst 1978, da der Veröffentlichungsprozess langsam ist - 1978: R. L. Rivest, A. Shamir und A. M. Adleman veröffentlichen "A Method for Obtaining Digital Signatures and Public Key Cryptosystems", das den ersten funktionierenden und sicheren Public-Key-Algorithmus RSA enthält # Grundlagen der Kryptographie - Überblick über kryptografische Algorithmen - Angriffe auf die Kryptographie - Eigenschaften von Verschlüsselungsalgorithmen - Klassifizierung von Verschlüsselungsalgorithmen ## Kryptographische Algorithmen: Überblick - In diesem Kurs stehen zwei Hauptanwendungen kryptographischer Algorithmen im Mittelpunkt des Interesses - Verschlüsselung von Daten: Umwandlung von Klartextdaten in Chiffretext, um deren Bedeutung zu verbergen - Signierung von Daten: Berechnung eines Prüfwerts oder einer digitalen Signatur für einen gegebenen Klartext oder Geheimtext, der von einigen oder allen Stellen, die auf die signierten Daten zugreifen können, überprüft werden kann - Einige kryptografische Algorithmen können für beide Zwecke verwendet werden, andere sind nur für einen der beiden Zwecke sicher und/oder effizient. - Hauptkategorien von kryptografischen Algorithmen - Symmetrische Kryptografie, die 1 Schlüssel für die Ver-/Entschlüsselung oder die Signierung/Prüfung verwendet - Asymmetrische Kryptografie mit 2 verschiedenen Schlüsseln für die Ver-/Entschlüsselung oder die Unterzeichnung/Prüfung - Kryptografische Hash-Funktionen mit 0 Schlüsseln (der "Schlüssel" ist keine separate Eingabe, sondern wird an die Daten "angehängt" oder mit ihnen "vermischt"). ## Angriff auf die Kryptographie ## Kryptoanalyse - Kryptoanalyse ist der Versuch, den Klartext und/oder den Schlüssel herauszufinden. - Arten der Kryptoanalyse - Nur Chiffretext: bestimmte Muster des Klartextes können im Chiffretext erhalten bleiben (Häufigkeit von Buchstaben, Digraphen usw.) - Bekannte Chiffretext-Klartext-Paare - Gewählter Klartext oder gewählter Chiffretext - Differentielle Kryptoanalyse und lineare Kryptoanalyse - Neuere Entwicklung: verwandte Schlüsselanalyse - Kryptoanalyse der Public-Key-Kryptographie - Die Tatsache, dass ein Schlüssel öffentlich zugänglich ist, kann ausgenutzt werden - Die Kryptoanalyse öffentlicher Schlüssel zielt eher darauf ab, das Kryptosystem selbst zu knacken und ist näher an der reinen mathematischen Forschung als an der klassischen Kryptoanalyse. - Wichtige Richtungen - Berechnung von diskreten Logarithmen - Faktorisierung von großen ganzen Zahlen ### Brute-Force-Angriff - Der Brute-Force-Angriff probiert alle möglichen Schlüssel aus, bis er einen verständlichen Klartext findet - Jeder kryptographische Algorithmus kann theoretisch mit Brute Force angegriffen werden - Im Durchschnitt muss die Hälfte aller möglichen Schlüssel ausprobiert werden Durchschnittlich benötigte Zeit für erschöpfende Schlüsselsuche | Schlüsselgröße [bit] | Anzahl der Schlüssel | Benötigte Zeit bei 1 $Verschlüsselung/\mu$s | Zeitbedarf bei 10^6 Verschlüsselung /$\mu$s | | -------------------- | ---------------------------- | ------------------------------------------- | ------------------------------------------- | | 56 | $2^{56} = 7,2\times 10^{16}$ | $2^{55}\mu s = 1142$ Jahre | $10,01$ Stunden | | 128 | $2^{128} = 3,4 x 10^{38}$ | $2^{127}\mu s = 5,4 x 10^{24}$ Jahre | $5,4 x 10^{18}$ Jahre | | 256 | $2^{256} = 1.2 x 10^{77} | $2^{255}\mu s = 3,7 x 10^{63}$ Jahre | $3,7 x 10^{57}$ Jahre | ### Wie groß ist groß? Referenzzahlen zum Vergleich relativer Größenordnungen | Referenz | Größe | | ---------------------------------------------- | ----------------------------- | | Sekunden in einem Jahr | ca. $3 x 10^7$ | | Sekunden seit der Entstehung des Sonnensystems | ca. $2 x 10^{17}$ | | Taktzyklen pro Jahr (50 MHz Computer) | ca. $1,6 x 10^{15}$ | | Binäre Zeichenketten der Länge 64 | $2^{64}$ ca. $1,8 x 10^{19}$ | | Binäre Zeichenfolgen der Länge 128 | $2^{128}$ ca. $3,4 x 10^{38}$ | | Binäre Zeichenfolgen der Länge 256 | $2^{256}$ ca. $1,2 x 10^{77}$ | | Anzahl der 75-stelligen Primzahlen | $5,2 x 10^{72}$ | | Elektronen im Universum | $8,37 x 10^{77}$ | ### Wichtige Eigenschaften von Verschlüsselungsalgorithmen Nehmen wir an, ein Absender verschlüsselt Klartextnachrichten $P_1, P_2, ...$ zu Chiffretextnachrichten $C_1, C_2, ...$ Dann sind die folgenden Eigenschaften des Verschlüsselungsalgorithmus von besonderem Interesse - Die Fehlerfortpflanzung charakterisiert die Auswirkungen von Bit-Fehlern bei der Übertragung von Chiffretext zu rekonstruiertem Klartext $P_1', P_2', ...$ - Je nach Verschlüsselungsalgorithmus können pro fehlerhaftem Chiffretext-Bit ein oder mehrere fehlerhafte Bits im rekonstruierten Klartext vorhanden sein - Die Synchronisierung charakterisiert die Auswirkungen verlorener Chiffretext-Dateneinheiten auf den rekonstruierten Klartext - Einige Verschlüsselungsalgorithmen können sich nicht von verlorenem Chiffretext erholen und benötigen daher eine explizite Neusynchronisierung im Falle verlorener Nachrichten - Andere Algorithmen führen eine automatische Neusynchronisierung nach 0 bis n (n je nach Algorithmus) Chiffretextbits durch. ## Klassifizierung von Verschlüsselungsalgorithmen: Drei Dimensionen - Die Art der Operationen, die zur Umwandlung von Klartext in Chiffretext verwendet werden - Substitution, die jedes Element des Klartextes (Bit, Buchstabe, Gruppe von Bits oder Buchstaben) in ein anderes Element umwandelt - Transposition, die die Elemente des Klartextes neu anordnet - Die Anzahl der verwendeten Schlüssel - Symmetrische Chiffren, die denselben Schlüssel für die Ver- und Entschlüsselung verwenden - Asymmetrische Chiffren, bei denen unterschiedliche Schlüssel für die Ver- und Entschlüsselung verwendet werden - Die Art und Weise, in der der Klartext verarbeitet wird - Stromchiffren arbeiten mit Bitströmen und verschlüsseln ein Bit nach dem anderen - Viele Stromchiffren basieren auf der Idee der linearen rückgekoppelten Schieberegister, und bei vielen Algorithmen dieser Klasse wurden Schwachstellen entdeckt, da es eine tiefgreifende mathematische Theorie zu diesem Thema gibt. - Die meisten Stromchiffren verbreiten keine Fehler, sind aber anfällig für den Verlust der Synchronisation. - Blockchiffren arbeiten mit Blöcken der Breite b, wobei b vom jeweiligen Algorithmus abhängt. ## Kryptographische Algorithmen - Überblick Kryptografische Algorithmen - Überblick - Eigenschaften - Kryptoanalyse - Symmetrische Ver-/Entschlüsselung - Funktionsweisen - DES - AES - RC4 - KASUMI - Asymmetrische Ver-/Entschlüsselung - Hintergrund - RSA - Diffie-Hellman - ElGamal - ECC - Kryptographische Hash-Funktionen - MDCs/MACs - MD - SHA-1/2/ - CBC-MAC - GCM-MAC # Symmetrische Kryptographie - Modi der Verschlüsselung - Datenverschlüsselungsstandard (DES) - Erweiterter Verschlüsselungsstandard (AES) - Die Blockchiffre RC - KASUMI ## Symmetrische Verschlüsselung - Allgemeine Beschreibung - Derselbe Schlüssel KA,B wird für die Verschlüsselung und Entschlüsselung von Nachrichten verwendet - Schreibweise - Wenn P die Klartextnachricht bezeichnet, bezeichnet $E(K_{A,B}, P)$ den Chiffretext und es gilt $D(K_{A,B}, E(K_{A,B}, P)) = P$ - Alternativ schreibt man manchmal $\{P\}_{K_{A,B}}$ oder $E_{K_{A,B}}(P)$ für $E(K_{A,B}, P)$ - Beispiele: DES, 3DES, AES, ... ## Symmetrische Blockchiffren - Verschlüsselungsarten Allgemeine Bemerkungen & Notation - Ein Klartext P wird in Blöcke $P_1, P_2, ...$ der Länge b bzw. j zerlegt, wobei b die Blockgröße des Verschlüsselungsalgorithmus bezeichnet und j < b - Der Chiffretext C ist die Kombination von $C_1, C_2, ...$, wobei $c_i$ das Ergebnis der Verschlüsselung des i-ten Blocks der Klartextnachricht bezeichnet - Die Stellen, die eine Nachricht verschlüsseln und entschlüsseln, haben sich auf einen Schlüssel K geeinigt. Elektronischer Codebuch-Modus (Electronic Code Book Mode: ECB) - Jeder Block Pi der Länge b wird unabhängig verschlüsselt: $C_i = E(K, p_i)$ - Ein Bitfehler in einem Chiffretextblock $C_i$ führt zu einem völlig falsch wiederhergestellten Klartextblock $P_i'$ - Der Verlust der Synchronisation hat keine Auswirkungen, wenn ganzzahlige Vielfache der Blockgröße b verloren gehen. Geht eine andere Anzahl von Bits verloren, ist eine explizite Neusynchronisation erforderlich. - Nachteil: identische Klartextblöcke werden zu identischem Chiffretext verschlüsselt! - ![](Assets/NetworkSecurity-electronic-code-book-mode.png) Cipher Block Chaining Modus (Cipher Block Chaining Mode: CBC) - Vor der Verschlüsselung eines Klartextblocks pi wird dieser mit dem vorangegangenen Chiffretextblock $C_{i-1}$ XOR-verknüpft () - $C_i = E(K, C_{i-1} \oplus p_i)$ - $P_{i'} = C_{i-1} \oplus D(K, C_i)$ - Um $C_1$ zu berechnen, einigen sich beide Parteien auf einen Anfangswert (IV) für $C_0$ - Eigenschaften - Fehlerfortpflanzung: Ein verfälschter Chiffretextblock führt zu zwei verfälschten Klartextblöcken, da $P_i'$ mit $C_{i-1}$ und $C_i$ berechnet wird - Synchronisation: Wenn die Anzahl der verlorenen Bits ein ganzzahliges Vielfaches von b ist, wird ein zusätzlicher Block $P_{i+1}$ verzerrt, bevor die Synchronisation wiederhergestellt wird. Wenn eine andere Anzahl von Bits verloren geht, ist eine explizite Neusynchronisation erforderlich. - Vorteil: identische Klartextblöcke werden zu nicht-identischem Chiffretext verschlüsselt. - ![](Assets/NetworkSecurity-cipher-block-chaining-mode.png) Chiffretext-Feedback-Modus (Ciphertext Feedback Mode: CFB) - Ein Blockverschlüsselungsalgorithmus, der mit Blöcken der Größe b arbeitet, kann in einen Algorithmus umgewandelt werden, der mit Blöcken der Größe $j (j = 99, A = 10, B = 11, ..., Z = 35. Somit würde ,,HELLO'' als 1714212124 kodiert werden. Falls erforderlich, ist M in Blöcke kleinerer Nachrichten aufzuteilen: 17142 12124 - Zum Verschlüsseln berechnen Sie: $E = M^e\ MOD\ n$ - Dies kann mit dem Quadrat- und Multiplikationsalgorithmus effizient durchgeführt werden - Zum Entschlüsseln berechnet man: $M'=E^d\ MOD\ n$ - Da $d\times e\equiv 1\ mod\ \phi(n)\Rightarrow\existiert k\in\mathbb{Z}:(d\times e)-1=k\times\phi(n)\Leftrightarrow(d\times e)=k\times\phi(n)+1$ - haben wir: $M'\equiv E^d\equiv M^{e\times d}\equiv M^{k\times\phi(n)+1}\equiv 1^k\times M\equiv M\ mod\ n$ - Da $(d\times e)=(e\times d)$ funktioniert die Operation auch in umgekehrter Richtung, d.h. man kann mit d verschlüsseln und mit e entschlüsseln - Diese Eigenschaft erlaubt es, die gleichen Schlüssel d und e zu verwenden: - den Empfang von Nachrichten, die mit dem eigenen öffentlichen Schlüssel verschlüsselt wurden - Senden von Nachrichten, die mit dem eigenen privaten Schlüssel signiert wurden - So richten Sie ein Schlüsselpaar für RSA ein: - Wählen Sie zufällig zwei Primzahlen $p$ und $q$ (mit jeweils 100 bis 200 Ziffern) - Berechne $n=p\mal q,\phi(n)=(p-1)\mal (q-1)$ (Lemma 2) - Wähle zufällig $e$, so dass $gcd(e,\phi(n))=1$ - Berechne mit dem erweiterten euklidischen Algorithmus d und c, so dass: $e\mal d+\phi(n)\mal c = 1$, wobei zu beachten ist, dass dies impliziert, dass $e\mal d\equiv 1\ mod\ \phi(n)$ - Der öffentliche Schlüssel ist das Paar $(e, n)$ - Der private Schlüssel ist das Paar $(d, n)$ - Die Sicherheit des Verfahrens liegt in der Schwierigkeit der Faktorisierung von $n=p\mal q$, da es einfach ist, $\phi(n)$ und dann $d$ zu berechnen, wenn $p$ und $q$ bekannt sind. - In diesem Kurs wird nicht gelehrt, warum es schwierig ist, große n zu faktorisieren, da dies einen tiefen Einblick in die Mathematik erfordern würde. - Wenn p und q bestimmte Eigenschaften erfüllen, sind die besten bekannten Algorithmen exponentiell zur Anzahl der Ziffern von n - Bitte beachten Sie, dass es bei einer unglücklichen Wahl von p und q Algorithmen geben könnte, die effizienter faktorisieren können, und dass Ihre RSA-Verschlüsselung dann nicht mehr sicher ist: - Daher sollten p und q ungefähr die gleiche Bitlänge haben und ausreichend groß sein - $(p-q)$ sollte nicht zu klein sein - Wenn man einen kleinen Verschlüsselungsexponenten, z.B. 3, wählen will, kann es zusätzliche Einschränkungen geben, z.B. $gcd(p-1, 3) = 1$ und $gcd(q-1,3)=1$ - Die Sicherheit von RSA hängt auch davon ab, dass die erzeugten Primzahlen wirklich zufällig sind (wie jede Methode zur Schlüsselerzeugung bei jedem Algorithmus). - Moral: Wenn Sie RSA selbst implementieren wollen, bitten Sie einen Mathematiker oder besser einen Kryptographen, Ihren Entwurf zu überprüfen. ## Einige weitere mathematische Hintergründe - Definition: endliche Gruppen - Eine Gruppe ( S , \oplus) ist eine Menge S zusammen mit einer binären Operation \oplus, für die die folgende Eigenschaften gelten: - Geschlossenheit: Für alle a, b \in S , haben wir a \oplus b \in S - Identität: Es gibt ein Element e \in S , so dass e \oplus a = a \oplus e = a für alle a \in S - Assoziativität: Für alle a, b, c \in S , gilt ( a \oplus b ) \oplus c = a \oplus ( b \oplus c ) - Inversen: Für jedes a \in S , gibt es ein einziges Element b \in S , so dass dass a \oplus b = b \oplus a = e - Erfüllt eine Gruppe ( S , \oplus) das Kommutativgesetz \für alle a, b \in S : a \oplus b = b \oplus a dann nennt man sie eine abelsche Gruppe - Wenn eine Gruppe ( S , \oplus) nur eine endliche Menge von Elementen hat, d.h. |S| < \infty, dann wird sie eine endliche Gruppe genannt - Beispiele: - $(\mathbb{Z}_n , +_n)$ - mit $\mathbb{Z}_n:=\{[0]_n,[1]_n,...,[n-1]_n\}$ - wobei $[a]_n:=\{b \in \mathbb{Z} | b \equiv a mod n\}$ und - $+_n$ ist so definiert, dass $[a]_n+_n[b]_n=[a+b]_n$ - eine endliche abelsche Gruppe ist. Für den Beweis siehe die Tabelle mit den Eigenschaften der modularen Arithmetik - $(\mathbb{Z}^*_n , \times_n)$ - mit $\mathbb{Z}^*_n :=\{[a]_n\in \mathbb{Z}_n | gcd(a,n)=1\}$, und - $\times_n$ ist so definiert, dass $[a]_n\times_n [b]_n=[a\times b]_n$ - eine endliche abelsche Gruppe ist. Man beachte, dass $\mathbb{Z}^*_n$ nur die Elemente von $\mathbb{Z}_n$ enthält, die eine multiplikative Inverse modulo n haben. Zum Beweis siehe Eigenschaften der modularen Arithmetik - Beispiel: $\mathbb{Z}^*_{15}=\{[1]_{15},[2]_{15},[4]_{15},[7]_{15},[8]_{15},[11]_{15},[13]_{15},[14]_{15}\}$, als $1\times 1\equiv 1 mod 15$, $2 \Zeiten 8 \equiv 1 mod 15$, $4 \Zeiten 4 \equiv 1 mod 15$, $7 \Zeiten 13 \equiv 1 mod 15$, $11 \Zeiten 11 \equiv 1 mod 15$, $14 \Zeiten 14 \equiv 1 mod 15$ - Wenn klar ist, dass es sich um $(\mathbb{Z}_n, +_n)$ oder $(\mathbb{Z}^*_n, \times_n)$ handelt, werden Äquivalenzklassen $[a]_n$ oft durch ihre repräsentativen Elemente a dargestellt und $+_n$ und $\times_n$ durch $+$ bzw. $\times$ bezeichnet. - Definition: endliche Felder - Ein Feld $(S,\oplus, \otimes)$ ist eine Menge S zusammen mit zwei Operationen $\oplus$, $\otimes$, so dass - $(S,\oplus)$ und $(S\backslash\{e_{\oplus}\},\otimes)$ sind kommutative Gruppen, d.h. nur das Identitätselement bezüglich der Operation $\oplus$ muss kein Inverses bezüglich der Operation $\otimes$ haben - Für alle $a,b,c\in S$ haben wir ein $\otimes(b\oplus c)=(a\otimes b)\oplus(a\otimes c)$ - Wenn $|S|<\infty$ dann heißt $(S,\oplus,\otimes)$ ein endliches Feld - Beispiel: $(\mathbb{Z}_p, +_p, \times_p)$ ist ein endliches Feld für jede Primzahl p - Definition: Primitive Wurzel, Generator - Sei $(S,\circ)$ eine Gruppe, $g\in S$ und $g^a:=g\circ g\circ...\circ g$ (a mal mit $a\in\mathbb{Z}^+$) - Dann heißt g eine primitive Wurzel oder ein Generator von $(S,\circ):\Leftrightarrow\{g^a|1\leq a\leq |S|\}=S$ - Beispiele: - 1 ist eine primitive Wurzel von $(\mathbb{Z}_n, +_n)$ - 3 ist eine Primitivwurzel von $(\mathbb{Z}^*_7, \times_7)$ - Nicht alle Gruppen haben Primitivwurzeln, und diejenigen, die sie haben, nennt man zyklische Gruppen - Theorem 5: - $(\mathbb{Z}^*_n, \times_n)$ hat eine primitive Wurzel $\Leftrightarrow n\in\{2,4,p,2\times p^e\}$, wobei p eine ungerade Primzahl ist und $e\in\mathbb{Z}^+$ - Theorem 6: - Wenn $(S,\circ)$ eine Gruppe ist und $b\in S$, dann ist $(S',\circ)$ mit $S'=\{b^a|a\in\mathbb{Z}^+\}$ ebenfalls eine Gruppe. - Da $S'\subseteq S, heißt (S',\circ)$ eine Untergruppe von $(S,\circ)$ - Wenn b eine Urwurzel von $(S,\circ)$ ist, dann ist $S'=S$ - Definition: Ordnung einer Gruppe und eines Elements - Sei $(S,\circ)$ eine Gruppe, $e\in S$ ihr Identitätselement und $b\in S$ irgendein Element von $S$: - Dann heiße $|S|$ die Ordnung von $(S,\circ)$ - Sei $c\in\mathbb{Z}^+$ das kleinste Element, so dass $b^c=e$ ist (falls ein solches c existiert, falls nicht, setze $c=\infty$). Dann wird c die Ordnung von b genannt. - Theorem 7 (Lagrange): - Ist G eine endliche Gruppe und H eine Untergruppe von G , so ist $|H|$ Teiler von $|G|$. - Wenn also $b in G$ ist, dann ist die Ordnung von b Teiler von $|G|$. - Theorem 8: - Ist G eine zyklische endliche Gruppe der Ordnung n und d ist Teiler von n, dann hat G genau $\phi(d)$ Elemente der Ordnung $d$. Insbesondere hat G $\phi(n)$-Elemente der Ordnung n. - Die Theoreme 5, 7 und 8 sind die Grundlage des folgenden Algorithmus, der eine zyklische Gruppe $\mathbb{Z}^*_p$ und eine Urwurzel g davon findet: - Man wählt eine große Primzahl q, so dass $p=2q+1$ eine Primzahl ist. - Da $p$ prim ist, besagt Satz 5, dass $\mathbb{Z}^*_p$ zyklisch ist. - Die Ordnung von $\mathbb{Z}^*_p$ ist $2\-mal q$ und $\phi(2\-mal q)=\phi(2)\-mal\phi(q)=q-1$, da $q$ prim ist. - Die Wahrscheinlichkeit, dass eine Primitivwurzel zufällig ausgewählt wird, beträgt also $(q-1)/2q \ca. 1/2$. - Um effizient zu prüfen, ob ein zufällig gewähltes g eine Urwurzel ist, müssen wir nur prüfen, ob $g^2\equiv 1 mod p$ oder $g^q\equiv 1 mod p$ ist. Wenn nicht, dann muss seine Ordnung $|\mathbb{Z}^*_p|$ sein, da Satz 7 besagt, dass die Ordnung von g $|\mathbb{Z}^*_p|$ teilen muss - Definition: diskreter Logarithmus - Sei p eine Primzahl, g eine Urwurzel von $(\mathbb{Z}^*_p,\times_p)$ und c ein beliebiges Element von $\mathbb{Z}^*_p$. Dann gibt es z so, dass: $g^z\equiv c mod p$ - z wird der diskrete Logarithmus von c modulo p zur Basis g genannt - Beispiel 6 ist der diskrete Logarithmus von 1 modulo 7 zur Basis 3 als $3^6\equiv 1 mod 7$ - Die Berechnung des diskreten Logarithmus z bei gegebenem g, c und p ist ein rechnerisch schwieriges Problem, und die asymptotische Laufzeit der besten bekannten Algorithmen für dieses Problem ist exponentiell zur Bitlänge von p ## Diffie-Hellman-Schlüsselaustausch - Der Diffie-Hellman-Schlüsselaustausch wurde erstmals in der bahnbrechenden Arbeit [DH76] veröffentlicht, in der auch die Grundidee der asymmetrischen Kryptographie vorgestellt wurde - Der DH-Austausch in seiner Grundform ermöglicht es zwei Parteien A und B, sich über einen öffentlichen Kanal auf ein gemeinsames Geheimnis zu einigen: - Öffentlicher Kanal bedeutet, dass ein potentieller Angreifer E (E steht für Eavesdropper) alle zwischen A und B ausgetauschten Nachrichten lesen kann - Es ist wichtig, dass A und B sicher sein können, dass der Angreifer nicht in der Lage ist, Nachrichten zu verändern, da er in diesem Fall einen Man-in-the-Middle-Angriff starten könnte - Die mathematische Grundlage für den DH-Austausch ist das Problem, diskrete Logarithmen in endlichen Feldern zu finden. - Der DH-Austausch ist kein asymmetrischer Verschlüsselungsalgorithmus, wird aber dennoch hier vorgestellt, da er gut zum mathematischen Charakter dieser Vorlesung passt... - Wenn Alice (A) und Bob (B) sich auf ein gemeinsames Geheimnis s einigen wollen und ihr einziges Kommunikationsmittel ein öffentlicher Kanal ist, können sie wie folgt vorgehen: - A wählt eine Primzahl p, eine primitive Wurzel g von $\mathbb{Z}^*_p$ und eine Zufallszahl q: - A und B können sich vor der Kommunikation auf die Werte p und g einigen, oder A wählt p und g und sendet sie mit seiner ersten Nachricht - A berechnet $v=g^q\ MOD\ p$ und sendet an $B:\{p,g,v\}$ - B wählt eine Zufallszahl r: - B berechnet $w=g^r\ MOD\ p$ und sendet an $A:\{p,g,w\}$ (oder einfach $\{w\}$) - Beide Seiten errechnen das gemeinsame Geheimnis: - A errechnet $s=w^q\ MOD\ p$ - B errechnet $s'=v^r\ MOD\ p$ - Da $g^{q\mal r}\ MOD\ p = g^{r \mal q}\ MOD\ p$ ist, gilt: $s=s'$ - Ein Angreifer Eve, der den öffentlichen Kanal abhört, kann das Geheimnis s nur berechnen, wenn er entweder q oder r berechnen kann, die die diskreten Logarithmen von v, w modulo p zur Basis g sind. - Wenn der Angreifer Eve in der Lage ist, Nachrichten auf dem öffentlichen Kanal zu verändern, kann er einen Man-in-the-Middle-Angriff starten: - Eve generiert zwei Zufallszahlen $q'$ und $r'$: Eve berechnet $v'=g^{q'}\ MOD\ p$ und $w'=g^{r'}\ MOD\ p$ - Wenn A $\{p,g,v\}$ sendet, fängt sie die Nachricht ab und sendet an $B:\{p,g,v'\}$ - Wenn B $\{p,g,w\}$ sendet, fängt sie die Nachricht ab und sendet an $A:\{p,g,w'\}$ - Wenn das angebliche ,,gemeinsame Geheimnis'' berechnet wird, erhalten wir: - A berechnet $s_1=w'^q\ MOD\ p = v^{r'}\ MOD\ p$, letzteres berechnet von E - B berechnet $s_2=v'^r\ MOD\ p = w^{q'}\ MOD\ p$, letzteres berechnet von E - A und E haben sich also auf ein gemeinsames Geheimnis $s_1$ geeinigt, und E und B haben sich auf ein gemeinsames Geheimnis $s_2$ geeinigt. - Wenn das ,,gemeinsame Geheimnis'' nun von A und B verwendet wird, um Nachrichten zu verschlüsseln, die über den öffentlichen Kanal ausgetauscht werden sollen, kann E alle Nachrichten abfangen und ent- bzw. wiederverschlüsseln, bevor er sie zwischen A und B weiterleitet. - Zwei Gegenmaßnahmen gegen den Man-in-the-Middle-Angriff: - Das gemeinsame Geheimnis wird ,,authentifiziert'', nachdem es vereinbart worden ist. - Wir werden dies im Abschnitt über die Schlüsselverwaltung behandeln - A und B verwenden ein sogenanntes Interlock-Protokoll, nachdem sie sich auf ein gemeinsames Geheimnis geeinigt haben: - Dazu müssen sie Nachrichten austauschen, die E weiterleiten muss, bevor sie sie entschlüsseln bzw. wieder verschlüsseln kann. - Der Inhalt dieser Nachrichten muss von A und B überprüfbar sein. - Dies zwingt E dazu, Nachrichten zu erfinden, und sie kann entdeckt werden. - Eine Technik, um zu verhindern, dass E die Nachrichten entschlüsselt, besteht darin, sie in zwei Teile aufzuteilen und den zweiten Teil vor dem ersten zu senden. - Wenn der verwendete Verschlüsselungsalgorithmus bestimmte Eigenschaften verhindert, kann E den zweiten Teil nicht verschlüsseln, bevor sie den ersten erhält. - Da A den ersten Teil erst senden wird, nachdem er eine Antwort (den zweiten Teil) von B erhalten hat, ist E gezwungen, zwei Nachrichten zu erfinden, bevor sie die ersten Teile erhalten kann. - Bemerkung: In der Praxis muss die Zahl g nicht unbedingt eine Urwurzel von p sein, es genügt, wenn sie eine große Untergruppe von $\mathbb{Z}^*_p$ erzeugt ## ElGamal Algorithmus - Der ElGamal-Algorithmus kann sowohl für die Verschlüsselung als auch für digitale Signaturen verwendet werden (siehe auch [ElG85a]). - Wie der DH-Austausch basiert er auf der Schwierigkeit, diskrete Logarithmen in endlichen Feldern zu berechnen - Um ein Schlüsselpaar zu erstellen: - Wähle eine große Primzahl p, einen Generator g der multiplikativen Gruppe $\mathbb{Z}^*_p$ und eine Zufallszahl v, so dass $1\leq v\leq p - 2$. Berechnen Sie: $y=g^v mod p$ - Der öffentliche Schlüssel ist $( y, g, p )$ - Der private Schlüssel ist v - So signieren Sie eine Nachricht m : - Wähle eine Zufallszahl k so, dass k relativ prim zu $p-1$ ist. - Berechne $r=g^k mod p$ - Berechne mit dem erweiterten euklidischen Algorithmus $k^{-1}$, den Kehrwert von $k mod (p - 1)$ - Berechne $s=k^{-1} \mal ( m - v \mal r) mod ( p - 1)$ - Die Signatur über die Nachricht ist $( r, s )$ - Überprüfen einer Signatur $( r , s )$ über eine Nachricht m: - Bestätige, dass $y^r \times r^s\ MOD\ p = g^m\ MOD\ p$ - Der Beweis: Wir benötigen Folgendes - Lemma 3: Sei p eine Primzahl und g ein Generator von $\mathbb{Z}^*_p$. Dann sei $i \equiv j mod ( p -1) \Rightarrow g i \equiv g j mod p$ - Beweis: $i \equiv j mod (p-1) \Rightarrow$ es gibt $k\in \mathbb{Z}^+$ so, dass $(i-j)=(p-1)\mal k$ - Also $g^{(i-j)}=g^{(p-1)\mal k} \equiv 1^k\equiv 1 mod p$, wegen Theorem 3 (Euler) $\Rightarrow g^i \equiv g^j mod p$ - Als $s\equiv k^{-1}\times(m-v\times r) mod (p-1)$ - $\Leftrightarrow k \times s\equiv m-v\times r mod (p-1)$ - $\Leftrightarrow m \equiv v\times r+k\times s mod (p-1)$ - $\Rightarrow g^m \equiv g^{(v\Zeiten r+ k\Zeiten s)} mod p$ mit Lemma 3 - $\Leftrightarrow g^m \equiv g^{(v\Zeiten r)}\Zeiten g^{(k\Zeiten s)} mod p$ - $\Leftrightarrow g^m \equiv y^r\Zeiten r^s mod p$ - Sicherheit von ElGamal-Signaturen: - Da der private Schlüssel v benötigt wird, um s berechnen zu können, müsste ein Angreifer den diskreten Logarithmus von y modulo p zur Basis g berechnen, um Signaturen zu fälschen - Entscheidend für die Sicherheit ist, dass für jede Nachricht eine neue Zufallszahl k gewählt wird, denn ein Angreifer kann das Geheimnis v berechnen, wenn er zwei Nachrichten zusammen mit ihren Signaturen auf der Basis des gleichen k erhält (siehe [Men97a], Anmerkung 11.66.ii) - Um zu verhindern, dass ein Angreifer eine Nachricht M mit einer passenden Signatur erstellen kann, ist es notwendig, die Nachricht M nicht direkt zu signieren, sondern einen kryptographischen Hashwert $m=h(M)$ davon zu signieren (diese werden bald behandelt, siehe auch [Men97a], Anmerkung 11.66.iii) - Um eine Nachricht m mit dem öffentlichen Schlüssel $(y,g,p)$ zu verschlüsseln: - Wähle einen zufälligen $k\in\mathbb{Z}^+$ mit $k 512 | - Die Sicherheit hängt auch stark von der Implementierung ab! - Die verschiedenen Fälle (z.B. mit O) in der ECC-Berechnung können beobachtbar sein, d.h. Stromverbrauch und Zeitunterschiede - Angreifer können Seitenkanalangriffe ableiten, wie in OpenSSL 0.9.8o [BT11] - Ein Angreifer kann die Bitlänge eines Wertes k in $kP$ ableiten, indem er die für den Quadrat- und Multiplikationsalgorithmus benötigte Zeit misst - Der Algorithmus wurde in OpenSSL frühzeitig abgebrochen, wenn keine weiteren Bits auf ,,1'' gesetzt wurden - Angreifer könnten versuchen, ungültige Punkte zu generieren, um Fakten über den verwendeten Schlüssel abzuleiten, wie in OpenSSL 0.9.8g, was zu einer Wiederherstellung eines vollen 256-Bit ECC-Schlüssels nach nur 633 Abfragen führte [BBP12] - Lektion gelernt: Machen Sie es nicht selbst, es sei denn, Sie müssen es tun und wissen, was Sie tun! ### Weitere Anmerkungen - Wie bereits erwähnt, ist es möglich, kryptographische elliptische Kurven über $G(2^n)$ zu konstruieren, was in Hardware-Implementierungen schneller sein kann. - Wir haben auf Details verzichtet, da dies nicht viele neue Erkenntnisse gebracht hätte! - Elliptische Kurven und ähnliche algebraische Gruppen sind ein aktives Forschungsgebiet und ermöglichen weitere fortgeschrittene Anwendungen, z.B: - Sogenannte Edwards-Kurven werden derzeit diskutiert, da sie robuster gegen Seitenkanalangriffe zu sein scheinen (z.B. [BLR08]) - Bilineare Paarungen ermöglichen - Programme zu verifizieren, dass sie zur selben Gruppe gehören, ohne ihre Identität preiszugeben (Secret Handshakes, z.B. [SM09]) - Öffentliche Schlüssel können strukturiert werden, z.B. ,,Alice'' als öffentlicher Schlüssel für Alice verwenden (Identitätsbasierte Verschlüsselung, Grundlagen in [BF03]) - Bevor Sie elliptische Kurvenkryptographie in einem Produkt einsetzen, stellen Sie sicher, dass Sie keine Patente verletzen, da es noch viele gültige Patente in diesem Bereich gibt! ## Schlussfolgerung - Asymmetrische Kryptographie erlaubt es, zwei verschiedene Schlüssel zu verwenden: - Verschlüsselung / Entschlüsselung - Signieren / Überprüfen - Die praktischsten Algorithmen, die immer noch als sicher gelten, sind: - RSA, basierend auf der Schwierigkeit, diskrete Logarithmen zu faktorisieren und zu lösen - Diffie-Hellman (kein asymmetrischer Algorithmus, sondern ein Schlüsselvereinbarungsprotokoll) - ElGamal, wie DH basierend auf der Schwierigkeit, diskrete Logarithmen zu berechnen - Da ihre Sicherheit vollständig auf der Schwierigkeit bestimmter mathematischer Probleme beruht, stellt der algorithmische Fortschritt ihre größte Bedrohung dar. - Praktische Überlegungen: - Asymmetrische kryptografische Operationen sind um Größenordnungen langsamer als symmetrische Operationen. - Daher werden sie oft nicht für die Verschlüsselung/Signierung von Massendaten verwendet. - Symmetrische Verfahren werden zur Verschlüsselung / Berechnung eines kryptografischen Hashwerts verwendet, während die asymmetrische Kryptografie nur zur Verschlüsselung eines Schlüssels / Hashwerts eingesetzt wird. # Modifikationsprüfwerte ## Motivation - In der Datenkommunikation ist es üblich, eine Art Fehlererkennungscode für Nachrichten zu berechnen, mit dem der Empfänger überprüfen kann, ob eine Nachricht während der Übertragung verändert wurde. - Beispiele: Parität, Bit-Interleaved Parity, Cyclic Redundancy Check (CRC) - Dies führt zu dem Wunsch, einen ähnlichen Wert zu haben, der es ermöglicht zu überprüfen, ob eine Nachricht während der Übertragung verändert wurde. - Es ist jedoch ein großer Unterschied, ob man davon ausgeht, dass die Nachricht durch mehr oder weniger zufällige Fehler oder absichtlich verändert wird: - Wenn jemand eine Nachricht, die mit einem CRC-Wert geschützt ist, absichtlich verändern will, kann er den CRC-Wert nach der Veränderung neu berechnen oder die Nachricht so verändern, dass sie den gleichen CRC-Wert ergibt. - Ein Änderungsprüfwert muss also einige zusätzliche Eigenschaften erfüllen, die es Angreifern unmöglich machen, ihn zu fälschen - Zwei Hauptkategorien von Modifikationsprüfwerten: - Modifikationserkennungscode (MDC) - Nachrichten-Authentifizierungs-Code (MAC) ## Kryptographische Hash-Funktionen - Definition: Hash-Funktion - Eine Hash-Funktion ist eine Funktion h, die die folgenden zwei Eigenschaften hat: - Komprimierung: h bildet eine Eingabe x mit beliebiger endlicher Bitlänge auf eine Ausgabe $h(x)$ mit fester Bitlänge n ab. - Einfachheit der Berechnung: Bei h und x ist es einfach, $h(x)$ zu berechnen. - Definition: kryptografische Hash-Funktion - Eine kryptografische Hash-Funktion h ist eine Hash-Funktion, die zusätzlich unter anderem die folgenden Eigenschaften erfüllt: - Pre-Image-Resistenz: für im Wesentlichen alle vorgegebenen Ausgaben y ist es rechnerisch nicht möglich, ein x zu finden, so dass $h(x)=y$ - 2. Vorabbild-Resistenz: Bei x ist es rechnerisch nicht möglich, eine zweite Eingabe $x'$ mit $x\not= x'$ zu finden, so dass $h(x)=h(x')$ - Kollisionssicherheit: Es ist rechnerisch nicht möglich, ein beliebiges Paar $(x,x')$ mit $x\not= x'$ zu finden, so dass $h(x)=h(x')$ - Kryptographische Hash-Funktionen werden zur Berechnung von Modification Detection Codes (MDC) verwendet ## Nachrichten-Authentifizierungs-Codes (MAC) - Definition: Nachrichten-Authentifizierungs-Code - Ein Message-Authentication-Code-Algorithmus ist eine Familie von Funktionen $h_k$, die durch einen geheimen Schlüssel k parametrisiert sind und die folgenden Eigenschaften aufweisen: - Komprimierung: hk bildet eine Eingabe x beliebiger endlicher Bitlänge auf eine Ausgabe $h_k(x)$ fester Bitlänge ab, genannt MAC - Einfache Berechnung: Bei k, x und einer bekannten Funktionsfamilie $h_k$ ist der Wert $h_k(x)$ einfach zu berechnen - Berechnungsresistenz: für jeden festen, erlaubten, aber unbekannten Wert von k ist es bei null oder mehr Text-MAC-Paaren $(x_i, h_k(x_i))$ rechnerisch nicht möglich, ein Text-MAC-Paar $(x, h_k(x))$ für jede neue Eingabe $x\not= x_i$ zu berechnen - Bitte beachten Sie, dass Rechenresistenz die Eigenschaft der Nicht-Wiederherstellung des Schlüssels impliziert, d.h. k kann nicht aus Paaren $(x_i,h_k(x_i))$ wiederhergestellt werden, aber Rechenresistenz kann nicht aus der Nicht-Wiederherstellung des Schlüssels abgeleitet werden, da der Schlüssel k nicht immer wiederhergestellt werden muss, um neue MACs zu fälschen ## Ein einfacher Angriff gegen einen unsicheren MAC - Betrachten wir zur Veranschaulichung die folgende MAC-Definition: - Eingabe: Nachricht $m=(x_1,x_2,...,x_n)$, wobei $x_i$ 64-Bit-Werte sind, und Schlüssel k - Berechne $\delta(m):= x_1\oplus x_2\oplus...\oplus x_n$, wobei $\oplus$ die bitweise Exklusiv-Oder-Verknüpfung bezeichnet - Ausgabe: MAC $C_k(m):= E_k(\delta(m))$ mit $E_k(x)$ für die DES-Verschlüsselung - Die Schlüssellänge beträgt 56 Bit und die MAC-Länge 64 Bit, so dass wir einen Aufwand von etwa $2^{55}$ Operationen erwarten würden, um den Schlüssel k zu erhalten und den MAC zu knacken (= Nachrichten fälschen zu können). - Leider ist die MAC-Definition unsicher: - Angenommen, ein Angreifer Eve, der die zwischen Alice und Bob ausgetauschten Nachrichten fälschen will, erhält eine Nachricht $(m,C_k(m))$, die von Alice mit dem mit Bob geteilten geheimen Schlüssel k ,,geschützt'' wurde - Eve kann eine Nachricht $m'$ konstruieren, die denselben MAC ergibt: - Sei $y_1,y_2,...,y_{n-1}$ ein beliebiger 64-Bit-Wert - Definiere $y_n:= y_1\oplus y_2\oplus...\oplus y_{n-1}\oplus \delta(m)$, und $m':=(y_1,y_2,...,y_n)$ - Wenn Bob $(m',C_k(m))$ von Eve erhält, die vorgibt, Alice zu sein, wird er es als von Alice stammend akzeptieren, da $C_k(m)$ ein gültiger MAC für $m'$ ist ## Anwendungen für kryptographische Hash-Funktionen und MACs - Wichtigste Anwendung, die zum ursprünglichen Entwurf führte: Integrität von Nachrichten - Ein MDC stellt einen digitalen Fingerabdruck dar, der mit einem privaten Schlüssel signiert werden kann, z. B. mit dem RSA- oder ElGamal-Algorithmus, und es ist nicht möglich, zwei Nachrichten mit demselben Fingerabdruck zu erstellen, so dass ein bestimmter signierter Fingerabdruck von einem Angreifer nicht wiederverwendet werden kann - Ein MAC über eine Nachricht m bescheinigt direkt, dass der Absender der Nachricht im Besitz des geheimen Schlüssels k ist und die Nachricht ohne Kenntnis dieses Schlüssels nicht verändert worden sein kann. - Andere Anwendungen, die eine gewisse Vorsicht erfordern: - Bestätigung von Wissen - Schlüsselableitung - Pseudo-Zufallszahlengenerierung - Je nach Anwendung müssen weitere Anforderungen erfüllt werden: - Partielle Vorabbild-Resistenz: auch wenn nur ein Teil der Eingabe, z.B. t Bit, unbekannt ist, sollte es im Durchschnitt $2^{t-1}$ Operationen benötigen, um diese Bits zu finden ## Angriffe basierend auf dem Geburtstagsphänomen - Das Geburtstagsphänomen: - Wie viele Personen müssen sich in einem Raum befinden, damit die Wahrscheinlichkeit, dass es mindestens zwei Personen mit demselben Geburtstag gibt, größer als 0,5 ist? - Der Einfachheit halber lassen wir den 29. Februar beiseite und nehmen an, dass jeder Geburtstag gleich wahrscheinlich ist - Definieren Sie $P(n,k):= Pr$[mindestens ein Duplikat in k Elementen, wobei jedes Element einen von n gleich wahrscheinlichen Werten zwischen 1 und n annehmen kann ] - Definieren Sie $Q(n,k):= Pr$[kein Duplikat in k Artikeln, jeder Artikel zwischen 1 und n ] - Wir können das erste Element aus n möglichen Werten wählen, das zweite Element aus $n-1$ möglichen Werten, usw. - Die Anzahl der verschiedenen Möglichkeiten, k Elemente aus n Werten ohne Duplikate auszuwählen, ist also: $N=n \mal (n-1)\mal...\mal(n-k+1)= n!\backslash(n-k)!$ - Die Anzahl der verschiedenen Möglichkeiten, k Elemente aus n Werten auszuwählen, mit oder ohne Duplikate, ist: $n^k$ - Also, $Q(n,k)=N\backslash n^k=n!\backslash((n-k)! \times n^k)$ - Wir haben: $P(n,k)=1-Q(n,k)=1-\frac{n!}{(n-k)!\times n^k}=1-\frac{n\times(n-1)\times...\times(n-k+1)}{n^k}=1-[(1-\frac{1}{n})\times(1-\frac{2}{n})\times...\times(1-\frac{k-1}{n})]$ - Wir werden die folgende Ungleichung verwenden: $(1-x) \leq e^{-x}$ für alle $x \geq 0$ - So: $P(n,k)>1-[(e^{-1/n})\times(e^{-2/n})\times...\times(e^{-(k-1)/n})]=1-e^{\frac{-k\times(k-1)}{2n}}$ - Im letzten Schritt haben wir die Gleichheit: $1+2+...+(k-1)=(k^2 - k)\backslash 2$ - Übung: Beweisen Sie die obige Gleichheit durch Induktion - Kehren wir zu unserer ursprünglichen Frage zurück: Wie viele Personen k müssen sich in einem Raum befinden, damit mindestens zwei Personen mit demselben Geburtstag (von $n=365$ möglichen) mit der Wahrscheinlichkeit $\geq 0,5$ vorhanden sind? - Wir wollen also lösen: $\frac{1}{2}=1-e^{\frac{-k\times(k-1)}{2n}}\Leftrightarrow 2=e^{\frac{k\times(k-1)}{2n}}\Leftrightarrow ln(2)=\frac{k\times(k-1)}{2n}$ - Für große k können wir $k\times(k-1)$ durch $k^2$ approximieren, und wir erhalten: $k=\sqrt{2 ln(2)n}\ca. 1,18\sqrt{n}$ - Für $n=365$ erhalten wir $k=22,54$, was der richtigen Antwort recht nahe kommt 23 - Was hat das mit MDCs zu tun? - Wir haben gezeigt, dass bei n möglichen unterschiedlichen Werten die Anzahl k der Werte, die man zufällig wählen muss, um mindestens ein Paar identischer Werte zu erhalten, in der Größenordnung von $\sqrt{n}$ liegt. - Betrachten wir nun den folgenden Angriff [Yuv79a]: - Eve möchte, dass Alice eine Nachricht m1 signiert, die Alice normalerweise nie signieren würde. Eve weiß, dass Alice die Funktion MDC1(m) verwendet, um eine MDC von m zu berechnen, die eine Länge von r Bit hat, bevor sie diese MDC mit ihrem privaten Schlüssel signiert, was ihre digitale Signatur ergibt. - Zunächst erzeugt Eve ihre Nachricht m1. Würde sie nun MDC1(m1) berechnen und dann versuchen, eine zweite harmlose Nachricht m2 zu finden, die zu demselben MDC führt, wäre ihr Suchaufwand im durchschnittlichen Fall in der Größenordnung von $2^{(r-1)}$. - Stattdessen nimmt sie eine beliebige harmlose Nachricht m2 und beginnt, Variationen m1' und m2' der beiden Nachrichten zu produzieren, z.B. durch Hinzufügen von -Kombinationen oder Variationen mit semantisch identischen Wörtern. - Wie wir aus dem Geburtstagsphänomen gelernt haben, muss sie nur etwa $\sqrt{2^r}=2^{r/2}$ Variationen von jeder der beiden Nachrichten produzieren, so dass die Wahrscheinlichkeit, dass sie zwei Nachrichten m1' und m2' mit demselben MDC erhält, mindestens 0,5 beträgt - Da sie die Nachrichten zusammen mit ihren MDCs speichern muss, um eine Übereinstimmung zu finden, liegt der Speicherbedarf ihres Angriffs in der Größenordnung von $2^{\frac{r}{2}}$ und der Rechenzeitbedarf in der gleichen Größenordnung - Nachdem sie m1' und m2' mit $MDC1(m1')=MDC1(m2')$ gefunden hat, fordert sie Alice auf, $m2'$ zu signieren. Eve kann dann diese Unterschrift nehmen und behaupten, dass Alice $m1'$ unterschrieben hat. - Angriffe nach dieser Methode werden Geburtstagsangriffe genannt. - Nehmen wir nun an, dass Alice RSA mit Schlüsseln der Länge 2048 Bit und eine kryptographische Hashfunktion verwendet, die MDCs der Länge 96 Bit erzeugt. - Eves durchschnittlicher Aufwand, zwei Nachrichten m1' und m2' wie oben beschrieben zu erzeugen, liegt in der Größenordnung von $2^{48}$, was heute machbar ist. Das Knacken von RSA-Schlüsseln der Länge 2048 Bit ist mit den heutigen Algorithmen und Technologien bei weitem nicht möglich. ## Übersicht über die gebräuchlichen MDCs - Kryptografische Hash-Funktionen zur Erstellung von MDCs: - Message Digest 5 (MD5): - Erfunden von R. Rivest - Nachfolger von MD - Sicherer Hash-Algorithmus 1 (SHA-1): - Erfunden von der National Security Agency (NSA) - Der Entwurf wurde von MD inspiriert. - Sicherer Hash-Algorithmus 2 (SHA-2, auch SHA-256 und SHA-512) - Ebenfalls von der National Security Agency (NSA) entwickelt - Auch Merkle-Dåmgard-Verfahren - Größere Blockgröße & komplexere Rundenfunktion - Sicherer Hash-Algorithmus 3 (SHA-3, Keccak) - Gewinner eines offenen Wettbewerbs - Sogenannte Sponge-Konstruktion - Vielseitiger als frühere Hash-Funktionen - Nachrichten-Authentifizierungs-Codes (MACs): - DES-CBC-MAC: - Verwendet den Data Encryption Standard im Cipher Block Chaining Modus - Im Allgemeinen kann die CBC-MAC-Konstruktion mit jeder Blockchiffre verwendet werden. - MACs, die aus MDCs aufgebaut sind: - Dieser sehr verbreitete Ansatz wirft einige kryptografische Bedenken auf, da er einige implizite, aber nicht verifizierte Annahmen über die Eigenschaften der MDCs trifft. - Authentifizierte Verschlüsselung mit zugehörigen Daten (AEAD) - Galois-Counter-Verfahren (GCM) - Verwendet eine Blockchiffre zur Verschlüsselung und Authentifizierung von Daten - Schnell in Netzwerkanwendungen - Sponge Wrap - Verwendet eine SHA-3 ähnliche Hash-Funktion zur Verschlüsselung und Authentifizierung von Daten ## Gemeinsame Struktur von kryptografischen Hash-Funktionen - So wie viele der heutigen Blockchiffren der allgemeinen Struktur eines Feistel-Netzwerks folgen, folgen auch viele der heute verwendeten kryptografischen Hash-Funktionen einer gemeinsamen Struktur, der sogenannten Merkle-Dåmgard-Struktur: - Sei y eine beliebige Nachricht. Normalerweise wird die Länge der Nachricht an die Nachricht angehängt und auf ein Vielfaches einer Blockgröße b aufgefüllt. Bezeichnen wir $(y_0,y_1,...,y_{L-1})$ die resultierende Nachricht, die aus L Blöcken der Größe b - Die allgemeine Struktur ist wie folgt abgebildet: ![](Assets/NetworkSecurity-feistel.png) - CV ist ein Verkettungswert, mit $CV_0:= IV$ und $MDC(y) := CV_L$ - f ist eine spezifische Kompressionsfunktion, die $(n+b)$ Bit auf n Bit komprimiert - Die Hash-Funktion H lässt sich wie folgt zusammenfassen: - $CV_0 = IV =$ anfänglicher n-Bit-Wert - $CV_i = f(CV_{i -1}, y_{i-1}) \quad\quad 1\leq i \leq L$ - $H(y) = CV_L$ - Es wurde gezeigt [Mer89a], dass, wenn die Kompressionsfunktion f kollisionssicher ist, die resultierende iterierte Hash-Funktion H ebenfalls kollisionssicher ist. - Die Kryptoanalyse kryptographischer Hash-Funktionen konzentriert sich daher auf die interne Struktur der Funktion f und die Suche nach effizienten Techniken zur Erzeugung von Kollisionen bei einer einzigen Ausführung von f - In erster Linie durch Geburtstagsangriffe motiviert, ist ein gängiger Mindestvorschlag für n , die Bitlänge des Hashwerts, 160 Bit, da dies einen Aufwand der Größenordnung $2^{80}$ für einen Angriff impliziert, der heute als undurchführbar gilt ## Der Message Digest 5 - MD5 folgt der zuvor skizzierten allgemeinen Struktur (z. B. [Riv92a]): - Die Nachricht y wird mit einer ,,1'' aufgefüllt, gefolgt von 0 bis 511 ,,0'' Bits, so dass die Länge der resultierenden Nachricht kongruent 448 modulo 512 ist - Die Länge der ursprünglichen Nachricht wird als 64-Bit-Wert hinzugefügt, so dass eine Nachricht entsteht, deren Länge ein ganzzahliges Vielfaches von 512 Bit ist. - Diese neue Nachricht wird in Blöcke der Länge $b=512$ Bit unterteilt. - Die Länge des Verkettungswertes ist $n=128$ Bit - Der Verkettungswert ist ,,strukturiert'' als vier 32-Bit-Register A, B, C, D - Initialisierung: - A := 0x 01 23 45 67 - B := 0x 89 AB CD EF - C := 0x FE DC BA 98 - D := 0x 76 54 32 10 - Jeder Block der Nachricht $y_i$ wird mit dem Verkettungswert $CV_i$ mit der Funktion f verarbeitet, die intern durch 4 Runden zu je 16 Schritten realisiert ist - Jede Runde ist ähnlich aufgebaut und verwendet eine Tabelle T, die 64 konstante Werte von je 32 Bit enthält, - Jede der vier Runden verwendet eine bestimmte logische Funktion g - ![](Assets/NetzwerkSicherheit-md5.png) - Die Funktion g ist eine von vier verschiedenen logischen Funktionen - $y_i[k]$ bezeichnet das k-te$ 32-Bit-Wort des Nachrichtenblocks i - $T[j]$ ist der j-te Eintrag der Tabelle t, wobei j bei jedem Schritt modulo 64 inkrementiert wird - CLS s bezeichnet die zyklische Linksverschiebung um s Bits, wobei s einem bestimmten Schema folgt. - Der MD5-MDC über eine Nachricht ist der Inhalt des Verkettungswertes CV nach Verarbeitung des letzten Nachrichtenblocks. - Sicherheit von MD5: - Jedes Bit des 128-Bit-Hash-Codes ist eine Funktion eines jeden Eingabebits - 1996 veröffentlichte H. Dobbertin einen Angriff, der es erlaubt, eine Kollision für die Funktion f zu erzeugen (realisiert durch die oben beschriebenen 64 Schritte). - Es dauerte bis 2004, bis eine erste Kollision gefunden wurde [WLYF04]. - Inzwischen ist es möglich, Kollisionen innerhalb von Sekunden auf allgemeiner Hardware zu erzeugen [Kl06]. - MD5 darf nicht in Betracht gezogen werden, wenn Kollisionssicherheit erforderlich ist! - Dies ist oft der Fall! - Beispiele: Zwei Postskripte mit unterschiedlichen Texten, aber gleichen Hashes [LD05], Zertifikate, eines für eine gesicherte Domain und eines für eine eigene Zertifizierungsstelle [LWW05], Jede Nachricht, die erweiterbar ist [KK06] - Die Resistenz gegen Preimage-Angriffe ist mit 2123.4 Berechnungen noch o.k[SA09] ## Der sichere Hash-Algorithmus SHA-1 - Auch SHA-1 folgt der gleichen Struktur wie oben beschrieben: - SHA-1 arbeitet mit 512-Bit-Blöcken und erzeugt einen 160-Bit-Hash-Wert. - Da sein Design auch vom MD4-Algorithmus inspiriert wurde, ist seine Initialisierung im Grunde dieselbe wie die von MD5: - Die Daten werden aufgefüllt, ein Längenfeld wird hinzugefügt und die resultierende Nachricht wird als Blöcke der Länge 512 Bit verarbeitet. - Der Verkettungswert ist als fünf 32-Bit-Register A, B, C, D, E strukturiert - Initialisierung: - A = 0x 67 45 23 01 - B = 0x EF CD AB 89 - C = 0x 98 BA DC FE - D = 0x 10 32 54 76 - E = 0x C3 D2 E1 F - Die Werte werden im Big-Endian-Format gespeichert. - Jeder Block yi der Nachricht wird zusammen mit CVi in einem Modul verarbeitet, das die Kompressionsfunktion f in vier Runden zu je 20 Schritten realisiert. - Die Runden haben eine ähnliche Struktur, aber jede Runde verwendet eine andere primitive logische Funktion $f_1, f_2, f_3, f_4$. - Bei jedem Schritt wird eine feste additive Konstante $K_t$ verwendet, die während einer Runde unverändert bleibt - ![](Assets/NetworkSecurity-sha1.png) - $t\in\{0,...,15\}\Rechtspfeil W_t:= y_i[t]$ - $t\in\{16,...,79\}\Pfeil nach rechts W_t:=CLS_1(W_{t-16}\oplus W_{t-14}\oplus W_{t-8} \oplus W_{t-3})$ - Nach Schritt 79 wird jedes Register A, B, C, D, E modulo $2^{32}$ mit dem Wert des entsprechenden Registers vor Schritt 0 addiert, um $CV_{i+1}$ zu berechnen - Der SHA-1-MDC über eine Nachricht ist der Inhalt des Verkettungswertes CV nach Verarbeitung des letzten Nachrichtenblocks. - Vergleich zwischen SHA-1 und MD5: - Geschwindigkeit: SHA-1 ist etwa 25% langsamer als MD5 (CV ist etwa 25% größer) - Einfachheit und Kompaktheit: beide Algorithmen sind einfach zu beschreiben und zu implementieren und erfordern keine großen Programme oder Ersetzungstabellen - Sicherheit von SHA-1: - Da SHA-1 MDCs der Länge 160 Bit erzeugt, wird erwartet, dass es eine bessere Sicherheit gegen Brute-Force- und Geburtstagsangriffe bietet als MD5. - Einige inhärente Schwächen von Merkle-Dåmgard-Konstruktionen, z. B. [KK06], sind vorhanden - Im Februar 2005 veröffentlichten X. Wang et. al. einen Angriff, der es erlaubt, eine Kollision mit einem Aufwand von $2^{69}$ zu finden, der in den folgenden Monaten auf $2^{63}$ verbessert und in [WYY05a] veröffentlicht wurde - Die Forschung ging weiter (z.B. [Man11]), und im Februar 2017 wurde die erste tatsächliche Kollision gefunden (demonstriert mit einem veränderten PDF-Dokument) - SHA-2-Familie - Im Jahr 2001 veröffentlichte das NIST einen neuen Standard FIPS PUB 180-2, der neue Varianten mit den Bezeichnungen SHA-256, SHA-384 und SHA-512 [NIST02] mit 256, 384 und 512 Bits enthält. - SHA-224 wurde im Jahr 2004 hinzugefügt. - SHA-224 und SHA-384 sind verkürzte Versionen von SHA-256 und SHA-512 mit unterschiedlichen Initialisierungswerten - SHA-2 verwendet ebenfalls die Merkle-Dåmgard-Konstruktion mit einer Blockgröße von 512 Bit (SHA-256) und 1024 Bit (SHA-512) - Der interne Zustand ist in 8 Registern von 32 Bit (SHA-256) und 64 Bit (SHA-512) organisiert - 64 Runden (SHA-256) oder 80 Runden (SHA-512) - Ein Schritt - ![](Assets/NetworkSecurity-sha-2.png) - $t\in\{0, ..., 15\}\Rechtspfeil W_t:=y_i[t]$ - $t\in\{16, ..., r\}\Rightarrow W_t:=W_{t-16}\oplus \delta_0(W_{t-15})\oplus W_{t-7}\oplus\delta_1(W_{t-2})$ - $K_t$ ist der gebrochene Teil der Kubikwurzel aus der t-ten Primzahl - Die ROTR- und Funktionen XOR-verknüpfen verschiedene Verschiebungen des Eingangswertes - Ch und Maj sind logische Kombinationen der Eingabewerte - SHA-2-Familie - Alles in allem sehr ähnlich zu SHA-1 - Aufgrund der Größe und der komplizierteren Rundungsfunktionen etwa 30-50 Prozent langsamer als SHA-1 (variiert für 64-Bit- und 32-Bit-Systeme!) - Sicherheitsdiskussion: - Bereits 2004 wurde entdeckt, dass eine vereinfachte Version des Algorithmus (mit XOR statt Addition und symmetrischen Konstanten) hochkorrelierte Ausgaben erzeugt [GH04] - Für rundenreduzierte Versionen von SHA-2 gibt es Pre-Image-Angriffe, die schneller sind als Brute-Force, aber sehr unpraktisch (z.B. [AGM09]) - Auch wenn Größe und Komplexität derzeit keine Angriffe zulassen, ist die Situation unangenehm - Dies führte zur Notwendigkeit eines neuen SHA-3-Standards ## Der sichere Hash-Algorithmus SHA-3 - Sicherheitsbedenken bezüglich SHA-1 und SHA-2 führten zu einem offenen Wettbewerb des NIST, der 2007 begann - 5 Finalisten ohne nennenswerte Schwächen - Oktober 2012: NIST gibt bekannt, dass Keccak zu SHA-3 wird - 4 europäische Erfinder - Einer davon ist Joan Daemen, der AES mitentwickelt hat - SHA-3 ist sehr schnell, besonders in der Hardware - Sehr gut dokumentiert und analysierbar - Keccak basiert auf einer so genannten Schwammkonstruktion anstelle der früheren Merkle-Dåmgard-Konstruktionen - Vielseitiges Design, um fast alle symmetrischen kryptographischen Funktionen zu implementieren (allerdings ist nur das Hashing standardisiert) - Arbeitet normalerweise in 2 Phasen - ,,Absorbieren'' von Informationen beliebiger Länge in 1600 Bit des internen Zustands - ,,Auspressen'' (d.h. Ausgeben) von Hash-Daten beliebiger Länge (nur 224, 256, 384 und 512 Bit standardisiert) - Der interne Zustand ist in 2 Registern organisiert - Ein Register der Größe r ist ,,public'': Eingabedaten werden in der Absorptionsphase mit XOR verknüpft, Ausgabedaten werden in der Quetschungsphase daraus abgeleitet - Das Register der Größe c ist ,,privat''; Ein- und Ausgabe wirken sich nicht direkt auf es aus. - In Keccak ist die Größe der Register 1600 Bits (d.h. $c+r=1600$ Bits) - Die Größe von c ist doppelt so groß wie die Länge des Ausgangsblocks - Beide Register werden mit ,,0'' initialisiert - Das Hashing erfolgt durch eine Funktion f, die die Register liest und einen neuen Zustand ausgibt - Sponge-Konstruktion - ![](Assets/NetzwerkSicherheit-sha-3.png) - Absorptionsphase: $k + 1$ Eingabeblöcke der Größe r werden in den Zustand gemischt - Quetschphase: $l + 1$ Ausgangsblöcke der Größe r werden erzeugt (oft nur einer) - Der letzte Eingabe- und Ausgabeblock kann aufgefüllt oder abgeschnitten werden. - Die Funktion f - Offensichtlich hängt die Sicherheit einer Sponge-Konstruktion von der Sicherheit von f - Keccak verwendet 24 Runden von 5 verschiedenen Unterfunktionen $(\Sigma, \ro,\pi,𝜒,ɩ)$, um f zu implementieren. - Die Unterfunktionen operieren auf einem ,,dreidimensionalen'' Bit-Array a $[5][5][w]$, wobei w entsprechend der Größe r und c gewählt wird - Alle Operationen werden über $GF(2^n)$ durchgeführt. - Jede der Unterfunktionen gewährleistet bestimmte Eigenschaften, z.B, - Schnelle Diffusion der geänderten Bits im gesamten Zustand ($\Sigma$) - Langfristige Diffusion ($\pi$) - Sicherstellung, dass f nichtlinear wird (𝜒) - Rundenspezifische Substitution (ɩ) - $\Sigma$ wird zuerst ausgeführt, um sicherzustellen, dass sich der geheime und der öffentliche Zustand schnell vermischen, bevor andere Unterfunktionen angewendet werden. - Sicherheit - Derzeit gibt es keine nennenswerten Schwachstellen in SHA-3 - Die bekanntesten Pre-Image-Angriffe funktionieren nur mit einer Funktion f mit bis zu 8 Runden - Zum Schutz vor internen Kollisionen sollten 11 Runden ausreichen. - Im Vergleich zu SHA-1 und SHA-2 werden zusätzliche Sicherheitseigenschaften garantiert, da der interne Zustand nie öffentlich gemacht wird - Verhindert Angriffe, bei denen beliebige Informationen zu einer gültigen geheimen Nachricht hinzugefügt werden - Bietet Chosen Target Forced Prefix (CTFP) Preimage-Resistenz [KK06], d.h. es ist nicht möglich, eine Nachricht $m=P||S$ zu konstruieren, wobei P fest und S beliebig gewählt ist, s.t., $H(m)=y$ - Für Merkle-Dåmgard-Konstruktionen ist dies nur so schwer wie die Kollisionssicherheit - Keine schnelle Möglichkeit, Multikollisionen schnell zu erzeugen [Jou04] ## Cipher Block Chaining Message Authentication Codes - Ein CBC-MAC wird berechnet, indem eine Nachricht im CBC-Modus verschlüsselt wird und der letzte Chiffretextblock oder ein Teil davon als MAC verwendet wird: - ![](Assets/NetworkSecurity-CBC-mac.png) - Dieser MAC muss nicht mehr signiert werden, da er bereits mit einem gemeinsamen Geheimnis K erzeugt wurde. - Es ist jedoch nicht möglich zu sagen, wer genau einen MAC erstellt hat, da jeder (Sender, Empfänger), der den geheimen Schlüssel K kennt, dies tun kann - Dieses Verfahren funktioniert mit jeder Blockchiffre (DES, IDEA, ...) - Sicherheit von CBC-MAC: - Da ein Angreifer K nicht kennt, ist ein Geburtstagsangriff sehr viel schwieriger (wenn nicht gar unmöglich) zu starten - Ein Angriff auf einen CBC-MAC erfordert bekannte Paare (Nachricht, MAC) - Dies ermöglicht kürzere MACs - Ein CBC-MAC kann optional verstärkt werden, indem man sich auf einen zweiten Schlüssel $K'\not= K$ einigt und eine dreifache Verschlüsselung des letzten Blocks durchführt: $MAC:=E(K,D(K',E(K,C_{n-1})))$ - Dadurch verdoppelt sich der Schlüsselraum bei nur geringem Rechenaufwand - Die Konstruktion ist nicht sicher, wenn die Nachrichtenlängen variieren! - Es gibt auch einige Vorschläge, MDCs aus symmetrischen Blockchiffren zu erzeugen, indem der Schlüssel auf einen festen (bekannten) Wert gesetzt wird: - Wegen der relativ kleinen Blockgröße von 64 Bit der meisten gängigen Blockchiffren bieten diese Verfahren keine ausreichende Sicherheit gegen Geburtstagsangriffe. - Da symmetrische Blockchiffren mehr Rechenaufwand erfordern als spezielle kryptografische Hash-Funktionen, sind diese Verfahren relativ langsam. ## Konstruktion eines MAC aus einem MDC - Grund für die Konstruktion von MACs aus MDCs Kryptografische Hash-Funktionen laufen im Allgemeinen schneller ab als symmetrische Blockchiffren - Grundidee: ,,mix'' einen geheimen Schlüssel K mit der Eingabe und berechne einen MDC - Die Annahme, dass ein Angreifer K kennen muss, um einen gültigen MAC zu erzeugen, wirft dennoch einige kryptografische Probleme auf (zumindest für Merkle-Dåmgard-Hash-Funktionen): - Die Konstruktion $H(K||m)$ ist nicht sicher (siehe Anmerkung 9.64 in [Men97a]) - Die Konstruktion $H(m||K)$ ist nicht sicher (siehe Bemerkung 9.65 in [Men97a]) - Die Konstruktion $H(K||p||m||K)$, bei der p ein zusätzliches Auffüllfeld bezeichnet, bietet keine ausreichende Sicherheit (siehe Anmerkung 9.66 in [Men97a]) - Die am häufigsten verwendete Konstruktion ist: $H(K\oplus p_1|| H(K\oplus p_2|| m))$ - Der Schlüssel wird mit 0's aufgefüllt, um den Schlüssel zu einem Eingabeblock der kryptographischen Hashfunktion aufzufüllen - Zwei verschiedene konstante Muster $p_1$ und $p_2$ werden mit dem aufgefüllten Schlüssel XOR-verknüpft - Dieses Schema scheint sicher zu sein (siehe Anmerkung 9.67 in [Men97a]) - Es wurde in RFC 2104 [Kra97a] standardisiert und wird HMAC genannt. ## Authentifizierte Verschlüsselung mit zugehörigen Daten (AEAD) Modi - Normalerweise sind die Daten nicht authentifiziert oder verschlüsselt, sondern verschlüsselt UND authentifiziert (Blöcke $P_0...P_n$) - Manchmal müssen zusätzliche Daten authentifiziert werden (z.B. Paketköpfe), im Folgenden mit $A_0...A_m$ bezeichnet - führte zur Entwicklung von AEAD-Betriebsarten - Beispiele hierfür sind - Galois/Zähler-Modus (GCM) - Zähler mit CBC-MAC (CCM) - Offset-Codebuch-Modus (OCM) - SpongeWrap - eine Methode zur Verwendung von Keccak für den AEAD-Betrieb ### Galois/Zähler-Modus (GCM) [MV04] - Beliebter AEAD-Modus - NIST-Standard, Teil von IEEE 802.1AE, IPsec, TLS, SSH usw. - Frei von Patenten - Wird wegen seiner hohen Geschwindigkeit hauptsächlich in Netzwerkanwendungen eingesetzt - Äußerst effizient in der Hardware - Prozessorunterstützung auf neueren x86-CPUs - Zeitintensive Aufgaben können vorberechnet und parallelisiert werden - Keine Notwendigkeit für Auffüllungen - Verwendet konventionelle Blockchiffre mit 128-Bit-Blockgröße (z. B. AES) - Berechnet MAC durch Multiplikationen und Additionen in $GF(2^{128})$ über das irreduzible Polynom $x^{128}+x^{7}+x^{2}+x+1$ - Erfordert nur $n+1$ Blockchiffre-Aufrufe pro Paket (n = Länge der verschlüsselten und authentifizierten Daten) - ![](Assets/NetworkSecurity-gcm.png) - $I_0$ wird mit dem IV und einem Padding oder einem Hash des IV initialisiert (wenn er nicht 96 Bit beträgt) - $\circ H$ ist $GF(2^{128})$ Multiplikation mit $H=E(K,0^{128})$ - Die Eingabeblöcke $A_m$ und $P_n$ werden auf 128 Bit aufgefüllt - $A_m$ und $C_n$ werden vor der Ausgabe auf die Originalgröße gekürzt - Die letzte Authentifizierung verwendet 64 Bit kodierte Bitlängen von A und C - Sicherheit - Schneller Modus, erfordert aber einige Sorgfalt: - Erwiesenermaßen sicher (unter bestimmten Voraussetzungen, z. B. wenn die verwendete Blockchiffre nicht von Zufallszahlen unterscheidbar ist), aber die Konstruktion ist anfällig: - IVs MÜSSEN NICHT wiederverwendet werden, da sonst Datenströme XOR-verknüpft werden können und das XOR der Datenströme wiederhergestellt werden kann, was zu einer sofortigen Wiederherstellung des geheimen Werts ,,H'' führen kann - H hat einen möglichen schwachen Wert $0^{128}$, in diesem Fall wird die Authentifizierung nicht funktionieren, und wenn IVs mit einer anderen Länge als 96 Bits verwendet werden, wird $C_0$ immer gleich sein! - Einige andere Schlüssel erzeugen Hash-Schlüssel mit einer niedrigen Ordnung, was vermieden werden muss... [Saa11] - Erfolgreiche Fälschungsversuche können Informationen über H durchsickern lassen, daher MÜSSEN kurze MAC-Längen vermieden oder risikominimiert werden [Dwo07] - Die erreichte Sicherheit ist nur $2^{t-k}$ und nicht $2^t$ (für MAC-Länge t und Anzahl der Blöcke $2^k$), da Blöcke modifiziert werden können, um nur Teile des MAC zu ändern [Fer05] ### Kleiner Exkurs: Rechenoperationen in $GF(2^n)$ - Galoisfeld-Arithmetik definiert über Termen (z.B. $a_3x^3+a_2x^2+a_1x+a_0$) - Koeffizienten sind Elemente des Feldes $\matbb{Z}_2$, d.h. entweder 0 oder 1 - Oft werden nur die Koeffizienten gespeichert, so wird aus x^4 +x^2 +x^1 0x16 - Die Addition in $GF(2^n)$ ist einfach die Addition von Termen - Da gleiche Koeffizienten auf 0 abbilden, einfach XOR der Werte! - Extrem schnell in Hard- und Software! - Multiplikation in $GF(2^n)$ ist Polynommultiplikation und anschließende Modulodivision durch ein irreduzibles Polynom vom Grad n - Irreduzible Polynome sind nicht ohne Rest durch irgendein anderes Polynom teilbar, außer durch ,,1'', ähnlich wie Primzahlen in GF - Kann durch eine Reihe von Verschiebe- und XOR-Operationen implementiert werden - Sehr schnell in Hardware oder auf neueren Intel-CPUs (mit CLMUL-Operationen) - Modulo-Operation kann wie bei einer regulären CRC-Berechnung durchgeführt werden - Addition Beispiel: - $x^3 +x+1 x\oplus x^2+x = x^3 +x^2 +1 \leftrightarrow$ 0x0B XOR 0x06 = 0x0D - Multiplikationsbeispiel (über $x^4 +x+1$): - $x^3 +x+1\circ x^2+x = x^5+x^3+x^2\oplus x^4+x^2+x\ MOD\ x^4+x+1=x^5+x^4+x^3+x\ MOD\ x^4+x+1 = x^3 +x^2 +x+1$ - Elemente von $GF(2^n)$ (mit Ausnahme von 1 und dem irreduziblen Polynom) können ein Generator für die Gruppe sein - Beispiel für x und das Polynom $x^4+x+1:x,x^2,x^3,x+1,x^2+x,x^3+x^2,x^3+x+1,x^2 +1,x^3+x,x^2+x+1,x^3+x^2+x,x^3+x^2+x+1,x^3+x^2+1,x^3+1,1,x,...$ - Andere Konzepte endlicher Gruppen gelten ebenfalls, z. B. hat jedes Element ein multiplikatives inverses Element - Kann durch eine angepasste Version des Erweiterten Euklidischen Algorithmus gefunden werden ## SpongeWrap - Durch Verwendung von SHA-3 ist es auch möglich, ein AEAD-Konstrukt zu implementieren [BDP11a] - Die Konstruktion ist sehr einfach und vergleichsweise leicht zu verstehen - Verwendet den sogenannten Duplex-Modus für Sponge-Funktionen, bei dem Schreib- und Leseoperationen verschachtelt werden - Erfordert kein Auffüllen der Daten auf eine bestimmte Blockgröße - Kann nicht parallelisiert werden - Sicherheit: - Noch nicht weit verbreitet, aber mehrere Aspekte haben sich als genauso sicher wie SHA-3 im standardisierten Modus erwiesen - Wenn die authentifizierten Daten A keine eindeutige IV enthalten, wird derselbe Schlüsselstrom erzeugt (ermöglicht die Wiederherstellung eines Blocks XOR-verschlüsselter Daten) - ![](Assets/NetworkSecurity-sponge-wrap.png) - Vereinfachte Version, bei der die Länge von Schlüssel und MAC kleiner sein muss als die Blockgröße - Auffüllungen mit einem einzelnen ,,0''- oder ,,1''-Bit stellen sicher, dass verschiedene Datenblocktypen gut voneinander getrennt sind # Zufallszahlengenerierung # Kryptographische Protokolle # Sichere Gruppenkommunikation # Zugriffskontrolle # Integration von Sicherheitsdiensten in Kommunikationsarchitekturen # Sicherheitsprotokolle der Datenübertragungsschicht # Die IPsec-Architektur für das Internet-Protokoll # Security protocols of the transport layer # Sicherheitsaspekte der mobilen Kommunikation # Sicherheit von drahtlosen lokalen Netzen # Sicherheit von GSM- und UMTS-Netzen # References - [AES01a] National Institute of Standards and Technology - Specification for the Advanced Encryption Standard (AES) - [DR97a] J. Daemen, V. Rijmen - AES Proposal: Rijndael http://csrc.nist.gov/encryption/aes/rijndael/Rijndael.pdf - [FMS01a] S. Fluhrer, I. Mantin, A. Shamir - Weaknesses in the Key Scheduling Algorithm of RC4. Eighth Annual Workshop on Selected Areas in Cryptography - [Riv01a] R. Rivest. - RSA Security Response to Weaknesses in Key Scheduling Algorithm of RC4. http://www.rsa.com/rsalabs/node.asp - [SIR01a] A. Stubblefield, J. Ioannidis, A. D. Rubin. - Using the Fluhrer, Mantin, and Shamir Attack to Break WEP. AT&T Labs Technical Report TD-4ZCPZZ - [FKLS00] N. Ferguson, J. Kelsey, S. Lucks, B. Schneier, M. Stay, D.Wagner, D. Whiting - Improved cryptanalysis of Rijndael. In FSE’00, volume 1978 of Lecture Notes in Computer Science. Springer, 2000. - [GM00] H. Gilbert and M. Minier - A Collision Attack on 7 Rounds of Rijndael. In AES Candidate Conference, 2000. - [BKR11] A. Bogdanov, D. Khovratovich, C. Rechberger - Biclique cryptanalysis of the full AES. In ASIACRYPT’11, 2001. - [Mir02] I. Mironov - (Not so) random shuffles of RC4. In Advances in Cryptology - CRYPTO 2002 - [Kle08] A.Klein. - Attacks on the RC4 stream cipher. In Designs, Codes and Cryptography - [ETS12] ETSI/SAGE - Specification of the 3GPP confidentiality and integrity algorithms; Document 2: Kasumi specification - [Kue01] U. Kühn. - Cryptanalysis of Reduced-Round MISTY. In Advances in Cryptology - EUROCRYPT 2001 - [BDN05] E. Biham, O. Dunkelman, N. Keller - A Related-Key Rectangle Attack on the Full KASUMI , In ASIACRYPT 2005 - [DKS10] O. Dunkelman, N. Keller, A. Shamir - A practical-time related-key attack on the KASUMI cryptosystem used in GSM and 3G telephony. In CRYPTO'10 - [ETS06] ETSI/SAGE - Specification of the 3GPP Confidentiality and Integrity Algorithms UEA2 & UIA2. Document 2: SNOW 3G Specification - [KY11] A. Kircanski A.M. Youssef. - On the Sliding Property of SNOW 3G and SNOW 2.0 IET Inf. Secur. - [Amo94] E. G. Amorosi. - Fundamentals of Computer Security Technology - [Cha95] Brent Chapman and Elizabeth Zwicky - Building Internet Firewalls - [For94b] Warwick Ford. - Computer Communications Security - Principles, Standard Protocols and Techniques. - [Gar96] Simson Garfinkel and Gene Spafford - Practical Internet & Unix Security - [Men97a] A. J. Menezes, P. C. Van Oorschot, S. A. Vanstone - Handbook of Applied Cryptography. CRC Press Series on Discrete Mathematics and Its Applications - [SR14] G. Schäfer, M. Rossberg - Netzsicherheit - [Sch96] B. Schneier - Applied Cryptography Second Edition: Protocols, Algorithms and Source Code in C - [Sta13] W. Stallings - Cryptography and Network Security: Principles and Practice - [Sti05] D. R. Stinson - Cryptography: Theory and Practice (Discrete Mathematics and Its Applications) - [Bre88a] D. M. Bressoud. - Factorization and Primality Testing - [Cor90a] T. H. Cormen, C. E. Leiserson, R. L. Rivest. Introduction to Algorithms. - [DH76] W. Diffie, M. E. Hellman - New Directions in Cryptography - [ElG85a] T. ElGamal - A Public Key Cryptosystem and a Signature Scheme based on Discrete Logarithms. - [Kob87a] N. Koblitz - A Course in Number Theory and Cryptography - [Men93a] A. J. Menezes - Elliptic Curve Public Key Cryptosystems. - [Niv80a] I. Niven, H. Zuckerman - An Introduction to the Theory of Numbers - [RSA78] R. Rivest, A. Shamir und L. Adleman - A Method for Obtaining Digital Signatures and Public Key Cryptosystems - [KAFL10] T. Kleinjung, K. Aoki, J. Franke, A. Lenstra, E. Thomé, J. Bos, P. Gaudry, A. Kruppa, P. Montgomery, D. Osvik, H. Te Riele, A.Timofeev, P. Zimmermann - Factorization of a 768-bit RSA modulus - [LM10] M. Lochter, J. Merkle - Elliptic Curve Cryptography (ECC) Brainpool Standard Curves and Curve Generation - [NIST99] NIST - Recommended Elliptic Curves for Federal Government Use - [NIST12] NIST - Recommendation for Key Management: Part 1: General (Revision 3) - [Ko87] N. Koblitz - Elliptic Curve Cryptosystems - [BBP12] B.B. Brumley, M. Barbosa, D. Page, F. Vercauteren - Practical realisation and elimination of an ECC-related software bug attack - [BT11] B.B. Brumley, N. Tuveri - Remote timing attacks are still practical - [BLR08] D. Bernstein, T. Lange, R. Rezaeian Farashahi - Binary Edwards Curves - [NIST09] NIST - Digital Signature Standard (DSS) - [SM09] A. Sorniotti, R. Molva - A provably secure secret handshake with dynamic controlled matching - [BF03] D. Boneh, M. Franklin - Identity-Based Encryption from the Weil Pairing - [Sch85] R. Schoof - Elliptic Curves over Finite Fields and the Computation of Square Roots mod p - [Kra97a] H. Krawczyk, M. Bellare, R. Canetti. HMAC: Keyed-Hashing for Message Authentication. Internet RFC 2104, February 1997. - [Mer89a] R. Merkle. One Way Hash Functions and DES. Proceedings of Crypto ‘89, Springer, 1989 - [Men97a] A. J. Menezes, P. C. Van Oorschot, S. A. Vanstone. Handbook of Applied Cryptography, CRC Press Series on Discrete Mathematics and Its Applications, Hardcover, 816 pages, CRC Press, 1997 - [NIST02] National Institute of Standards and Technology (NIST). Secure Hash Standard. Federal Information Processing Standards Publication (FIPS PUB), 180-2, 2002 - [Riv92a] R. L. Rivest. The MD5 Message Digest Algorithm. Internet RFC 1321, April 1992 - [Rob96a] M. Robshaw. On Recent Results for MD2, MD4 and MD5. RSA Laboratories' Bulletin, No. 4, November 1996 - [WYY05a] X. Wang, Y. L. Yin, H. Yu. Finding collisions in the full SHA-1. In Advances in Cryptology - CRYPTO'05, pages 18-36, 2005 - [Yuv79a] G. Yuval. How to Swindle Rabin. Cryptologia, July 1979. - [WLYF04] X. Wang, D. Feng, X. Lai, H. Yu. Collisions for Hash Functions MD4, MD5, HAVAL-128 and RIPEMD. IACR Eprint archive, 2004. - [LWW05] A. Lenstra, X. Wang, B. de Weger. Colliding X.509 Certificates. Cryptology ePrint Archive: Report 2005/067. 2005 - [LD05] S. Lucks, M. Daum. The Story of Alice and her Boss. In Rump session of Eurocrypt’05. 2005. - [Kl06] V. Klima. Tunnels in Hash Functions: MD5 Collisions Within a Minute (extended abstract), Cryptology ePrint Archive: Report 2006/105, 2006 - [SA09] Y. Sasaki, K. Aoki. Finding Preimages in Full MD5 Faster Than Exhaustive Search. Advances in Cryptology - EUROCRYPT’09. 2009 - [Man11] M. Manuel. Classification and Generation of Disturbance Vectors for Collision Attacks against SHA-1. Journal Designs, Codes and Cryptography. Volume 59, Issue 1-3, pages 247-263, 2011 - [GH04] H. Gilbert, H. Handschuh. Security Analysis of SHA-256 and Sisters. Lecture Notes in Computer Science, 2004, Volume 3006/2004, pages 175-193. 2004 - [AGM09] K. Aoki, J. Guo, K. Matusiewicz, V. Sasaki, L. Wang. Preimages for Step-Reduced SHA-2. Advances in Cryptology - ASIACRYPT 2009. pages 578-597, 2009 - [KK06] J. Kelsey, T. Kohno. Herding Hash Functions and the Nostradamus Attack. Advances in Cryptology - EUROCRYPT’06. 2006 - [Jou04] A. Joux: Multicollisions in Iterated Hash Functions. Application to Cascaded Constructions. CRYPTO 2004: pages 306-316. 2004 - [MV04] D. McGrew, J. Viega. The Security and Performance of the Galois/Counter Mode (GCM) of Operation (Full Version). [http://eprint.iacr.org/2004/193.](http://eprint.iacr.org/2004/193.) - [Fer05] N. Ferguson. Authentication weaknesses in GCM. 2005 - [Dwo07] M. Dworkin. Recommendation for Block Cipher Modes of Operation: Galois/Counter Mode (GCM) and GMAC. NIST Special Publication 800-38D. 2007 - [Saa11] M. Saarinen. GCM, GHASH and Weak Keys. Cryptology ePrint Archive, Report 2011/202, [http://eprint.iacr.org/2011/202,](http://eprint.iacr.org/2011/202,) 2011 - [BDP07] G. Bertoni, J. Daemen, M. Peeters, G. Van Assche. Sponge Functions. Ecrypt Hash Workshop 2007 - [BDP11a] G. Bertoni, J. Daemen, M. Peeters, G. Van Assche. Cryptographic sponge functions. Research report. Version 0.1. 2011 - [BDP11b] G. Bertoni, J. Daemen, M. Peeters, G. Van Assche. The Keccak reference. Research report. Version 3.0. 2011