Konstruktion von MACs
Folgende Konstruktionstypen k ¨onnen unterschieden werden:
•MACs aus Blockchiffren im CBC Modus.
•MACs aus MDCs.
•Spezielle Konstruktionen.
CBC-MACs sind sehr weit verbreitet.
•Standardisiert z.B. in FIPS-113 von 1985.
Erhalten in der Regel Sicherheit von nurlog2(#H)/2Bits.
3 14. November 2006
CBC-MAC
Verwendet eine BlockchiffreE : K× {0,1}b→ {0,1}b. CBC-MAC von NachrichtM∈ {0,1}∗unter Schl ¨usselk:
•SchreibeM = M1||. . .||MnmitMi∈ {0,1}b(und Padding).
•y0←IV←0b.
•F ¨uri←1, . . . ,n:
yi←E(k,yi−1⊕mi).
•Ausgabeyn.
In anderen Worten: Der CBC-MAC ist der letzte Chiffretextblock der Verschl ¨usselung vonmmitE im CBC Modus, unter Verwendung des konstantenIV = 0b.
Vorteil: Leicht aus bestehenden Teilen programmiert.
Message Authentication Codes
Entspricht Hashfunktionen mit geheimen Schl ¨usseln.
h : K×M→H,MAC = hk(m).
•hparametrisierte Hashfunktion.
•mNachricht.
•kgeheimer Schl ¨ussel.
Mit der Nachrichtmwirdhk(m) ¨ubertragen. Der Empf ¨anger berechnet hk(m)ausmundkund vergleicht mit dem gesendeten MAC.
Liefert Datenintegrit ¨at und Authentizit ¨at.
1 14. November 2006
Sicherheitsmodell
Der ideale MAC ist wieder eine Zufallsfunktion, f ¨ur jedesk∈K sollhk nicht von einer
”zuf ¨allig“ gew ¨ahlten FunktionM→Hunterscheidbar sein.
Spezieller betrachtet man folgendes Sicherheitsmodell:
•Ein Angreifer darfhk(mi)f ¨ur beliebig von ihm vorgegebene Nachrichtenmierhalten (Orakelanfragen).
•Der Angreifer gewinnt (erzeugt eine F ¨alschung), wenn er einm undymity = hk(m)berechnet.
•MAC ist sicher, wenn es keinen effizienten Angreifer gibt, der mit signifikanter Wahrscheinlichkeit gewinnt.
Sicherheit eines idealen MAC ist gleich der Anzahllog2(#H)der Bits der MAC-Werte.
CBC-MAC Sicherheit
Geburtstagsangriff auf CBC-MAC mit fester Nachrichtenl ¨anged:
•W ¨ahle1.18·2b/2 Nachrichtenmi= m1,i||m2,i||m3mitm1,i∈ {0,1}b paarweise verschieden,m2,i∈ {0,1}bzuf ¨allig undm3∈ {0,1}d−2b beliebig.
•Erfrage allehk(mi). Es ergibt sich eine Kollisionhk(mi) = hk(mj)f ¨ur i6= jmit Wahrscheinlichkeit≥1/2.
•Nun gilthk(m1,i)⊕m2,i= hk(m1,j)⊕m2,j.
•W ¨ahle beliebigesmδ∈ {0,1}bund erfrage y←hk(m1,i||(m2,i⊕mδ)||m3).
•Nun gilty = hk(m1,j||(m2,j⊕mδ)||m3). Liefert eine F ¨alschung.
Folgerung:2b/2bestm ¨ogliche Sicherheit bem CBC-MAC, 2b/2Schritte gen ¨ugen, um CBC-MAC von zuf ¨alliger Funktion zu unterscheiden.
7 14. November 2006
MACs aus MDCs
Gegeben eine Hashfunktionh :{0,1}∗→ {0,1}b. Drei einfache Varianten:
1. MAC= h(k||m) 2. MAC= h(m||k) 3. MAC= h(k1||m||k2)
Liefern f ¨ur ideale Hashfunktion idealen MAC. F ¨ur iterierte Hashfunktionen aber nicht besonders sicher:
Annahme:hiteriert, alsoh0= IV,hi+1= f (hi,mi), ...
zu 1. Aush(k||m)kann leichth(k||m||m′)bzw.h(k||m||p||m′)
ausgerechnet werden, wobeipdas Padding der Hashfunktion ist.
8 14. November 2006
CBC-MAC Padding und Postprocessing
In den Standards sind drei Padding Varianten vorgesehen:
•Nullen anh ¨angen.
•Eine Eins und Nullen anh ¨angen.
•Nullen anh ¨angen und zus ¨atzlichen Block mit Nachrichtenl ¨ange.
Man kann ein optionales Postprocessing vornehmen:
•W ¨ahle Schl ¨usselk1. Dann MAC-WertE(k,D(k1,yn)). Entspricht EDE-Verschl ¨usselung im letzten Schritt.
•W ¨ahle Schl ¨usselk1. Dann MAC-WertE(k1,yn). Entspricht EE-Verschl ¨usselung (nicht besonders gut).
Erschwert exhaustive Key-search.
5 14. November 2006
CBC-MAC Sicherheit
Gilt als sicher,
•wenn Blockchiffre sicher ist und
•wenn die Nachrichtenl ¨ange konstant ist.
Man kann zeigen: Ist die Blockchiffre eine pseudozuf ¨allige Funktion, so auch der CBC-MAC. Nur durch mindestens ungef ¨ahr2b/2Anfragen an die Blockchiffre kann der CBC-MAC von einer zuf ¨alligen Funktion unterschieden werden.
Ist aber unsicher, wenn die Nachrichtenl ¨ange nicht konstant ist:
•Erfragey1←hk(m1).
•Erfragey2←hk(y1||m2).
•Nun gilty2= hk(m1||0b||m2). Liefert eine F ¨alschung.
Abhilfe:hh′(|m|)(m)oderhk(|m| ||m)verwenden.
6 14. November 2006
Geschachtelte MACs
Ein(ε,q,t)-Angreifer f ¨ur 1, 2 oder 3 f ¨uhrt einen erfolgreichen Angriff bei zuf ¨alliger Schl ¨usselwahl mit Wahrscheinlichkeit≥εund≤q Orakelanfragen in Zeitt aus.
Thm:k1undk2 seien unabh ¨angig und zuf ¨allig. Es gebe keinen (ε1,q + 1,t1)-Angreifer gegen 1 und keinen(ε2,q,t2)-Angreifer gegen 2.
F ¨ur jeden(ε,q,t3)-Angreifer gegen 3 gilt dannε≤ε1+ε2und t3≤max{t1,t2}.
Bew: SeiA3ein(ε,q,t)-Angreifer gegen 3. Seien(mi,zi)
f ¨ur1≤i≤qdie Orakelanfragen vonA3und die Ergebnisse. Es gilt hk2(gk1(mi) = zi. Mit Wahrscheinlichkeit≥εliefertA3eine F ¨alschung (m,z), es gilt alsom6= mif ¨ur alleiundhk2(gk1(m) = z.
11 14. November 2006
Geschachtelte MACs
Der AngreiferA1gegen 1 wird wie folgt definiert: Er w ¨ahlt ein zuf ¨alligesk2 und beantwortet die Orakelanfragen vonA3mit zi= hk2(gk1(mi)), wobei er den Wertgk1(mi)durch sein Orakel erh ¨alt.
NachdemA3den Wert(m,z)ausgegeben hat, berechnetA1den Wert gk1(m)durch Orakelanfrage und gibt gegebenenfalls eine Kollision gk1(m) = gk1(mi)aus. Dies sindq + 1Anfragen an das Orakel.
Außerdem giltm6= mi, so daßA1die Spielregeln befolgt.
Der AngreiferA2gegen 2 wird wie folgt definiert: Er w ¨ahlt ein zuf ¨alligesk1 und beantwortet die Orakelanfragen vonA3mit
hk2(gk1(mi))unter Verwendung seines Orakels f ¨urhk2. NachdemA3den Wert(m,z)geliefert hat, gibtA2den Wert(gk1(m),z)als F ¨alschung aus, fallsgk1(m)6= gk1(mi)f ¨ur alleigilt. Das Orakelhk2wurde dann nicht nachgk1(m)gefragt, so daß auchA2die Spielregeln befolgt.
MACs aus MDCs
zu 2. Finde Kollisionh(m) = h(m′)(
”offline“ m ¨oglich). Erfrage y←h(m||k). Dann isty = h(m′||k)eine F ¨alschung.
( Ist im Prinzip ein Hash-then-encrypt Ansatz, auf den ein analoger Angriff m ¨oglich ist. )
zu 3. Durch Erfragen der MACs findet man eine Kollision h(k1||mi||k2) = h(k1||mj||k2). Dann gilt auchh(k1||mi) = h(k1||mj).
Man sucht nun einfach inKnachk1und dann nachk2. Der Aufwand ist damit2#Kstatt#K2...
Die Konstruktionen 1-3 werden daher so nicht verwendet.
9 14. November 2006
Geschachtelte MACs
Seieng : K1× {0,1}∗→ {0,1}mundh : K2× {0,1}m→ {0,1}nmitm≥n.
Wir werden zeigen: Istgk1kollisionsresistent bei unbekanntem Schl ¨ussel undhk2ein sicherer MAC, so isthk2◦gk1ein sicherer MAC.
Wir betrachten dazu folgende Angreifer:
1. Kollisionsangriff bei unbekanntem Schl ¨ussel:k1ist geheim, der Angreifer erh ¨alt trotzdem die Wertegk1(m)f ¨urmseiner Wahl. Er versucht eine Kollisiongk1(mi) = gk1(mj)mitmi6= mjzu finden.
2. Kleiner MAC Angreifer: Angreifer gegenhk2. 3. Großer MAC Angreifer: Angreifer gegenhk2◦gk1. Erwartete (ideale) Sicherheit bei 1. istm/2Bits.
Erwartete (ideale) Sicherheit bei 2. istnBits.
HMAC
Innere Anwendung vonhim HMAC:
•Ben ¨otigt Sicherheit bez ¨uglich Kollisionen bei unbekanntemk.
Außere Anwendungen von¨ him HMAC:
•Die L ¨ange des Padding wird so eingestellt, daß eine volle Blockl ¨ange der Kompressionsfunktion vonherreicht wird.
•Damit wird bei der zweiten Berechnung vonhnicht intern iteriert.
•Sicherheit vonhentspricht Sicherheit der Kompressionsfunktion als MAC, was normalerweise angenommen wird.
Wegen Geburtstagsangriffen ist die Sicherheit von HMAC bei iterierten Hashfunktionen trotzdem nur2b/2(aber
”online“ Angriff).
Relativ gutes Beispiel:
•HMAC mith =SHA-256, MAC-Wert bei Bedarf auf 128 Bit k ¨urzen.
15 14. November 2006
Benutzung von MDCs und MACs
Datenintegrit ¨at und -authentizit ¨at:m||MACk(m).
Datenintegrit ¨at bei authentischem Kanal (Absender bekannt):m||h(m).
•Beispiel: Cryptohandy, Authentizit ¨at durch Stimmerkennung.
Ek(h(x)): Hat keine guten Eigenschaften.
•Kollisionen k ¨onnen ohnekbestimmt werden.
•Kollisionen haben gleichen MAC f ¨ur verschiedenek.
•Ekdarf kein Stromchiffre sein (man kann nach dem Schl ¨usselstrom aufl ¨osen).
Datenintegrit ¨at mit Verschl ¨usselung:Ek
1(m||MACk2(m)).
•k1undk2unbedingt unabh ¨angig!
•CBC-MAC und CBC-Verschl ¨usselung mit gleichemkundIV liefert letzten ChiffretextblockEk(0), weil vorletzter Chiffretextblock= letzter Datenblock.
16 14. November 2006
Geschachtelte MACs
A1hat nach Annahme Erfolgswahrscheinlichkeit≤ε1. A2hat nach Annahme Erfolgswahrscheinlichkeit≤ε2. A1undA2 rufenA3auf.
F ¨urA3macht es keinen Unterschied, ob er vonA1oderA2 aufgerufen wird (in beiden F ¨allen sindk1,k2 zuf ¨allig gew ¨ahlt).
Zufallsquelle vonA3als Eingabebitstringσ∈ {0,1}sauffassen,A1und A2unter Einbeziehung der Orakel zu deterministischen Algorithmen A′1,A′2machen, diek1,k2,σals Parameter bekommen.
A3hat inA1undA2f ¨ur gleiches, zuf ¨alligesk1,k2,σdie gleiche Erfolgs- wahrscheinlichkeit. WennA3f ¨ur gew ¨ahltek1,k2,σErfolg hat, dann auchA′1oderA′2f ¨urk1,k2,σ.
Daraus folgtε≤ε1+ε2undt≤max{t1,t2}.
13 14. November 2006
HMAC
Als Anwendung des Thm ergeben sich HMACs.
Gegeben eine Hashfunktionh :{0,1}∗→ {0,1}b. HMAC von Nachrichtmund Schl ¨usselk:
•HMAC= h( k||opad||h(k||ipad||m) ).
HMAC= h( k⊕opad||h(k⊕ipad||m) ).
•opad = 36· · ·36.
•ipad = 5C· · ·5C.
Die Benutzung vonkanstelle vonk1undk2basiert auf der Annahme, daß der
”Unterschied“ von einem Angreifer aufgrund der Hashfunktionseigenschaften nicht bemerkt werden kann.
14 14. November 2006
Paßphrasen und Pseudozufallszahlen
Paßphrasen: Technik, um sich
”lange“ Schl ¨ussel zu merken.
•Der Schl ¨ussel wird als Hashwert eines langen Satzes definiert.
•Siehe z.B. pgp, gpg.
Pseudozufallszahlen:
•Die Ausgabe einer Hashfunktion sieht sehr zuf ¨allig aus.
•Im Betriebssystem werden regelm ¨aßig Zufallsereignisse
angezapft: Maus, Tastatur, Interrupts, Netzwerk, Festplatten etc.
Ergebnisse werden mit Hashfunktion zusammengemischt: state
= h(state,counter++,new input data).
•Extrahieren von Pseudozufallszahlen:r = h(state,counter++).
Sehr gef ¨ahrlich, wenn Pseudozufallszahlen vorhersehbar. Dann Programmablauf deterministisch und Angreifer kann alles nachrechnen. Daher gen ¨ugend Entropie in Pools sammeln.
19 14. November 2006
Sicherer Kanal
Wir nehmen an, ein geheimer256Bit Schl ¨usselK sei ausgetauscht.
Um einen sicheren (=verschl ¨usselten und authentifizierten)
Kommunikationskanal zu erhalten, kann man grob wie folgt vorgehen:
F ¨ur jede Kommunikations- und Authentifizierungsrichtung erzeuge man einen eigenen Schl ¨ussel (also insgesamt4).
•Ki←SHA-256(K||
”Name der Operation“).
Man verwende AES mit256Bit Schl ¨ussell ¨ange.
Man verwende HMAC mit SHA-256, also f ¨ur 256 Bit Schl ¨usselKj: MAC =SHA-256((Kj⊕opad)||SHA-256((Kj⊕ipad)||m)).
Man verwende eindeutige Nachrichtennummern.
Man verwende den CTR Modus.
17 14. November 2006
Sicherer Kanal
Verschl ¨usselt wird die Nachricht zusammen mit dem MAC.
Mit Nachrichtennummern Schl ¨usselstrom f ¨ur CTR erzeugen.
Nachrichtennummer in Authentifizierung eingehen lassen.
Nachrichtennummer in klar im Chiffretext.
Beim Entschl ¨usseln MAC checken. Wenn falsch, dann Authentifizierungsfehler.
Wenn Nachrichtennummer schon einmal erhalten wurde (kleiner ist als ein mitgef ¨uhrter Z ¨ahler), dann Nachrichten-Ordnungsfehler.
Schnellere Alternativen, Verschl ¨usselung und Authentifizierung in einem: OCB (patentgesch ¨utzt), CCM.