11.11.2014 Aufrufe

Handout

Handout

Handout

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

Grundlagen der Sicherheit<br />

in Netzen und verteilten Systemen<br />

Stefan Ransom + Jürgen Koslowski<br />

2014-01-14


Kapitel 2<br />

Grundbegriffe der Kryptologie und<br />

klassische Verfahren<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Überblick<br />

Einführung und historische Anmerkungen<br />

Erste Grundbegriffe<br />

Klassische Verfahren<br />

− Transpositionschiffren<br />

− Substitutionschiffren: Caesar, Vigenére u.ä.<br />

− One-Time-Pad und perfekte Geheimhaltung<br />

− Rotormaschinen (ENIGMA)<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Cryptographie und Cryptoanalyse<br />

Die Kryptologie umfaßt zwei Gebiete:<br />

Kryptographie<br />

die Wissenschaft vom Datenschutz durch Verschlüsselung<br />

Kryptoanalyse<br />

Die Kunst, ohne Kenntniss der Schlüssels an die geheimen<br />

Daten zu kommen.<br />

Kryptologie ist schon seit Tausenden von Jahren Gegenstand von<br />

Untersuchungen. Um sie ranken sich viele gehemnisvolle<br />

Geschichten – warum?<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Historie<br />

Crytpologie benötigt nicht-triviale Spezialkenntnisse:<br />

− früher: Schrift und Sprachkenntnisse; Umgang mit Zeichen und<br />

Alphabeten<br />

− heute: nicht-triviale zahlentheoretische Grundlagen<br />

Erste Beispiele im antiken Griechenland und in Rom<br />

Während der Renaissance wurden alte Verfahren<br />

wiederentdeckt und neue Verschlüsselungsverfahren erfunden.<br />

Bis in die 70’er Jahre des vergangenen Jahrhunderts war<br />

Cryptologie vorrangig Domäne von Regierungen, des Militärs<br />

und von Geheimdiensten<br />

Man vermutet, dass die nichtöffentliche Forschung schon immer<br />

weiter war und auch heute noch ist<br />

Heute ist auch das moderne Geschäftslebe ohne Cryptologie<br />

nicht mehr denkbar.<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Grundbegriffe<br />

Klartext: die zu verschlüsselnde Nachricht/Daten<br />

Chiffretext: die verschlüsselten Daten<br />

Chiffrieren: Anwendung eines Verschlüsselungsverfahrens<br />

Dechiffrieren: Anwendung eines Entschlüsselungsverfahrens<br />

Schlüssel:<br />

Informationsträger für die Ver-/Entschlüsselung<br />

kontrolliert die Ver-/Entschlüsselung<br />

chiffrieren<br />

Sender<br />

Klartext Schlüssel Chiffretext<br />

Empfänger<br />

dechiffrieren<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Prinzipien der Verschlüsselung<br />

symmetrische Verschlüsselung:<br />

− Sender und Empfänger haben entweder den gleichen Schlüssel,<br />

oder diese Schlüssel sich leicht auseinander bestimmbar;<br />

− folglich müssen diese Schlüssel geheim bleiben, was ihren<br />

Austausch erschwert.<br />

asymmetrische Verschlüsselung:<br />

− Sender und Empfänger haben verschiedene Schlüssel, die nur<br />

bei Kenntnis einer schwer bestimmbaren Zusatzinformation<br />

auseinander berechnet werden können;<br />

− dies ist die Voraussetzung für Public-Key-Cryptography<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Aspekte geheimer Kommunikation<br />

Geheime Kommunikation<br />

Steanographie<br />

(Verstecken)<br />

Kryptographie<br />

(Verschlüsseln)<br />

Transposition<br />

(Positionen<br />

vertauschen)<br />

Substitution<br />

(Zeichen<br />

ersetzen)<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Steganographie<br />

Idee: Nachrichten in scheinbar belanglosen Informationen verstecken,<br />

nach Vereinbarung eines Verfahrens zur ihrer Extraktion.<br />

Beispiel<br />

Postkarte: “Liebe Kolleginnen! Wir genießen nun endlich unsere<br />

Ferien auf dieser Insel vor Spanien. Wetter gut, Unterkunft auch,<br />

ebenso das Essen. Toll! Gruß, J.D.”<br />

Algorithmus:<br />

Buchstaben bis zum nächsten Leerzeichen zählen;<br />

gerade/ungerade Anzahl in binäre 1/0 umwandeln;<br />

Binärfolge in Blöcke der Länge 8 zerlegen und diese als<br />

ASCII-Zeichen interpretieren.<br />

Ergebnis: 0101 0011 , 0100 1111 und 0101 0011 liefern “SOS”.<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


ein nicht mehr verfügbares Beispiel<br />

To the Members of the California State Assembly:<br />

I am returning Assembly Bill 1176 without my signature.<br />

For some time now I have lamented the fact that major issues are overlooked while many<br />

unnecessary bills come to me for consideration. Water reform, prison reform, and health<br />

care are major issues my Administration has brought to the table, but the Legislature just<br />

kicks the can down the alley.<br />

Yet another legislative year has come and gone without the major reforms Californians<br />

overwhelmingly deserve. In light of this, and after careful consideration, I believe it is<br />

unnecessary to sign this measure at this time.<br />

Sincerely,<br />

Arnold Schwarzenegger<br />

ursprünglich verfügbar auf der<br />

Webseite des Governeurs von Kalifornien<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Moderne Steganographie<br />

Moderne Verfahren codieren Nachrichten in verlustbehaftet<br />

komprimierten Mediendateien, typischerweise in Bildern (jpeg) oder<br />

Musikdateien (mp3).<br />

Naiv werden bei Bildern die am wenigsten signifikanten Bits der<br />

Farbwerte manipuliert. Das fällt zwar beim Betrachten<br />

praktisch nicht auf, ist aber mit einfachen statistischen<br />

Analysen leicht aufzuspüren: damit lassen sich verdächtige<br />

Bilder finden.<br />

Geschickere Methoden nutzen die Details des Kompressionsalgorithmus,<br />

etwa der diskreten Cosinus-Transformation beim<br />

JPEG-Verfahren, und nehmen dort Änderungen an<br />

insignifikanten Bits vor. Hier ist der Aufwand zur Entdeckung<br />

verdächtiger Bilder schon erheblich höher.<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Beispiele: Transposition und Substitution<br />

Klartext: “Dies ist ein einfaches Beispiel”<br />

Transposition mittels eines Zauns der Tiefe 3 (Schlüssel);<br />

Einlesen in Richtung des Zauns (zick-zack), Auslesen<br />

zeilenweise:<br />

D I I N H E I<br />

I S S E N I F C E B I P E ↦→ DIINHEIISSENIFCEBIPEETEASSL<br />

E T E A S S L<br />

Substitution gemäß Caesar: wähle k < 26 (Schlüssel); jeder<br />

Buchstabe des Alphabets wird um k Positionen zyklisch nach<br />

rechts verschoben. Für k = 3 etwa<br />

A ↦→ D , B ↦→ E . . . , Z ↦→ C<br />

was folgenden Chiffretext liefert:<br />

GLHVLVWHLQHLQIDFKHVEKLVSLHO<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Cryptographische Systeme (Wätjen)<br />

Definition<br />

Ein cryptographisches System besteht aus 5 Komponenten<br />

einem Klartextraum M ;<br />

einem Chiffretextraum C ;<br />

einem Schlüsselraum K ;<br />

einer Familie von Chiffrierfunktionen M E K<br />

C, K ∈ K ;<br />

einer Familie von Dechiffrierfunktionen C D K<br />

M, K ∈ K ;<br />

so dass für jedes M ∈ M und jedes K ∈ K gilt D K (E K (M)) = M<br />

Insbesondere ist jede der Funktionen E K<br />

Funktionen D K surjektiv.<br />

injektiv, und jede der<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Cryptographische Systeme: praktische Anforderungen<br />

Ein zufälliger Schlüssel K ∈ K soll leicht (algorithmisch) zu<br />

generieren sein<br />

Die Chiffrier- und Dechiffrierfunktionen E K bzw. D K sollen<br />

mit Hilfe eine einzigen Algorithmus E bzw. D für jeden<br />

Schlüssel K effizient berechenbar sein.<br />

Die Chiffrier- und Dechiffrierfunktionen E K bzw. D K sollen<br />

selber effizient berechenbare Funktionen sein.<br />

Die Sicherheit des Systems soll nur auf der Geheimhaltung des<br />

Schlüssels, und nicht auf der Geheimhaltung der Algorithmen<br />

beruhen.<br />

Es gibt zwei Anwendungsgebiete für Cryptosysteme:<br />

Geheimhaltung und Authentifizierung,<br />

die potentiell miteinander in Konflikt stehen.<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Anforderungen bei Geheimhaltung bzw. Authentifizierung<br />

Geheimhaltung: Folgendes ist praktisch nicht berechenbar:<br />

systematisch D K aus abgefangenen Chiffretexten C (auch<br />

nicht, wenn die Klartexte mit E K (M) = C bekannt sind),<br />

den Klartext M aus C .<br />

Authentifizierung: Folgendes ist praktisch nicht berechenbar:<br />

systematisch E K aus abgefangenen Chiffretexten C (auch<br />

nicht, wenn die Klartexte mit E K (M) = C bekannt sind),<br />

einen Chiffretext C ′ , so dass D K (C ′ ) ein gültiger Klartext in<br />

M ist (z.B. von Intresse bei numerischen oder anderen nicht<br />

kontextsensitiven Daten)<br />

Dabei bedeutet “praktisch nicht berechenbar”, dass es keinen<br />

besseren Algorithmus als brute force gibt, was bei gängiger<br />

Hardware unzumutbar lange dauert.<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Wahrscheinlichkeitstheoretische Grundlagen<br />

Definition<br />

p(A) : die W’keit, dass das Ereignis A eintritt;<br />

p(A, B) : die W’keit, dass A und B gleichzeitig eintreten;<br />

p(A|B) : die bedingte W’keit, dass A eintritt, unter der<br />

Voraussetzung, dass B stattgefunden hat.<br />

A und B heißen unabhängig, sofern p(A, B) = p(A) · p(B) .<br />

Rechenregel<br />

p(A, B) = p(A|B) · p(B)<br />

Proposition<br />

A , B unabhängig gdw p(A|B) = p(A) gdw p(B|A) = p(B)<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Perfekte Geheimhaltung<br />

Vereinbarungen<br />

Klartext M tritt mit W’keit p(M) auf;<br />

Chiffretext C wird mit W’keit p(C) empfangen;<br />

Schlüssel K wird mit W’keit p(K) gewählt.<br />

Definition<br />

Ein Kryptosystem unterliegt perfekter Geheimhaltung (ist absolut<br />

sicher), falls p(M|C) = p(M) für alle M ∈ M und C ∈ C gilt.<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Perfekte Geheimhaltung (2)<br />

M 0<br />

M 1<br />

M 2<br />

Schlüssel<br />

0<br />

C<br />

1<br />

0<br />

2<br />

3<br />

1<br />

2<br />

C<br />

3<br />

1<br />

0<br />

2<br />

3<br />

C<br />

0<br />

2<br />

1<br />

3<br />

0<br />

1<br />

M 3<br />

2<br />

C 3<br />

Klartext<br />

Chiffretext<br />

Schlüssel = 2<br />

p(M|C) = p(M) = 1 4<br />

p(C|M) = p(C) = 1 4<br />

Wird z.B. C 2 empfangen, ist der<br />

zugehörige Klartext völlig unklar.<br />

Notwendige Bedingung für<br />

perfekte Geheimhaltung: Die<br />

Anzahl der Schlüssel ist mindestens<br />

so groß wie die Anzahl der<br />

möglichen Klartexte.<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Perfekte Geheimhaltung (3): Caesar Chiffre<br />

Schlüssel<br />

Nachricht<br />

0 JXNWWYIJWRJSXHMXTQFSLJWXYWJGY<br />

1 IWMVVXHIVQIRWGLWSPERKIVWXVIFX<br />

2 HVLUUWGHUPHQVFKVRODQJHUVWUHEW<br />

3 GUKTTVFGTOGPUEJUQNCPIGTUVTGDV<br />

4 FTJSSUEFSNFOTDITPMBOHFSTUSFCU<br />

5 ESIRRTDERMENSCHSOLANGERSTREBT<br />

Perfekte Geheimhaltung ist nicht möglich, bei 26 Schlüsseln.<br />

Brechen duch Ausprobieren der Schlüssel, hier K = 5 .<br />

Für M = ”Es irrt der Mensch so lang er strebt” erhalten wir<br />

p(M|C) = 1 und p(M ′ |C) = 0 für M ′ ≠ M<br />

insbesondere also p(M|C) ≠ p(M) .<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Transposition, Beispiele (1)<br />

Beispiel (Transpositions-Chiffren)<br />

Wikipedia<br />

listet diverse Transpositions-Chiffren auf, etwa:<br />

Zaun, mit der Zaun-Tiefe als Schlüssel;<br />

Route, mit Gitter-Dimensionen und Route als Schlüssel;<br />

Spalten-Transposition, mit einer Spaltenzahl n und einer<br />

Permutation auf n als Schlüssel (Wort ohne wiederholte<br />

Buchstaben); Einlesen horizontal, Auslesen vertikal gemäß<br />

Schlüssel; regulär bei aufgefüllter letzter Zeile<br />

doppelte Spalten-Transposition;<br />

Myszkowski Transposition mit erlaubten Wiederholungen im<br />

Schlüsse; horizontales Auslesen der Spalten mit gleichem<br />

Schlüsselbuchstaben.<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Transposition, Beispiele (2)<br />

Beispiel<br />

Bei Verwendung von 5 Spalten lesen wir den Klartext zeilenweise ein<br />

und spaltenweise je nach Schlüssel aus:<br />

VORLE<br />

SUNGS<br />

ICHER<br />

HEITI<br />

NNETZ<br />

ENUND<br />

13024<br />

31201<br />

OUCENN LGETTN VSIHNE RNHIEU ESRIZD<br />

LGETTN OEUSCREINZND RNHIEU OUCENN<br />

Als Schlüsselwörter eignen sich z.B. DRAHT bzw. SEIDE.<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Transposition, Beispiele (3)<br />

Beispiel<br />

Ein historisches Beispiel bildet die im -5. Jahrundert in Sparta<br />

entwickelte Skytale<br />

Die Nachricht wird auf einen flexiblen Träger geschrieben<br />

Pergamentband, Lederrriemen), der spiralförmig um einen Holzstab<br />

gewickelt ist. Dessen Durchmesser dient als Schlüssel. Der<br />

abgewickelte Träger ist dann der Chiffretext. Wählt man als<br />

Querschnitt eine regelmäßiges n ¿- Eck, so lassen sich n Zeilen<br />

gleichzeitig verschlüseln.<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Erkennen einer Transpositionschiffre<br />

Ob eine Transpositionschiffre<br />

vorliegt sieht man leicht nach<br />

einer Häufigkeitsanalyse.<br />

Die Buchstaben des Alphabets<br />

sind in jeder Sprache<br />

charakteristisch verteilt.<br />

Dies ändert sich nicht bei<br />

ihrer Transposition.<br />

Quelle: http://home.nordwest.net/hgm/krypto/intro.htm<br />

Analog lassen sich Verteilungen für Buchstabenpaare (Digramme)<br />

und -tripel (Trigramme) angeben. Auch die Kenntnis verbotener<br />

Buchstabenkombinationen in der Zielsprache kann von Nutzen sein.<br />

Häufige Di- bzw. Trigramme in D(E):<br />

er, en, ch (th, en) bzw. ein, ich der (the, ing)<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Klassische Substitutionschiffren<br />

Klassisch unterscheidet man vier Typen von Substitutionschiffren:<br />

Einfache Substitution<br />

Homophone substitution<br />

Polyalphabetische Substitution<br />

Plogramm-Substitution<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Einfache Substitution<br />

Sind A das Klartext- und B das Chiffretextalphabet, basiert eine<br />

einfache Substitution auf einer injektiven Abbildung A f B.<br />

Beispiel<br />

Wir codieren das Klartextalphabet A = {A, B, . . . , Z} durch die<br />

Zahlen von 0 bis 25 : A ↦→ 0 , B ↦→ 1 , . . . Z ↦→ 25<br />

Verschiebechiffre (Caesar): f (a) = (a + k) mod 26<br />

Multiplikationschiffre: f (a) = (a · k) mod 26 , mit<br />

ggT(k, 26) = 1<br />

affine Transformation: f (a) = (a · k 1 + k 0 ) mod 26 mit<br />

ggT(k 1 , 26) = 1<br />

Die ggT ¿- Bedingungen sind notwendig, um die Decodierbarkeit zu<br />

garantieren.<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Einfache Substitution (2)<br />

Beispiel<br />

Natürlich kann man auch eine beliebige Permutation des<br />

Klartextalphabets verwenden, etwa<br />

A : 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 Z<br />

C : C H I F R E N M T A S U B O D G J K L P Q V W X Y Z<br />

Dies chiffriert M = VORLESUNGEN zu E K (M) = VDKUURLQONRO .<br />

Knobelaufgabe<br />

Grabinschrift von 1794 auf den New Yorker Trinity-Friedhof:<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Probleme bei einfacher Substitution<br />

Die oben beschriebenen<br />

Verfahren sind unsicher.<br />

Häufigkeitsanalyse ist auch<br />

hier anwendbar: Die Häufigkeiten<br />

sind nur permutiert!<br />

Di- und Trigramme sowie<br />

verbotene Buchstabenkombinationen<br />

helfen hier<br />

auch weiter.<br />

Ggf. hilft auch Raten,<br />

zumindest wenn es sich um<br />

einen Text und nicht nur um<br />

Daten handelt.<br />

Zeichen erwartet in % aktuell in %<br />

A 6,43 6,85 ¤¤¤¤¤¤¤<br />

B 1,85 1,85 ¤¤<br />

C 3,26 2,52 ¤¤¤<br />

D 5,12 4,63 ¤¤¤¤¤<br />

E 17,74 17,30 ¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤<br />

F 1,56 1,59 ¤¤<br />

G 2,69 2,90 ¤¤¤<br />

H 5,22 3,78 ¤¤¤¤<br />

I 7,60 8,45 ¤¤¤¤¤¤¤¤<br />

J 0,23 0,38<br />

K 1,40 1,60 ¤¤<br />

L 3,49 3,96 ¤¤¤¤<br />

M 2,75 2,81 ¤¤¤<br />

N 10,01 10,18 ¤¤¤¤¤¤¤¤¤¤<br />

O 2,39 3,38 ¤¤¤<br />

P 0,64 1,02 ¤<br />

Q 0,01 0,03<br />

R 6,98 7,36 ¤¤¤¤¤¤¤<br />

S 6,88 5,85 ¤¤¤¤¤¤<br />

T 5,94 6,06 ¤¤¤¤¤¤<br />

U 4,27 3,86 ¤¤¤¤<br />

V 0,64 1,00 ¤<br />

W 1,73 1,36 ¤<br />

X 0,02 0,04<br />

Y 0,04 0,06<br />

Z 1,10 1,21 ¤<br />

J eder ¤ reprÄasentiert 1% des aktuellen Textes<br />

Anzahl der Buchstaben des aktuellen Textes = 24961<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Homophone Substitution<br />

Ziel ist es, das Problem der permutierten Häufigkeiten zu lösen.<br />

Idee: Ordne jedem Klartextzeichen mehrere Chiffretextzeichen zu,<br />

aus denen beim Chiffrieren jeweils eins zufällig auszuwählen ist.<br />

Definition<br />

Für Alphabete A und C ist eine Chiffre mit homophoner<br />

Substitution durch eine surjektive Abbildung C g A gegeben.<br />

Beachte: Die g ¿- Urbilder der Klarextbuchstaben sind wegen der<br />

Surjektivität nicht leer, und automatisch paarweise disjunkt.<br />

Strategie: Versuche, durch geschickte Abbildung eine Gleichverteilung<br />

aller Chiffre-Zeichen zu erhalten, dann läuft die<br />

Häufigkeitsanalyse ins Leere.<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Homophone Substitution (2)<br />

Beispiel<br />

Chiffrealphabet: die Zahlen von 00 bis 99 ;<br />

Anzahl der Homophone: prozentuale Häufigkeit des Buchstabens,<br />

und alle Ziffern treten möglichst gleich häufig auf, etwa<br />

Buchstabe Häufigkeit Homophone<br />

E 17,74% 02 05 14 19 24 26 34 46 50 57 63 68 75 80 83 91 99<br />

I 7,60% 01 15 22 43 52 86 87 98<br />

K 1,40% 44<br />

L 3,49% 04 28 82<br />

N 10,01% 08 21 42 45 53 66 72 77 92 95<br />

P 0,64% 03<br />

R 6,98% 07 11 12 23 30 70 85<br />

S 6,88% 10 18 36 39 61 83 93<br />

K L E I N E S P I E L E R E I ↦→ 44 04 24 01 66 57 36 03 98 05 82 99 30 75 52<br />

Häufigkeitsanalyse von Einzelbuchstaben helfen kaum, von Di- und<br />

Trigrammen nur wenig mehr. Aber Known-Plaintext Angriffe sind<br />

wirksam.<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Recherche Aufgaben<br />

Betriebsmodi für Blockchiffren: CFB und OFB<br />

Quelle: D. Wätjen, Kryptographie, 2. Aufl, Spektrum Verlag.<br />

Die Stromchiffre RC 4:<br />

Quelle: W. Stallings, L. Brown: Computer Security Principles<br />

and Practice, Pearson 2008.<br />

http://en.wikipedia.org/wiki/RC4<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Kapitel 3<br />

Zahlentheoretische Grundlagen<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


G. H. Hardy über Zahlentheorie. . .<br />

G. H. Hardy 1877 – 1947 (Quelle: Wikipedia)<br />

“Echte Mathematik hat keine Auswirkungen auf den Krieg. Bisher hat noch<br />

niemand einen kriegerischen Nutzen der Zahlentheorie entdeckt.“<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Gauß über Zahlentheorie. . .<br />

Carl Friedrich Gauß (1777 – 1855) (Quelle: Wikipedia)<br />

“Die Mathematik ist die Königin der Wissenschaften und die Zahlentheorie<br />

ist die Königin der Mathematik.“<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Überblick<br />

Teilbarkeit und Primzahlen<br />

Kongruenzen modulo n und Restklassenrechnung<br />

Schnelle Exponentiation modulo n<br />

Sätze von Euler und Fermat als Grundlage für RSA<br />

Euklidischer Algorithmus zur Bestimmung des Inversen modulo<br />

n<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Zahlenmengen<br />

N Menge der natürlichen Zahlen {0, 1, 2, 3, . . . }<br />

Z Menge der ganzen Zahlen {. . . , −3, −2, −1, 0, 1, 2, 3, . . . }<br />

Eigenschaften der ganzen Zahlen<br />

(a + b) + c = a + (b + c) a(bc) = (ab)c Assoziativität<br />

a + 0 = a a · 1 = a Neutrales Element<br />

a + b = b + a ab = ba Kommutativität<br />

a + (−a) = 0<br />

Additives Inverses<br />

Damit ist 〈Z, +, 0〉 eine kommutative Gruppe und 〈Z, ·, 1〉 ein<br />

kommutatives Monoid.<br />

a(b + c) = ab + ac<br />

Distributivität<br />

Damit ist 〈Z, +, 0, ·, 1〉 eine kommutativer Ring mit Null 0<br />

und Eins 1 .<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Teilbarkeit als Ordnungsrelation<br />

Die Teilbarkeitsrelation k | n ⇐⇒ ∃z ∈ Z : z · k = n ist eine<br />

Halbordnung auf den natürlichen Zahlen N : sie ist<br />

reflexiv, d.h., k | k für alle k ∈ N ;<br />

transitiv, d.h., k | n und n | r impliziert k | r ;<br />

antisymmetrisch, d.h., k | n und n | k impliziert k = n .<br />

(Auf den ganzen Zahlen Z entfällt die Antisymmetrie.) Bzgl. dieser<br />

Halbordnung für Elemente a, b ∈ N der größte gemeinsame Teiler<br />

ggT(a, b) und das kleinste gemeinsame Vielfache kgV(a, b) die<br />

größte untere, bzw. kleinste obere Schranke. Für solche Strukturen<br />

wurde der Begriff Verband geprägt.<br />

Weiterhin existiert bzgl. Teilbarkeit ein größtes Element, nämlich 0<br />

und ein kleinstes Element, nämlich 1 .<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Primzahlen<br />

Definition<br />

Eine Zahl p ∈ N heißt Primzahl oder prim, wenn sie im Teilbarkeitsverband<br />

〈Z, | , ggT, kgV, 1, 0〉 , ein oberer Nachbar des<br />

kleinsten Elements 1 ist (auch Atom genannt).<br />

Satz<br />

p ∈ N ist genau dann eine Primzahl, wenn eine der folgenden<br />

äquivalenten Bedingungen erfüllt ist:<br />

p ≠ 0, 1 und aus p | a · b folgt p | a oder p | b für a, b ∈ N .<br />

p ≠ 0, 1 und aus k | p folgt k ∈ {1, p} , für k ∈ N .<br />

p hat genau zwei Teiler (nämlich 1 und p ).<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Restklassenrechnung am Beispiel der Uhr<br />

Idee – Arithmetik der Uhr:<br />

usw.<br />

0 = 12 = 24<br />

1 = 13 = 25<br />

Statt mit Zahlen wird mit Resten bei Division<br />

durch 12 gerechnet, z.B:<br />

8 + 6 = 2 2 − 5 = 9 3 ∗ 5 = 3<br />

5 −1 = 5 da 5 ∗ 5 = 1 gilt<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Teilbarkeit und Kongruenz<br />

Definition<br />

Jede Zahl n ∈ N definiert auf Z eine Relation a ≡ n b durch<br />

n | (a − b) . Dann heißt a kongruent zu b modulo n .<br />

Satz<br />

≡ n<br />

ist Äquivalenzrelation auf Z , d.h.<br />

a ≡ n a<br />

a ≡ n b =⇒ b ≡ n a<br />

a ≡ n b, b ≡ n c =⇒ a ≡ n c<br />

(Reflexivität)<br />

(Symmetrie)<br />

(Transitivität)<br />

Ziel ist es, auf den Restklassen modulo n , also den Mengen<br />

[a] n = {b | b ≡ n a} , a ∈ Z , eine Ringstruktur einzuführen.<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Restklassenrechnung<br />

Naiver Ansatz: [a] n + [b] n := [a + b] n und [a] n · [b] n := [a · b] n<br />

Damit diese Definition funktioniert, brauchen wir den Nachweis,<br />

dass es sich bei ≡ n sogar um eine Kongruenzrelation handelt:<br />

Satz<br />

Für Zahlen n ∈ N und a, a ′ , b, b ′ ∈ Z gilt<br />

[a] + [b] = [a + b] und [a] · [b] = [a · b]<br />

Das Hantieren mit Mengen als Elementen ist wenig beliebt, also<br />

versucht man, aus den Restklassen möglichst kanonische<br />

Repräsentanten auszuwählen, etwa das jeweils kleinste<br />

nicht-negative Element. Das sind gleichzeitig die nicht-negativen<br />

Reste bei Division durch n .<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Restklassenrechnung (2)<br />

Definition<br />

Für n ∈ N bildet Z modn Z n ganze Zahlen auf ihren<br />

nichtnegativen Rest bei Division durch n ab.<br />

Satz<br />

Für jedes n ∈ N ist Z n = {0, 1, 2, . . . , n − 1} ein Ring unter<br />

a ⊕ b = (a + b) mod n<br />

a ⊙ b = (a · b) mod n<br />

Dadurch wird modn zu einem Ring-Homomorphismus von<br />

〈Z, +, 0, ·, 1〉 nach 〈Z n , ⊕, 0 mod n, ⊙, 1 mod n〉 .<br />

Korollar<br />

In 〈Z n , ⊕, 0 mod n, ⊙, 1 mod n〉 gelten dieselben Exponentiationsregeln<br />

wie in 〈Z, +, 0, ·, 1〉 .<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Exponentiation . . .<br />

. . . in der modularen Arithmetik: e t mod n = (e<br />

}<br />

· e<br />

{{<br />

· · · e<br />

}<br />

) mod n<br />

t mal<br />

Beispiel<br />

Berechnung des Ausdrucks 3 5<br />

mod 7 auf zwei Arten:<br />

a 1 Quadriere 3: 3 · 3 = 9<br />

2 Quadriere das Ergebnis: 9 · 9 = 81<br />

3 Multipliziere mit 3: 81 · 3 = 243<br />

4 Reduziere modulo 7: 243 mod 7 = 5<br />

b 1 Quadriere 3: 3 · 3 mod 7 = 2<br />

2 Quadriere das Ergebnis: (2 · 2) mod 7 = 2<br />

3 Multipliziere mit 3: (4 · 3) mod 7 = 5<br />

Was ist besser und wieso?<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Schnelle Exponentiation<br />

Die naive Berechnung von a z mod n = (∏ i


Beispiel: Berechnung von 51 18479 mod 56350<br />

i ⌊z/2 i ⌋ z i 51 (2i ) mod 56350<br />

∏ 51<br />

(2 i )z i<br />

mod 56350<br />

0 18479 1 51 51<br />

1 9239 1 2601 19951<br />

2 4619 1 3201 18601<br />

3 2309 1 47051 23801<br />

4 1154 0 30501 23801<br />

5 577 1 28851 1551<br />

6 288 0 34351 1551<br />

7 144 0 22201 1551<br />

8 72 0 47301 1551<br />

9 36 0 7851 1551<br />

10 18 0 47651 1551<br />

11 9 1 50901 1101<br />

12 4 0 51501 1101<br />

13 2 0 14851 1101<br />

14 1 1 54651 45301<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Schnelle Exponentiation in Pseudocode<br />

Data: n, z ∈ N, a ∈ Z<br />

Result: x = a z mod n<br />

a 1 := a ;<br />

z 1 := z ;<br />

x := 1 ;<br />

// (x · a z 1<br />

1 ) mod n = az mod n<br />

while z 1 ≠ 0 do<br />

while (z 1 mod 2) = 0 do<br />

z 1 := z 1/2 ;<br />

a z := (a 1 · a 1) mod n ;<br />

end<br />

z 1 := z 1 − 1 ;<br />

x := (x · a z) mod n ;<br />

end<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Modulare Arithmetik<br />

Viele kryptographische Verfahren benötigen multiplikative odr<br />

modulare Inverse in Z n .Existiert ein solches für a ∈ Z n , so ist es<br />

eindeutig bestimmt (HA) und wird mit a −1 bezeichnet.<br />

Speziell sind in Z n Gleichungen der Form (a · x) mod n = b mit<br />

a, b ∈ Z n zu lösen. Das ist leicht, wenn man durch a teilen kann.<br />

Allgemeiner wollen wir für n ∈ N und a ∈ Z n<br />

Z n<br />

a ⊙ − Z n , x ↦→ (a · x) mod n<br />

d.h., die Multiplikation mit a , genauer analysieren.<br />

Diese läßt sich zerlegen als<br />

Z n<br />

a · − a · Z n ⊆ Z modn Z n<br />

die Abbildung<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Existenz multiplikativer Inverser<br />

Satz<br />

Für n ∈ N ist Z n<br />

a ⊙ − Z n genau dann injektiv, wenn a und n<br />

coprim oder teilerfremd sind, d.h., wenn gilt ggT(a, n) = 1 .<br />

Satz<br />

a −1<br />

existiert genau dann für a ∈ Z n , wenn ggT(a, n) = 1 gilt.<br />

Beweis.<br />

Z n ist endlich, daher ist a ⊙ − genau dann injektiv, wenn es<br />

surjektiv ist. In dem Fall ist das Urbild von 1 das gesuchte Inverse.<br />

Umgekehrt folgt aus der Existenz von a −1 , daß a ⊙ − invers zu<br />

a −1 ⊙ − , also injektiv ist.<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Der Fall ggT(a, n) = 1<br />

Veranschaulichung: a = 5 , n = 6<br />

Z modn Z n “wickelt” Z auf einen Kreis des Umfangs n . Für<br />

ggT(a, n) = 1 überdeckt das Bild von a · Z n genau den Kreis.<br />

3<br />

10 4<br />

15 20 2<br />

5 25 1<br />

−1 0 1 2 3 4 5 6 7 8 9 10 11 12 · · ·<br />

Nun hat a · x mod n = b die eindeutige Lösung x = a −1 · b mod n .<br />

Folgerung<br />

Z n<br />

ist genau dann ein Körper, wenn n eine Primzahl ist.<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Euler’sche ϕ -Funktion<br />

Definition<br />

Z ∗ n := { a ∈ Z n : ggT(a, n) = 1 } heißt reduzierte Menge der Reste<br />

modulo n . |Z ∗ n| wird nach Euler mit ϕ(n) bezeichnet.<br />

Bzgl. ⊙ verhält sich Z ∗ n gut, es ist eine kommutative Gruppe, denn<br />

das Monoid 〈Z n , ⊙, 1 mod n〉 ist kommutativ und b −1 ⊙ a −1 ist<br />

das multiplikative Inverse zu a ⊙ b , für a, b ∈ Z ∗ n .<br />

Notation.<br />

Für teilerfremde Zahlen s, t ∈ N bezeichnet s −1 mod t das<br />

multiplikative Inverse von s mod t in Z ∗ t .<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Euler’sche ϕ -Funktion (2)<br />

Satz<br />

(0) ϕ(0) = 2 , ϕ(1) = 1 .<br />

(1) p prim und k > 0 impliziert ϕ(p k ) = p k−1 (p − 1) .<br />

(2) ggT(s, t) = 1 impliziert ϕ(s · t) = ϕ(s) · ϕ(t) .<br />

Satz (Euler bzw. Fermat im Falle von Primzahlen)<br />

Für n ∈ N erfüllt jedes a ∈ Z ∗ n die Bedingung a ϕ(n) ≡ n 1 .<br />

Beweis<br />

Da a ⊙ − bijektiv ist stimmen die Produkte in Z ∗ n überein:<br />

( ∏ ) ( ∏ )<br />

x ≡ n a · x ≡ n<br />

(a ∏ )<br />

ϕ(n) x<br />

x∈Z ∗ n<br />

x∈Z ∗ n<br />

x∈Z ∗ n<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Folgerungen aus dem Satz von Euler<br />

Dies liefert zunächst eine nützliche Rechenregel:<br />

Rechnet man in der Basis modulo n ,<br />

so darf man im Exponenten modulo ϕ(n) rechnen<br />

Corollar<br />

Für n ∈ N , a ∈ Z ∗ n<br />

und r 0 , r 1 ∈ N gilt<br />

r 0 ≡ ϕ(n) r 1 impliziert a r 0<br />

≡ n a r 1<br />

Beweis.<br />

ObdA gelte r 1 ≤ r 0 . Nach Voraussetzung existiert k ∈ N mit<br />

r 0 = r 1 + k · ϕ(n) . Aufgrund der Exponentiationsregeln folgt nun<br />

(<br />

a r 0<br />

≡ n a r1+k·ϕ(n) ≡ n a r 1<br />

a ϕ(n)) k<br />

≡n a r 1<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Multiplikative Inverse<br />

Satz<br />

Für n ∈ N und a ∈ Z ∗ n gilt a −1 ≡ n a ϕ(n)−1 mod n .<br />

Beispiel<br />

Wegen 56350 = 2 · 5 2 · 7 2 · 23 folgt<br />

ϕ(56350) = 1 · (4 · 5) · (6 · 7) · 22 = 18480<br />

und somit nach dem Satz von Euler<br />

a −1 mod 56350 = a 18479 mod 56350<br />

für jedes a ∈ Z ∗ 56350 , speziell für a = 51 (siehe obiges Beispiel).<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Schnellere Inversenberechnung: Euklidischer Algorithmus<br />

Bekanntlich existieren für a, n ∈ Z Zahlen u, v ∈ Z mit<br />

au + nv = ggT(a, n) und damit au ≡ n ggT(a, n)<br />

ggT(a, n) = 1 impliziert dann a −1 ≡ n u . Finden kann man u<br />

durch “Aufdröseln” des Euklidischen Algorithmus:<br />

Beispiel (Berechnung von 51 −1 mod 56350 )<br />

Man spielt die Berechnung des ggT , bis auf den überflüssigen<br />

letzten Schritt, nochmal mit den Startwerten 0 und 1 nach:<br />

56350 = 1104 · 51 + 46<br />

51 = 1 · 46 + 5<br />

46 = 9 · 5 + 1<br />

5 = 5 · 1 + 0<br />

0 = 1104 · 1 + (−1104)<br />

1 = 1 · (−1104) + 1105<br />

− (1104) = 9 · 1105 + (−11049)<br />

Damit erhalten wir 51 −1 ≡ 56350 −11049 ≡ 56350 = 45301 .<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Euklidischer Algorithmus in Pseudocode<br />

Data: a, n ∈ N<br />

Result: d = ggT(a, n)<br />

g 0 := n; g 1 := a; i := 1;<br />

while g i ≠ 0 do<br />

g i+1 := g i−1 mod g i ;<br />

i := i+1;<br />

end<br />

d := g i−1 ;<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Erweiterung zur Berechnung des Inversen<br />

Data: a, n ∈ N mit n > a und ggT(a, n) = 1<br />

Result: x = a −1 mod n<br />

g 0 := n ; g 1 := a ;<br />

u 0 := 1 ; v 0 := 0 ;<br />

u 1 := 0 ; v 1 := 1 ; i := 1 ;<br />

while g i ≠ 0 do<br />

y := g i−1 div g i ;<br />

g i+1 := g i−1 − y · g i ;<br />

u i+1 := u i−1 − y · u i ;<br />

v i+1 := v i−1 − y · v i ;<br />

i := i + 1 ;<br />

end<br />

x := v i−1 ;<br />

if x ≤ 0 then<br />

x := x+n<br />

end<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Bemerkungen<br />

Der Algorithmus funktioniert nur für positive a und n korrekt:<br />

Für a = −1 liefert er zum Beispiel inkorrekt x = 1 .<br />

Komplexität: Die durchschnittliche Anazhl von Divisionen ist<br />

0.843 · ln(n) + 1.47<br />

Das bedeutet, die durchschnittliche Laufzeit ist linear in der<br />

Bitlänge von n.<br />

Es reichen zweimal drei lokale Variablen<br />

g − , g, g + und v − , v, v +<br />

(denn die u ’s werden nur zur Berechnung von x verwendet)<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Der Fall ggT(a, n) ≠ 1<br />

Veranschaulichung: a = 4 , n = 6<br />

Hier überdeckt das Bild von a · Z n die von 0 aus in Schritten der<br />

Größe a/g erreichbaren n/g Kreiselemente je g -mal:<br />

16<br />

3<br />

4 28<br />

20<br />

5 1<br />

−1 0 1 2 3 4 5 6 7 8 9 10 11 12 · · ·<br />

12<br />

Satz<br />

Für n ∈ N , a, b ∈ Z n und g := ggT(a, n) hat a · x mod n = b<br />

keine Lösung, falls b kein Vielfaches von g ist;<br />

g Lösungen der Form y + t(n/g) , t < g , wobei y die<br />

eindeutige Lösung von (a/g) · x mod (n/g) = (b/g) ist.<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Literatur<br />

Dietmar Wätjen: Kryptographie, 2. Aufl., Spektrum<br />

Akademischer Verlag, 2008.<br />

G. H. Hardy, E. M. Wright: An Introduction to the theory of<br />

numbers, Oxford University Press, 6. Aufl., 2008.<br />

K. H. Rosen, Elementary Number Theory and its Applications,<br />

5. Aufl., Pearson, 2005.<br />

Simon Singh: Fermat‘s last theorem, Fourth Estate, 2002.<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Kapitel 4<br />

Moderne symmetrische Verfahren<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Überblick<br />

Prinzipien in modernen symmetrischen Verfahren<br />

Konfusion und Diffusion<br />

Feistel-Netzwerke und der Data Encryption Standard (DES)<br />

Funktionsweise<br />

Sicherheit<br />

Betriebsmodi von Blockchiffren<br />

Cipher Block Chaining (CBC)<br />

Counter mode<br />

Advanced Encryption Standard (AES)<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Überblick<br />

Prinzipien in modernen symmetrischen Verfahren<br />

Feistel-Netzwerke und der Data Encryption Standard (DES)<br />

Betriebsmodi von Blockchiffren<br />

Advanced Encryption Standard (AES)<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Modernere Verschlüsselungsverfahren<br />

Wir wollen uns nun mit Verfahren beschäftigen, die moderner sind<br />

als die bisher betrachteten. Diese<br />

wurden seit Mitte der 1970er Jahre entwickelt;<br />

verwenden Bit- statt zeichenweise Verschlüsselung;<br />

wende “Konfusion” und “Diffusion” an;<br />

sind bishe außer “Brute-Force-Attacken” keinen bekannten<br />

Angriff ausgesetzt<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Bitweise Verschlüsselung<br />

Bisherige Verfahren waren zeichenorientiert<br />

Mit Computern kann man auf bitweise Verschlüsselung<br />

übergehen<br />

− damit werden Häufigkeitsanalysen schwierig<br />

− Wie sieht z.B. die Verteilung des 3. Bits aller Bytes eines Textes<br />

aus?<br />

Beispielsweise kann die bitweise XOR-Operation verwendet<br />

werden, um Schlüssel und Klartext zu verknüpfen<br />

− XOR ist einfach in Hardware<br />

zu implementieren<br />

− XOR ist leicht umkehrbar<br />

(einfach erneute Anwendung)<br />

⊕ 0 1<br />

0 0 1<br />

1 1 0<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Konfusion und Diffusion<br />

Zwei informelle Begriffe, deren streng mathematische Definition<br />

aber meist unterbleibt:<br />

Konfusion: Die statistische Verteilung der Chiffretexte hängt so<br />

kompliziert von der Verteilung der Klartexte ab, daß sich<br />

hieraus keine Angriffsmöglichkeit ergibt. Idealerweise sind die<br />

Chiffretexte fester Länge gleichverteilt.<br />

Diffusion: jedes Bit des Klartextes und jedes Bit des Schlüssels<br />

beeinflussen möglichst viele Bits des Chiffretextes, vergl. auch<br />

das Avalance Kriterium von Horst Feistel.<br />

Das strikte Avalance Kriterium (SAC) von Webser und Tavares<br />

(1985) fordert, daß bei Veränderung eines Klartext- oder<br />

Schlüssel-Bits jedes Chiffretext-Bit sich mit W’keit 1/2 ändert.<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Strom- vs. Blockchiffrierung<br />

Stromchiffirierung:<br />

Es wird eine Bitfolge erzeugt (Schlüsselstrom), mit der der<br />

Nachrichtenstrom verschlüsselt wird<br />

Optimal: Schlüsselstrom genauso lang wie Nachrichtenstrom<br />

Blockchiffrierung:<br />

Es werden Gruppen von Bits zusammengefasst und gemeinsam<br />

verschlüsselt, oft jede Gruppe mit demselben Schlüssel<br />

Einfaches Beispiel: einfache Substitution wie bei Caesear<br />

Allgemein:<br />

− Klartext: M = M 1 M 2 M 3 · · · (ggf. letzten Block auffüllen)<br />

− Chiffretext: E K (M) = E K (M 1 )E K (M 2 )E K (M 3 ) · · ·<br />

Heute basieren praktisch alle guten Verfahren auf Blockchiffrierung.<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Überblick<br />

Prinzipien in modernen symmetrischen Verfahren<br />

Feistel-Netzwerke und der Data Encryption Standard (DES)<br />

Betriebsmodi von Blockchiffren<br />

Advanced Encryption Standard (AES)<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Feistel-Netzwerke<br />

. . . bilden die zentrale Komponente<br />

gängiger Kryptoverfahren<br />

− Entworfen von Horst Feistel<br />

(IBM) Anfang der 70er Jahre<br />

− Verschlüsselung erfolgt in<br />

mehreren Runden<br />

L i<br />

K i+1<br />

⊕ f ⊣<br />

L i+1 = R i R i+1<br />

R i<br />

Zerlege Blöcke gerader Länge in gleichlange Hälften: B i = L i R i<br />

Chiffrierung und Dechiffrierung gehorchen einem einfachen Prinzip:<br />

L i+1 = R i<br />

R i+1 = L i ⊕ f (R i , K i+1 )<br />

Damit braucht f nicht invertierbar zu sein!<br />

R i = L i+1<br />

L i = L i ⊕ f (R i , K i+1 ) ⊕ f (R i , K i+1 )<br />

= R i+1 ⊕ f (R i , K i+1 )<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Feistel-Netzwerke (2)<br />

Einzige Bedingung an f : ohne Kenntnis des Schlüssels K i+1 darf<br />

f (R i , K i+1 ) nicht leicht berechenbar sein.<br />

Da keine Invertierbarkeit gefordert ist, kann f beliebig komplex<br />

werden, solange es effizient berechenbar bleibt.<br />

Chiffren, die auf (modifizierten) Feistel-Netzwerken basieren:<br />

− DES & Triple-DES<br />

− Blowfisch<br />

− MARS<br />

− RC5<br />

− . . .<br />

Wir schauen uns jetzt DES im Detail an!<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Geschichte von DES<br />

DES: Data Encryption Standard<br />

− Ergebnis einer öffentlichen Ausschreibung des amerikanischen<br />

National Bureau of Standards (NDS) Mitte der 70er<br />

− Ziel: Entwurf eines einheitlichen, sicheren<br />

Verschlüsselungsalgorithmus<br />

Bester Vorschlag von IBM (Feistel, Coppersmith et al.)<br />

− Modifiziert von 112 auf 56 Bit Schlüssellänge unter Mitarbeit<br />

der berühmten NSA (National Security Agency)<br />

− Deswegen immer wieder Bedenken wegen möglicher Hintertüren,<br />

die nur die NSA kannte<br />

− Inzwischen haben Brute-Force-Angriffe Aussicht auf Erfolg<br />

Anwendung:<br />

− In den 80er und 90er Jahren offizieller Standard bei<br />

US-Behörden<br />

− Die Variante Triple-DES ist bis 2030 zugelassen.<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Der DES-Algorithmus<br />

Der symmetrische Data Encryption Standard (DES, IBM, 1977;<br />

Feistel, Coppersmith et al.) kombiniert Substitutions- und<br />

Transpositionschiffren in 16 Runden.<br />

Die Chiffrierung von 64-Bit Klartextblöcken T mit 56-Bit<br />

Schlüsseln K erfordert 48-Bit Rundenschlüssel K i , i < 16 .<br />

In der Praxis verwendet man 64-Bit Schlüssel ¯K , bei denen<br />

jedes der acht Bytes ungerade(!) Parität haben muß, was durch<br />

ein Paritätsbit am Ende sichergestellt wird. Dieses wird gleich<br />

zu Beginn der Konstruktion der Rundenschlüssel entfernt, so<br />

dass nur die vorderen sieben Bits jedes Bytes zum eigentlichen<br />

Schlüssel K beitragen.<br />

Um neben Permutationen von Bits auch deren Eliminierung<br />

oder Vervielfachung darstellen zu können, verwendet man<br />

Urbildliste der vorherigen Positionen der Bits (Start bei 1).<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Erzeugung der Rundenschlüssel: Übersicht<br />

¯K hat 64 Bits und wird<br />

durch die Transformation<br />

PC 1 auf 56 Bits reduziert.<br />

C i , D i sind 28 Bit Blöcke<br />

LS i sind zyklische<br />

Linksshifts um 1 oder 2<br />

Positionen.<br />

Die Transformation PC 2<br />

entfernt 8 der 56 Bits und<br />

permutiert die übrigen.<br />

Jeder Rundenschlüssel K i<br />

hat 48 Bits.<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Erzeugung der Rundenschlüssel: Details<br />

Folgende Transformation entfernt die Paritätsbits aus ¯K :<br />

PC 1 :<br />

57 49 41 33 25 17 9<br />

1 58 50 42 34 26 18<br />

10 2 59 51 43 35 27<br />

19 11 3 60 52 44 36<br />

63 55 47 39 31 23 15<br />

7 62 54 46 38 30 22<br />

13 5 60 52 44 36 28<br />

21 13 5 28 19 12 4<br />

Daher treten die Zahlen 8, 16, 24, 32, 40, 48, 56 und 64 nicht auf.<br />

Die beiden Hälften des 56-Bit Ergebnisses PC 1 ( ¯K) = CD , mit<br />

C, D ∈ {0, 1} 28 werden 16 Mal separat derselben zyklischen<br />

Linksverschiebung unterzogen, und zwar um eine oder zwei<br />

Positionen gemäß der Tabelle<br />

Iteration 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15<br />

Links-Shift 1 1 2 2 2 2 2 2 1 2 2 2 2 2 2 1<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Das Ergebnis nach Iterationsschritt i bezeichnen wir mit C i D i .<br />

Dieses wird einer weiteren Transformation PC 2 unterzogen, wonach<br />

weitere 8 Bits in den Positionen 9, 18, 22, 25, 35, 38, 43 und 54<br />

eliminiert werden:<br />

PC 2 :<br />

14 17 11 24 1 5<br />

3 28 15 6 21 10<br />

23 19 12 4 26 8<br />

16 7 27 20 13 2<br />

41 52 31 37 47 55<br />

30 40 51 45 33 48<br />

44 49 39 56 34 53<br />

46 42 50 36 29 32<br />

Das Resultat ist der 48-Bit Rundenschlüssel K i .<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Struktur des DES<br />

Die einzelnen Bestandteile des DES:<br />

Klartext T<br />

Initiale Permutation IP(T ) = L 0 R 0<br />

Am Schluss invers IP −1 (L 16 R 16 )<br />

Funktion 2 32 × 2 48 2 32 , wo<br />

die Rundenschlüssel eingehen<br />

16 Runden Feistel-Netzwerk:<br />

L i = R i−1<br />

R i = L i−1 ⊕ f (R i−1 , K i )<br />

Nach Runde 16 werden R 16 und L 16<br />

nicht mehr vertauscht.<br />

f<br />

T<br />

IP<br />

L 0 R 0<br />

⌋⌊<br />

L 0 K 0<br />

R 0<br />

⊕ f ⊣<br />

R 1<br />

L 1 = R 0 K 1<br />

⊕ f ⊣<br />

R 2<br />

L 2 = R 1<br />

. . .<br />

R 15<br />

L 15 = R 14 K 15<br />

⊕ f ⊣<br />

R 16 L 16 = R 15<br />

⌉⌈<br />

R 16 L 16<br />

IP −1 E K (T )<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Die initiale Permutation und ihr Inverses<br />

Zur Ausführung der Permutation werden die Tabellen<br />

zeilenweise von lins nach rechts gelesen<br />

der (i, j) -Eintrag gibt die neue Position des j -ten Bits des<br />

i -ten Bytes eines 64-Bit Blockes an<br />

T = t 1 t 2 t 3 · · · t 64<br />

IP(T ) = t 58 t 50 t 42 · · · t 15 t 7 IP −1 (T ) = t 40 t 8 t 48 · · · t 57 t 25<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Die Funktion 2 32 × 2 48<br />

f<br />

2 32 , Übersicht<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Die Funktion f , Details<br />

B 1 B 2 · · · B 8 := E(R i−1 ) ⊕ K i<br />

f (R i−1 , K i ) := P(S 1 (B 1 )S 2 (B 2 ) · · · S 8 (B 8 ))<br />

1 32-Bit Halbblock R i−1 mit Transformation E auf 48 Bits erweitern<br />

2 Rundenschlüssel mit XOR verknüpfen<br />

3 Acht Substitutios-Boxen von 6 auf 4 Bit anwenden<br />

4 Permutation P auf 8 × 4 Bits anwenden<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Bit-Auswahl und Permutation<br />

Erweiterung auf 48 Bit durch Transformation E :<br />

− R i−1 zyklisch um eine Position nach reachts verschieben und<br />

gewisse Bit-Paare verdoppeln<br />

− Jede Zeile liefert 6 Bits<br />

Permutation P (analog zu IP ):<br />

− 8 × 4 = 32 Bits durch zeilenweises Lesen der Tabelle<br />

permutieren<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


S-Boxen<br />

Eingabe: 6-Bit Block B = b 1 b 2 b 3 b 4 b 5 b 6<br />

Ausgabe: 4-Bit Block<br />

S(B)<br />

Jede S-Box ist durch eine 4 × 16 -Matrix M mit binären<br />

Einträgen von 0000 bis 1111 gegeben<br />

Dann gilt mit binären Zeilen- bzw. Spaltenindizes:<br />

S(B) := M[i, j] wobei i = (b 1 b 6 ) j = (b 2 b 3 b 4 b 5 )<br />

Zeilenindex = 1. und 6. Bit,<br />

Spaltenindex = 2. bis 5. Bit<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Die S-Boxen (aus Platzgründen dezimal)<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Anmerkungen zum Design des DES-Verfahrens<br />

DES beschränkt sich auf sehr einfache Bitoperationen:<br />

XOR, Bitauswahl, Permutationen<br />

→ das Verfahren ist sehr gut in Hardware umsetzbar<br />

Auswahltabelle E: jede Änderung eines Klartextbits betrifft<br />

nach wenigen Runden alle Bits des erzeugten Chiffretextes<br />

Permutation P: jedes Klartextbit wirkt sich bei jeder Runde auf<br />

eine andere S-Box aus<br />

Also: E und P sorgen für Diffusion<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Design der S-Boxen<br />

S-Boxen sind so konstruiert, dass DES der so genannten<br />

differentiellen Kryptoanalyse standhält.<br />

Idee der differentiellen Kryptoanalyse:<br />

− Beobachte Auswirkungen von kleinen Differenzen in bekannten<br />

Klartexten auf die zugehörigen chiffretexte<br />

− Versuche daraus auf (Teiule des) Schlüssel(s) zu schließen<br />

Dieses Verfahren wurde 1992 durch E. Biham und A. Shamir<br />

veröffentlicht<br />

Es muss aber beim Design der S-Boxen schon bekannt gewesen<br />

sein ⇒ 20 Jahre Wissensvorsprung der NSA vor öffentlicher<br />

Forschung!<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Die DES Dechiffrierung. . .<br />

T<br />

IP<br />

L 0 R 0<br />

. . . durchläuft die 16<br />

Feistelnetzwerkrunden von<br />

unten nach oben<br />

Das entspricht der Verwendung<br />

der Rundenschlüssel in der<br />

umgekehrten Reihenfolge!<br />

Die Korrektheit lässt sich dann<br />

leicht nachweisen:<br />

D K (E K (T )) = T<br />

⌋⌊<br />

L 0 K 0<br />

R 0<br />

⊕ f ⊣<br />

R 1<br />

L 1 = R 0 K 1<br />

⊕ f ⊣<br />

R 2<br />

L 2 = R 1<br />

. . .<br />

R 15<br />

L 15 = R 14 K 15<br />

⊕ f ⊣<br />

R 16 L 16 = R 15<br />

⌉⌈<br />

R 16 L 16<br />

IP −1 E K (T )<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Sicherheit von DES<br />

Für einen festen Schlüssel K ist DES-Verschlüsselung<br />

insgesamt eine bijektive Funktion auf der Menge aller<br />

64-Bit-Blöcke<br />

− Wiederholte Anwendung liefert irgendwann den Klartext<br />

(Warum?)<br />

Zyklenlänge = kleinste Anzahl von Wiederholungen bis Klartext<br />

wiederholt<br />

− Es gibt 4 Schlüssel mit Zyklenlänge 2<br />

− Es ist sehr unwahrscheinlich, dass diese zufällig gewählt werden;<br />

dann sollte man nochmal wählen.<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Größte Schwäche von DES. . .<br />

. . . ist die kurze Schlüssellänge von nur 56<br />

Bits:<br />

− Mit Brute-Force-Methoden kann der<br />

Schlüssel heutzutage in kurzer Zeit<br />

ermittelt werden:<br />

1998: Electrinc Frontier Foundation (EFF)<br />

baut für $250.000 Deep Crack mit 1536<br />

speziellen Krypto-Chips<br />

− knackt DES in 56 Stunden<br />

2006: Forschungsgruppen aus Bochum<br />

Kiel bauen COPACOBANA<br />

− Spezialrechner für < $10.000<br />

− Knackt zusammen mit einem PC in<br />

durchschn. 6 Tagen DES-Schlüssel für 2<br />

Blöcke Klartext-Chiffretext-Paare<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Größere Sicherheit für DES<br />

1 Verdoppelung der Schlüssellänge auf 112 Bit<br />

Angeblich war dies der ursprüngliche Entwurf, der aber auf<br />

Betreiben der NSA modifiziert wurde<br />

2 Triple-DES: drei verschiedene Schlüssel K 1 , K 2 , K 3<br />

Schlüssellänge 168 Bits<br />

effektiv aber 112 Bits, denn:<br />

ein Angreifer benötigt 2 112 Schritte und 2 56 Blöcke Speicher<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Überblick<br />

Prinzipien in modernen symmetrischen Verfahren<br />

Feistel-Netzwerke und der Data Encryption Standard (DES)<br />

Betriebsmodi von Blockchiffren<br />

Advanced Encryption Standard (AES)<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Betriebsmodi von Blockchiffren<br />

5 Betriebsmodi für Blockchiffren wurden vom NIST definiert<br />

(ursprünglich für DES im Dezember 1980)<br />

Modus Beschreibung Anwendung<br />

Electronic Code Unabhängige Kodierung einzelner blöcke mit Sichere Übertragung einzelner<br />

Book (ECB) demselben Schlüssel<br />

Werte<br />

Cipher Block Kodierung von XOR-Verknüpfung mit letztem Block-orientierte Übertragung;<br />

Chaining (CBC) Chiffretextblock<br />

Authentifizierung<br />

Cipher Feedback Verschlüsselung wirkt auf ein Feedbackregister Block-orientierte Übertragung;<br />

(CFB)<br />

der Länge n; zur Kodierung werden r Bits (r < Authentifizierung<br />

n) des Registers mit den Klartextblöcken verknüpft<br />

Output Feedback Ähnlich CFB; aber Eingabe der Verschlüsselung Strom orientierte Übertragung<br />

(OFB)<br />

ist vorherige Ausgabe<br />

(z.B. Satellit)<br />

Counter (CTR) Jeder Klartextblock wird mit einem verschlüsselten<br />

Block orientierte Übertragung;<br />

Zähler XOR-verknüpft<br />

hohe<br />

Geschwindigkeit<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Modus: Electronic Code Book (ECB)<br />

Klartext M wird in n-Bit Blöcke zerlegt: M = M 1 M 2 M 3 · · ·<br />

Jeder Block wird mit demselben Schlüssel K verschlüsselt:<br />

E K (M) = E K (M 1 )E K (M 2 )E K (M 3 ) · · ·<br />

Probleme:<br />

− Blöcke werden ggf. aufgefüllt (Padding)<br />

=⇒ Angriff mit bekanntem Klartext möglich<br />

− Replay:<br />

(z.B. in Datenbanken)<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


ECB und Klartextmuster<br />

Klartext Mit ECB verschlüsselt Mit CBC verschlüsselt<br />

Mit ECB bleiben aufgrund der Verwendung des gleichen<br />

Schlüssels Muster im Klartext evtl. erhalten.<br />

Mit CBC werden Informationen über den gesamten Chiffretext<br />

verteilt → Ergebnis liefert Pseudorandom-Daten<br />

Vorsicht: Pseudorandom impliziert keine kryptographische<br />

Sicherheit!<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Modus: Cipher Block Chaining (CBC)<br />

Idee: Jeder Chiffretextblock wird aus dem zugehörigen<br />

Klartextblock und dem vorhergehenden Chiffretextblock<br />

berechnet.<br />

Eingabe:<br />

k-Bit Schlüssel K<br />

n-Bit Initialisierungsvektor IV<br />

n-Bit Klartextblöcke M 1 , . . . , M t<br />

Algorithm: Chiffrierung<br />

C 0 := IV;<br />

for i := 1 to t do<br />

C i := E K (M i ⊕ C i−1 ) ;<br />

end<br />

Algorithm: Dechiffrierung<br />

C 0 := IV;<br />

for i := 1 to t do<br />

M i := C i−1 ⊕ D K (C i ) ;<br />

end<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Alternativdarstellung: ECB vs. CBC<br />

Chiffrierung (oben) und Dechiffrierung (unten):<br />

M 0 M 1 M 2 · · ·<br />

M 0 M 1 M 2 · · ·<br />

⊕ ⊕ ⊕<br />

E K E K E K<br />

E K E K E K<br />

IV<br />

• • •<br />

C 0 C 1 C 2 · · ·<br />

C 0 C 1 C 2 · · ·<br />

C 0 C 1 C 2 · · ·<br />

C 0 C 1 C 2 · · ·<br />

IV<br />

• • •<br />

D K D K D K<br />

D K D K D K<br />

⊕ ⊕ ⊕<br />

M 0 M 1 M 2 · · ·<br />

M 0 M 1 M 2 · · ·<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Eigenschaften von CBC<br />

Korrektheit ist leicht nachzuweisen<br />

Jeder Chiffretextblock ist abhängig von allen vorhergehenden<br />

Chiffretextblöcken<br />

Statistische Eigenschaften des Klartextes werden über den<br />

Chiffretext verteilt<br />

Reihenfolge der Chiffretextblöcke ist wichtig<br />

Dechiffrierung ist nur in der richtigen Reihenfolge möglich<br />

Der CBC-Modus ist selbstsynchronisierend:<br />

Ein Bitfehler in einem Chiffretextblock wirkt sich auf die<br />

folgenden beiden entschlüsselten Klartextblöcke aus<br />

Allerdings kann ein Angreifer an vorhersagbaren Stellen Bitfehler<br />

auslösen<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Record-Chaining (für Datensätze)<br />

Aufgabe: Datensätze D 1 , . . . , D m aus jeweils mehreren<br />

Datenblöcken sollen verschlüsselt werden.<br />

Vorgehen: das Feedback-Register behält seinen Wert über<br />

Grenzen von Datensätzen (wird also nicht neu initialisiert)<br />

Vorteile:<br />

Gleiche Felder in verschiedenen Datensätzen bleiben so<br />

verborgen<br />

Einfaches Replay wird ausgeschlossen<br />

Nachteile:<br />

Bei Lese-/ Schreibzugriff auf einen Datensatz benötigt man den<br />

letzten Chiffretextblock des vorhergehenden Datensatzes als IV<br />

Beim Schreiben müssen alle folgenden Datensätze neu<br />

verschlüsselt werden<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Modus: Counter (CTR)<br />

Idee:<br />

n-Bit Zähler wird verschlüsselt und im Klartext XOR-verknüpft<br />

Zähler wird für jeden Block inkrementiert modulo 2n<br />

Eingabe:<br />

k-Bit Schlüssel k<br />

n-Bit Initialisierungsvektor IV<br />

n-BitKlartextblöcke M 1, . . . , M n<br />

Algorithm: Chiffrierung<br />

Z := IV ;<br />

for i := 0 to t do<br />

C i := M i ⊕ E K (Z) ;<br />

Z := Z + 1 mod 2 n ;<br />

end<br />

Algorithm: Dechiffrierung<br />

Z := IV ;<br />

for i := 0 to t do<br />

M i := C i ⊕ E K (Z) ;<br />

Z := Z + 1 mod 2 n ;<br />

end<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Eigenschaften von CTR<br />

Effizienz: Blöcke können parallel bearbeitet werden<br />

→ höherer Durchsatz<br />

Preprocessing: Die Ausgabe der Chiffrierfunktion hängt nicht vom<br />

Klartext ab und kann deshalb schon (für mehrere Zähler) im Voraus<br />

berechnet werden.<br />

Random Access: Die Blöcke werden unabhängig voneinander<br />

verschlüsselt<br />

→ zum Ver-/Entschlüsseln wird nur der passende Zähler benötigt<br />

und kein Zugriff auf andere Blöcke<br />

Sicherheit: CTR ist mindestens so sicher wie die anderen<br />

Betriebsmodi<br />

Einfachheit Es wird nur die Chiffrierfunktion benutzt und nicht die<br />

Dechiffrierfunktion<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Advanced Encryption Standard (AES)<br />

Eine unkonventionelle aber trotzdem überzeugende Darstellung, der<br />

wir auch folgen wollen, findet sich hier: A Stick Figure Guide to the AES .<br />

Ebenfalls empfehlenswert ist die AES Animation von Enrique Zabala.<br />

Geschichte des Verfahrens<br />

Bemerkungen zu den Grundlagen<br />

Grundlegende Begriffe und Bezeichnungen<br />

Ver-/Entschlüsselung<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


AES: Geschichte<br />

National Institute of Standards and Technology (NIST)<br />

− DES ist veralteter Standard<br />

− Triple-DES de facto Standard<br />

− 1997: Ausschreibung eines Wettbewerbs für einen neuen Federal<br />

Information Processing Standard (FIPS)<br />

Ziel: Anforderungen an AES Kandidaten:<br />

− Symmetrische Verfahren mit 128, 192, 256 Bit Schlüssellängen<br />

− Lizenzfrei und frei verfügbar (public domain)<br />

− Weltweit exportierbar<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Verlauf der Auswahl<br />

1998/1999: 15 Vorschläge werden auf 2 Konferenzen vorgestellt<br />

August 1999: NIST wählt 5 Finalisten aus:<br />

− MARS: IBM (USA)<br />

− RC6: Ron Rivest (MIT), Erfinder von RSA und RC4 (USA)<br />

− Rijndael: Joan Daemen (Proton World International) Vincent<br />

Rijmen (Univ. Leuven) (Belgien)<br />

− Serpent: Ross Anderson, Eli Biham, Lars Knudsen (USA)<br />

− Twofish: Counterpane Internet Security, Inc. (USA)<br />

Kryptologen weltweit werden aufgefordert, die Finalisten auf<br />

Angriffsmöglichkeiten zu überprüfen<br />

Oktober 2000: eine weitere Konferenz findet statt. . .<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


. . . and the winner is<br />

Riijndael<br />

November 2001: Ankündigung des AES-Standards<br />

Mai 2002: Einführung des neuen Standards<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Einsatzgebiete von AES<br />

IEEE 802.11i für Wireless LAN<br />

WPA2-Verschlüsselung beim Wi-Fi<br />

SSH, IPSec und VoIP: sowohl offene Protokolle als auch<br />

proprietäre Systeme wie Skype<br />

Mac OS: Standardverschlüsselung für Disk-Images<br />

Windows XP: transparente Verschlüsselung EFS<br />

Verschlüsselung komprimierter Archive: 7-Zip, RAR<br />

Verschlüsselungssoftware: Pretty Good Privacy (PGP), GnuPG<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Mathematischen Grundlagen (überblick)<br />

Zwecks Byte-weiser Verarbeitung beruht AES auf algebraischen<br />

Rechenoperationen im so genannten Galois-Körper GF(2 8 ) :<br />

− Polynome mit Koeffizienten aus Z 2 = {0, 1}<br />

− bilde Restklassen modulo des irreduzibilen Polynoms<br />

m(x) = x 8 + x 4 + x 3 + x + 1<br />

− Repräsentanten sind alle Polynome vom Grad ≤ 7 über<br />

Z 2 = {0, 1} ; diese bilden den endlichen Körper GF(2 8 )<br />

Elemente von GF(2 8 ) lassen sich als Bytes (= 8 Bit) auffassen<br />

x 7 + x 6 + 1 = (1100 0001) = (c1) hex<br />

An einer Stelle des Algorithmus sind 4-Tupel von Bytes mit<br />

einer (4 × 4) -Matrix in GF(2 8 ) zu multiplizieren<br />

Weiterführende Details in der Vorlesung “Kryptologie 1+2”<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Rechenoperationen in GF(2 8 )<br />

Addition:<br />

− Addition von Polynomen mit Koeffizienten in Z 2 = {0, 1}<br />

}<br />

(b 7 x 7 + · · · + b 1 x + b 0 )<br />

= (b<br />

(b 7x ′ 7 + · · · + b 1x ′ + b 0)<br />

′ 7 ⊕b 7)x ′ 7 +· · ·+(b 1 ⊕b 1)x+(b ′ 0 ⊕b 0)<br />

′<br />

− d.h. bitweises XOR, z.B.<br />

(57) ⊕ (83) = (1001 0111) ⊕ (1000 0011) = (0001 0100) = (14)<br />

Multiplikation: (Aufpassen: alle Koeffizienten sind über Z 2 )<br />

− Polynome multiplizieren<br />

− Ergebnis reduziren modulo m(x) = x 8 + x 4 + x 3 + x + 1<br />

− Z.B. (57) × (83) = (c1)<br />

− effizienter mittels Logarithmen bzgl. des Erzeugers x + 1 der<br />

multiplikativen Gruppe von GF(2 8 ) Look-Up Tabellen<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Grundkonzepte AES<br />

Ein- und Ausgabebllöcke haben 128 Bits, d.h., 16 Bytes<br />

Der Algorithmus operiert auf (4 × 4) - Byte-Matrizen (sog.<br />

Zuständen) die spaltenweise befüllt werden:<br />

in 0 in 4 in 8 in 12<br />

in 1 in 5 in 9 in 13<br />

=⇒<br />

in 2 in 6 in 10 in 14<br />

in 3 in 7 in 11 in 15<br />

s 0,0 s 0,1 s 0,2 s 0,3<br />

s 1,0 s 1,1 s 1,2 s 1,3<br />

=⇒<br />

s 2,0 s 2,1 s 2,2 s 2,3<br />

s 3,0 s 3,1 s 3,2 s 3,3<br />

out 0 out 4 out 8 out 12<br />

out 1 out 5 out 9 out 13<br />

out 2 out 6 out 10 out 14<br />

out 3 out 7 out 11 out 15<br />

Schlüssellänge: 128 Bits (192, 256 werden hier nicht behandelt)<br />

− der Schlüssel wird zu einem Key schedule erweitert: ein Array<br />

w[i] der Länge 44 aus 32-Bit Worten (insgesamt 176 Bytes)<br />

− Jeweils 4 Wörter (128 Bits) werden als Rundenschlüssel<br />

benutzt; diese können alternativ (und einfacher) auch direkt<br />

aus den vorangegangenen Rundenschlüsseln gewonnen werden,<br />

wobei eine Rundenkonstante zu berücksichtigen ist<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


AES: Ablauf<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


AES: Bemerkungen<br />

der AES hat keine Feistel-Struktur:<br />

− hier werden keine Halbblöcke benutzt, die einander modifizieren<br />

− der ganze Block wird in jeder Runde permutiert und<br />

substitutiert<br />

4 wesentliche Operationen:<br />

− Sub(stitute) Bytes ist eine S-Box<br />

− Shift Rows: einfache Permutation auf Zeilen der<br />

Zustandsmatrix<br />

− Mix Columns: substituiert jedes Byte einer Spoalte durch eine<br />

Funktion aller Bytes der Spalte<br />

− AddRoundKey: Bitweises XOR des Zustands mit dem<br />

entsprechenden Runden Schlüssel<br />

=⇒ nur hier wird der Schlüssel benutzt<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


AES: Weitere Bemerkungen<br />

Shift Rows, Mix Columns, Sub Bytes sind unabhängig vom<br />

Schlüssel<br />

Sicherheit des Verfahrens beruht auf dem Zusammenspiel der<br />

Operationen mit AddRoundKey<br />

Jede der Operationen ist umkehrbar<br />

Der Dechiffrieralgorithmus benutzt die Rundenschlüssel in<br />

umgekehrter Reihenfolge<br />

Dechiffrierung ist nicht identisch mit der Chiffrierung<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


AES: Ablauf einer Runde<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Details: Substitute Bytes<br />

S-Box, Substitutionswerte für das Byte ( xy )<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


AES: Hintergrund der Substitutions-Box<br />

Ausgehend von einem Byte b = b 7 b 6 b 5 b 4 b 3 b 2 b 1 b 0 erfolgt die<br />

Berechnung von S-Box(b) = b ′′ in zwei Schritten:<br />

1 b ≠ (00) wird das multiplikative Inverse b ′ = b −1 von b in<br />

GF(2 8 ) berechnet, für b = (00) wird b ′ = (00) gesetzt.<br />

2 b ′ wird einer affinen Z 2 -Transformation unterzogen:<br />

⎛<br />

b ′′ ⎞ ⎛<br />

⎞ ⎛<br />

7 1 1 1 1 1 0 0 0 b ′ ⎞ ⎛ ⎞<br />

b 6<br />

′′<br />

7 0<br />

b 5<br />

′′<br />

0 1 1 1 1 1 0 0<br />

b ′ 6<br />

0 0 1 1 1 1 1 0<br />

b ′ 1<br />

b 4<br />

′′<br />

5<br />

1<br />

b 3<br />

′′<br />

=<br />

0 0 0 1 1 1 1 1<br />

b ′ 4<br />

1 0 0 0 1 1 1 1<br />

b ′ ⊕<br />

0<br />

⎜b 2<br />

′′<br />

3<br />

0<br />

⎟ ⎜1 1 0 0 0 1 1 1<br />

⎟ ⎜b 2<br />

′ ⎟ ⎜0<br />

⎟<br />

⎝ ⎠ ⎝1 1 1 0 0 0 1 1⎠<br />

⎝ ⎠ ⎝1⎠<br />

1 1 1 1 0 0 0 1<br />

1<br />

b 1<br />

′′<br />

b 0<br />

′′<br />

Diese Matrix ist invertierbar über Z 2 !<br />

b ′ 1<br />

b ′ 0<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Details: SubBytes - Inverse S-Box<br />

Inverse S-Box, Substitutionswerte für das Byte ( xy )<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Details: ShiftRows<br />

ShiftRows(s) = s ′<br />

s<br />

s ′<br />

s 3,0 s 3,1 s 3,2 s 3,3<br />

s 0,0 s 0,1 s 0,2 s 0,3<br />

s 1,0 s 1,1 s 1,2 s 1,3<br />

s 2,0 s 2,1 s 2,2 s 2,3<br />

s 0,0 s 0,1 s 0,2 s 0,3<br />

s 1,1 s 1,2 s 1,3 s 1,0<br />

s 2,2 s 2,3 s 2,0 s 2,1<br />

s 3,3 s 3,0 s 3,1 s 3,2<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Details: MixColumn<br />

Operiert separat auf jeder Spalte eines Zustands<br />

Anwendung einer invertierbaren Substitutionsfunktion f auf die<br />

Spalten des Zustandes:<br />

f : Byte 4 → Byte 4<br />

s 0,c<br />

s 1,c<br />

s 2,c<br />

s 3,c<br />

f<br />

↦−→<br />

s ′ 0,c<br />

s ′ 1,c<br />

s ′ 2,c<br />

s ′ 3,c<br />

87 F 2 4D 97<br />

6E 4C 90 EC<br />

46 E7 4A C3<br />

A6 8C D8 95<br />

f<br />

↦−→<br />

47 40 A3 4C<br />

37 D4 70 9F<br />

94 E4 3A 42<br />

ED A5 A6 BC<br />

Die Funktion f ist eine Matrix-Multiplikation über GF(2 8 )<br />

Designkriterium: gutes Mischen der Bytes jeder Spalte<br />

Zusammen mit ShiftRows bewirkt dies nach einigen Runden<br />

den Lawineneffekt<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Details: MixColumns als Matrixmultiplikation<br />

f : Byte 4 → Byte 4<br />

s 0,c<br />

s 1,c<br />

s 2,c<br />

s 3,c<br />

f<br />

↦−−→<br />

s ′ 0,c<br />

s ′ 1,c<br />

s ′ 2,c<br />

s ′ 3,c<br />

Über GF(2 8 ) berechne<br />

⎛ ⎞ ⎛ ⎞ ⎛<br />

2 3 1 1 s 0,c s ′ ⎞<br />

0,c<br />

⎜1 2 3 1<br />

⎟<br />

⎝1 1 2 3⎠ ·<br />

⎜s 1,c<br />

⎟<br />

⎝s 2,c<br />

⎠ = ⎜<br />

s ′ 1,c⎟<br />

⎝s ′ ⎠<br />

2,c<br />

3 1 1 2 s 3,c s 3,c<br />

′<br />

Also zum Beispiel: s ′ 1,c = s 0,c ⊕ (02) • s 1,c ⊕ (03) • s 2,c ⊕ s 3,c<br />

f −1 : Byte 4 → Byte 4<br />

s ′ 0,c<br />

s ′ 1,c<br />

s ′ 2,c<br />

s ′ 3,c<br />

f −1<br />

↦−−→<br />

s 0,c<br />

s 1,c<br />

s 2,c<br />

s 3,c<br />

Über GF(2 8 ) berechne<br />

⎛<br />

⎞ ⎛<br />

e b d 9 s ′ ⎞ ⎛ ⎞<br />

0,c s 0,c<br />

⎜9 e b d<br />

⎟<br />

⎝d 9 e b⎠ ·<br />

⎜<br />

s 1,c<br />

′ ⎟<br />

⎝s 2,c<br />

′ ⎠ = ⎜s 1,c<br />

⎟<br />

⎝s 2,c<br />

⎠<br />

b d 9 e s 3,c<br />

′ s 3,c<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Details: AddRoundKey<br />

Bitweises XOR des Zustandes mit dem Rundenschlüssel<br />

s 0,0 ′ s 0,1 ′ s 0,2 ′ s 0,3<br />

′<br />

s 1,0 ′ s 1,1 ′ s 1,2 ′ s 1,3<br />

′<br />

s 2,0 ′ s 2,1 ′ s 2,2 ′ s 2,3<br />

′<br />

s 3,0 ′ s 3,1 ′ s 3,2 ′ s 3,3<br />

′<br />

=<br />

r 0 r 1 r 2 · · · r 15 := w[i . . . (i + 3)]<br />

s 0,0 s 0,1 s 0,2 s 0,3<br />

s 1,0 s 1,1 s 1,2 s 1,3<br />

⊕<br />

s 2,0 s 2,1 s 2,2 s 2,3<br />

s 3,0 s 3,1 s 3,2 s 3,3<br />

{<br />

i = 0<br />

r 0 r 4 r 8 r 12<br />

r 1 r 5 r 9 r 13<br />

r 2 r 6 r 10 r 14<br />

r 3 r 7 r 11 r 15<br />

bei erstem Schritt<br />

i = 4 · j in Runde j = 1, . . . , 10<br />

Gilt für Chiffrierung - bei Dechiffrierung umgekehrt!<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


AES: Angriffsversuche<br />

N. Ferguson, R. Schroeppel und D. Whiting<br />

− geschlossene Formel für AES als Kettenbruch mit 250 Termen<br />

N. Courtois und J. Pieprzyk<br />

− Beschreibung von AES durch Systeme quadratischer<br />

Gleichungen<br />

− Starke Vereinfachungen mit der XSL-Methode (da mehr<br />

Gleichungen als Unbekannte; viele Koeffizienten 0; reguläre Struktur)<br />

− Ein Angriff mit 287 Rechenschritten könnte möglich sein (statt<br />

im Mittel zum Durchprobieren der Schlüssel 2127)<br />

A. Osvik, A. Shamir, E. Tromer: Side-Channel-Angriffe<br />

− Zugriffsmuster auf den Cache über Prozessgrenzen hinweg<br />

beobachten und zur Kryptoanalyse ausnutzen<br />

− Unter Umständen Gewinnung des Schlüssels in wenigen<br />

Sekunden<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Literatur<br />

Dietmar Wätjen: Kryptographie, 2. Aufl., Spektrum<br />

Akademischer Verlag, 2008.<br />

Stallings, William, Brown, Lawrie: Computer Security:<br />

Principles and Practice. Prentice Hall 2008, ISBN-10:<br />

0136004245; ISBN-13: 9780136004240.<br />

Referenzen zu konkreten Artikeln der erwähnten Autoren<br />

befinden sich in Herrn Wätjens Buch<br />

Jeff Moser: A Stick Figure Guide to the Advanced Encryption<br />

Standard (AES)<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Kapitel 5<br />

Public Key Cryptography und das<br />

RSA-Verfahren<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Verteilung geheimer Schlüssel<br />

Problem bei symmetrischen Verfahren<br />

− Wie tauschen die beiden Kommunikationspartner ihre(n)<br />

Schlüssel aus, bevor sie kommunizieren können?<br />

− Über denselben Kanal geht es offensichtlich nicht - extreme<br />

Unsicherheit!<br />

Andere Verfahren<br />

− Telefon<br />

− Brief<br />

− Kurier<br />

− Persönliches Treffen<br />

Wie steht’s mit der Sicherheit und Anwendbarkeit?<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Verteilung geheimer Schlüssel (II)<br />

Traut man zum Schlüsselaustausch einem Kanal nicht, wählt<br />

man eine Kombination aus mehreren<br />

Beispiel<br />

− 64-Bit-Schlüssel in 4 Teile teilen, je einen Teil über einen Kanal<br />

Frage: wie teilt man den Schlüssel?<br />

− Warum ist eine Aufteilung in 4 16-Bit-Blöcke nicht gut?<br />

− Besser:<br />

Schlüssel = Summe von vier 64-Bit-Zahlen, von denen drei<br />

zufällig sind<br />

− Warum ist das besser?<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Schlüsselverteilzentren<br />

Populäre Variante<br />

− Schlüsselverteilzentren (key distribution centers, KDC)<br />

− Generieren on-demand einen Sitzungsschlüssel für die<br />

Kommunikationspartner<br />

Vorteile<br />

− schnell, flexibel<br />

Nachteile<br />

− Mit dem Schlüsselzentrum muss auch zunächst ein vertraulicher<br />

Schlüssel etabliert werden<br />

− Das Schlüsselzentrum muss 100% vertrauenswürdig sein<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Asymmetrische Verfahren<br />

Wegen diverser Nachteile: Suche nach neuen Verfahren zur<br />

Schlüsselverwaltung<br />

Bahnbrechende Neuerung Mitte der Siebziger Jahre<br />

− Idee des Public-Key-Kryptosystems<br />

− Basiert auf zwei unterschiedlichen Schlüsseln, die miteinander<br />

mathematisch zusammenhängen<br />

− Das Verfahren ist asymmetrisch in dem Sinne, dass ein Schlüssel<br />

veröffentlicht werden kann (s.u.)<br />

− alle bisherigen Verfahren waren symmetrisch; der oder die<br />

Schlüssel waren geheimzuhalten<br />

− Entwickelt von Diffie und Hellman 1976<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Die Idee von Diffie und Hellman<br />

Bei asymmetrischen Verschlüsselungsverfahren<br />

besitzt jeder Kommunikationspartner zwei Schlüssel<br />

− einen privaten Schlüssel, der geheim gehalten<br />

werden muss<br />

− einen öffentlichen Schlüssel, der jedem zur<br />

Verfügung steht<br />

Es ist praktisch unmöglich,<br />

− den einen Schlüssel aus dem anderen abzuleiten,<br />

− obwohl die beiden mathematisch voneinander<br />

abhängen<br />

Authentizität und Integrität müssen für den<br />

öffentlichen Schlüssel garantiert sein,<br />

Vertraulichkeit ist nicht erforderlich<br />

Whitfield Diffie<br />

Martin Hellman<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Anwendung asymmetrischer Verfahren<br />

Asymmetrische Schlüsselverfahren können nach diesem Prinzip drei<br />

unterschiedliche Anwendungen haben:<br />

Schlüsselaustausch für symmetrische Verfahren<br />

Verschlüsselung und Entschlüsselung “normaler” Nachrichten<br />

Digitale Signaturen<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Protokoll für digitale Verschlüsselung<br />

Szenario<br />

− Alice will Bob eine verschlüsselte Nachricht M schicken<br />

Vorgehen<br />

1 Zunächst erzeugt Bob ein asymmetrisches Schlüsselpaar<br />

→<br />

→<br />

öffentliche Chiffretransformation E B<br />

private Dechiffriertransformation D B<br />

2 Alice verschlüsselt die Nachricht mit Bobs öffentlichem<br />

Schlüssel: M ↦→ E B (M) = C<br />

3 Wenn Bob diese Nachricht bekommt, entschlüsselt er sie mit<br />

seinem privaten Schlüssel: C ↦→ D B (C) = D B (E B (M)) = M<br />

Voraussetzung<br />

− Hier kommt die Grundannahme kryptopgraphischer Systeme<br />

zum Tragen: D B ◦ E B = id M<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Protokoll für digitale Signatur<br />

Szenario:<br />

− Alice will Bob eine von ihr unterzeichnete Nachricht M senden<br />

Vorgehen:<br />

1 Zunächst erzeugt Alice ein asymmetrisches Schlüsselpaar<br />

→<br />

→<br />

öffentliche Chiffretransformation E A<br />

private Dechiffriertransformation D A<br />

2 Alice versendet M zusammen mit C = D A (M)<br />

3 Bob vergleicht M mit E A (C) = E A (D A (M)) ; bei Übereinstimmung<br />

kann niemand als Alice ihm 〈M, C〉 geschickt haben.<br />

(Wird nur C verschickt, identifiziert Bob nur im Falle eines<br />

“sinnvollen Klartextes” E A (C) Alice als Absenderin.)<br />

4 In einem Streitfall zwischen Alice und Bob kann ein neutraler<br />

Richter überprüfen, ob E A (C) = M gilt.<br />

Voraussetzung<br />

− Hier ist zusätzlich C = M und E A ◦ D A = id C anzunehmen!<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Kombination: Geheimhaltung + Authentizität?<br />

Szenario<br />

− Alice will an Bob eine verschlüsselte und unterschriebene<br />

Nachricht M schicken<br />

Naive Idee:<br />

− Alice und Bob brauchen je ein asymmetrisches Schlüsselpaar mit<br />

Transformationen E A und D A , bzw. E B und D B<br />

Bemerkungen:<br />

− Problematisch beim RSA-Verfahren (siehe später)<br />

− Manche Verfahren haben unterschiedliche Algorithmen für<br />

Verschlüsselung und Signatur (z.B. ElGamal)<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Probleme des einfachen Signaturprotokolls<br />

Datenauthentizität ist gewährleistet, aber nicht die<br />

Authentizität des Senders Alice:<br />

− Gehören E A und D A tatsächlich zu Alice?<br />

− Schlüssel müssen zertifiziert werden!<br />

Rechenaufwand ist bei direkter Durchführung des<br />

Signaturprotokolls bei den meisten Verfahren zu hoch<br />

− Man verwendet “Hashfunktionen”, um nur sogenannte<br />

Fingerabdrücke der Klartexte zu signieren<br />

Einige Anwendungen sind komplizierter:<br />

− Bei einer Vertragsunterzeichnung müssen zwei (oder mehr)<br />

Teilnehmer ihre digitale Unterschrift quasi “gleichzeitig” leisten.<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Anforderungen an einen Algorithmus<br />

Bisher fehlt die entscheidende Komponente:<br />

Ein Kryptoalgorithmus, der dieses Verfahren realisiert!<br />

Diffie und Hellman hatten selbe keinen Vorschlag, aber sie<br />

konnten sagen, welche Bedingungen er erfüllen müsste:<br />

1 Es ist für jeden Teilnehmer X leicht (“computationally easy”)<br />

− Transformationen E X und D X zu finden,<br />

− d.h. ein Paar aus öffentlichem und privatem Schlüssel zu<br />

erzeugen<br />

2 Es ist für die Senderin Alice leicht, mit Hilfe des öffentlichen<br />

Schlüssels von Bob und der Nachricht M den Geheimtext<br />

C = E B (M) zu erzeugen<br />

3 Für den Empfänger Bob ist es ebenfalls leicht, die erhaltene<br />

Nachricht zu entschlüsseln: M = D B (C) = D B (E B (M))<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Anforderungen (II)<br />

4 Es ist schwer (“computationally infeasible”) aus dem<br />

öffentlichen Schlüssel den privaten Schlüssel abzuleiten: d.h.,<br />

aus E B kann man D B nicht bestimmen<br />

5 Es ist schwer, aus dem öffentlichen Schlüssel und dem<br />

Geheimtext C die Originalnachricht M abzuleiten<br />

6 Die Ver- und Entschlüsselungsalgorithmen können in beliebiger<br />

Reihenfolge angewendet werden (insbesondere muß C = M<br />

gelten):<br />

M = E B (D B (M)) = D B (E B (M))<br />

Diese Anforderungen erfüllen heute nur zwei bekannte<br />

Algorithmen:<br />

− RSA und Elliptic Curve<br />

Manche Verfahren verzichten auf 6, verwendendafür<br />

verschiedenen Algorithmen für Chiffrierung und Signierung:<br />

− z.B. ElGamal- und Rabin-Verfahren<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


One-Way Functions<br />

Diese Anforderungen an einen Algorithmus lassen sich durch<br />

die Verwendung von Trap-door One-Way-Funktionen erfüllen<br />

Eine One-Way Function (Einwegfunktion) ist eine Funktion, die<br />

jedes Element aus dem Definitionsbereich auf ein Element des<br />

Bildbereiches abbildet, dass<br />

− der Funktionswert ein eindeutiges Inverses besitzt<br />

−<br />

Y = f(X ) leicht zu berechnen ist und<br />

−<br />

X = f −1 (Y ) nicht effizient berechenbar<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Trap-Door One-Way Functions<br />

Trap-Door Function (Falltürfunktion): Eigenschaften wie bei<br />

Einwegfunktion, aber Urbilder sind leicht zu berechnen, wenn<br />

weitere Infos bekannt sind:<br />

Unter einer (parametrisierten) Trap-Door One-Way Funktion<br />

versteht man eine Familie invertierbarer Funktionen f k , für die<br />

gilt:<br />

− Y = f k (X ) ist bei bekanntem k und X leicht zu berechnen<br />

− X = f −1<br />

k<br />

(Y ) ist bei bekanntem k und Y leicht zu berechnen<br />

− X = f −1<br />

k<br />

(Y ) ist bei bekanntem Y und unbekanntem k nicht<br />

effizient berechenbar<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


RSA<br />

1977 wurde der erste Algorithmus, der die oben postulierten<br />

Eigenschaften erfüllte, entwickelt und veröffentlicht von<br />

Leonard Adleman Ron Rivest Adi Shamir<br />

Der Algorithmus wurde bereits 1973 von Clifford<br />

Cocks am britischen General Communications<br />

Headquarter (GCHQ) erfunden:<br />

GCHQ wusste nichts damit anzufangen und<br />

hielt die Entdeckung bis 1997 (!) geheim<br />

Clifford Cocks<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Eigenschaften von RSA<br />

Blockchiffrieralgorithmus<br />

− Klar- und Geheimtextblöcke werden als große ganze Zahlen<br />

aufgefasst, ebenso der Schlüssel<br />

Die Schlüssellänge ist variabel<br />

− Typisch heute: 1024, 2048, 4096 Bit<br />

RSA basiert auf den Eigenschaften von Primzahlen und<br />

modularer Arithmetik<br />

− Es wird ausgentzt, dass es berechnungsmäßig schwer ist, das<br />

Produkt zweier großer Primzahlen zu faktorisieren.<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Schlüsselerzeugung für RSA<br />

Zusammenfassung:<br />

− Alice erzeugt sich einen öffentlichen und einen zugehörigen<br />

privaten Schlüssel<br />

Vorgehen:<br />

1 Alice erzeugt zwei große Primzahlen p und q von ungefähr<br />

gleicher Länge ( → wird später noch behandelt)<br />

2 Alice berechnet n = pq und den Wert der Euler’schen Funktion<br />

ϕ(n) = (p − 1)(q − 1) .<br />

3 Alice wählt eine Zahl e ∈ Z ∗ ϕ(n)<br />

, d.h., e < ϕ(n) und<br />

ggT(e, ϕ(n)) = 1 .<br />

4 Mit Hilfe des erweiteren euklidischen Algorithmus berechnet<br />

Alice d = e −1 mod ϕ(n) .<br />

5 Der öffentliche Schlüssel von Alice ist (n, e) , der private ist d .<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


RSA-Verschlüsselung<br />

Zusammenfassung:<br />

− Bob chiffriert eine Nachricht M für Alice, die diese dechiffriert<br />

Vorgehen:<br />

− Zur Chiffrierung führt Bob die folgenden Schritte aus:<br />

1 Bob besorgt sich den authentischen öffentlichen Schlüssel<br />

(n, e) von Alice.<br />

2 Bob stellt M als Zahl in Z n dar.<br />

3 Bob berechnet C = M e mod n mit Hilfe der schnellen<br />

Exponentiation.<br />

4 Bob übermittelt E A (M) = C an Alice.<br />

− Zur Dechiffrierung führt Alice den folgenden Schritt aus:<br />

1 Mit ihrem privaten Schlüssel d berechnet sie<br />

M = D A (C) = C d mod n .<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


RSA-Signaturverfahren<br />

Zusammenfassung:<br />

− Alice signiert die Nachricht M für Bob, der die Signatur verifiziert<br />

Vorgehen:<br />

− Zur Signierung führt Alice die folgenden Schritte aus:<br />

1 Alice stellt M als Zahl in Z n dar.<br />

2 Alice berechnet C = M d mod n mit Hilfe der schnellen<br />

Exponentiation.<br />

3 Alice sendet ( M und) die Signatur D A (M) = C an Bob.<br />

− Zur Verifikation und zum Erhalt der Nachricht führt Bob die<br />

folgenden Schritte aus:<br />

1 Bob besorgt sich den authentischen öffentlichen Schlüssel<br />

(n, e) von Alice.<br />

2 Bob berechnet E A (C) = C d mod n . Wenn C e mod n kein<br />

vernünftiger Klartext ist, wird die Signatur abgelehnt, anderenfalls<br />

wird sie akzeptiert und C e mod n als M anerkannt. (Bob<br />

vergleicht M mit E A (C) = C d mod n und akzeptiert bei<br />

Übereinstimmung Alice als Senderin)<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Diagrammische Darstellung<br />

RSA Verschlüsselung, Bob an Alice<br />

M = C d mod n A<br />

A<br />

A<br />

C = M e mod n A<br />

B<br />

B<br />

M ∈ Z nA<br />

RSA Authentifizierung/Signierung, Alice an Bob<br />

M ∈ Z nA<br />

A<br />

A<br />

C = M d mod n A<br />

〈M, C = M d mod n A 〉<br />

B<br />

B<br />

M ? = C e mod n A<br />

bzw. sinnvoll?<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Warum funktionert das RSA-Verfahren?<br />

Satz (Korrektheit von RSA)<br />

Für ungleiche Primzahlen p und q setze n = p · q . Erfüllen<br />

e, d ∈ Z ϕ(n) die Bedingung ed mod ϕ(n) = 1 , so gilt für jede<br />

Nachricht M ∈ Z n<br />

(M e mod n) d mod n = M<br />

Bemerkung: Testet Bob die Nachricht M auf<br />

ggT(M, n) ? ∈ {p, q}<br />

kann er mit geringer Wahrscheinlichkeit Alices Modulus n<br />

faktorisieren, dann ϕ(n) berechnen und duch Invertierung von e<br />

ihren geheimen Schlüssel d bestimmen.<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Kleines Zahlenbeispiel mit RSA<br />

Modulus: p = 47 q = 67 n = pq = 47 · 67 = 3149<br />

ϕ(n) = (p − 1)(q − 1) = 46 · 66 = 3036<br />

Schlüssel: e = 563 mit ggT(e, ϕ(n)) = 1<br />

d = 563 −1 mod 3036 = 2459<br />

Verschlüsselung:<br />

− Klartext: M = VORLESUNGEN<br />

− Codierung: A = 00, B = 01, . . . , Z = 25, = 26<br />

V O R L E S U N G E N<br />

21 14 17 11 04 18 20 13 06 04 13 26<br />

2114 563 mod 3149 = 1503 1711 563 mod 3149 = 358 etc.<br />

− Chiffretext: C = 1503 0358 0457 0527 1609 1479<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Geheimhaltung + Authentizität bei RSA<br />

Alice sendet eine signierte und chiffrierte Nachricht an Bob:<br />

C = E B (D A (M))<br />

Problem: verschiedene Moduli n A > n B<br />

Dechiffrierfehlern führen:<br />

n<br />

Fehlerwahrscheinlichkeit: A −n B<br />

n A<br />

Warum ist Folgendes keine Lösung?<br />

können zu<br />

C = D A (E B (M))<br />

Lösung:<br />

− Jeder Teilnehmer X hat zwei Paare (E X 0 , D X 0 ) und<br />

(E X 1 , D X 1 ) zum Signieren bzw. Verschlüsseln, wobei der<br />

Signaturmodulus n A0 kleiner ist als der Chiffriermoduli n B1 ,<br />

für alle Teilnehmer A und B .<br />

− Z.B. könnten die Signaturmoduli höchstens t Bits und die<br />

Chiffriermoduli mindestens t + 1 Bits haben<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Zeitbedarf von RSA<br />

Im Vergleich zu symmetrischen Verfahren (DES, IDEA, AES)<br />

ist RSA aufgrund der Arithemetik bei großen Zahlen langsamer<br />

Schnelle Übertragung von großen Datenmengen ist nicht<br />

möglich:<br />

− Datendurchsat RSA: einige Mbps<br />

− Datendurchsatz DES: einige Gbps (Hardware)<br />

Lösung: Hybride Verfahren<br />

− RSA (bzw. asymmetrisches Verfahren) wird nur zur<br />

Übertragung eines AES-Sitzungsschlüssels verwendet<br />

− RSA-Signaturen werden nur auf kurze Fingerabdrücken der<br />

Nachrichten angewendet (damit muß die Original-Nachricht mit<br />

übertragen werden, da sie aus der Signatur nicht mehr<br />

rekonstruierbar ist!)<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Faktorisierung und Sicherheit von RSA<br />

Die Sicherheit von RSA beruht auf der Schwierigkeit des<br />

Faktorisierungsproblems:<br />

− Eingabe: natürliche Zahlen<br />

− Aufgabe: finde einen Primfaktor von n<br />

Gemäß der Schlüsselerzeugung ist bei bekannter Faktorisierung<br />

n = p · q und gewähltem e ∈ Z ϕ(n) das Inverse d = e −1 mod n<br />

leicht zu bestimmen. Es gilt sogar<br />

Satz<br />

Die Bestimmung des privaten Schlüssel d aus dem öffentlichen<br />

Schlüssel 〈n, e〉 ist berechnungsmäßig äquivalent zur Faktorisierung<br />

von n .<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Bemerkung zur Wahl des RSA-Modulus n<br />

− Die Differenz p − q sollte nicht zu klein sein<br />

− Sonst teste Teilbarkeit von n durch ungerade Zahlen in der<br />

Nähe von √ n<br />

− Günstig ist es p und q als starke Primzahlen mit einer kleinen<br />

Differenz in der Bitlänge zu wählen<br />

→ dann haben p und p − q dieselbe Größenordnung<br />

Definition<br />

Eine Primzahl p heißt stark, wenn<br />

p − 1 hat einen großen Primfaktor r ;<br />

p + 1 hat einen großen Primfaktor;<br />

r − 1 hat einen großen Primfaktor.<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Fortschritte bei Faktorisierung<br />

1977: Ronald Rivest veröffentliche einen kurzen mit 428-Bit Schlüssel<br />

chiffrierten Text als Rätsel für ein paar Dollar Preisgeld. Rivests<br />

Vermutung: 40 × 1024 Jahre zum Brechen nötig<br />

1994: 1600 Rechner faktorisieren die Zahl in 8 Monaten und<br />

ermitteln so den Klartext. 512 Bits dauern noch 100 mal so lange<br />

1999: 300 Rechner faktorisieren eine 512-Bit Zahl in 7,4 Monaten<br />

2005: 80 Rechner faktorisieren eine 640-Bit Zahl in 5 Monaten<br />

2007: Die Mersenne-Zahl 2 1039 − 1 wird faktorisiert (1039 Bits)<br />

2009: 80 Rechner faktorisieren eine 768-Bit Zahl in ca. 7 Monaten<br />

2012: Die Mersenne-Zahl 2 1061 − 1 wird faktorisiert (1061 Bits) von<br />

Anfang 2011 bis 4.8.2012<br />

Schlüssellängen von ≥ 2048 gelten heute (noch) als sicher<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Erzeugung großer Primzahlen<br />

Ergebnis aus der Zahlentheorie:<br />

1<br />

− Dichte der Primzahlen um die Zahl n :<br />

ln n<br />

− Also: unter ln(n) zufälligen Zahlen ist ca. eine Primzahl<br />

Heuristisches Vorgehen:<br />

− Erzeuge zufällig eine ungerade k-stellige Binärzahl<br />

m = b 1 b 2 · · · b k mit b 1 , b k = 1<br />

− Teste für i = 0, 1, 2, . . . ob m + 2i eine Primzahl ist<br />

− Wenn innerhalb von 2k Versuchen keine Primzahl gefunden ist,<br />

wähle ein neues m<br />

Denn: die Dichte der Primzahlen um n = 2k erfüllt:<br />

1<br />

ln n > 1<br />

log 2 n = 1 k<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Primzahltests - Sieb des Erathosthenes<br />

Zusammenfassung:<br />

− Findet alle Primzahlen von 2 bis n<br />

Vorgehen:<br />

− Streiche alle Vielfache von 2, 3, 5, 7, 11, . . . aus der Liste 2 . . . n<br />

var prim: boolean[ 2 . . . n ] = [ true, . . . , true ];<br />

i := 2;<br />

while i ≤ √ n do<br />

j := i · i ;<br />

while j ≤ n do<br />

prim [j] = false;<br />

j := j+i;<br />

end<br />

i := nächster Index j mit prim [j] = true;<br />

end<br />

Problem: Laufzeit und Speicherbedarf linear in n , d.h.<br />

exponentiell in der Bitlänge<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


1. Primzahltest für n mit dem Satz von Fermat<br />

Definition<br />

− wähle zufällig 1 < a < n<br />

− teste ob a n−1 mod n ≠ 1<br />

− falls “ja”: n ist keine Primzahl; falls “nein”: ?<br />

Eine Carmichael-Zahl ist eine zusammengesetzte Zahl n mit der<br />

Eigenschaft, dass für alle Zahlen 0 < a < n gilt: a n−1 mod n = 1 .<br />

Satz<br />

Ist n zusammengesetzt und keine Carmichael-Zahl, gilt gilt für eine<br />

Mehrheit der Zahlen 0 < a < n : a n−1 mod n ≠ 1 .<br />

561 = 3 ∗ 11 ∗ 17 ist die kleinste Carmichael-Zahl<br />

Es gibt nur 255 Carmichael-Zahlen im Bereich 2 . . . 10 8<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Verbesserung von Rabin-Miller (1976)<br />

Definition<br />

− schreibe n − 1 als 2 s · d mit d ungerade<br />

− für zufälliges 1 < a < n betrachte die Folge<br />

(a d mod n), (a 2d mod n), (a 4d mod n), . . . , (x al d mod n)<br />

Eine Zahl n mit n − 1 = 2 l · m heißt starke Pseudoprimzahl zur<br />

Basis 0 < a < n , wenn ggT(x, n) = 1 gilt und entweder<br />

x m mod n = 1 , oder x 2r d mod n = n − 1 für ein 0 ≤ r < m .<br />

Satz (5.3, ohne Beweis)<br />

Es sei n eine zusammengesetzte Zahl und 1 < a < n sei zufällig<br />

gewählt. Dann ist die Wahrscheinlichkeit, dass n eine starke<br />

Pseudoprimzahl zur Basis a ist, ≤ 1 4 .<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


(Pseudo-)Primzahltest von Rabin und Miller<br />

Data: n > 1 ungerade, wobei n − 1 = 2 l · m ( m ungerade)<br />

Result: “ n zusammengesetzt” oder “ n Primzahl” (unsicher)<br />

Wähle zufällig ein x mit 1 ¡ x ¡ n;<br />

x 0 := x m mod n ;<br />

if x 0 = 1 or x 0 = n − 1 then<br />

return “ n ist eine Primzahl”;<br />

end<br />

for i := 1 to l − 1 do<br />

x i := xi−1 2 mod n ;<br />

if x i = n − 1 then<br />

return “ n ist eine Primzahl”;<br />

else<br />

if x i = 1 then<br />

return “ n ist zusammengesetzt”;<br />

end<br />

end<br />

end<br />

return “ n ist zusammengesetzt”;<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Analyse<br />

Satz (5.4)<br />

Der obige Algorithmus benötigt höchstens 4 log 2 n<br />

Berechnungsschritte. Wenn n eine Primzahl ist, dann ist die<br />

Aussage des Algorithmus immer richtig. Ist dagegen n<br />

zusammengesetzt, so ist die Wahrscheinlichkeit einer falschen<br />

Antwort ≤ 1 4 .<br />

Bemerkung.<br />

− Nach k Durchläufen des Tests ist die Wahrscheinlichkeit einer<br />

k-maligen falschen Antwort ≤ 4 −k<br />

− Nach 100 Durchläufen ist es wahrscheinlicher, dass 10 mal<br />

hintereinander im Lotto dieselben Zahlen kommen, als dass die<br />

Antwort des Algorithmus falsch ist.<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Exakte Primzahltests<br />

Das Primzahlproblem:<br />

− Eingabe: natürliche Zahl n<br />

− Aufgabe: entscheiden, ob n eine Primzahl ist<br />

Vaughan Pratt (1970er): das Problem liegt in NP.<br />

Erster subexponentieller Algorithmus:<br />

− 1983 von L.M. Adleman, C. Pomerance und R.S. Rumely<br />

O(log log log n)<br />

− Zeitkomplexität: (log n)<br />

Polynomialzeitalgorithmus:<br />

− 2002 von M. Agrawal, N. Kayal, N. Saxena O(log 12 n)<br />

− 2005 von H.W. Lenstra, C. Pomerance O(log 6+ɛ n)<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Literatur<br />

Dietmar Wätjen: Kryptographie, 2. Aufl, Spektrum<br />

Akademischer Verlag, 2008<br />

J. Buchmann, Einführung in die Kryptographie, 2. Aufl.<br />

Springer, 2001<br />

Referenzen zu konkreten Artikeln der erwähnten Autoren<br />

befinden sich in Herrn Wätjens Buch<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Kapitel 6<br />

Authentifizierung<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Überblick<br />

Motivation<br />

Authentifizierungsverfahren für Nachrichten<br />

− Verschlüsselung<br />

− Hash-Funktionen- und Algorithmen (MD5, SHA-1)<br />

− Message Authentication Codes (MAC)<br />

Digitale Signaturen<br />

− DSS und DSA<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Motivation (1)<br />

Welche Sicherheitsprobleme kennen Sie, die sich durch nicht<br />

authentifizierte Nachrichten ergeben?<br />

Mögliche Sicherheitsprobleme:<br />

− Tarnung: Nachrichten werden von fremden Quellen eingeschleust<br />

− Änderung des inhalts einer Nachricht<br />

− Änderung der Nachrichtenreihenfolge<br />

− Änderung des zeitlichen Verhaltens von Nachrichten<br />

(Verzögerung, Replay)<br />

− Leungnen des Sendens bzw. Empfangs einer Nachricht<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Motivation (2)<br />

Unter Authentifizierung (auch Authentisierung) versteht man<br />

− eine Prozedur, durch deren Hilfe ein Empfänger sicher ist, dass<br />

eine Nachicht tatsaechlich von der angegebenen Quelle stammt<br />

Unter Integrität versteht man<br />

− eine Prozedur, durch deren Hilfe ein Empfänger sicher ist, dass<br />

eine Nachricht nicht modifiziert wurde<br />

Unter einer “Digitalen Signatur” versteht man<br />

− eine Authentifizierungstechnik, die Authentifizierung und<br />

Integrität bietet und zusätzlich das Leugnen des Absendens<br />

einer Nachricht (gegenüber Dritten) verhindert<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Techniken<br />

Zur Authentisierung werden heute meist die folgenden dei Techniken<br />

(in Kombination) eingesetzt<br />

Nachrichtenverschlüsselung:<br />

− der Chiffretext selbst dienst als Authentisierungsmerkmal; dabei<br />

ist für symmetrische und asymmetrische Verfahren<br />

unterschiedlich vorzugehen<br />

Hash-Funktionen:<br />

− bilden Nachrichten beliebiger Länge auf einen sog. Hash-Wert<br />

fester Länge ab, der dann zur Sicherung der Integrität dient<br />

Message Authentication Code (MAC):<br />

− durch Schlüssel parametrisierte Hash-Funktionen<br />

(Authentifizierung und Integrität)<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Symmetrische Nachrichtenverschlüsselung<br />

Hauptzweck von Verschlüsselung: Vertraulichkeit, aber:<br />

− Empfänger Bob kann sicher sein, dass Nachricht von der<br />

Senderin Alice kommt, da nur Alice und Bob den Schlüssels<br />

kennen.<br />

− Die Nachricht kann nicht geändert worden sein, da man dazu<br />

den Schlüssel benötigt<br />

Allerdings klappt das nur, wenn der Klartext “lesbar” ist<br />

− Ist es eine beliebige Bit- oder Zahlen-Folge, dann ist die<br />

(automatische) Prüfung schwierig, denn der entschlüsselte Text<br />

ergibt keinen offensichtlichen Sinn<br />

Mögliche Lösung:<br />

− Anhängen einer Frame Check Sequence (FCS) an die Nachricht,<br />

die mit verschlüsselt wird; diese kann dann beim Empfänger<br />

geprüft werden<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Überblick symmetrische Verfahren<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Asymmetrische Nachrichtenverschlüsselung<br />

“Umgekehrte” Anwendung der Schlüssel (wie in Kapitel 5)<br />

− Sender signiert mit seinem privaten Schlüssel<br />

− Empfänger prüft mit dem öffentlichen Schlüssel des Senders<br />

Ähnliches Problem wie oben bei nicht unmittelbar lesbaren<br />

Nachrichten<br />

Das Verfahren bietet prinziliell sogar digitale Signaturen<br />

− Nur der Sender besitzt den geheimen, privaten Schlüssel<br />

− Empfänger und Dritte können die Signatur prüfen<br />

− Wegen der besprochenen Probleme dieser einfachen Signaturen<br />

werden digitale Signaturen aber anders konstruiert (später)<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Hash-Funktionen<br />

Eine Hash-Funktion erzeugt einen<br />

− “Fingerabdruck” der Nachricht<br />

− Jedes Bit der Nachricht soll in diesen Fingerabdruck eingehen,<br />

dies ermöglicht die Prüfung der Integrität:<br />

− Änderung der Nachricht führt zu Änderung des Hash-Werts<br />

Verfahren, um damit zu authentifizieren:<br />

− gemeinsame Verschlüsselung von Nachricht und Hash-Code,<br />

oder nur Verschlüsselung des Hash-Codes<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Gängige Anwendungsvarianten (1)<br />

a<br />

b<br />

c<br />

Nachricht + Hashwert symmetrisch verschlüsselt<br />

− Authentifizierung, Integrität und Vertraulichkeit<br />

nur Hashwert symmetrisch verschlüsselt<br />

− reduzierte Prozessorlast, Authentisierung + Integrität aber keine<br />

Vertraulichkeit<br />

nur Hashwert asymmetrisch verschlüsselt<br />

− Nicht nur Authentisierung und Integrität, sondern auch digitale<br />

Unterschrift (tatsächlich funktionieren digitale<br />

Signaturverfahren so)<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


graphische Darstellung (1)<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Gängige Anwendungen (2)<br />

d<br />

e<br />

f<br />

Nachricht symmetrisch und Hashwert asymmetrisch<br />

verschlüsselt<br />

=⇒ allg. gebräuchliches Verfahren<br />

Keine Verschlüsselung, aber die beiden Partner besitzen<br />

gemeinsames Geheimnis S , das via Konkatenation in die<br />

Berechnung des Hashwerts eingeht<br />

Ansatz (e) plus Verschlüsselung von Hash Code und Nachricht<br />

=⇒ zusätzlich Vertraulichkeit<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


graphische Darstellung (2)<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Auswahl des Verfahrens<br />

Wenn Vertraulichkeit nicht erforderlich ist, haben (b) und (c)<br />

Vorteile, da weniger Berechnungen nötig sind<br />

Die Variante (e) ist im Vorteil, wenn Verschlüsselung komplett<br />

vermieden werden soll, denn<br />

− Verschlüsselung ist langsam<br />

− Verschlüsselung ist teuer<br />

− Verschlüsselung kann verboten sein<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Anforderungen an Hash-Funktionen (1)<br />

Die Hash-Funktion h möge Hashwerte h(M) produzieren<br />

Für h müssen die folgenden Bedingungen gelten:<br />

− h kann auf Datenblöcke beliebiger Bitlänge angewandt werden,<br />

− h erzeugt Ausgaben fester Bitlänge,<br />

− h(M) ist leicht zu berechnen für jedes M .<br />

Formal also Σ ∗ h<br />

Σ k für ein Alphabet Σ<br />

Dies ist wichtig für die praktische Anwendbarkeit<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Anforderungen an Hash-Funktionen (2)<br />

4 Für jedes x ist es sehr schwierig, ein M mit h(M) = x zu<br />

finden (vergl. one-way- oder preimage resistant Funktionen)<br />

− insbes. für Verfahren (e) wichtig, da so das Geheimnis S nicht<br />

berechnet werden kann.<br />

5 Für jedes M ist es sehr schwierig, ein M ′ ≠ M mit<br />

h(M) = h(M ′ ) zu finden (weak collision resistance)<br />

− wichtig, um Betrug in den Fällen (b) und (c) zu vermeiden, da<br />

ansonsten alternative Nachrichten für den gegebenen Hashwert<br />

generiert werden könnten<br />

6 Es ist schwierig ein beliebiges Paar (M, M ′ ) mit<br />

h(M) = h(M ′ ) zu finden (strong collision resistance)<br />

− wichtig, um eine bestimmte Klasse von Angriffen zu vermeiden<br />

(sog. Geburtstagsangriff → Übung!)<br />

Diese Bedingungen sind auch für Kompressionsfunktionen sinnvoll.<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Bekannte Hash-Verfahren<br />

Message Digest: MD-4, MD-5;<br />

Secure Hash Algorithm: SHA-1, SHA-2 (Sammelbezeichnung<br />

für SHA-256, SHA-384, SHA-512), SHA-3 (Keccack)<br />

RIPEMD-160<br />

Bemerkungen:<br />

− Diese werden in der Praxis oft eingesetzt, jedoch sind hier die<br />

one-way, weak collision resistance und strong collision resistance<br />

nicht mathematisch bewiesen<br />

− Eine beweisbar stark kollisionsfreie Kompressions-Funktion<br />

wurde von Chaum, van Heijst, Pfitzmann 1991 vorgestellt<br />

=⇒ Vorlesung Kryptologie 1<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


MD5<br />

Entwickelt von Ronald Rivest und in RFC 1321 spezifiziert<br />

Nachfolger von MD2, MD4<br />

Produziert einen 128-bit Hash-Wert<br />

Grundlegende Struktur einer iterierten Kompressionsfunktion<br />

(Merkle-Damgård-Konstruktion)<br />

Lange Zeit der am häufigsten benutzte Algorithmus<br />

Es gibt einige bekannte Angriffe<br />

− 2004: erfolgreich gebrochen mittels Geburtstagsangriff<br />

− 2005: X.509 Zertifikate mit unterschedlichen öffentlichen<br />

Schlüsseln aber gleichem MD5 Hash<br />

− 2006: effizienter Algoritmus zur Kollisionsfindung<br />

( < 1 Minute)<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Secure Hash Algorithm (SHA)<br />

SHA wurde 1993 von NIST und NSA entwickelt und 1995 noch<br />

einmal revidiert zu SHA-1 mit Bitlänge 160 (RFC 3174)<br />

− Basiert stark auf MD4 (RFC 1320), mit dem wesentlichen<br />

Unterschied der größeren Länge des Hash-Wertes<br />

Auch hier Zweifel an der Sicherheit:<br />

− 2005: Angriff, der eine Kollision in 2 69 Schritten findet<br />

Empfehlung der Bundesnetzagentur:<br />

− Nutzung von SHA-1 bis Ende 2009<br />

− Danach bis Ende 2011 Úbergang zu SHA-2 (FIPS 180-2) (4<br />

Hashfunktionen mit Bitlängen von 224, 256, 384, 512)<br />

NIST Hash-Funktions-Wettbewerb für SHA-3<br />

− Gewinner ist Keccak (seit 2. Oktober 2012)<br />

− wird SHA-2 vorerst nicht ablösen - aber alternativer Algorithmus<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


SHA-512 Überblick<br />

Verarbeitet 1024-Bit Blöcke (hintereinander)<br />

− Auffüllen der Nachricht, so dass ihre Länge einem Vielfachen<br />

von 1024 Bit entspricht M||1||0 d ||L , wobei<br />

d =(896 − (|M| + 1)) mod 1024)<br />

L =|M| mod 2 128<br />

Länge von M als 128 Bit Zahl<br />

Initialisiere acht 64-Bit Variablen (1024-bit) (a,b,c,d,e,f,g,h)<br />

a = 0x6a09e667f3bcc908 e = 0x510e527fade682d1<br />

b = 0xbb67ae8584caa73b f = 0x9b05688c2b3e6c1f<br />

c = 0x3c6ef372fe94f82b g = 0x1f83d9abfb41bd6b<br />

d = 0xa54ff53a5f1d36f1 h = 0x5be0cd19137e2179<br />

Dies sind jeweils die erste 64 Bits der Nachkommastellen der<br />

Wurzeln der ersten 8 Primzahlen 2, 3, 5, 7, 11, 13, 17, 19<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


SHA-512 Kompressionsschleife<br />

Bildquelle: Stallings & Brown: Computer Security,<br />

Principles and Practice, Pearson Education 2008.<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


SHA-512 Kompressionsfunktion F<br />

Bildquelle: Stallings & Brown: Computer Security,<br />

Principles and Practice, Pearson Education 2008.<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


SHA-512 Runde t<br />

Ch(x, y, z) = xy ⊕ xz<br />

Ma(x, y, z) = xy ⊕ xz ⊕ yz<br />

Σ 0(x) = (x ↩→ 28) ⊕ (x ↩→ 34) ⊕ (x ↩→ 39)<br />

Σ 1(x) = (x ↩→ 14) ⊕ (x ↩→ 18) ⊕ (x ↩→ 41)<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


SHA-512: Message Schedule und Konstanten<br />

Die Konstanten K 0 , . . . , K 79 sind:<br />

− K 0 = 0x428a2f 98d728ae22 . . .<br />

− K i = erste 64-Bit der Nachkommastellen der Kubikwurzel der<br />

i -ten Primzahl<br />

Message Schedule:<br />

− Am Anfang: Register mit 1024-Bit Block von M laden:<br />

W 0 , . . . , W 15 sind 64 Bit Blöcke<br />

σ 0 (x) = (x ↩→ 1) ⊕ (x ↩→ 8) ⊕ (x ≫ 7)<br />

σ 1 (x) = (x ↩→ 19) ⊕ (x ↩→ 61) ⊕ (x ≫ 6)<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Bemerkungen<br />

MD4, MD5, SHA-1 und SHA-2 (aber nicht SHA-3/Keccak)<br />

folgen der Merkle-Damgård Konstruktion von 1989:<br />

− aus einer Kompressionsfunktion Z k K<br />

2 Z<br />

n<br />

2 mit k > n<br />

gewinnt man eine Hashfunktion Z ∗ H<br />

2 Z<br />

n<br />

2<br />

− schwache/starke Kollisionsfreiheit vererbt sich von K auf H<br />

ABER auch:<br />

− Kollisionen der Kompressionsfunktion liefern Kollisionen der<br />

Hashfunktion<br />

Anwendungsbereich von SHA-2:<br />

− Implementiert in einigen häufig benutzten Anwendungen und<br />

Protokollen: TLS, SSL, PGP, SSH, S/Mime, Bitcoin und IPSec<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Message Authentication Codes (MACs)<br />

Ziel:<br />

− Während Hash-Funktionen allein nur die Integrität sichern, aber<br />

nicht die Authentizität<br />

− sollen MACs beides liefern (sie ersetzen aber noch nicht die<br />

Digitale Signatur)<br />

Idee:<br />

− Alice erzeugt aus der Nachricht und einem beiden Partnern<br />

bekannten geheimen Schlüssel eine kryptographische<br />

Prüfsumme (MAC),<br />

− die zusammen mit der Nachricht M an Bob verschickt wird<br />

− Bob führt mit der empfangenen Nachricht und dem Schlüssel<br />

denselben Algorithmus aus und vergleiche die berechnete<br />

Prüfsumme mit der Übertragenen<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


MAC-Verfahren<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Anforderungen an MAC-Funktionen<br />

Ein MAC ist eine Familie von Hash-Funktionen {h K |K ∈ K}<br />

wobei K eine Schlüsselfamilie ist.<br />

Unter der Annahme, dass<br />

− der Angreifer die Beschreibung der MAC-Funktion kennt, aber<br />

nicht den Schlüssel<br />

muss C dann folgende Eigenschaften haben:<br />

1 Für jeden Schlüssel K ist h K (M) leicht zu berechnen.<br />

2 h K bildet Eingaben beliebiger Bitlänge auf Ausgaben fester<br />

Bitlänge ab (Kompressionseigenschaft)<br />

3 Falls einige Text-Mac-Paare (M i , h K (M i )) bekannt sind, ist es<br />

unmöglich ohne Kenntnis von K ein weiteres Text-MAC-Paar<br />

(x, h K (x)) zu berechnen. (Fälschungsresistenz)<br />

4 h K (M) soll gleichverteilt sein, also<br />

p(h K (M) = h K (M ′ )) = 2 − n für eine MAC-Länge von n Bits<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Eigenschaften<br />

Sicherheit, dass die Nachricht nicht modifiziert wurde, da<br />

ansonsten berechneter und überprüfter MAC ungleich wären<br />

(wie bei Hash-Funktion)<br />

Nachricht ist mit überwältigender Sicherheit vom angegebenen<br />

Sender (niemand sonst sollte über den Schlüssel verfügen)<br />

die Reihenfolge von Nachrichten kann durch Mitcodierung von<br />

Sequenznummern geschützt werden<br />

Die Nachricht an sich braucht nicht verschlüsselt zu werden<br />

− wird das doch benötigt, kann unabhängig vom MAC ein<br />

Verschlüsselungsverfahren eingesetzt werden<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Warum MAC?<br />

Wenn MAC ähnlich funktioniert wie symmetrische<br />

Verschlüsselung, warum dann nicht einfach nur<br />

Verschlüsselung?<br />

Verschiedene Situationen, in denen eine Trennung sinnvoll ist:<br />

− Entschlüsselung dauert lange und ist manchmal unnötig<br />

− Oft genügt es, die Authentizität in einem weiteren nach- oder<br />

parallel geschalteten Prozess festzustellen und erst einmal die<br />

Nachricht zu verarbeiten. Das ist bei verschlüsselten<br />

Nachrichten nicht möglich.<br />

− Trennung von Authentifizierung und Verschlüsselung erlaubt<br />

mehr architektonische Freiheiten der Ansiedlung der Funktionen<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Konkrete MACs (1)<br />

MD5-MAC: Modifikation von MD5 wobei ein Schlüssel K der<br />

Bitlänge ≤ 128 verwendet wird<br />

CBC-MAC: Kombination aus Blockchiffre und CBC<br />

− Padding der Nachricht M auf volle Blocklänge<br />

M||1||0 n = M 1 M 2 . . . M t<br />

− Blöcke M 2 , . . . , M t mit CBC verschlüsseln mit E K (M 1 ) als<br />

Initialisierungsvektor<br />

− MAC-Wert = Ausgabe der letzten Iteration von CBC<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Konkrete MACs (2)<br />

MACs aus Hashfunktionen: Verschiedene Varianten existieren;<br />

empfohlen:<br />

Gegeben ist eine Hashfunktion h und ein Schlüssel K :<br />

HMAC(M) = h K (M) = h((K ⊕ opad)||h((K ⊕ ipad)||M)))<br />

− K hat Bitlänge entsprechend der verwendeten Hashfunktion<br />

(z.B. 512 bei SHA-512)<br />

− opad = 0x5c5c5c . . . 5c<br />

ipad = 0x363636 . . . 36<br />

− Gemäß RFC 2104<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Digitale Signaturen<br />

Bisherige Verfahren<br />

− Schutz von zwei kommunizierenden Partnern vor einem<br />

übelwollenden Dritten<br />

− ABER: wie weit können sich die beiden vertrauen?<br />

Beispiel: eCommerce<br />

− Ein Kunde könnte behaupten, er hätte eine bestimmte<br />

Bestellung nicht abgeschickt<br />

− Ein Händler könnte Bestellungen fälschen<br />

Lösung: Digitale Signaturen<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Gewünschte Eigenschaften<br />

Der Autor sowie Datum und Uhrzeit der Unterschrift müssen<br />

eindeutig überprüfbar sein<br />

Der Inhalt zum Zeitpunkt der Unterschrift muss eindeutig<br />

überprüfbar sein<br />

Diese Eigenschaften müssen von Dritten überprüfbar sein, um<br />

Konflikte auflösen zu können<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Anforderungen<br />

Damit ergeben sich die folgenden Anforderungen:<br />

− Unterschrift muss ein von der Nachricht abhängiges Bitmuster<br />

sein<br />

− Unterschrift muss auf Information basieren, die nur der Sender<br />

kennt<br />

− Sie muss relativ leicht zu erzeugen sein<br />

− Die Prüfung muss relativ leicht sein<br />

− Es muss praktisch unmöglich sein, digitale Signaturen zu<br />

fälschen (weder durch Erzeugen einer neuen Nachricht noch<br />

durch Erzeugen einer neuen Unterschrift)<br />

− Es sollte möglich sein, digitale Unterschriften elektronisch im<br />

Rechner vorzuhalten (aus praktischen Erwägungen)<br />

Algorithmen unter Verwendung von sicheren Hash-Funktionen<br />

und asymmetrischer Verschlüsselung können diese<br />

Anforderungen erfüllen<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Direct Digital Signature<br />

Nur zwischen den beiden kommunizierenden Partnern<br />

− Empfänger kennt öffentlichen Schlüssel des Senders<br />

− Signatur durch verschlüsselte Nachricht oder verschlüsselten<br />

Hashcode<br />

Im Streitfall prüft ein Dritter Nachricht und Signatur<br />

Schwäche: Sicherheit hängt von Geheimhaltung des privaten<br />

Schlüssels des Senders ab<br />

− Sender kann immer behaupten, dass Schlüssel gestohlen wurde<br />

− Für diesen Fall müssen weitere administrative Maßnahmen<br />

getroffen werden<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Arbitrated Digital Signature<br />

Generelles Prinzip:<br />

− Jede von X signierte Nachricht an Y geht zuerst an einen<br />

neutralen Vermittler (Notar), der die Nachricht und die<br />

Unterschrift einigen Tests unterzieht<br />

− Anschließend: Datierung und Senden an Y mit dem zusätzlich<br />

vom Vermittler signierten Hinweis, dass die Nachricht geprüft<br />

wurde<br />

Großes Vertrauen in den Vermittler notwendig<br />

Eine Reihe von Verfahren ist verfügbar<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Digital Signature Standard<br />

FIPS-186<br />

− Amerikanischer Digital-Signature-Standard von 1993, basiert<br />

auf SHA und ElGamal-Signatur-Verfahren<br />

− Erweitert 2000 um Algorithmen auf der Basis von RSA und<br />

Elliptic Curve<br />

Original-DSS-Algorithmus (DSA):<br />

− Basiert auf diskreten Logarithmen<br />

− Verwendet einen privaten Schlüsel des Senders sowie einen<br />

bekannten öffentlichen Gruppenschlüssel zur Produktion zweier<br />

Werte r und s<br />

− Diese werden dann beim Empfänger mittels des<br />

Gruppenschlüssels und des öffentlichen Schlüssels des Senders<br />

überprüft<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Digital Signature Algorithm (DSA)<br />

Kernstück von DSS<br />

Generiert eine 320 Bit signatur<br />

Kleiner und schneller als RSA<br />

Kann allerdings nur digital signieren (keine Verschlüsselung)<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


DSA - Mathematische Grundlagen<br />

Definition: Es sei n ∈ N . Die Ordnung eines Elementes a ∈ Z ∗ n<br />

ist kleinste natürliche Zahl k mit<br />

a k mod n = 1.<br />

Existenz der Ordnung ist durch den Satz von Euler gesichert.<br />

Satz 6.1. (ohne Beweis) Es seien p und q Primzahlen mit<br />

q|(p − 1) . Dann existieren Elemente g ∈ Z ∗ p mit der Ordnung<br />

q .<br />

Bemerkungen:<br />

− So ein g lässt sich algorithmisch leicht finden.<br />

− Die Menge {g x mod b|0 ≤ x < q} hat genau q Elemente.<br />

Satz 6.2. Es sei g ein Element der Ordnung q ∈ Z ∗ p und es<br />

seien r 1 , r 2 ∈ N mit r 1 mod q = r 2 mod q . Dann gilt:<br />

a r 1<br />

mod p = a r 2<br />

mod p .<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


DSA - Vorgehen<br />

Schlüsselerzeugung<br />

− p und q sind große Primzahlen mit q|p(−1)<br />

− g ist ein Element der Ordnung q aus Z ∗ p<br />

− x ist Zufallszahl aus {1, . . . , q − 1}, y = g x mod p .<br />

− öffentlicher Schlüssel: (p, q, g, y) , privater Schlüssel: x<br />

s = f 1 (H(M), k, x, r, q)<br />

= (k −1 (H(M) + xr)) mod q<br />

r = f 2 (k, p, q, g)<br />

= (g k mod p) mod q<br />

w = f 3 (s ′ , q) = (s ′ ) −1 mod<br />

v = f 4 (y, q, g, H(M), w, r ′ )<br />

= (g H(M)w mod q · y r′ w mod q mod p) mod q<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Gegenüberstellung: RSA vs DSS<br />

privater Schlüssel von X; PUX: öffentlicher Schlüssel von X<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen PRX:


Literatur<br />

Dietmar Wätjen: Kryptographie, 2. Aufl., Spektrum Akademischer<br />

Verlag, 2008.<br />

Überblickspaper: B. Preneel: ”<br />

The State of Cryptographic Hash<br />

Functions“, EUROCRYPT, Springer, 1996.<br />

Klassisches Paper zu digitalen Unterschriften: S. Akl: ”<br />

Digital<br />

Signatures: a Tutorial Survey“. Computer, Feb. 1983<br />

Dietmar Wätjen: Kryptographie, 2. Aufl., Spektrum Akademischer<br />

Verlag, 2008.<br />

William Stallings, Lawrie Brown: Computer Security: Principles and<br />

Practice, Pearson Education 2008<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Kapitel 7<br />

Schlüsselaustausch und Zertifikate<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Überblick<br />

Die Vereinbarung eines gemeinsamen geheimen Schlüssels über<br />

einen unsichern Kanal dient das Diffie-Hellman-Verfahren. Sein<br />

Hauptnachteil besteht in der mangelnden Authentifizierung der<br />

Kommunikatonspartner.<br />

Um dieses Problem zu beheben, werden zwei neue Konzepte<br />

ins Spiel gebracht, sog. “Vertrauenswürdige Instanzen” und<br />

“Zertifikate”. Mit ihrer Hilfe läßt sich das obige Verfahren zum<br />

Station-to-Station Protokoll von Diffie, van Oorschot und<br />

Wiener ausbauen.<br />

Dies ist nur eine von meheren Möglichkeiten, das Problem des<br />

Diffie-Hellman-Verfahrens zu beheben, alternativ wären noch<br />

die MTI-Verfahren von T. Matsumoto, Y. Takashima und H.<br />

Imai, das Konzept des selbst-zertifizierenden Schlüssels und der<br />

Schlüsselaustausch nach Girault zu nennen, die aber den<br />

Rahmen dieser Vorlesung sprengen würden.<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Problemstellung<br />

Soll man den symmetrischen Schlüssel über denselben Kanal senden,<br />

über den später die verschlüsselte Kommunikation stattfinden soll?<br />

Alte Lösung: Zum Schlüsselaustausch kann man ein (langsameres)<br />

asymmetrisches Verfahren verwenden (RSA, ElGamal,. . . )<br />

Alice wählt einen symmetrischen Sitzungsschlüssel K ;<br />

sie verschlüsselt K mit Bobs öffentlichem asymmetrischen<br />

Verfahren und sendet das Ergebnis E B (K) and Bob;<br />

Bob erhält K = D B (E B (K)) .<br />

Potentielle Nachteile:<br />

die Wahl des symmetrischen Sitzungsschlüssels obliegt nur<br />

einem der Teilnehmer; der andere hat keinen Einfluß auf die<br />

Qualität der Wahl (wie zufällig der Schlüssel wirklich ist);<br />

Der Schlüssel wird über das Netz geschickt, wenn auch in<br />

chiffrierter Form.<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Diffie-Hellman-Verfahren<br />

Das erste Verfahren zum direkten Schlüsselaustausch über<br />

einen unsicheren Datenkanal wurde 1976 veröffentlicht von<br />

− Whitfield Diffie<br />

− Martin Hellman<br />

Whitfield Diffie<br />

Das Verfahren war bereits zuvor (1975) von Malcolm<br />

Williamson beim britischen GCHQ entwickelt worden:<br />

Martin Hellman<br />

− James Ellis entwickelte bis 1969<br />

Public-Key-Kryptographie<br />

− Malcolm Williamson entdeckt<br />

das DHV bei der Suche nach<br />

einem Fehler in Clifford Cocks<br />

Public-Key-Verfahren.<br />

James Ellis<br />

Malcolm Williamson<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Diffie-Hellman: Mathematische Grundlagen 1<br />

Definition<br />

Für p prim heißt g ∈ Z ∗ p primitive Wurzel modulo p , falls die<br />

Potenzen g i mod p , i < p − 1 , die Menge Z ∗ p ausschöpfen.<br />

Alternativ heißt g auch Erzeuger von Z ∗ p .<br />

Beispiel<br />

3 eine primitive Wurzel modulo 5 , denn<br />

3 0 mod 5 = 1 , 3 1 mod 5 = 3 , 3 2 mod 5 = 4 , 3 3 mod 5 = 2<br />

Dagegen sind 1 und p − 1 für Primzahlen > 3 niemals Erzeuger<br />

(warum?).<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Diffie-Hellman: Mathematische Grundlagen 2<br />

Das Problem des diskreten Logarithmus besteht darin, für eine<br />

primitive Wurzel g modulo p und für a ∈ Z ∗ p den Exponenten x<br />

mit g x mod p = a zu finden.<br />

− Für dieses Problem ist kein effizienter Algorithmus bekannt.<br />

− Der Algorithmus von Shanks hat Laufzeit- und Speicherbedarf<br />

in der Größenordnung von √ p , was immer noch exponentiell<br />

in der Bitlänge von p ist (umseitig).<br />

Das Problem des diskreten Logarithmus stellt sich in jeder<br />

hinreichend komplizierten zyklischen Gruppe, d.h., einer Gruppe, die<br />

von einem Element erzeugt werden kann. Dazu gehören etwa die<br />

multiplikativen Gruppen endlicher Körper, sowie bestimmte Untergruppen<br />

sog. “elliptischer Kurven” (siehe Crypto 3). In zyklischen<br />

Gruppen der Form 〈Z n , +, 0〉 ist das Problem hingegen trivial.<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Algorithmus von Shanks für k mit g k mod p = a<br />

|Z ∗ p| = ϕ(p) = p − 1 ; setze r := ⌈ √ p − 1⌉ . Der unbekannte<br />

Logarithmus k < p − 1 von a ∈ Z ∗ p zur Basis g hat die<br />

Darstellung k = αr + β mit α, β < r . Nun gilt<br />

g k mod p = a gdw g αr mod p = a · g −β mod p<br />

Zwecks Lösung der rechten Gleichung werden<br />

die giant steps g i·r = (g r ) i , i < r , berechnet und gespeichert,<br />

die baby steps ag −j mod p , j < r berechnet und mit den<br />

gespeicherten giant steps verglichen, bis eine Übereinstimmung<br />

g i·r mod p = a · g −j mod r auftritt.<br />

Bei bis zu √ p − 1 “baby steps” verbietet sich eine lineare Suche in<br />

der Liste der “giant steps”. Jede Binärsuche benötigt größenordnungsmäßig<br />

lg(p − 1) Schritte, braucht aber eine sortierte Liste der<br />

“giant steps”, wozu ca. √ p − 1 lg(p − 1) Schritte erforderlich sind.<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Wie findet man primitive Wurzeln?<br />

Satz (ohne Beweis)<br />

(1) Die Anzahl primitiver Wurzeln modulo p ist ϕ(p − 1) .<br />

(2) g ∈ Z ∗ p ist genau dann primitive Wurzel modulo p , wenn für<br />

alle Primfaktoren q von p − 1 gilt<br />

g (p−1)/q mod p ≠ 1<br />

Auswahl der Parameter für das Diffie-Hellman-Verfahren:<br />

Wähle eine große zufällige Primzahl q , so dass p = 2q + 1<br />

ebenfalls prim ist (dann nennt man p sichere Primzahl);<br />

Wähle g ∈ Z p−1 − {0, 1} solange zufällig, bis g 2 mod p ≠ 1<br />

und g q mod p ≠ 1 gilt (weitere Tests sind nach Voraussetzung<br />

nicht notwendig); es existieren ϕ(2q) = q − 1 Erzeuger.<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Das Diffie-Hellman-Verfahren<br />

Protokoll 8.1 (Schlüsselaustausch nach Diffie und Hellman)<br />

Gegeben: Primzahl p und primitive Wurzel g modulo p , bekannt<br />

Zusammenfassung: Alice und Bob vereinbaren einen gemeinsamen<br />

geheimen Schlüssel aus Z ∗ p .<br />

x A ∈ Z p−1 − Z 2<br />

A<br />

A<br />

y A = g x A mod p<br />

B<br />

B<br />

x B ∈ Z p−1 − Z 2<br />

k y B = g x BA = y x A<br />

B<br />

B mod p mod p<br />

k AB = y x B<br />

A mod p<br />

A<br />

Die Wahl der Exponenten x A und x B erfolgt zufällig. Der<br />

gemeinsame Schlüssel ist nun k BA = k AB = g x Ax B<br />

mod p . Zwecks<br />

Geheimhaltung desselben sind die Werte 0 und 1 als Exponenten<br />

auszuschließen!<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen<br />

B


Die Sicherheit des Verfahrens<br />

Die Sicherheit des Verfahrens beruht auf der<br />

Einweg-Eigenschaft des diskreten Logarithmus:<br />

− Ein Angreifer kann zwar die Potenzen y A und y B abhören,<br />

aber daraus nicht die geheimen Exponenten x A bzw. x B<br />

berechnen, also auch nicht den gemeinsamen Schlüssel.<br />

Schwachstelle des Verfahrens:<br />

− Die Authentizität der Teilnehmer ist nicht ewährleistet.<br />

− Das ermöglicht einen Man-or-Woman-in-the-Middle-Angriff:<br />

←→<br />

←→<br />

Ein Angreifer unterpricht die Verbindung zwischen Alice und<br />

Bob und vereinbart mit beiden Parteien je einen gemeinsamen<br />

Schlüssel, wobei er sich als die jeweils andere Partei ausgibt.<br />

Dann kann er die geheime Kommunikation belauschen.<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Abhilfe gegen Man-in-the-Middle<br />

Alice und Bob müssen zusätzlich auch sicher sein, dass beide<br />

mit demselben Schlüssel arbeiten (key confirmation)<br />

Dabei könnten in einer idealen Welt “vertrauenswürdige<br />

Instanzen” (Trusted Authorities – TAs) helfen<br />

− stellen einen beweisbaren Zusammenhang zwischen der Identität<br />

einer Person und ihrem Schlüssel her<br />

− haben die Form von Schlüsselverteilzentren (key distribution<br />

centers) oder Zertifizierungsstellen (certification authorities)<br />

− erteilen auf Wunsch Zertifikate für die Schlüssel der Benutzer<br />

− solche Zertifikate können zeitlich beschränkt gültig sein<br />

− der im Zertifikat enthaltene authentische Schlüssel wird zumeist<br />

nur für die Vereinbarung eines Sitzungsschlüssels verwendet.<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Station-to-Station Protokoll 1<br />

Das Station-to-Station Protokoll (Diffie, van Oorschot, Wiener 1992,<br />

plus Vorarbeiten seit 1987) zielt darauf ab, den Schlüsselaustausch<br />

nach Diffie-Hellman um eine Authentifizierung der Teilnehmer zu<br />

erweitern. Dabei kommen Zertifikate und Signaturen zum Einsatz,<br />

zulasten der parallelen Natur von DH. Voraussetzungen:<br />

ein symmetrisches Ziel-Kryptosystem 〈E, D〉 ;<br />

öffentliche und private RSA-Schlüssel 〈n X , e X 〉 bzw. d X pro<br />

Teilnehmer X ;<br />

eine Hashfunktion h mit Werten < n X für alle Nutzer X ;<br />

ein Public-Key Kryptosystem 〈E TA , D TA 〉 der TA ;<br />

Zertifikate Z(X ) = 〈ID X , 〈n X , e X 〉, D TA (h(ID X |〈n X , e X 〉))〉<br />

für alle Nutzer X ;<br />

Signaturen der Form S X (M) := (h(M)) d X<br />

mod n X ;<br />

eine Primzahl p und eine primitive Wurzel g modulo p .<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Protokoll 8.7 (Station-to-Station)<br />

x A ∈ Z p−1 − Z 2<br />

A<br />

A<br />

A<br />

K := y x A<br />

B mod p A<br />

teste Z(B)<br />

A<br />

y A<br />

〈y B , Z(B), m B 〉<br />

B<br />

B<br />

B<br />

x B ∈ Z p−1 − Z 2<br />

K := y x B<br />

A<br />

mod p<br />

y A := g x A mod p<br />

y B := g x B mod p<br />

m B := E K (S B (y B ||y A ))<br />

m A := E K (S A (y A ||y B ))<br />

teste m B<br />

A<br />

〈Z(A), m A 〉<br />

B<br />

B<br />

B<br />

teste Z(A)<br />

teste m A<br />

Der Test von m B überprüft (D K (m B )) e ?<br />

B<br />

mod n B = h(y B |y A ) .<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Bemerkungen<br />

Alice könnte Z(A) zusammen mit y A versenden, was ggf. zu<br />

einem früheren Abbruch führt.<br />

Die Symmetrie des Originalverfahrens geht verloren, da Alice<br />

die Testnachricht m A zur Schlüsselbestätigung nicht<br />

zusammen mit y A verschicken kann, denn zu dem Zeitpunkt<br />

kennt sie K noch nicht. (Bei den MTI-Protokollen, die nur<br />

Zertifiate aber keine Signaturen verwenden, bleibt die<br />

Symmetrie erhalten.)<br />

Die Kenntnis von K erfordert die Kenntnis von x A und y B ,<br />

bzw. x B und y A .<br />

Ein Man-or-Woman-in-the-Middle-Angriff scheitert an der<br />

Unfähigkeit des Angreifers bzw. der Angreiferin, mangels d A<br />

bzw. d B den Klartext S A (y A |y B ) bzw. S B (y B |y A ) der<br />

korrekten Testnachricht zu bestimmen.<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Anwendung von DH: Das ElGamal Verfahren (1)<br />

Algorithmus 7.4 (ElGamal Schlüsselerzeugung)<br />

Zusammenfassung: Alice erzeugt einen geheimen und einen<br />

zugehörigen öffentlichen Schlüssel.<br />

p ∈ P, 〈g〉 = Z ∗ p<br />

x A ∈ Z p−1 − Z 2<br />

A<br />

A<br />

A<br />

〈p, g, y A = g x A mod p〉<br />

Diesmal obliegt Alice auch die Auswahl der Primzahl p und des<br />

Erzeugers g ∈ Z ∗ p . Diese sind zusammen mit y A bekanntzugeben,<br />

somit bildet 〈p, g, y A 〉 den öffentlichen Schlüssel, während x A als<br />

privater Schlüssel wie zuvor geheim bleibt. Die Veröffentlichung von<br />

〈p, g, y A 〉 kann als Kommunikation mit allen anderen Teilnehmern<br />

aufgefaßt werden.<br />

alle<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Anwendung von DH: Das ElGamal Verfahren (2)<br />

Algorithmus 7.5 (ElGamal Verschlüsselung)<br />

Zusammenfassung: Bob chiffriert M für Alice, die M dechiffriert.<br />

b · y p−1−x A<br />

B<br />

A<br />

〈yB = g x B<br />

mod p<br />

A<br />

mod p, b = M · y x B<br />

A<br />

mod p〉<br />

B<br />

B<br />

B<br />

M ∈ Z p<br />

x B ∈ Z p−1 − Z 2<br />

Bob kennt y A , wenn er x B wählt, kann mit dem gemeinsamen<br />

DH-Schlüssel k AB = k BA = g x Ax B<br />

mod p also gleich M maskieren<br />

und das Ergebnis zusammen mit y B versenden. Das verdoppelt den<br />

Chiffretext gegenüber dem Klartext. Speziell kann die Dechiffrierung<br />

nicht injektiv sein. (Im Buch wird y B mit a und y p−1−x A mod p mit z bezeichnet.)<br />

B<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Anwendung von DH: Das ElGamal Verfahren (2)<br />

Ein wesentliches Merkmal des ElGamal-Chiffrierverfahrens ist die<br />

Randomisierung mittels x B . Derartige probabilistische Elemente<br />

vergrößern effektiv den Klartextraum;<br />

erschweren Angriffe mit gewähltem Klartext<br />

erschweren statistische Angriffe, indem die W’verteilung der<br />

Eingaben der Gleichverteilung angenähert wird.<br />

Auch hier existiert ein Signierverfahren, das aber den Rahmen dieser<br />

VL sprengen würde.<br />

Beim DH-Schlüsselaustausch wie auch beim ElGamal-Chiffrierverfahren<br />

und bei der ElGamal Signierung kann ohne weiteres eine<br />

abstrakte zyklische Gruppe G der Ordnung m anstelle von Z ∗ p<br />

verwendet werden, wo m = p − 1 gilt. Die Zufallsexponenten x A<br />

und x B sind dann aus dem Ring Z m zu wählen, wobei die Werte 0<br />

und 1 wie bisher aus praktischen Gründen vermieden werden sollten.<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen


Literatur<br />

Dietmar Wätjen: Kryptographie, 2. Aufl, Spektrum<br />

Akademischer Verlag, 2008<br />

William Stallings und Lawrie Brown: Computer Security:<br />

Principles and Practice, Prentice Hall 2008, ISBN-10:<br />

0136004245; ISBN-13: 9780136004240.<br />

S. Ransom + J. Koslowski: Grundlagen der Sicherheit in Netzen und verteilten Systemen

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!