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 8. November 2007
Hash-then-Encrypt
Naheliegend, hat aber keine guten Eigenschaften.
hHashfunktion undEkBlockchiffre.
MAC-Wert vonxistEk(h(x)).
Nachteile:
•Kollisionen k ¨onnen ohnekbestimmt werden.
•Kollisionen haben gleichen MAC f ¨ur verschiedenek.
•Ekdarf kein Stromchiffre sein (f ¨ur bekanntesxkann man nach dem Schl ¨usselstrom aufl ¨osen).
4 8. November 2007
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 8. November 2007
Sicherheitsmodell
Der ideale MAC ist wieder eine Zufallsfunktion, f ¨ur jedesk∈K sollhk nicht von einer
”zuf ¨allig“ gew ¨ahlten FunktionM→Hunterscheidbar sein.
Spezieller betrachten wir auch folgendes (schw ¨acheres) 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 (d.h. Raten ist bereits die beste Strategie).
2 8. November 2007
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)(also Padding) verwenden.
7 8. November 2007
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.
•Daraus folgtE(k,m1,i)⊕m2,i= E(k,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.
8 8. November 2007
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.
5 8. November 2007
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.
6 8. November 2007
Geschachtelte MACs
Seieng : K1× {0,1}∗→ {0,1}mundh : K2× {0,1}m→ {0,1}nmitm≥n.
Wir zeigen: Istgk1kollisionsresistent bei unbekanntem Schl ¨ussel und hk2ein 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.
11 8. November 2007
Geschachtelte MACs
Ein(ε,q,t)-Angreifer gegen 1, 2 oder 3 f ¨uhrt einen erfolgreichen Angriff bei zuf ¨alliger und gleichverteilter Schl ¨usselwahl mit WahrscheinlichkeitεundqOrakelanfragen in Zeitt aus.
Thm: Gibt es einen(ε,q,t)-Angreifer gegen 3, so gibt es auch einen (ε1,q + 1,t)-Angreifer gegen 1 und einen(ε2,q,t)-Angreifer gegen 2 mitε1+ε2=ε.
Anwendung: Falls es keinen(≥ε,≤q,≤t)-Angreifer gegen 1 oder 2 gibt, so gibt es auch keinen(≥2ε,≤q−1,≤t)-Angreifer gegen 3.
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.
12 8. November 2007
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.
9 8. November 2007
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)mit nicht zu geringer Wahrscheinlichkeit (h7→f (h,k2)sollte im wesentlichen injektiv sein).
Man sucht nun einfach inKnachk1und dann nachk2. Der Aufwand ist damit2#Kstatt#K2...
Die Konstruktionen 1-3 werden daher so nicht verwendet.
10 8. November 2007
Geschachtelte MACs
Der AngreiferA1gegen 1 wird wie folgt definiert: Er w ¨ahlt ein zuf ¨alligesk2und beantwortet die Orakelanfragen vonA3 mit 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 gibtm,mials Kollision aus, falls es ein imitgk1(m) = gk1(mi)gibt. Es giltm6= mi, so daßA1die Spielregeln befolgt.
Der AngreiferA2gegen 2 wird wie folgt definiert: Er w ¨ahlt ein zuf ¨alligesk1und beantwortet die Orakelanfragen vonA3 mit
hk2(gk1(mi))unter Verwendung seines Orakels f ¨urhk2. NachdemA3den Wert(m,z)geliefert hat, gibtA2 den 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ß auchA2 die Spielregeln befolgt.
13 8. November 2007
Geschachtelte MACs
A1undA2 rufen einmalA3 auf.
A1: Laufzeit≈t, Orakelanfragenq + 1, Erfolgswahrscheinlichkeit=:ε1. A2: Laufzeit≈t, Orakelanfragenq, Erfolgswahrscheinlichkeit=:ε2. 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, liefert gleichemi,m,z. WennA3f ¨ur gew ¨ahlte k1,k2,σErfolg hat, dann auch entwederA′1oderA′2f ¨urk1,k2,σ. Daraus folgtε=ε1+ε2.
14 8. November 2007