Commutative re-encryption by the (n+1) party
The re-encryption function takes n cithertexts as an input, each four tuples in size. In this case we are going to perfrom the commutative
encryption by 2 parties only, thus n = 1. Thus the input ciphertext n1
is as follows:
Example: C1
= [( 2 , 8 ) ; ( 10 , 7 )]
The encryptor selects n+1 values rj such that their product is equal 1. In this
case n+1=2, thus r1
* r2 shuld equal 1.
Example: r1= 8, r2 ≡ r1^(-1) modp; r2
= 7
rj values are multiplied with the coresponding
alphaj tuples. To form new part of commutative
ciphertext.
n1 becomes as follows:
Example: C1
= [( (8 * 2)mod11 , 8 ) ; ( 10 , 7 )] = [(5 , 8 ) ; ( 10 , 7 )]
Then all n ciphertext are reencrypted with new random values.
kA, kB
are choosen randomly from the range (0, p - 1)
Example:
k0'= 8, k1' = 2
The reencryption of ciphertext C1 into C1' is performed in the following way:
C1' = [(alpha1',
beta1');(gamma1',
delta1')]
alpha1' = (alpha1 * gamma1^kA)modp
beta1' = (beta1 * delta1^kA)modp
gamma1' = (gamma1^kB)modp
delta1' = (delta1^kB)modp
Example:
alpha1'
= 2 * 10^8mod11 = 2*100000000mod11 = 2
beta1'
= 8 * 7^8mod11 = 8 *5764801mod11 = 6
gamma1'
= 10^2mod11 = 100mod11 = 1
delta1'
= 7^2mod11 = 49mod11 = 5
Then the encypting party n+1, encrypts the rn+1
randomnes using the oridinary encryption method from the re-encryption protocol:
- choose x2 and generate y2
- choose two random numbers kA, kB
- perform encryption according to the re-encryption algorithm
Press the button to encypt r2 into ciphertext
C2.
Example:
X2 =
7, y2 = 7
Example: kA
= 1, kB = 7
Example: C2
=
At this stage the commutative ciphertext consist of n+1 ciphertexts of form [(alpha0, beta0);(alpha1, beta1)].
This ciphertexts get permutated, in order to provide maximum privacy. In this form
they may be send to another party for decryption.
|