Research Article

Sharing Privacy Protected and Statistically Sound Clinical Research Data Using Outsourced Data Storage

Box 1

CSA Protocol.
Key Generation. Each user ( ) runs the following CSA.Key algorithm to get a public key pair
and a secret key .
CSA.Key : Given , , and , output a public key pair and a secret key by
performing following steps:
 (1) perform GHV .Key to get and ,
 (2) choose a uniformly random matrix .
Encryption. Each user ( ) runs the following CSA.Enc algorithm to get a ciphertext pair .
CSA.Enc : Given a public key pair and a plaintext , output a ciphertext pair
by performing following steps:
 (1) choose at random,
 (2) compute ,
 (3) choose a uniformly random vector ,
 (4) choose Gaussian error vectors and ,
 (5) compute ,
 (6) compute .
Aggregation.   aggregates ciphertext pairs generated under distinct public key pairs by
performing the following CSA.Agg .
CSA.Agg : Given ciphertext pairs where , output , and by performing following
steps:
 (1) Let where is the number of elements in ,
 (2) .
re-Aggregation. Each user ( ) can run the following CSA.reAgg algorithm to get a
re-aggregated ciphertext.
CSA.reAgg : Given an aggregated ciphertext , a ciphertext , a public key pair ,
a secret key , and a public key of , output by performing following steps:
 (1) perform GHV .Dec to get ,
 (2) compute ,
 (3) choose a uniformly random vector ,
 (4) choose a Gaussian error vector ,
 (5) compute .
dec-Aggregation.   gives an aggregated ciphertext to , and a ciphertext and a public key
of to each user , respectively. Let , then the receiver obtains
by performing following steps:
 (1) Each user in turn,
  (a) computes = CSA.reAgg ,
  (b) sends to the next user .
 (2) computes = CSA.reAgg and sends to .
 (3) performs GHV .Dec to get .