Handout
Handout
Handout
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