Sie sind auf Seite 1von 21

International Journal of Network Security & Its Applications (IJNSA), Vol.4, No.2, March 2012

EFFICIENT CONDITIONAL PROXY RE- ENCRYPTION WITH CHOSEN CIPHER TEXT SECURITY

S. Sree Vivek 1 , S. Sharmila Deva Selvi 1 , V. Radhakishan 2 , C. Pandu Rangan 1

1 Department of Computer Science and Engineering, Indian Institute of Technology Madras

svivek@cse.iitm.ac.in, sharmila@cse.iitm.ac.in, prangan@iitm.ac.in

2 National Institute of Technology Trichy, India

vrkishan@gmail.com

ABSTRACT

In a proxy re-encryption (PRE) scheme, Alice gives a special information to a proxy that allows it to transform messages encrypted under Alice's public key into a encryption under Bob's public key such that the message is not revealed to the proxy. In [14], Jian Weng and others introduced the notion of conditional proxy re-encryption (C-PRE) with bilinear pairings. Later, a break for the same was published in [17] and a new C-PRE scheme with bilinear pairings was introduced. In C-PRE, the proxy also needs to have the right condition key to transform the ciphertext (associated with a condition set by Alice) under Alice's public key into ciphertext under Bob's public key, so that Bob can decrypt it. In this paper, we propose an efficient C-PRE scheme which uses substantially less number of bilinear pairings when compared to the existing one [17]. We then prove its chosen-ciphertext security under modified Computational Diffie-Hellman (mCDH) and modified Computational Bilinear Diffie-Hellman (mCBDH) assumptions in the random oracle model.

KEYWORDS

Random Oracle Model, Proxy Re-Cryptography, Conditional Proxy Re-encryption, Chosen Ciphertext Security.

1. INTRODUCTION

Encryption is used as a building block of any application requiring confidentiality. Let pk i and pk j be two independent public keys. As pointed out by Mambo and Okamato in [15], it is a common situation in practice where a data encrypted under pk i is required to be encrypted under pk j (j i). When the holder of sk i is online, E i (m) is decrypted using sk i and then message m is encrypted under pk j giving E j (m). But in many applications like encrypted mail forwarding, secure distributed file systems, and outsourced filtering of encrypted spam, when the holder of sk i is not online, this has to be done by an untrusted party.

In 1998 Blaze, Bleumar, and Strauss [9] introduced the concept of proxy re-encryption (PRE).

A re-encryption key (rk i,j ) is given to a potentially untrusted proxy so that the proxy can

transform a message m encrypted under public key pk i into an encryption of the same message

m under a different public key pk j without knowing the message. A PRE scheme can be of two

types - unidirectional and bidirectional. The former is a scheme in which a re-encryption key (rk i j ) can be used to transform from pk i to pk j but not vice versa and the latter is a scheme in which the same re-encryption key (rk i j ) can be used to transform from pk i to pk j and vice versa. The re-encryption algorithm can be of two types - single hop, in which the re-encrypted ciphertext cannot be further re-encrypted and multi hop, in which the re-encrypted ciphertext can be further re-encrypted.

International Journal of Network Security & Its Applications (IJNSA), Vol.4, No.2, March 2012

PRE can be used in many applications, including simplification of key distribution [9], key escrow [13], multicast [19], distributed file systems [3, 5], security in publish/subscribe systems [4], secure certified email mailing lists [20, 23], the DRM of Apple's iTunes [22], interoperable architecture of DRM [21], access control [11], and privacy for public transportation [7]. Hohenberger and others published a result of securely obfuscating re-encryption [16], which is the first positive result for obfuscating an encryption functionality. Shao and Cao have proposed a unidirectional PRE scheme without pairing [2]. Matthew Green and Giuseppe Ateniese have proposed a PRE scheme for ID-based cryptosystems [18].

Ran Canetti and Susan Hohenberger proposed a definition of security against chosen-ciphertext attacks for PRE schemes and presented a scheme that satisfied the definition [1]. In 2009, Jian Weng and others [14] introduced the concept of C-PRE, whereby Alice has a fine-grained control over the delegation. As a result, Alice can flexibly assign Bob the decryption capability based on the conditions attached to the messages using a proxy. For example, suppose Alice is on a vacation. She can make Bob to read only those messages which have the keyword “urgent” in their subject. This flexible delegation is obviously not possible with PRE schemes. In this paper, two separate keys are used - a partial re-encryption key and a condition key. The message can be delegated by the proxy only if both the keys are known.

Later in 2009, Jian Weng and others published a break of the scheme in [14] and gave a new scheme for C-PRE [17], which combines the re-encryption key and the condition key into a single key, which is then used for re-encryption. Also Cheng-Kang Chu and others in [8] introduced a generalized version of C-PRE named conditional proxy broadcast re-encryption (CPBRE), in which the proxy can re-encrypt the ciphertexts for a set of users at a time.

In this paper, we propose an efficient C-PRE scheme (single-hop and unidirectional) which uses significantly less number of bilinear pairings when compared to the existing schemes in [14] and [17]. Our scheme, as in [14], uses two separate keys for re-encryption.

1.1. Our Results

Let us briefly describe a C-PRE scheme. A C-PRE scheme involves a delegator (say user U i ), a delegatee (say user U j ) and a proxy. A message sent to U i with condition w is encrypted by the sender using both U i ’s public key and w. To re-encrypt the message to U j , the proxy is given the re-encryption key (rk i j ) and the condition key (ck i,w ) corresponding to w. Both the keys can be generated only by U i . These two keys form the secret trapdoor to be used by the proxy to perform translation. Proxy will not be able to re-encrypt cipher texts for which the right condition key is not available. Thus U i can flexibly assign U j the decryption rights by setting condition keys properly. The scheme works in practice as follows: the message encrypted for U i is first handled by proxy and under appropriate conditions the proxy transforms the ciphertext into a ciphertext for U j . However, proxy will obtain no information about the original message. While it is some what easier to design a PRE without pairing, designing C-PRE requires pairing based operations crucially. We have used a few constructions from [12] which drastically reduces the number of bilinear pairings. Table 1 compares the number of bilinear pairings and exponentiations between the scheme in [17] and our scheme.

Table 1. Computational Complexity Comparison

Algorithm

Scheme in [17]

Our Scheme

BP

EXP

BP

EXP

Encryption case 1

1

4

0

0

Encryption case 2

1

3

1

6

Re-Encryption

3

4

1

3

Decryption case 1

3

3

1

4

Decryption case 2

1

1

0

6

Total

9

15

3

19

BP Bilinear Pairings, EXP Exponentiations.

180

International Journal of Network Security & Its Applications (IJNSA), Vol.4, No.2, March 2012

Encryption case 1 refers to the encryption without the condition. Encryption case 2 refers to the encryption with the condition. Decryption case 1 refers to the decryption of the re-encrypted ciphertext (first level ciphertext) and Decryption case 2 refers to the decryption of the encrypted ciphertext (second level ciphertext).

Although the number of exponentiations in our scheme is slightly more, it is insignificant when compared to the reduction in number of bilinear pairings. Thus, our scheme is more efficient than the existing one. We then formally prove the security of our scheme. We have slightly modified the security model in [14], as discussed in Section 3.

The C-PRE scheme in [14] has a break as given in [17]. Scheme in [17] has combined the two keys into a single key. Having the keys separate has an advantage. The delegation power of the proxy can be controlled. One of the two keys can be given to the proxy for partial re-encryption and the other key can be given to a third party for full re-encryption. Since the scheme in [14] has a break, our scheme is the only existing scheme having this unique property.

2. PRELIMINARIES

Bilinear Groups and Bilinear Pairings: Let G and G T be two cyclic multiplicative groups with the same prime order q. A bilinear pairing is a map e : G × G G T with the following properties.

Bilinearity: We have

, g

Non-degeneracy: There exist g 1 , g 2 G such that eˆ(g , g )

eˆ(g

a

1

b

2

)

=

eˆ(g , g

1

2

)

ab

g , g

1

2

G

1

and

a,b Z

2

1 ;

Computability: There exists an efficient algorithm to compute

eˆ(g ,g

1

2

)

*

q

;

g ,g

1

2

G

.

Modified Computational Diffie-Hellman Problem: Let G be a cyclic multiplicative group with a prime order q. Let g be the generator of G, The mCDH problem in G is as follows:

An algorithm A has an

advantage ε in solving mCDH in G if

1

Given (g,g ,g ,g

a

)

a

b

for

some a,

b

Z

*

q

, compute W =

g ab

G.

Pr

A

(g, g

1

a

, g

a

, g

b

)

=

g

ab

ε

where the probability is over the random choice of a, b

the random bits of A.

Z

*

q

, the random choice of g G and

Modified Computational Bilinear Diffie-Hellman Problem: Let G and G T be two cyclic multiplicative groups with the same prime order q. Let e : G × G G T be an admissible bilinear map and let g be the generator of G. The mCBDH problem in (G, G T , e) is as follows:

Given (g,g

G T . An algorithm A

has an advantage in solving mCBDH in (G, G T , e) if

1

a

,g

a

,g

b

,g

c

)

for some a, b, c

Z

*

q

, compute W =

eˆ(g, g)

abc

Pr[ (g,g

A

1

a

,g

a

,g

b

,g

c

)

=

eˆ(g,g)

abc

]

ε

where the probability is over the random choice of a, b, c

and the random bits of A.

Z *

q

, the random choice of g G

3. MODEL OF CONDITIONAL PROXY RE-ENCRYPTION

We give the definitions and security notions for C-PRE systems in this section.

3.1. Definition of C-PRE systems

A unidirectional C-PRE scheme consists of seven algorithms which are described as follows:

181

International Journal of Network Security & Its Applications (IJNSA), Vol.4, No.2, March 2012

Global Setup (λ): The global setup algorithm takes a security parameter λ as input and outputs the global parameters param. The parameters in param are implicitly given as input to the following algorithms.

KeyGen (i): The key generation algorithm takes the user index i as input and generates a public key(pk i ) and a secret key(sk i ) for user U i .

ReKeyGen (sk i , pk j ): The partial re-encryption key generation algorithm takes a secret key sk i and another public key pk j as input and outputs the partial re-encryption key rk i j . This algorithm is run by U i . Here sk j is not taken as input which indeed makes the scheme unidirectional.

CKeyGen (sk i , w): The condition key generation algorithm takes a secret key sk i and a condition w as input and outputs the condition key ck i, w . This algorithm is run by U i .

Encrypt (pk, m, w): The encryption algorithm takes a public key pk, a message m and a condition w as input and outputs the ciphertext ζ associated with w under pk. Here m M where M denotes the message space.

ReEncrypt (rk i j , ck i, w ,ζ i ): The re-encryption algorithm takes a partial re-encryption key rk i j , a condition key ck i, w associated with condition w and a ciphertext ζ i under the public key pk i as input and outputs the re-encrypted ciphertext ζ j under the public key pk j . This algorithm is run by the proxy.

Decrypt (sk, ζ): The decryption algorithm takes a secret key sk and a ciphertext ζ as input and outputs either a message m M or the error symbol .

Correctness: For any m M, any condition w, any (pk i , sk i ) KeyGen (i), (pk j , sk j ) KeyGen (j), and ζ i = Encrypt (pk i , m, w), Pr [Decrypt(sk i , ζ i ) = m] = 1, and Pr [Decrypt(sk j , ReEncrypt (rk i, j , ck i, w , ζ i )) = m] = 1. while for any other condition wand user jwith w′ ≠ w and j′ ≠ j, we have Pr [Decrypt(sk j , ReEncrypt (rk i, j , ck i, w , ζ i )) = ] = 1neg(λ) Pr [Decrypt(sk j , ReEncrypt (rk i, j , ck i, w , ζ i )) = ] = 1neg(λ).

3.2 Security Notions

The following game between an adversary A and a challenger C is used to define the semantic security of our C-PRE scheme against chosen ciphertext attacks.

Setup. C takes a security parameter λ and runs the algorithm GlobalSetup(λ) and gives the resulting global parameters param to A. Phase 1. A adaptively issues queries q 1 , …, q m where q i is one of the following:

Uncorrupted key generation query: C first runs algorithm KeyGen (i) to obtain the public/secret key pair (pk i , sk i ), and then gives pk i to A.

Corrupted key generation query: C first runs algorithm KeyGen (j) to obtain the public/secret key pair (pk j , sk j ), and then gives (pk j , sk j ) to A.

Partial re-encryption key generation query (pk i , pk j ): C runs the algorithm ReKeyGen(sk i , pk j ) and returns the generated re-encryption key rk i j to A. Here sk i is the secret key corresponding to pk i .

Condition key generation query (pk i , w): C runs the algorithm CKeyGen(sk i , w) and returns the generated condition key ck i, w to A.

182

International Journal of Network Security & Its Applications (IJNSA), Vol.4, No.2, March 2012

Re-encryption query (pk i , pk j , w, ζ i ): C runs the algorithm ReEncrypt(ReKeyGen(sk i , pk j ), CKeyGen(sk i , w), ζ i ) and returns the generated ciphertext ζ j to A.

Decryption query (pk, w, ζ) or (p k , ζ): C runs the algorithm Decrypt(sk, ζ) and returns its result to A. Here (pk, w, ζ) and (pk, ζ) are queries on original ciphertexts and re-encrypted ciphertexts respectively.

For the last four queries it is required that pk, pk i and pk j are generated beforehand by the KeyGen algorithm.

Challenge. Once A decides Phase 1 is over, it outputs a target public key pk i* , a target condition w * and two equal-length plaintexts m 0 , m 1 M. C flips a random coin δ ∈ {0, 1}, and sets the challenge ciphertext to be ζ * = Encrypt(pk i* , m δ , w * ), which is sent to A.

Phase 2: A adaptively issues queries as in Phase 1, and C answers them as before.

Guess: Finally, A outputs a guess δ′ ∈ {0, 1} and wins the game if δ′ = δ. Adversary A is subject to the following restrictions during the above game.

1. A cannot issue corrupted key generation queries on i* to obtain the target secret key sk i* .

2. A can issue decryption queries on neither (pk i* , w * , ζ * ) nor (pk j , ReEncrypt(rk i* j, ck i*,w* , ζ * )).

3. A cannot issue re-encryption queries on (pk i* , pk j , w * , ζ * ) if pk j appears in a previous corrupted key generation query.

4. A cannot obtain the partial re-encryption key rk i* j if pk j appears in a previous corrupted key generation query.

We refer to the above adversary A as an IND-CPRE-CCA adversary. A’s advantage in attacking

our CPRE scheme is defined as

taken over the random coins consumed by the adversary and the challenger. As in [14], we also distinguish between two types of IND-CPRE-CCA adversaries as follows:

where the probability is

Adv

C

PRE,

A

IND

CPRE

CCA

=

[

Pr δ

′ =

δ

]

1/2

,

Type I IND-CPRE-CCA adversary: In the game, adversary A does not obtain the re- encryption key rk i* j with pk j corrupted.

Type II IND-CPRE-CCA adversary: In the game, adversary A does not obtain both the condition key ck i*, w* and the re-encryption key rk i* j with pk j corrupted.

4. AN EFFICIENT C-PRE SCHEME

Here we present our efficient C-PRE scheme and then prove its security.

4.1 Construction

Our proposed scheme consists of the following seven main algorithms and one auxiliary algorithm for checking the validity of the ciphertext.

Global Setup (λ) : This algorithm takes the security parameter λ as input. Then two primes p and q are chosen such that q | p1 where q is a λ bit prime. Then the algorithm generates (q, G, G T , e) where G and G T are two cyclic groups with prime order q and e is a bilinear pairing e : G

with order q. Choose

hash functions as follows:

× G G T . Let g be the generator of group G, which is a subgroup of

Z *

q

183

International Journal of Network Security & Its Applications (IJNSA), Vol.4, No.2, March 2012

H :{0,1}

H

l

0

×

1

5

: G Z

*

q

{0,1}

,

H

6

l

1

Z

:{0,1}

*

q

*

,

H

2

:{0,1}

*

Z

*

q

×G ×G G

, and

H

7

,

:

G

H

T

3

:

G

{0,1}

{0,1}

l

0

+l

1

.

l

0

+l

1

,

H

4

:{0,1}

*

Z

*

q

,

param = ((q, G, G T , e), g, H 1 ,

{0,1}

l

0

.

, H 7 ). l 0 and l 1 are determined by λ and the message space M is

KeyGen (i): This algorithm randomly picks sk i = (x i,1 , x i,2

$

Z

*

q

)

and sets pk i = (g

x

i ,1

, g

x

i 2

).

ReKeyGen(sk i , pk j ) : The re-encryption key rk i j is generated as follows:

$

$

1.

2. Compute V = g v and W = H 3 (

Pick

h

{0,1}

l

0

and

π

{0,1}

l 1 and compute v = H 1 (h, π).

pk

v

j,2

) (h || π).

3.

Compute

rk

(1)

i

j

=

h

x

i,1

H (pk

5

i,2

)

+

x

i,2

and return rk

ij

=

(rk

(1)

ij

, V,W).

1

x i,1

. Encrypt(pk i , m, w) : This algorithm encrypts a message m with condition w for pk i as follows:

CKeyGen(sk i , w) : This algorithm outputs the condition key ck i, w = H (w,pk )

6

i

1.

Pick s,

$

z Z

*

q

and compute B =

pk

s

i,1

and D =

pk

z

i,1

.

r

$

′←

2. Pick

3. Compute C = H 3 (g r ) (m || r) H

4. Compute E = s + zH 4 (A, B, C, D) mod q.

5. Output the ciphertext ζ i = (A, B, C, D, E).

{0,1}

l

1

. Compute r = H 2 (m, r, pk i , w) and A

(w, pk ))

7

(eˆ(g, H

6

i

=

s

).

(pk

H (pk

5

i,1

i,2

)

pk

i,2

)

r

.

Validity(): This algorithm implicitly takes all the inputs of the calling algorithm as its input and works as follows:

If

pk

E

i,1

B.D

H (A,B,C,D)

4

return .

ReEncrypt(rk i j , ck i, w , ζ i , pk i , pk j ): This algorithm re-encrypts ζ i to ζ j as follows:

1. Return if Validity() returns .

2.

3. Output the transformed ciphertext as ζ j = (A, C, V, W).

Compute A=

A

rk

(1)

i

j

and C = C H (eˆ(B,ck

7

i,w

)) .

Decrypt(sk i , ζ i ): Parse the ciphertext ζ i . Decryption of ζ i is done as follows:

− ζ is the original ciphertext in the form ζ = (A, B, C, D, E).

1.

2.

3.

Return if Validity() returns .

Compute (m || r) = C H (A

If

1

H

2

3

x

i,1

(m,r ,pk ,w)

i

5

i,2

+

x

i,2

)

H (eˆ(B, H (w, pk ))

7

6

i

holds, return m; else return .

H

(pk

)

)

− ζ is the re-encrypted ciphertext in the form ζ = (A, C, V, W).

A

=

(pk

H (pk

5

i,1

i,2

)

pk

i,2

x

1

i,1

1. Compute (h || π) = W H (V

2.

sk

i,2

)

3

If

V = g

1

H (h,π)

and

A

′ =

g

hH (m,r ,pk ,w)

2

i

and (m || r) = C′ ⊕ H

3

(A

1

h

) .

hold, return m; else return .

)

.

184

International Journal of Network Security & Its Applications (IJNSA), Vol.4, No.2, March 2012

Correctness: The proxy must have both the right re-encryption key and the condition key to re- encrypt a ciphertext to the delegatee. Otherwise, the delegatee will not be able to decrypt the ciphertext with non-negligible probability. Suppose a proxy has the re-encryption key rk i j and the condition key ck i, w (w′ ≠ w), he will generate the re-encrypted ciphertext ζ j = (A, C, V, W) as

A

C

= g rh = H 3 (g r ) (m || r)

H

= H 3 (g r ) (m || r)

= H 3 (g r ) (m || r)

H

H

V = g v

W = H

3

(pk

v

j,2

)

(h || π).

7

7

7

(eˆ(g, H (w,pk )) )

6

i

s

(eˆ(g, H

(eˆ(g, H (w,pk )) )

)

6

6

(w, pk ))

i

i

s

s

H (eˆ(B,ck

7

H (eˆ(g

7

sx

i,1

H

7

(eˆ(g, H

6

i,w

, H

))

6

(w , pk )

i

(w ,pk )) )

i

s

x

1

i,1

))

1

in the

decryption algorithm will not reveal the message m with overwhelming probability. The resulting value will also not pass the condition checks. Hence the delegatee cannot decrypt the re-encrypted ciphertext with high probability.

Note that the two H 7 terms do not cancel each other implying that C′ ⊕ H (A )

g

3

Security intuitions: It is impossible for the adversary to manipulate the ciphertext. This is because the validity of the original ciphertext can be publicly verified by the Validity() algorithm. Thus our scheme can ensure chosen-ciphertext security. Even if the conditional key w is changed to another value wby the adversary, the scheme is secure because w is a parameter for H 2 and when w changes the value of r also changes.

4.2. Security

The proposed C-PRE scheme is IND-CPRE-CCA secure in random oracle model. This follows directly from Theorem 1 and Theorem 2.

Theorem 1. Our scheme is IND-CPRE-CCA secure in the random oracle model, assuming the mCDH assumption holds in group G and the Schnorr signature is EUF-CMA secure.

Concretely, if there exists a Type I adversary A, who asks at most

, 7}, and breaks the (t, q u , q c , q rk , q ck , q re , q d , ε)-IND-CPRE-CCA of our

scheme, then, for any 0 < ψ < ε, there exists

H i with i {1, 2,

H random oracle queries to
i

q

1.

2.

either an algorithm B which can break the (t, ε′)-mCDH assumption in G with

O

t

′ ≤

t

ε ′ ≥

+

+

1

(q

(2q

H

1

c

q

+

ε ψ

+

+

H

2

2q

u

+

q

H

3

+

q

H

4

+

q

H

5

+

q

H

6

+

q

H

7

6q

rk

q

H

+

q

ck

2

+

q

H

+

4

(q

re

+

(q

+

H

2

+

1)(2q

q

d

+

H

3

)(q

+

q

(2q

+

re

u

+

q

c

+

q

rk

+

H

2

q

d

+

)

2q

H

3

)q

d

2(q

re

+

2

l

0

+

l

1

+

q

)) t

q

d

ck

exp

)

q

+

re

+

q

d

(q

re

+

d

)

q

q

H

3

ε(1 q )

+

rk

q

(1)

) t

p

where t exp denotes the running time of an exponentiation in group G and t p denotes the running time of a pairing in groups (G, G T ).

or an attacker who breaks the EUF-CMA security of the Schnorr signature with advantage ψ within time t.

185

International Journal of Network Security & Its Applications (IJNSA), Vol.4, No.2, March 2012

PROOF. Without loss of generality, we assume that the Schnorr signature is (t, ψ)-EUF-CMA secure for some probability 0 < ψ < ε. If there exists a t-time adversary A who can break the IND-CPRE-CCA security of our scheme with advantage ε-ψ, then we show how to construct an

the

algorithm

(t, ε′)-mCDH assumption in G. Suppose B is given as input a challenge tuple (g,g ,g ,g )

B

which

can

break

1

a

a

b

$
*

q

a, b Z

with unknown

H 1 ,

adversary A in the following way:

. Algorithm Bs goal is to output g ab . Algorithm B first gives (q, G, g,

, H 7 , l 0 , l 1 ) to A. Next, B acts as a challenger and plays the IND-CPRE-CCA game with

Hash Oracle Queries: At any time adversary A can issue random oracle queries H i with i {1,

7}. Algorithm B maintains seven hash lists and responds as below:

7} which are initially empty,

H

list

i

with i {1,

,

,

1. H 1 queries: If H 1 (h, π) has appeared on the

H

list

i

in a tuple (h, π, v), return the predefined

value v. Otherwise, choose

π) = v.

$
*

q

v Z

and add tuple (h, π, v) to

H

list

i

and respond with H 1 (h,

2. H 2 queries: If H 2 (m, r, pk i , w) has appeared on the

H list

2

in a tuple (m, r, pk i , w, r), return

the predefined value r. Otherwise, choose

and respond with H 2 (m, r, pk i , w) = r.

$

r Z

3. H 3 queries: If H 3 (R) has appeared on the

H list

3

*

q

and add tuple (m, r, pk i , w, r) to

H

list

2

[R

G]

in

a

tuple (R, β), return the

predefined value β. Otherwise, choose

with H 3 (R) = β.

β

$ l

{0,1}

0

+l

1

4. H 4 queries: If H 4 (A, B, C, D) has appeared on the

, add tuple (R, β) to

H

list

3

and respond

H list

4

in a tuple (A, B, C, D, γ), return

the predefined value γ. Otherwise, choose

respond with H 4 (A, B, C, D) = γ.

5. H 5 queries: If H 5 (pk) has appeared on the

$
*

q

γ Z

, add tuple (A, B, C, D, γ) to

H

list

4

and

H

list in a tuple (pk, τ), return the predefined

5

value τ. Otherwise, choose

τ.

$
*

q

τ Z

, add tuple (pk, τ) to

H

list

5

and respond with H 5 (pk) =

6. H 6 queries: If H 6 (w, pk) has appeared on the

H list

6

in

a tuple

(w, pk, t,

S), return the

$
*

q

t Z

predefined value S. Otherwise, choose

to

H list

6

and respond with H 6 (w, pk) = S.

, compute S = g t , add the tuple (w, pk, t, S)

7. H 7 queries: If H 7 (U) has appeared on the

predefined value η. Otherwise, choose respond with H 7 (U) = η.

η

H

list [U G T ] in a tuple (U, η), return the

7

$ +l

{0,1}

l

0

1

,

add tuple (U,

η)

to

H

list

7

and

Phase 1. In this phase, adversary A issues a series of queries subject to the restrictions of the Type I IND-CPRE-CCA game. B maintains three lists K list , R list and C list which are initially empty, and answers these queries for A as follows:

186

International Journal of Network Security & Its Applications (IJNSA), Vol.4, No.2, March 2012

x

i,1

, x

i,2

$
*

q

Z

i,2

, x

)

i,2

; else pk

$

Z

i =

. Next, using the Coron's

technique [6], it flips a biased coin c i {0, 1} that yields 1 with probability θ and 0

otherwise. If c i = 1, it defines pk

Then, it

adds the tuple (pk i , x i, 1 , x i, 2 , c i ) to K list and returns pk i .

) , c i

= ‘’. Then, it adds the tuple (pk i , x i, 1 , x i, 2 , c i ) to K list and returns (pk i , (x i, 1 , x i, 2 )).

Re-encryption key generation query (pk i , pk j ). If R list has an entry for (pk i , pk j ), return the predefined re-encryption key to A. Otherwise, algorithm B acts as follows:

Uncorrupted key generation query. B picks

(g

x

i,1

, g

x

((g

1 1

a )

x

i,1

,(g

a

)

i =

x

i,2

(g

)

x

.

i,1

i =

Corrupted key generation query. B picks

x

i,1

*

q

and defines pk

, g

x

i,2

1. Recover tuples (pk i , x i, 1 , x i, 2 , c i ) and (pk j , x j, 1 , x j, 2 , c j ) from K list .

2.

$

$

Pick

(h || π).

h

{0,1}

l

0

and

π

{0,1}

l

1

; compute v = H 1 (h, π), V = g v and W = H (pk

3

v

j,2

)

3. Construct the first component

rk

(1)

i

j

according to the following cases:

c i = 1 or c i = ‘’: Define

rk

(1)

i

j

=

h

x

i,1

H (pk

5

i,2

)

+

x

i,2

.

(c i = 0 c j = ‘’): Output “failure” and abort.

(c i = 0 c j = 1) or (c i = 0 c j = 0): Pick

rk

(1)

i

j

$

Z

*

q

.

4. If B does not abort, add (pk , pk , (rk

i

j

(1)

ij

, V, W),h)

into list R list , return

(rk

(1)

ij

, V, W)

.

Condition key query (pk i , w). If C list has an entry for (pk i , w), return the predefined condition key ck i, w to A. Otherwise algorithm B acts as follows:

1. Recover tuples (pk i , x i,1 , x i,2 , c i ) from K list and (w, pk i , t, S) from

2. It constructs the condition key ck i,w for adversary A according to the following cases:

H list

6

.

S

x

1

i,1

.

c i = 1 or c i = ‘’: Algorithm B responds with ck i,w =

c i = 0: Algorithm B responds with ck i,w =

(g

a

)

x

1

i,1

which is same as

3. Add (pk i , w, ck i,w ) to C list .

1

S

sk

i,1

.

Re-encryption query (pk i , pk j , w, ζ i )}. Algorithm B parses ζ i = (A, B, C, D, E). Return if

Validity() returns . Otherwise it constructs the condition key ck i,w by issuing a condition key query (pk i , w) and does the following:

1. Recover tuples (pk i , x i,1 , x i,2 , c i ) and (pk j , x j,1 , x j,2 , c j ) from K list .

2. If (c i = 0 c j = ‘’) does not hold, issue a re-encryption key generation query (pk i , pk j ) to obtain rk i j , and then ReEncrypt(rk i j , ck i,w , ζ i , pk i , pk j ) to A.

3. Else B does the following.

$

$

Compute V = g v and W = H (pk

Pick

h

{0,1}

l

0

and

π

{0,1}

l 1 and compute v = H 1 (h, π).

3

v

j,2

)

(h || π).

Since the ciphertext is valid, issue a decryption query (pk i , ζ i ) and get message m.

Compute A= g rh and C= H 3 (g r ) (m || r).

$

′←

Pick

r

{0,1}

l 1 . Compute r = H 2 (m, r, pk i , w).

187

International Journal of Network Security & Its Applications (IJNSA), Vol.4, No.2, March 2012

Add tuple (h, π, v) to

H

list

i

and tuple (m, r, pk i , w, r) to

present in their respective lists.

H

list

2

, if they are not

Return (A, C, V, W) to A as the re-encrypted ciphertext.

Decryption query (pk i , w, ζ i ) or (pk i , ζ i ). B recovers tuple (pk i , x i,1 , x i,2 , c) from K list . If c =

and returns the result to A.

1 or

Otherwise, algorithm B works according to the following two cases:

c = ‘’, algorithm B

runs Decrypt((x i,1 , x i,2 ), ζ i ))

• ζ i is an original ciphertext ζ I = (A, B, C, D, E):

1. Return if Validity() returns .

2. Construct condition key ck i,w as in the condition key query and define C = C′ ⊕

H (eˆ(B,ck

7

i,w

))

.

3. Search tuples (m, r, pk, w, r)

H

list

2

and (R, β)

w, β ⊕ (m || r) = C, g r = R and (pk

H (pk

5

i,1

i,2

)

pk

i,2

)

r

=

H list

3

A

.

such that pk i = pk, w =

4. If yes, return m to A. Otherwise, return .

• ζ i is a re-encrypted ciphertext ζ i = (A, C, V, W):

1. Search tuples (m, r, pk, w, r)

β′)

β′ ⊕ (h || π) = W and

H list

3

pk

v

i,2

=

R

.

and (R,

such that pk i = pk, w = w, g rh = A, g r = R, β ⊕ (m || r) = C, g v = V,

H list

2

, (h, π, v)

H list

1

, (R, β)

H

list

3

2. If yes, return m to A. Otherwise, return .

Challenge. When A decides that Phase 1 is over, it outputs a public key pk i* = (pk i*,1 , pk i*,2 ), a

condition w * and two equal-length messages m 0 , m 1 follows:

. Algorithm B responds as

{0,1} l +l

0

1

1. Recover tuple (pk i* , x i*,1 , x i*,2 , c * ) from K list . If c * 0, B outputs “failure” and aborts.

Otherwise, B proceeds to execute the following steps.

*

*

, z

$
*

$
*

q

Z

{0,1}

A

*

=

(g

2. Pick

Pick

s

C

and compute

l

0

+l

1

b

)

.

x i*,1

H (pk

5

i*,2

)

+ x

i*,2

B

*

1

= (g

* *

a )

s x

i*,1

and

)

z x

i*,1

.

D

*

= (g

1

a

3.

4. Compute

5. Construct the condition key ck i*,w* , as in the condition key query.

and E * = s * + z * H 4 (A * , B * , C * , D * ) mod q.

 

$

$

6. Pick a random bit δ and

{0,1}

and

r

′ ←

{0,1}

l 1 . Implicitly define H 2 (m δ , r, pk i* , w * ) = ab

H 3 (g ab ) = C *

(m δ || r) H

7

*

(eˆ(B , ck

i*,w*

))

(note that B knows neither ab nor g ab ).

7. Return ζ * = (A * , B * , C * , D * , E * ) as the challenged ciphertext to adversary A.

Observe that the challenge ciphertext ζ * is identically distributed as the real one from the construction. To see this, letting r * = ab, we have

A * =

=

B * =

C * = H 3 (g ab ) (m δ || r)

(g

b

)

x

i*,1

H (pk

5

i*,2

)

+

x

i*,2

(pk

((g

H (pk

5

i*,1

i*,2

1

a

)

s*x

i*,1

)

pk

i*,2

)

r*

=

pk

s*

i*,1

=

= H 3 (g ab ) (m δ || r)

((g

H

H

7

7

1

a

)

x

i*,1

H (pk

5

i*,2

)+x

i*,2

*

(eˆ(B , ck

i*,w*

))

1

(eˆ((g )

a

s*x

i*,1

, (g

a

)

ab

1

)

x

i*,1

))

188

International Journal of Network Security & Its Applications (IJNSA), Vol.4, No.2, March 2012

= H 3 (g ab ) (m δ || r)

= H 3 (g r* ) (m δ || r)

H

H

7

7

(eˆ(g, g

y

(eˆ(g, H

6

D * = E *

(g

1 z*x

a

)

i*,1

=

pk

z*

i*,1

= s * + z * H 4 (A * , B * , C * , D * ) mod q

)

s*

)

(w

*

, pk

i*,w*

))

s*

)

Phase 2. Adversary A continues to issue queries as in Phase 1, with the restrictions prescribed in the IND-CPRE-CCA game. Algorithm B responds to these queries for A as in Phase 1.

Guess. Eventually, adversary A returns a guess δ′ ∈ {0, 1} B. Algorithm B randomly picks a

tuple (R, β) from the

H list

3

and outputs R as the solution to the given problem instance.

Analysis. Now let's analyse the simulation. From the constructions of H 1 , H 5 , H 6 and H 7 , it is

be the event that A queried

clear that the simulations of these oracles are perfect. Let

(A * , B * , C * , D * ) to H 4 before challenge phase. The simulation of H 4 is perfect as long as

did not occur. Since C * is randomly chosen from

by the challenger in the challenge

AskH

*

4

AskH

*

4

{0,1} l +l

0

1

phase, we have

*

Pr[AskH ] =

4

q

H

4

2

l

0

+l

1

. Let

AskH

*

2

be the event that (m δ ,r, pk i* , w * ) has been

queried to H 2 and

and H 3 are perfect as long as in the challenge phase.

AskH be the event that g ab has been queried to H 3 . The simulations of H 2

did not occur, where δ and rare chosen by B

*

3

AskH

*

2

and

AskH

*

3

B’s responses to A’s uncorrupted/corrupted key generation queries are perfect. Let Abort denote the event of B’s aborting during the simulation of the re-encryption key queries or in the

.

challenge phase. We have Pr[¬Abort] θ

q

rk

(1

θ)

, which is maximized at

θ

opt

=

q rk

1

+

q

rk

1

Using θ opt , the probability Pr[¬Abort] is at least e(1

+ q

rk

)

.

The simulation of the re-encryption key queries is same as the real one, except for the case (c i =

is randomly chosen. If Abort does

0 c j = 1) or (c i = 0 c j = 0), in which the component

not happen, this is computationally indistinguishable from the real world because:

rk

(1)

i

j

1. Secret key sk j is unknown to A since c j ’.

2. h is encrypted under pk j using the “hashed” ElGamal encryption scheme. So, if A can

, it means that A can determine (V, W) is an encryption of h

distinguish rk i j from

or h, which breaks the CCA security of the “hashed” ElGamal based on the CDH assumption.

rk

i

j

The re-encryption queries are also perfect, unless A can submit valid original ciphertexts without querying H 2 or H 3 (denote this event by REErr). This is because we issue a decryption query in the third case of the re-encryption query. We will calculate Pr[REErr] shortly.

The simulation of the decryption oracle is perfect, with the exception that simulation errors may occur in rejecting some valid ciphertexts. A can submit valid original ciphertexts without querying H 2 or H 3 (denote this event by DErr). Let Valid be the event that the ciphertext is

189

International Journal of Network Security & Its Applications (IJNSA), Vol.4, No.2, March 2012

valid. Let AskH 3 and AskH 2 be the events g r has been queried to H 3 and (m, r, w) has been queried to H 2 respectively. We have,

Pr[Valid |

¬

AskH ]

2

=

Pr[AskH |

Pr[Valid

3

AshH |

¬

3

¬

AskH ]

2

AskH ]

+

2

+

Pr[Valid

¬

AskH

3

∧ ¬

AskH |

3

¬

∧ ¬

AskH ]

2

Pr[Valid |

q

H

3