CiFEr
Files
Fully secure schemes

Fully secure schemes for functional encryption of inner products. More...

Files

file  damgard.h
 Damgard scheme.
 
file  damgard_dec_multi.h
 Damgard style decentralized multi input scheme. The decentralization is based on paper by Abdalla, Benhamouda, Kohlweiss, and Waldner: "Decentralizing Inner-Product Functional Encryption". The participants in the scheme are clients without a central authority. They interactively generate private keys for each client so that client i can encrypt vector x_i. The scheme allows the clients to interactively generate a key_Y, depending on a matrix Y with rows y_i, so that given key_Y and the ciphertexts the decryptor can compute value Σ_i <x_i, y_i> (sum of dot products).
 
file  damgard_multi.h
 Damgard multi input scheme.
 
file  dmcfe.h
 Decentralized multi-client inner-product scheme based on the paper "Decentralized Multi-Client Functional Encryption for Inner Product" by Chotard, Dufour Sans, Gay, Phan, and Pointcheval.
 
file  fh_multi_ipe.h
 // FH-Multi-IPE represents a Function Hiding Multi-client Inner Product Encryption scheme based on the paper by P. Datta, T. Okamoto, and J. Tomida: "Full-Hiding (Unbounded) Multi-Input Inner Product Functional Encryption from the 𝒌-Linear Assumption". It allows clients to encrypt vectors {x_1,...,x_m} and derive a secret key based on an inner product vectors {y_1,...,y_m} so that a decryptor can decrypt the sum of inner products <x_1,y_1> + ... + <x_m, y_m> without revealing vectors x_i or y_i. The scheme is slightly modified from the original one to achieve a better performance. The difference is in storing the secret master key as matrices B_hat, B_hat_star, instead of matrices of elliptic curve elements g_1^B_hat, g_2^B_hat_star. This replaces elliptic curves operations with matrix multiplications.
 
file  fhipe.h
 // FHIPE represents a Function Hiding Inner Product Encryption scheme based on the paper by Kim, Lewi, Mandal, Montgomery, Roy, Wu: "Function-Hiding Inner Product Encryption is Practical". It allows to encrypt a vector x and derive a secret key based on an inner product vector y so that a deryptor can decrypt the inner product <x,y> without revealing x or y.
 
file  lwe_fs.h
 LWE scheme.
 
file  paillier.h
 Paillier scheme.
 

Detailed Description

Fully secure schemes for functional encryption of inner products.

All implementations in this package are based on the reference paper by Agrawal, Libert and Stehlé (see https://eprint.iacr.org/2015/608.pdf), and offer adaptive security under chosen-plaintext attacks (IND-CPA security).

The reference scheme is public key, which means that no master secret key is required for the encryption.

For instantiation from the decisional Diffie-Hellman assumption (DDH), see struct damgard (and its multi-input variant damgard_multi, which is a secret key scheme, because a part of the secret key is required for the encryption).

For instantiation from learning with errors (LWE), see struct lwe_fs.