Lecture 7 Signature Schemes

57
Lecture 9 Chosen-Ciphertext Security Stefan Dziembowski University of Rome La Sapienza BiSS 2009 Bertinoro International Spring School 2-6 March 2009 Modern Cryptography www.dziembowski.net/Studenti/BISS09

description

 

Transcript of Lecture 7 Signature Schemes

Page 1: Lecture 7 Signature Schemes

Lecture 9 Chosen-Ciphertext Security

Stefan DziembowskiUniversity of Rome

La Sapienza

BiSS 2009Bertinoro International Spring School 2-6 March 2009

Modern Cryptography www.dziembowski.net/Studenti/BISS09

Page 2: Lecture 7 Signature Schemes

Plan

1. CCA-security – the motivation and the definition

2. CCA-security in the private-key settings3. CCA-security in the public-key settings

1. a scheme that is efficient and simple,2. a scheme that is even more efficient and

a bit less simple.

Page 3: Lecture 7 Signature Schemes

Problem

How to encode a message m before encrypting it (with RSA, for example)?

m

x := encode(m)

xe mod N

decode(v)

v := zd mod N

z

Page 4: Lecture 7 Signature Schemes

Remember the chosen-plaintext attack?

oracle

has to guess b

m0,m1

c = Enc(pk,mb)

chooses m0,m1

security parameter1n

1. selects random (pk,sk) = Gen(1n)

2. chooses a random b = 0,1

challenge phase:

pk

Page 5: Lecture 7 Signature Schemes

The PKCS #1 v1.5 encoding

We observed that encoding has to be randomized.

This is the encoding that we presented:

00000000 00000002 r 00000000 m

(k - D - 3) random bytes D bytes

k bytes

Page 6: Lecture 7 Signature Schemes

For this, we are going to use a stronger security definition.

Today we present a more “scientific” encoding.

The PKCS #1 v1.5 encoding looks ad-hoc...

This lecture

Page 7: Lecture 7 Signature Schemes

Chosen Ciphertext Attack (CCA)

The adversary may also choose a ciphertext and learn the corresponding plaintext.

Does it make sense?– Aren’t we too paranoid?– How to formalize it?

Page 8: Lecture 7 Signature Schemes

Aren’t we too paranoid?

No!

Bleichenbacher [1998] showed a “practical” chosen ciphertext attack on encoding proposed for the PKCS #1 v.2 standard.

[see also: Bleichenbacher, D., Kaliski B., Staddon J., "Recent results on PKCS #1: RSA encryption standard", RSA Laboratories' bulletin #7, ftp://ftp.rsasecurity.com/pub/pdfs/bulletn7.pdf ]

Why is Blaichenbacher’s attack practical?

Because it assumes that the adversary can get only one bit of information about the plaintext...

Page 9: Lecture 7 Signature Schemes

Bleichenbacher’s attack – the scenario

sk = (N,d)

c1 computesx = c1

d mod Nand checks if x is a correct PKCS #1 v2 encoding

pk = (N,e)

yes/no

. . .

c

Goal:compute cd mod N

Bleichenbacher [1998]:There exists a successful attack that requires k = 220 questions for N = 1024.

ck

yes/no

Page 10: Lecture 7 Signature Schemes

So, chosen ciphertext attacks are practical!

In Bleichenbacher’s attack the adversary could obtain just one bit of information.

Conservative approach:assume that he can get the entire plaintext.

Page 11: Lecture 7 Signature Schemes

Idea

1. Provide a security definition that “covers” this type of an attack.

2. Propose a scheme that is “provably secure” according to this definition.

This will lead to an encoding that is less ad-hoc than PKCS #1 v1.5

Page 12: Lecture 7 Signature Schemes

CCA - security

It makes sense to consider CCA-security in

• private-key settings

• public-key settings more interesting

Page 13: Lecture 7 Signature Schemes

Decryption oracleTo define the CCA-security we consider a

decryption oracle.

skc1

Dsk(c1)

. . .c2

Dsk(c2)

ck

Dsk(ck)

convention:

Dsk(ci) := errorif ci cannot be

decrypted

Page 14: Lecture 7 Signature Schemes

Decryption/encryption oracle

Two types of queries:

(sk,pk)

Decrypt ci

Dsk(ci)

Encrypt mi

Epk(mi)

We assume that also CPA is allowed.

Page 15: Lecture 7 Signature Schemes

CCA-security– the game

oracle

has to guess b

m0,m1

c = Enc(pk,mb)

chooses m0,m1

security parameter1n

1. selects random (pk,sk) = Gen(1n)

2. chooses a random b = 0,1

challenge phase:

pk (in the public-key settings)

CCA-attack

CCA-attack |m0| = |m1|

Here Eve cannot ask for decryption of c.

in the private-key settings: pk = sk

Page 16: Lecture 7 Signature Schemes

CCA-security

Security definition:

We say that (Gen,Enc,Dec) has indistinguishable encryptions under a chosen-ciphertext attack (CCA) if any

randomized polynomial time adversary

guesses b correctly

with probability at most 0.5 + ε(n), where ε is negligible.

Alternative name: CCA-secure

Page 17: Lecture 7 Signature Schemes

CCA in practice (1/2)

Some actions of the receiver may depend on the decrypted message.

For example, the receiver may communicate an error if the message “looks strange”.

(like in the Bleichenbacher’s attack)

Page 18: Lecture 7 Signature Schemes

CCA in practice (2/2)m := “Some top-secret information”

Alice

Alice: c := E(pk,m)

wants to decrypt c

Eve: c’

replies quoting

m’=D(sk,c’)

Alice (pk,sk)

Why Eve cannot just set c’ := c ?Because Bob would get suspicious (why message from Eve has Alice’s name inside?)

replies (in an encrypted way) to Alice quoting m

Page 19: Lecture 7 Signature Schemes

Plan

1. CCA-security – the motivation and the definition

2. CCA-security in the private-key settings3. CCA-security in the public-key settings

1. a scheme that is efficient and simple,2. a scheme that is even more efficient and

a bit less simple.

Page 20: Lecture 7 Signature Schemes

CPA-security does not imply the CCA-security

Informally:To win the game it is enough that Eve is computes some c’ such that

Dec(k,c’) is “related to” Dec(k,c).

(Why? Because then she is allowed to as for it.)

For example: this is possible for any stream cipher!

m0,m1

c = Enc(k,mb)

CCA-attack

Here Eve cannot ask for decryption of c.

Page 21: Lecture 7 Signature Schemes

What to do?

CCA-security in the private-key settings can be achieved by adding authentication.

How to combine authentication with encryption?

We already considered this problem some time ago.

Page 22: Lecture 7 Signature Schemes

Authentication and EncryptionOptions:

• Encrypt-and-authenticate:c ← Enck1(m) and t ← Tagk2 (m)

• Authenticate-then-encrypt:t ← Tagk2 (m) and c ← Enck1(m||t)

• Encrypt-then-authenticate:c ← Enck1(m) and t ← Tagk2 (c)

wrong

better

the best

Page 23: Lecture 7 Signature Schemes

A CCA-secure encryption scheme

(Enc,Dec) – a CPA-secure symmetric encryption scheme(Tag,Vrfy) – a MAC.

Create a new encryption scheme (Enc’,Dec’) where:

• The secret key k has a form k = (k0,k1), where – k0 is a key for (Enc,Dec), and– k1 is a key for (Tag,Vrfy)

• Enc’((k0,k1),m) :=

(Enc(k0,m), Tag(k1,Enc(k0,m)))

• Dec’((k0,k1),m) := decrypt and verify the tag

Page 24: Lecture 7 Signature Schemes

Why is it secure?IntuitionAn adversary cannot create a new valid pair

(Enc(k0,m), Tag(k1,Enc(k0,m)))without knowing k1.So he will always receive an error message from the oracle

(unless he replays the ciphertexts that he already received from the oracle – but this gives him no extra information)

We need one technical assumption:For every m and k there exists exactly one t such that:

Vrfyk(m,t) = yes.

Page 25: Lecture 7 Signature Schemes

Is the “authenticate-then-encrypt” secure?

Authenticate-then-encrypt:t ← Tagk2 (m) and c ← Enck1(m||t)

Not always!There exists (artificial) counter-examples...

Page 26: Lecture 7 Signature Schemes

The first counter-exampleAuthenticate-then-encrypt:

t ← Tagk2 (m) and c ← Enck1(m||t)

Suppose the encryption scheme adds a random bit at the end of the ciphertext.

Enck1(m || Tagk2 (m)) B

Enck1(m || Tagk2 (m)) neg B

Then

is a different ciphertext and the adversary is allowed to ask the oracle to decrypt it.

This example is really artificial. There exist better ones...

Page 27: Lecture 7 Signature Schemes

The second counter-exampleConsider the following transformation

T : {0,1}* → {0,1}*defined on every (x1,x2,...,xn) as

T(x1,x2,...,xn) = (U(x1),U(x2),...,U(xn)), where• U(0) = 00• U(1) = 01, or 10, randomly.This transformation is of course invertible.

Example:

1 1 0 0 1

0 1 1 0 0 0 0 0 0 1

T

Page 28: Lecture 7 Signature Schemes

Remember the stream ciphers?

m

k1

G(k1)

G(k1) xor m

xor

Enc(k1,m)

Page 29: Lecture 7 Signature Schemes

Our new (artificial) encryption schemeTo encrypt a message m do the following:

This scheme is CPA-secure.

T(m)

k1

G(k1)

G(k1) xor T(m)

xor

Enc(k1,m)

Page 30: Lecture 7 Signature Schemes

CCA-security?Suppose we use this encryption scheme with the authenticate-then-encrypt method:

t ← Tagk2 (m) and c ← Enck1(m||t)

T(m, Tagk2 (m))

k1

G(k1)

G(k1) xor T(m, Tagk2 (m))

xor

Enc(k1,m)

Page 31: Lecture 7 Signature Schemes

How does the ciphertext look?

T(m)

pad1

T(Tagk2 (m))

xor

T(m) xor pad1 T(Tagk2 (m)) xor pad2

pad2

Page 32: Lecture 7 Signature Schemes

C’

The attackThe adversary that wants to decrypt the first bit of

C1 C2

can modify the ciphertext by flipping the first two bits:

C1 C2

xor

YY C2

1 1

If the first two bits are 01 or 10 then the corresponding plaintext doesn’t change.

If the first two bits are 00 then the plaintext changes and the tag becomes invalid!

XX

Page 33: Lecture 7 Signature Schemes

C1 C2XX

C1 C2XX

if m’ = error then the first bit of m is equal to 0,otherwise it is equal to 1.

m’

Enc

message m

The same can be done for any other bit.

Page 34: Lecture 7 Signature Schemes

These examples are artificial

It is likely that for many “normal” schemes this combination is secure.

However, these examples show that the authenticate-then-encrypt method cannot be proven secure...

(from the standard assumptions)

Page 35: Lecture 7 Signature Schemes

Plan

1. CCA-security – the motivation and the definition

2. CCA-security in the private-key settings?3. CCA-security in the public-key settings

1. a scheme that is efficient and simple,2. a scheme that is even more efficient and a

bit less simple.

Page 36: Lecture 7 Signature Schemes

How does it look in the public-key settings

There are many constructions of a CCA-secure public-key encryption scheme.

Probably the most famous is the one of Cramer and Shoup:[Ronald Cramer and Victor Shoup: "A practical public key cryptosystem provably secure

against adaptive chosen ciphertext attack." 1998].

It is based on hardness of discrete logarithm and is quite efficient.

Still, many practitioners prefer more efficient schemes (with a weaker security proof).

Page 37: Lecture 7 Signature Schemes

First attempt

Idea: take a symmetric-key CCA-secure scheme (Enc’,Dec’) and use something similar to hybrid encryption.

public key: (N,e) private key: (N,d)

Enc((N,e),m) := (re mod N, Enc’(r,m))

Dec((N,d),(c0,c1)) := Dec’(c0d mod N, c1)

r is random

Page 38: Lecture 7 Signature Schemes

But is it secure?

It may be the case that

• RSA is hard to invert, but• 128 first bits are easy to compute...

Enc((N,e),m) := (re mod N, Enc’(r,m))

Problem

|N| is normally much larger than the length of a key for symmetric encryption.

Typically |N| = 1024 and length of the key is 128.

First idea: truncate.

Page 39: Lecture 7 Signature Schemes

IdeaInstead of truncating – hash!

t – length of the symmetric keyH : {0,1}* → {0,1}t – a hash function

Enc((N,e),m) := (re mod N, Enc’(H(r),m))

Dec((N,d),(c0,c1)) := Dec’((H(c0)d mod N, c1)

But can we prove anything about it?

depends...

Page 40: Lecture 7 Signature Schemes

Which properties should H have?

If we just assume that H is collision-resistant we cannot prove anything...

We have to assume that H “outputs random values on different inputs”.

This can be formalized by modeling H as random oracle.

Remember the Random Oracle Model?

Page 41: Lecture 7 Signature Schemes

Random oracle model

Model the hash function as a random oracle.

H : {0,1}* → {0,1}La completely random

function

x

H(x)

Page 42: Lecture 7 Signature Schemes

Security proof – the intuitionH – a hash function Enc((N,e),m) := (re mod N, Enc’(H(r), m))

Why is this scheme secure in the random oracle model?

Because, as long as the adversary did not query the oracle on r, the value of H(r) is completely random.

To learn r the adversary would need to compute it from re mod N, so he would need to invert RSA.

So (with a very high probability) from the point of view of the adversary H(r) is random.

Therefore the CCA-security of (Enc,Dec) follows from the CCA-security of (Enc’,Dec’).

Page 43: Lecture 7 Signature Schemes

Disadvantages of this methodEnc((N,e),m) := (re mod N, Enc’(H(r), m))

The ciphertext is longer than N even if the message is short.

Therefore in practice another method is used:

Optimal Asymmetric Encryption Padding (OAEP).

Page 44: Lecture 7 Signature Schemes

Plan

1. CCA-security – the motivation and the definition

2. CCA-security in the private-key settings?3. CCA-security in the public-key settings

1. a scheme that is efficient and simple,2. a scheme that is even more efficient and a

bit less simple.

Page 45: Lecture 7 Signature Schemes

Optimal Asymmetric Encryption Padding (OAEP) – the history

• Introduced in:[M. Bellare, P. Rogaway. Optimal Asymmetric Encryption -- How to encrypt with RSA. Eurocrypt '94]

• An error in the security proof was spoted in[V. Shup. OAEP Reconsidered. Crypto ’01]

• This error was repaired in[E. Fujisaki, T. Okamoto, D. Pointcheval, and J. Stern. RSA-OAEP is secure under the RSA assumption. Crypto ’01]

It is now a part of a PKCS#1 v. 2.0 standard.

Page 46: Lecture 7 Signature Schemes

OAEPG,H – hash functions

OAEP(m) :=

m 000...0 random r

G

H

X Y

n/4n/4 n/4

Page 47: Lecture 7 Signature Schemes

How to invert?

m Z

G

H

X Y

check if Z = 000...0

Page 48: Lecture 7 Signature Schemes

RSA-OAEP

private key: (N,d)public key: (N,e)

Enc((N,e),m) = (OAEP(m))e mod N

Dec((N,e),m) = (OAEP-1(m))d mod N

Page 49: Lecture 7 Signature Schemes

Security of RSA-OAEP

Security of RSA-OAEP can be proven if• one models H and G as random oracles• the RSA assumption holds.

We do not present the proof here.

We just mention some nice properties of this encoding.

Page 50: Lecture 7 Signature Schemes

Nice properties of OAEP

• it is invertible• but to invert you need to know (X,Y) completely• for any messages m1,m2,m3,...:

the encodingsOAEP(m1),OAEP(m2),OAEP(m3),...

are independent and random• It is hard to produce a valid (X,Y) “without

knowing m”

Page 51: Lecture 7 Signature Schemes

OAEP is hard to invert if you don’t know X and Y completely.

m Z

G

H

X Y

Page 52: Lecture 7 Signature Schemes

Why?

m Z

G

H

X Y

Assume G and H are random oracles...

Page 53: Lecture 7 Signature Schemes

Any encodings OAEP(m1),OAEP(m2),OAEP(m3),... are independent and random

m 000...0 random r

G

H

X Y

Page 54: Lecture 7 Signature Schemes

m Z

G

H

X Y

requirement: Z = 000...0

It is hard to produce a valid (X,Y) “without knowing m”

Page 55: Lecture 7 Signature Schemes

This last property is useful for CCA-security

Why?

Informally: Eve can produce valid ciphertexts only of those

messages that she knows...

Page 56: Lecture 7 Signature Schemes

Security – the conclusion

If it is hard to produce a valid (X,Y) “without knowing m”, then CCA should not help the adversary.

Because he will only receive the error messages from the oracle.

(that was just an intuition – in reality the proof is complicated)

Page 57: Lecture 7 Signature Schemes

©2009 by Stefan Dziembowski. Permission to make digital or hard copies of part or all of this material is currently granted without fee provided that copies are made only for personal or classroom use, are not distributed for profit or commercial advantage, and that new copies bear this notice and the full citation.