Functional encryption

From Infogalactic: the planetary knowledge core
Jump to: navigation, search

Functional encryption is a type of public-key encryption in which possessing a secret key allows one to learn a function of what the ciphertext is encrypting.

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

  • (pk, msk) \leftarrow Setup(1^\lambda): creates a public key pk and a master secret key msk.
  • sk \leftarrow Keygen(msk, k): uses the master secret key to generate a new secret key sk for value k.
  • c \leftarrow Enc(pk, x): uses the public key to encrypt a message x.
  • F(k, x) \leftarrow Dec(sk, c): uses secret key to calculate a function of the value c encrypts.

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 \perp otherwise. Similarly, in the ABE case, define F(k, x) = x when k encodes attributes with permission to decrypt and \perp otherwise.

Background

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

References

  1. Lua error in package.lua at line 80: module 'strict' not found.
  2. Lua error in package.lua at line 80: module 'strict' not found.
  3. Lua error in package.lua at line 80: module 'strict' not found.
  4. Lua error in package.lua at line 80: module 'strict' not found.
  5. Lua error in package.lua at line 80: module 'strict' not found.
  6. Lua error in package.lua at line 80: module 'strict' not found.