Authentisierte Verschlüsselung
Ziel:VertraulichkeitundAuthentizitätder Nachricht SpielAuthentizitätAuthA,Π(n)
SeiAein Angreifer gegenΠ = (Gen,Enc,Dec).
1 k ←Gen(1n)
2 c ← AEnck(·)(1n), d.h.AdarfEnck(m)für beliebigem anfragen.
3 SeiQdie Menge derEnck(·)-Anfragen undm:=Deck(c).
AuthA,Π(n) =
(1 fallsm6=⊥undm∈/Q
0 sonst .
Stärkere Definition:SeiQc die Menge der Antworten aufEnck(·) Anfragen. DefiniereSAuthA,Π(n) =1 gdw.m6=⊥undc ∈/Qc. (SAuthA,ΠSpiel einfacher fürAzu gewinnen alsAuthA,Π.)
Sicherheitsspiel Authentizität
AuthA,Π(n) k←Gen(1n)
ci←Enck(mi)
Ausgabe:
(1if Deck(c)∈/Q∪ {⊥}
0else
1n
mi ci c
A
Q={m1, . . . , mq}
Berechnecf¨ur ein m /∈Q.
Authentisierte Sicherheit
DefinitionAuthentizität
Ein VerschlüsselungsverfahrensΠliefertAuthentizitätfalls für alle ppt AngreiferAgilt
Ws[AuthA,Π(n) =1]≤negl(n).
Achtung:CCA-Sicherheit alleine impliziert nicht Authentizität.
DefinitionSicherheit eines Verschlüsselungsverfahrens Ein VerschlüsselungsverfahrenΠliefert authentisierte Sicherheit (ist AE-sicher), falls es CCA-sicher ist und Authentizität liefert.
Auf Englisch: authenticated encryption (AE).
Alternative Sicherheitsdefinition
DefinitionAuthentisierte Sicherheit
VerschlüsselungsverfahrenΠ = (Gen,Enc,Dec)ist AE’-sicher, falls für alle PPT AngreiferAgilt:
|Pr[AEnck(·),Deck(·)(1n) =1]−Pr[AEnc0k(·),Deck0(·)(1n) =1]|=negl(n), mit Wahrscheinlichkeitsraum:k ←Gen(1n)und zufällige Münzwürfe vonA. Die Orakel sind definiert als
Enck0(m) :=Enck(0) Deck0(c) :=
(m fallscAusgabe von AnfrageEnck0(m)war.
⊥ sonst .
Man kann zeigen, dass AE’ Sicherheit äquivalent zur starken AE Sicherheit ist.
Sicherheit von Encrypt-then-authenticate Π
ccaSatzSicherheit vonΠcca
SeiΠ0 = (Gen0,Enc0,Dec0)CPA-sicher undΠM = (GenM,Tag,Vfy)ein sicherer MAC mit eindeutigen Tags. Dann istΠcca= (Gen,Enc,Dec) AE-sicher.
Beweis:
Die CCA-Sicherheit vonΠccawurde bereits gezeigt.
SeiAein Angreifer im SpielAuthA,Πcca(n)mit Erfolgsws(n).
Wir konstruieren daraus einen AngreiferA0 fürΠM. Algorithmus AngreiferA0 fürΠM
EINGABE: 1n, Orakelzugriff aufMack2(·)
1 k1←Gen0(1n)
2 c = (c0,t0)← AEnck1,k2(·)(1n), beiEnck1,k2(m)-Anfrage berechne c0 ←Enck0
1(m),t =Mack2(c0)und antworte mitc = (c0,t).
AUSGABE:c= (c0,t0)
Sicherheit von Encrypt-then-authenticate Π
ccaMac−forgeA0,Π M(n)
k2←GenM(1n)
ti=Mack2(mi)∀i
Ausgabe:
Vrfyk
2(c0, t)
1n
c0i ti
(c0, t)
A0 k1←Gen0(1n)
c0i←Enc0k1(mi) ci= (c0i, ti)
Q0 ={c01, . . . , c0q} Fallsc0∈/ Q0, Ausgabe(c0, t).
1n
mi
ci
c= (c0, t)
A
Q={m1, . . . , mq}
Sicherheit von Encrypt-then-authenticate Π
ccaBeweis:Fortsetzung
SeiQ={m1, . . . ,mq}die Menge derEnck1,k2(·)-Anfragen.
Seienci0die Verschlüsselungen vonmi füri=1, . . . ,q in Schritt 2.
FallsAErfolg hat, so giltm:=Deck1,k2(c)∈/ Q.
Daraus folgtc0 ∈ {c/ 10, . . . ,cq0}=Q0. D.h.t0 ist ein Tag für eine nicht an dasMack2(·)-Orakel angefragte Nachrichtc.
Es folgt
Ws[Mac-forgeA0,ΠM(n) =1]≥Ws[AuthA,Πcca(n) =1] =(n).
Aus der Sicherheit vonΠM folgt(n)≤negl(n).
Anmerkung:
Πccaist AE-sicher fürjedwedesichere Instantiierung vonΠE und ΠM.
Die Notwendigkeit zweier Schlüssel k
1, k
2FaustregelVerwendung verschiedener Schlüssel
Verschiedene Sicherheitsziele sollten durch Wahl verschiedener Schlüssel realisiert werden.
Bsp:Unsicheres Encrypt-then-authenticate durch einen Schlüssel Wir verwenden denselben Schlüsselk fürΠ0 undΠM.
SeiF eine starke Pseudozufallspermutation aufnBits.
D.h.F−1ist ebenfalls eine starke Pseudozufallspermutation.
Wir konstruieren ein CPA-sicheresΠ0 mittels
Enck0(m) =Fk(m||r)fürm∈ {0,1}n2,r ∈R{0,1}n2. Wir konstruieren einen sicheren MACΠM mittels
Mack(c0) =Fk−1(c0)fürc0 ∈ {0,1}n. Encrypt-then-authenticate liefert
c= (c0,t) = (Fk(m||r),Fk−1(Fk(m||r))) = (c0,m||r).
D.h.cgibt die Nachrichtmpreis.
Encrypt-and-authenticate kann unsicher sein
Encrypt-and-authenticate:
c=Enck1,k2(m) := (c0,t) = (Enck0
1(m),Mack2(m)).
D.h. der Tag wird für die Nachrichtmberechnet, nicht fürc0. SeiΠ0 CPA-sicher undΠM = (GenM,Mac,Vrfy)ein sicherer Mac.
Dann istΠ0M mitMack0
2(m) = (m,Mack2(m))ebenfalls sicher, denn gültige Tags(m,t)fürΠ0M liefern gültige TagstfürΠM.
Instantiierung von Encrypt-and-authenticate mitΠ0,Π0M liefert c = (c0,(m,Mack2(m))).
D.h.cgibt die Nachrichtmpreis, obwohlΠ0 undΠ0M sicher sind.
Authenticate-then-encrypt kann unsicher sein
Authenticate-then-encrypt:c=Enc(m) :=Enck0
1(m||Mack2(m)) Kodieren Nachrichtm∈ {0,1}∗ vor Verschlüsselung:
Jede 0 wird als 00 oder 11, jede 1 als 01 oder 10.
Dekodierung in Zweierblöcken: 00 oder 11 zu 0, 01 oder 10 zu 1.
Wir verschlüsselnEnc0k(m) =CMEnc(Kodierung(m)), wobei CMEncdie CPA-sichere Verschlüsselung im Counter-Modus ist:
CMenc(m1. . .m`) = (ctr,m1⊕r1, . . . ,m`⊕r`)mitri =Fk(ctr+i mod2n).
Algorithmus CCA-Angreifer EINGABE:
c =Enck1,k2(m) =CMEnck1(Kodierung(m||Mack2(m))) = (ctr,c1,c2), Deck1,k2(·)-Orakel
Für alle Zweierblöcke inc, die eine Kodierung vonmenthalten:
1 Berechneˆc= (ctr,c1⊕1n,c2)durch Flippen der Bits in inc1.
2 FrageDeck1,k2 Orakel nachm=Deck1,k2(ˆc).
AUSGABE:m
Authenticate-then-encrypt kann unsicher sein
Seic = (ctr,c1,c2)mitc1=Kodierung(m)⊕r1, c2=Kodierung(Mack2(m))⊕r2
Dann ist
cˆ= (ctr,Kodierung(m)⊕r1⊕1n,c2) = (ctr,Kodierung(m)⊕r1,c2) Flippen der Bits wechselt zwischen den zwei Kodierungen vonm.
t =Mack2(m)bleibt gültig, da nur die Kodierung vonmgeändert wird, nichtmselbst.Mack2 wird nicht aufKodierung(m)
angewendet.
Anmerkungen:
Bsp. zeigt, dass Authenticate-then-encrypt i. allg. nicht sicher ist.
Das SSL (Secure Sockets Layer) Protokoll im Internet verwendet eine sichere Variante von Authenticate-then-encrypt.