
Definition II.1. A public key encryption algorithm P KE
consists of the following algorithms:
P KE.KGen(1k): on input a security parameter k, it outputs
a secret decryption key sk and a public encryption key pk.
P KE.Enc(pk, m): on input a plaintext message mand a
public key pk, it outputs a ciphertext c.
P KE.Dec(sk, c): on input a ciphertext cand a secret decryp-
tion key sk, it outputs the corresponding plaintext m.
Although any public-key encryption scheme can be used,
in this manuscript, we use the well-known Elliptic Curve
Integrated Encryption Scheme (ECIES) scheme [14].
Decisional Diffie-Hellman (DDH). The Decisional
Diffie–Hellman (DDH) is an assumption commonly used
in cryptography on the computational hardness of solving
discrete logarithms problems in cyclic groups. Such an
assumption is at the roots of the security of many protocols,
including Cramer–Shoup cryptosystems (see below). Assume
Gis a cyclic group of order q, with generator g, and a, b, c
are random values ∈Zq. According to the DDH assumption,
given the distributions hga, gb, gabiand hga, gb, gci, they are
computationally indistinguishable in the security parameter
n=log(q)[15].
Cramer-Shoup Cryptosystem. Assume Gis a cyclic
group of prime order q, where qis large, mis a plaintext
message encoded as an element of G, and Ha universal
family of one-way hash functions mapping bit-strings into
elements of Zq[16].
Definition II.2. A Cramer-Shoup public key encryption algo-
rithm CSC consists of the following algorithms:
CSC.KGen(G,Zq): on input a group Gof prime order q, it
generates random elements g1, g2∈G, and x1, x2, y1, y2, z ∈
Zq. Next, it computes the elements c=gx1
1gx2
2, d =
gy1
1gy2
2, h =gz
1. The generated public key is the tuple
pk = (g1, g2, c, d, h, H), and the private key is sk =
(x1, x2, y1, y2, z).
CSC.Enc(pk, m, r): on input a plaintext message m∈G,
a public key pk, and r∈Zqit outputs the ciphertext
c= (u1, u2, e, ψ), where u1=gr
1, u2=gr
2, e =hrm, α =
H(u1, u2, e), ψ =crdrα.
CSC.Dec(sk, c): on input a ciphertext c= (u1, u2, e, ψ)and
a secret key sk = (x1, x2, y1, y2, z), the decryption algorithm
computes α=H(u1, u2, e)and tests if ux1+y1α
1ux2+y2α
2
?
=ψ.
If this condition is verified, the algorithm outputs the plaintext
m=e
uz
1
; otherwise it outputs ⊥.
Digital Signature Schemes. Digital Signature (DSig)
schemes allow a sender to produce a signed value σfor a
message m, demonstrating to be the actual sender of the
message.
Definition II.3. A digital signature scheme DSig consists of
the following algorithms:
DSig.KGen(1K): on input a security parameter k, it outputs
a secret signing key sk and a public verification key pk.
DSig.Sign(sk, m): on input a message mand a signing key
sk, it outputs a signature σ.
DSig.V rf(pk, m, σ): on input a message m, a public key pk,
and a signature σ, it outputs a bit b∈0,1, where 0indicates
that σis not verified and 1indicates that σis verified.
Although any DSig scheme on elliptic curves can be used,
in this manuscript, we use the scheme proposed by Boneh,
Lynn, and Shacham [17].
Bilinear Pairings. Let Gand GTbe multiplicative groups
of prime order q, and gbe a generator of G. A map ˆe:G×
G→GTis called a bilinear map if it satisfies the following
properties:
1) Bilinearity: ˆe(gα, gβ) = ˆe(g, g)αβ for all α, β ∈Z∗
q.
2) Non-degeneracy: There exist α, β ∈Gsuch that
ˆe(α, β)=1.
3) Computability: There exists an efficient algorithm to
compute ˆe(α, β)for any α, β ∈G.
Several bilinear pairing types exist, i.e., Type-1 (symmetric),
Type-2, Type-3, and Type-4. In this paper, we use Type-1
pairing (G1=G2) and Type-3 pairing (G16=G2and absence
of any computable isomorphism). Interested readers can refer
to the article by the authors in [18] and [19] for more details.
Structure-Preserving Signatures on Equivalence Classes.
Structure-preserving signatures on equivalence classes allow,
among other properties, to generate unlinkable message-
signature pairs on elements of the same equivalence classes.
Definition II.4. A structure-preserving signatures on equiva-
lence classes scheme Sconsists of the following algorithms.
S.BGGen(1K): on input a security parameter k, it outputs a
bilinear group BG.
S.KGen(BG, l): on input a bilinear group BG and an integer
l, it outputs a secret key sk and a public key pk.
S.Sign(m, sk): on input a message mand a secret key sk, it
outputs a signature σ.
S.ChgRep(m, σ, ρ, pk): on input a message m, a signature σ
on m, a scalar ρ, and a public key pk, it outputs a message-
signature pair (M0, ρ0), being M0=ρ·M.
S.V rf(m, σ, pk): on input a message m, a signature σ, and a
public key pk, it outputs a bit b∈0,1, where 0indicates that
σis not verified and 1indicates that σis verified.
S.V Key(sk, pk): on input a secret key sk and a public key
pk, it outputs a bit b∈0,1, where 0indicates that the keys
are not related to each other, while a 1indicates that they are
related to each other.
In this paper, we use the structure-preserving signatures on
equivalence classes scheme reported in [20], and originally
defined by the authors in [21].
Non-Interactive Zero-Knowledge Proofs. Non-Interactive
Zero Knowledge Proofs (NIZKP) schemes allow a sender to
prove a statement to a verifier, while allowing the sender to
create proofs for such a statement offline, without an online
interaction with the verifier.
Definition II.5. A NIZKP scheme NZ consists of the follow-
ing algorithms.
NZ.Setup(1k): on input a security parameter k, it outputs a
3