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  consists of the following four algorithms:

: creates a public key  and a master secret key .
: uses the master secret key to generate a new secret key  for the function .
: uses the public key to encrypt a message .
: uses secret key to calculate  where  is the value that  encrypts.

The security of FE requires that any information an adversary learns from an encryption of  is revealed by . 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  to be equal to  when  corresponds to an identity that is allowed to decrypt, and  otherwise. Similarly, in the ABE case, define  when  encodes attributes with permission to decrypt and  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.

References

Cryptographic_primitives