Functional encryption

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search
Functional encryption
File:Encryption.png
General
DesignersAmit Sahai, Brent Waters, Dan Boneh, Shafi Goldwasser, Yael Kalai
Derived fromPublic-key encryption
Related toHomomorphic 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

[edit | edit source]

More precisely, a functional encryption scheme for a given functionality f consists of the following four algorithms:

  • (pk,msk)𝖲𝖾𝗍𝗎𝗉(1λ): creates a public key pk and a master secret key msk.
  • sk𝖪𝖾𝗒𝗀𝖾𝗇(msk,f): uses the master secret key to generate a new secret key sk for the function f.
  • c𝖤𝗇𝖼(pk,x): uses the public key to encrypt a message x.
  • y𝖣𝖾𝖼(sk,c): uses secret key to calculate y=f(x) where x is the value that c encrypts.

The security of FE requires that any information an adversary learns from an encryption of x is revealed by f(x). Formally, this is defined by simulation.[1]

Applications

[edit | edit source]

Functional encryption generalizes several existing primitives including Identity-based encryption (IBE) and attribute-based encryption (ABE). In the IBE case, define F(k,x) to be equal to x when k corresponds to an identity that is allowed to decrypt, and otherwise. Similarly, in the ABE case, define F(k,x)=x when k encodes attributes with permission to decrypt and otherwise.

History

[edit | edit source]

Functional encryption was proposed by Amit Sahai and Brent Waters in 2005[2] and formalized by Dan Boneh, Amit Sahai and Brent Waters in 2010.[3] 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.[1][4][5][6]

References

[edit | edit source]
  1. ^ a b Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  2. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  3. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  4. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  5. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  6. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).