Message Authentication Code (MAC)
Szenario:Integrität und Authentizität mittels MACs.
Alice und Bob besitzen gemeinsamen Schlüsselk.
Alice berechnet fürmeinen MAC-Tagt als Funktion vonmundk. Alice sendet das Tupel(m,t)an Bob.
Bob verifiziert, dasstein gültiger Tag fürmist.
DefinitionMessage Authentication Code (MAC) EinMessage Authentication Code (MAC)bzgl. des NachrichtenraumenMbesteht aus den ppt Alg.
1 Gen:k ←Gen(1n)
2 Mac:Bei Eingabe vonk undm∈ Mberechnet ←Mack(m).
3 Vrfy:Bei Eingabe(m,t)und Schlüsselk berechne (
Sicherheitsspiel Mac-forge
SpielSicherheit von MACs Mac-forge
SeiΠein MAC mit Sicherheitsparameternund AngreiferA.
1 k ←Gen(1n)
2 (m,t)← AMack(·)(1n). SeiQdie Menge allerMack(·)-Anfragen vonAan sein Orakel.
3 Mac-forgeA,Π(n) =
(1 fallsVrfyk(m,t) =1undm∈/Q
0 sonst .
DefinitionSicherheit eines MACs
Ein MACΠheißtexistentiell unfälschbar gegenüber adaptiv gewählten Angriffenbzw. kurzsicherfalls für alle ppt AngreiferAgilt
Ws[Mac-forgeA,Π(n) =1]≤negl(n).
Sicherheitsspiel Mac-forge
Mac−forgeA,Π(n)
k←Gen(1n)
ti=Mack(mi)∀i
Ausgabe:
(1if Vrfypk(m, t) = 1 0else
1n
mi ti
(m, t)
A
mi ∈ M i= 1, . . . , q
Berechne: (m, t) m∈ M\{mi}∀i
Replay Angriffe
Szenario:Replay Angriff
Alice schickt an ihre Bank eine authentisierte Zahlungsanweisung (m,t)über 100 Euro zugunsten Bob’s Konto.
Aufgrund der MAC-Sicherheit kann Bob den Betrag nicht ändern.
Die MAC-Sicherheit verhindert nicht, dass Bob(m,t)abfängt und dieselbe Nachricht(m,t)weitere Male an die Bank versenden.
Abhilfe: Verwenden Nummerierung oder Zeitstempel.
Seriennummer:
Berechnen MAC voni||mfür eindeutigei.
MAC-Sicherheit:Akann nicht MAC füri0||mberechnen.
Zeitstempel:
Sender berechnet MAC vonSystemzeit||m.
Empfänger verifiziert, dass dieSystemzeit aktuell ist.
Konstruktion eines sicheren MACs fester Länge
Algorithmus MACΠMAC fester Länge
SeiF eine Pseudozufallsfunktion mit Blocklängen. Wir konstruieren einen MAC für Nachrichtenm∈ {0,1}n.
1 Gen:Wählek ∈R {0,1}n.
2 Mac:Fürm,k ∈ {0,1}nberechnet:=Fk(m).
3 Vrfy:Für(m,t)∈ {0,1}n× {0,1}nundk ∈ {0,1}n Ausgabe=
(1 fallst =Fk(m)
0 sonst .
Sicherheit von Π
MACSatzSicherheit vonΠMAC
SeiF eine Pseudozufallsfunktion. Dann istΠMAC sicher.
Beweis:
SeiAein Angreifer fürΠMAC mit Erfolgsws(n).
Wir konstruieren UnterscheiderDfür Pseudozufallsfunktionen.
Algorithmus UnterscheiderD
EINGABE: 1n,O:{0,1}n→ {0,1}nmitO=Fk(·)oderO=f(·).
1 (m,t)← AMack(·), beantworteMack(m0)-Anfragen mitt0 :=O(m0).
2 SeiQdie Menge aller vonAgestelltenMack(·)-Anfragen.
AUSGABE=
(1 fallst0 =O(m0)∧m0∈/ Q, (Interpretation:O=Fk(·)) 0 sonst (Interpretation:O=f(·))
Sicherheit von Π
MACO ∈ {Fk, f}
Ausgabe
UnterscheiderD
ti=O(mi)
Ausgabe:
(O=Fk ifO(m) =t O=f else
1n
mi ti
(m, t)
A
∀i≤q, m0i∈ M Q={m1, mq} Berechne: (m, t) m∈ M\Q
Sicherheit von Π
MACFall 1:O=Fk(·), d.h. das Orakel ist eine Pseudozufallsfunktion.
Dann ist die Verteilung fürAidentisch zum ProtokollΠMAC. Damit gilt
Ws[DFk(·)(n) =1] =Ws[Mac-forgeA,Π
MAC(n) =1] =(n).
Fall 2:O=f(·), d.h. das Orakel ist eine echte Zufallsfunktion.
SeiΠ0 das ProtokollΠMAC mitf(·)stattFk(·).
Für allem∈/Qistt =f(m)uniform verteilt in{0,1}n. Damit gilt
Ws[Df(·)(n) =1] =Ws[Mac-forgeA,Π0(n) =1] = 21n. Aus der Pseudozufälligkeit vonFk folgt für alle pptD
negl(n)≥
Ws[DFk(·)(n) =1]−Ws[Df(·)(n) =1]
=|−21n|.
Damit folgt≤negl(n) +21n =negl(n)für alle ppt AngreiferA.
Von fester zu variabler Länge
Ziel:Konstruiere MAC fürm=m1. . .m` für variable Blockzahl`.
Überlegungen zu einer sicheren MAC-Konstruktion:
MAC des XOR der Blocks, d.h.t :=Mack(L` i=1mi).
Problem: Tagtist z.B. gültig fürm1m2m3. . .m`.
MAC jeden Blocks, d.h.t=t1. . .t`fürti :=Mack(mi).
Problem:t0 =t2t1t3. . .t`ist gültig fürm0 =m2m1m3. . .m`. MAC mit Block-Seriennummer, d.h.ti :=Mack(i||mi).
Problem:t0 =t1. . .t`−1ist gültig fürm0 =m1. . .m`−1. MAC mit Nachrichtenlänge, d.h.ti :=Mack(`||i||mi).
Problem: Seient =t1. . .t`,t0 =t10 . . .t`0 gültig fürm,m0. Dann ist
0 0
Sicherer MAC für Nachrichten variabler Länge
Algorithmus MACΠMAC2 variabler Länge
SeiΠ0 = (Gen0,Mac0,Vrfy0)ein MAC für Nachrichten der Längen.
1 Gen:k ←Gen(1n)
2 Mac:Seik ∈ {0,1}nundm=m1. . .m`∈({0,1}n4)`. Wähler ∈R{0,1}n4 und berechne
ti ←Mack0(r||`||i||mi)füri =1, . . . , `,
mit Kodierungen`,i ∈ {0,1}n4. Ausgabe des Tagst = (r,t1. . .t`).
3 Vrfy:Für(m,t) = (m1. . .m`,r,t1, . . . ,t`) Ausgabe=
(1 fallsVrfyk0(r||`||i||mi,ti) =1füri =1, . . . , `
0 sonst .
Anmerkung:
Benötigen` <2n4, sonst kann`nicht mit n4 Bits kodiert werden.
Sicherheit von Π
MAC2SatzSicherheit vonΠMAC2
SeiΠ0 sicher. Dann istΠMAC2ebenfalls sicher.
Beweis:
SeiAein Angreifer fürΠMAC2mit Erfolgsws(n).
Wir konstruieren einen AngreiferA0fürΠ0. Algorithmus AngreiferA0
EINGABE: 1n, OrakelMack0(·).
1 BeantworteMack(m1j . . .m`j0)-Anfragen vonAwie folgt: Wähle rj ∈R {0,1}n4 und berechne¯tji =Mac0k(rj||`||i||mij)füri=1, . . . , `.
2 (m,t) = (m1. . .m`,r,t1. . .t`)← AMack(·)(1n).
Sicherheit von Π
MAC2Mac−forgeA0,Π0(n)
k←Gen0(1n)
¯tij=Mac0k m¯ij
Q0=S
i,jm¯ij
Ausgabe: 1, falls Vrfy0k( ¯mi, ti) = 1 undmi∈/Q0
1n
¯ mij
¯tij
( ¯mi, ti)
A0
rj∈R{0,1}n/4
¯
mij=rj||`||i||mij f¨uri= 1, . . . , ` tj= (rj,¯t1j, . . . ,¯t`j)
Suche ein nicht angefragtes
¯
mi:=r||`||i||mi
mit g¨ultigem Tag tiin (m, t).
1n
mj
tj (m, t)
A
W¨ahleQ⊂ Mmit Q={m1, . . . , mq}, mj=m1j, . . . , m`j undmij∈ {0,1}n4.
Berechne t= (r, t1, . . . , t`) f¨ur einm /∈Q
Sicherheit von Π
MAC2Wir definieren die folgenden Ereignisse
Forge: Ein Blockm¯i =r||`||i||mi in(m,t)wurde nicht an Mac0k(·) angefragt, aber Vrfy0k( ¯mi,ti) =1.
Repeat: Bei 2 MAC-Anfragen wird dasselberi =rj verwendet.
Aufgrund der Sicherheit vonΠ0gilt negl(n) ≥ Ws[Mac-forgeA0,Π0(n) =1]
= Ws[Mac-forgeA,Π
MAC2(n) =1∧Forge]
= (n)−Ws[Mac-forgeA,Π
MAC2(n) =1∧Forge]
= (n)−Ws[Mac-forgeA,Π
MAC2(n) =1∧Forge∧Repeat]
| {z }
1
−Ws[Mac-forge (n) =1∧Forge∧Repeat]
Sicherheit von Π
MAC2zu zeigen:Ws[Repeat]≤negl(n)
Seiq(n)die Anzahl der MAC-Anfragen vonAanA0. Bei deri-ten MAC-Anfrage wähleA0den Identifikatorri. Repeat tritt ein, fallsri =rj für eini6=j. Sei dies EreignisEi,j. Nach Geburtstagsparadoxon gilt:
Ws[Repeat] =Ws [
1≤i<j≤q(n)
Ei,j
≤ X
1≤i<j≤q(n)
Ws[Ei,j]
≤ q(n)2
2n4 =negl(n).
Sicherheit von Π
MAC2zu zeigen:Ws[Mac-forgeA,Π
MAC2(n) =1∧Forge∧Repeat] =0 Idee:Mac-forgeA,ΠMAC2(n) =1 undRepeat impliziertForge.
Sei(m,t) = (m1. . .m`,r,t1. . .t`)die Ausgabe vonA.
Fall 1:Identifikatorr unterscheidet sich von allenri.
Dann ist (z.B.)r||`||1||m1nicht-angefragt mit gültigem Tagt1. Fall 2:r =ri für genau eini ∈[q(n)].
Seimi =m1i . . .m`ii die vonAangefragte Nachricht.
Fall`6=`i: Dann istr||`||1||m1nicht-angefragt mit gültigem Tagt1. Fall`=`i: Wegenm∈/ Qgiltm6=mi.
D.h. es existiert einj, so dassmj 6=mji.
Damit wurder||`||j||mj nicht angefragt. Tagtj ist dafür gültig.