Functional encryption
Functional encryption (FE) is a generalization of public-key encryption in which possessing a secret key allows one to learn a function of what the ciphertext is encrypting. Formal definition. More precisely, a functional encryption scheme for a given functionality formula_1 consists of the following four algorithms: The security of FE requires that any information an adversary learns from an encryption of formula_9 is revealed by formula_15. Formally, this is defined by simulation. Applications. Functional encryption generalizes several existing primitives including Identity-based encryption (IBE) and attribute-based encryption (ABE). In the IBE case, define formula_16 to be  equal to formula_9 when formula_18 corresponds to an identity that is allowed to decrypt, and formula_19 otherwise. Similarly, in the ABE case, define formula_20 when formula_18 encodes attributes with permission to decrypt and formula_19 otherwise. History. Functional encryption was proposed by Amit Sahai and Brent Waters in 2005 and formalized by Dan Boneh, Amit Sahai and Brent Waters in 2010. Until recently, however, most instantiations of Functional Encryption supported only limited function classes such as boolean formulae. In 2012, several researchers developed Functional Encryption schemes that support arbitrary functions.