  Functional Encryption (FE) expands traditional public-key encryption in two
different ways: it supports fine-grained access control and allows learning a
function of the encrypted data. In this paper, we review all FE classes,
describing their functionalities and main characteristics. In particular, we
mention several schemes for each class, providing their security assumptions
and comparing their properties. To our knowledge, this is the first survey that
encompasses the entire FE family.
