Functional encryption is a type of public-key encryption, where the party that has access to a secret key can learn a function from that key, which is used to encrypt and decrypt messages.

So, instead of encrypting for a specified recipient, a user in a functional encryption system embeds a ciphertext descriptor CD during data encryption. In addition, each user in the system will also have a private key (issued by an authority), which is associated with a key descriptor KD.

A recipient with a private key descriptor KD, can decrypt a ciphertext CT, with descriptor CD, if (and only if) a certain relationship R holds between CD and KD (for example: R(CD,KD)=true).

In this description, you can think of the ciphertext descriptor CD being a boolean formula f over a set of boolean variables and let the key descriptor KD be a set S of all attribute variables set to true for that particular user. The relationship R will hold if the set S satisfies the formula f.

history | show excerpt | excerpt history