## Description

Universal Re-Encryption

Let p be a prime, and g be an element of ℤ/pℤ of prime order q.

Let x ∈ ℤ/qℤ be the private key, and h = g^x (mod p) be the public key.

To encrypt a message m ∈ ℤ/pℤ, pick two random values r, s ∈ ℤ/qℤ, and compute the ciphertext as follows:

(a, b, c, d) = (g^r, h^r, g^s, mh^s).

Download a valid ciphertext σ = (a, b, c, d) below, and compute another valid ciphertext σ′ = (a′, b′, c′, d′) such that:

σ and σ′ decrypt to the same message;

a ≠ a′ and b ≠ b′ and c ≠ c′ and d ≠ d′.

Continue reading [Sharif University CTF 2016] [Crypto 100 – Universal re-encryption] Write Up →