Functional Encryption: Deterministic to Randomized Functions from - - PowerPoint PPT Presentation
Functional Encryption: Deterministic to Randomized Functions from - - PowerPoint PPT Presentation
Functional Encryption: Deterministic to Randomized Functions from Simple Assumptions Shashank Agrawal David J. Wu Public-Key Functional Encryption [BSW11, ON10] () Keys are associated with deterministic functions sk
Public-Key Functional Encryption [BSW11, OβN10]
Keys are associated with deterministic functions π
π¦ π(π¦) skπ
Public-Key Functional Encryption [BSW11, OβN10]
Keys are associated with deterministic functions π
π
π¦ π(π¦) skπ skπ
Public-Key Functional Encryption [BSW11, OβN10]
Keys are associated with deterministic functions π
π
Decrypt(skπ, ctπ)
π(π) π¦ π(π¦) skπ skπ
Public-Key Functional Encryption [BSW11, OβN10] Setup 1π : Outputs (msk, mpk)
- eyGen(msk, π): Outputs decryption key skπ
- Encrypt mpk, π : Outputs ciphertext ctπ
- Decrypt(skπ, ctπ): Outputs π π
Public-Key Functional Encryption [BSW11, OβN10] k π ππ k π k π ππ‘ π§ππ ππππ’ππ§π πππ π‘π’π£ππ’π£π βΆ ππ) , ksm(neGyeSetup 1π : Outputs (msk, mpk)
- KeyGen(msk, π): Outputs decryption key skπ
- Encrypt mpk, π : Outputs ciphertext ctπ
- Decrypt(skπ, ctπ): Outputs π π
Public-Key Functional Encryption [BSW11, OβN10] ct π ct π πππ’ ct π π π’π¦ππ’π πβπππ π‘π’π£ππ’π£π ππ mpk, π βΆ , ππ mpk, π ππ’ππ§π ππ k π ππ k π k π ππ‘ π§ππ ππππ’ππ§π πππ π‘π’π£ππ’π£π βΆ ππ) , ksm(neGyeSetup 1π : Outputs (msk, mpk)
- KeyGen(msk, π): Outputs decryption key skπ
- Encrypt mpk, π : Outputs ciphertext ctπ
- Encrypt mpk, π : Outputs ciphertext ctπ
Public-Key Functional Encryption [BSW11, OβN10] ππ π ππ π π‘π’π£ππ’π£π βΆ t π ππ t π ) t π π’π k π ππ k π , k π ππ‘(π’ππ§π ππ ct π ct π πππ’ ct π π π’π¦ππ’π πβπππ π‘π’π£ππ’π£π ππ mpk, π βΆ , ππ mpk, π ππ’ππ§π ππ k π ππ k π k π ππ‘ π§ππ ππππ’ππ§π πππ π‘π’π£ππ’π£π βΆ ππ) , ksm(neGyeSetup 1π : Outputs (msk, mpk)
- KeyGen(msk, π): Outputs decryption key skπ
- Encrypt mpk π : Outputs ciphertext ct
Public-Key Functional Encryption [BSW11, OβN10] ππ π ππ π π‘π’π£ππ’π£π βΆ t π ππ t π ) t π π’π k π ππ k π , k π ππ‘(π’ππ§π ππππ π ππ π π‘π’π£ππ’π£π βΆ t π ππ t π ) t π π’π k π ππ k π , k π ππ‘(π’ππ§π ππ ct π ct π πππ’ ct π π π’π¦ππ’π πβπππ π‘π’π£ππ’π£π ππ mpk, π βΆ , ππ mpk, π ππ’ππ§π ππ k π ππ k π k π ππ‘ π§ππ ππππ’ππ§π πππ π‘π’π£ππ’π£π βΆ ππ) , ksm(neGyeSetup 1π : Outputs (msk, mpk)
Public-Key Functional Encryption [BSW11, OβN10]
- Setup 1π : Outputs (msk, mpk)
- KeyGen(msk, π): Outputs decryption key skπ
- Encrypt mpk, π : Outputs ciphertext ctπ
- Decrypt(skπ, ctπ): Outputs π π
Deterministic function π
Functional Encryption for Randomized Functionalities (rFE) [ABFGGTW13, GJKS15]
But what if π is randomized? Many interesting functions are randomized
π¦ π(π¦ ; π ) π
Application 1: Proxy Re-Encryption
Alice
Application 1: Proxy Re-Encryption
Alice
Application 1: Proxy Re-Encryption
Alice Alice
personal email
Application 1: Proxy Re-Encryption
Alice Alice
personal email work email
Secretary
Application 1: Proxy Re-Encryption
Alice Alice
personal email work email
Secretary
Mail server has functional key to re-encrypt message under secretaryβs public key
Application 2: Auditing an Encrypted Database
Application 2: Auditing an Encrypted Database
Encrypted database of records
π
1
π 2 π 3 π
4
π 5 π 6
Application 2: Auditing an Encrypted Database
Encrypted database of records
π
1
π 2 π 3 π
4
π 5 π 6
Sample a random subset to audit
Application 2: Auditing an Encrypted Database
Encrypted database of records
π
1
π 2 π 3 π
4
π 5 π 6
Sample a random subset to audit
π 2 π 6
Does Public-Key rFE Exist?
Does Public-Key rFE Exist?
iO General- Purpose rFE
[GJKS15] (selectively secure)
Public-Key Functional Encryption [BSW11, OβN10]
Can be instantiated from a wide range of assumptions
Public-Key Functional Encryption [BSW11, OβN10]
PKE / LWE Bounded- Collusion FE
[SS10, GVW12, GKPVZ13, β¦]
Can be instantiated from a wide range of assumptions
Public-Key Functional Encryption [BSW11, OβN10]
PKE / LWE Bounded- Collusion FE Multilinear Maps / iO General- Purpose FE
[SS10, GVW12, GKPVZ13, β¦] [GGHRSW13, Wat15, GGHZ16, β¦]
Can be instantiated from a wide range of assumptions
The Landscape of (Public-Key) Functional Encryption
PKE / LWE Bounded- Collusion FE Multilinear Maps / iO General- Purpose FE Generally adaptively secure Deterministic functionalities
[SS10, GVW12, β¦] [GGHRSW13, GGHZ16, β¦ ]
The Landscape of (Public-Key) Functional Encryption
PKE / LWE Bounded- Collusion FE Multilinear Maps / iO General- Purpose FE Generally adaptively secure iO General- Purpose rFE Selectively secure Deterministic functionalities Randomized functionalities
[SS10, GVW12, β¦] [GGHRSW13, GGHZ16, β¦ ] [GJKS15]
PKE / LWE Multilinear Maps / iO General- Purpose rFE
The Landscape of (Public-Key) Functional Encryption Does extending FE to support randomized functionalities require much stronger tools?
Our Main Result
General-purpose FE for deterministic functionalities
Our Main Result
General-purpose FE for deterministic functionalities
Number Theory
(e.g., DDH, RSA)
General-purpose FE for randomized functionalities
Our Main Result
General-purpose FE for deterministic functionalities
Number Theory
(e.g., DDH, RSA)
General-purpose FE for randomized functionalities Implication: randomized FE is not much more difficult to construct than standard FE.
Defining rFE
Correctness for FE
Deterministic functions
Correctness for FE
Deterministic functions
π
skπ
Correctness for FE
Deterministic functions
π
Decrypt(skπ, ctπ)
π(π) skπ
Correctness for rFE [ABFGGTW13, GJKS15]
Randomized functions
Correctness for rFE [ABFGGTW13, GJKS15]
Randomized functions
π
skπ
Correctness for rFE [ABFGGTW13, GJKS15]
Randomized functions
π
Decrypt(skπ, ctπ)
π(π ; π ) skπ
Correctness for rFE [ABFGGTW13, GJKS15]
Randomized functions
π
Decrypt(skπ, ctπ)
π(π ; π ) skπ
πβ²
Different ciphertexts
Correctness for rFE [ABFGGTW13, GJKS15]
Randomized functions
π
Decrypt(skπ, ctπ)
π(π ; π ) skπ
πβ²
skπ Same function key Different ciphertexts
Correctness for rFE [ABFGGTW13, GJKS15]
Randomized functions
π
Decrypt(skπ, ctπ)
π(π ; π ) skπ
πβ²
Decrypt(skπ, ctπβ²)
π(πβ²; π β²) skπ Same function key Different ciphertexts
Independent draws from output distribution
Correctness for rFE [ABFGGTW13, GJKS15]
Randomized functions
π
Decrypt(skπ, ctπ)
π(π ; π ) skπ
π
Decrypt(skπβ², ctπ)
πβ²(π ; π β²) skπβ² Different function keys Same ciphertexts
Independent draws from output distribution
Simulation-Based Security (Informally)
Real World: honestly generated ciphertexts and secret keys
π
msk
π π skπ
Simulation-Based Security (Informally)
Real World: honestly generated ciphertexts and secret keys Ideal World: simulated ciphertexts and secret keys
π
skπ π π(π)
π
msk
π π skπ
Encrypted database of records
π
1
π 2 π 3 π
4
π 5 π 6
Sample a random subset to audit
π 2 π 6
The Case for Malicious Encrypters [GJKS15]
Encrypted database of records
π
1
π 2 π 3 π
4
π 5 π 6
Sample a random subset to audit
π 2 π 6
What if encrypter (bank) is adversarial? The Case for Malicious Encrypters [GJKS15]
Randomized functionalities
π
Decrypt(skπ, ctπ)
π(π ; π ) skπ
πβ²
Decrypt(skπ, ctπβ²)
π(πβ²; π ) skπ
Dishonest encrypters can construct βbadβ ciphertexts such that decryption produces correlated outputs
The Case for Malicious Encrypters [GJKS15]
Randomized functionalities
π
Decrypt(skπ, ctπ)
π(π ; π ) skπ
πβ²
Decrypt(skπ, ctπβ²)
π(πβ²; π ) skπ
Formally captured by giving adversary access to a decryption
- racle (like in the CCA-security
game). [See paper for details.]
The Case for Malicious Encrypters [GJKS15]
Our Generic Transformation
Starting Point: Derandomization
Starting point: construct βderandomized functionβ where randomness for π derived from outputs of a PRF
Randomized functionality
π¦ π(π¦ ; π ) π
Starting Point: Derandomization
π¦ π π¦ ; PRF π, π¦ π
Randomized functionality Derandomized functionality
π¦ π(π¦ ; π ) π
Randomized function π Derandomized function ππ: ππ π¦ = π π¦ ; PRF π, π¦
Starting Point: Derandomization
- rFE. KeyGen(msk, π)
Starting Point: Derandomization
- rFE. KeyGen(msk, π)
- FE. KeyGen(msk, ππ)
π
R π§
ππ π¦ = π π¦ ; PRF π, π¦
Starting Point: Derandomization
skππ
- rFE. KeyGen(msk, π)
- FE. KeyGen(msk, ππ)
π
R π§
ππ π¦ = π π¦ ; PRF π, π¦
Starting Point: Derandomization
skππ
- rFE. KeyGen(msk, π)
- FE. KeyGen(msk, ππ)
But in public- key setting, keys do not hide the function! π
R π§
ππ π¦ = π π¦ ; PRF π, π¦
How to Hide the Key?
Key idea: functional encryption provides message-hiding, so place part of the key in the ciphertext
How to Hide the Key?
Key idea: functional encryption provides message-hiding, so place part of the key in the ciphertext PRF key π
How to Hide the Key?
Key idea: functional encryption provides message-hiding, so place part of the key in the ciphertext PRF key π
π1 π2
Secret-share the PRF key
How to Hide the Key?
Key idea: functional encryption provides message-hiding, so place part of the key in the ciphertext PRF key π
π1 π2
Key share in ciphertext Secret-share the PRF key
How to Hide the Key?
Key idea: functional encryption provides message-hiding, so place part of the key in the ciphertext PRF key π
π1 π2
Key share in ciphertext Secret-share the PRF key Key share in function key
How to Hide the Key?
Key idea: functional encryption provides message-hiding, so place part of the key in the ciphertext
- rFE. Encrypt(mpk, π)
How to Hide the Key?
Key idea: functional encryption provides message-hiding, so place part of the key in the ciphertext
- rFE. Encrypt(mpk, π)
- FE. Encrypt mpk, π, π1
π1
R π§
How to Hide the Key?
Key idea: functional encryption provides message-hiding, so place part of the key in the ciphertext
- rFE. Encrypt(mpk, π)
- FE. Encrypt mpk, π, π1
π1
R π§
(π, π1)
How to Hide the Key?
Key idea: functional encryption provides message-hiding, so place part of the key in the ciphertext
- rFE. KeyGen(msk, π)
How to Hide the Key?
Key idea: functional encryption provides message-hiding, so place part of the key in the ciphertext
- rFE. KeyGen(msk, π)
π2
R π§
How to Hide the Key?
Key idea: functional encryption provides message-hiding, so place part of the key in the ciphertext
- rFE. KeyGen(msk, π)
- FE. KeyGen msk, ππ2
π2
R π§
skππ2
ππ2 π, π1 = π(π ; PRF(π1 β π2, π)
How to Hide the Key?
Key idea: functional encryption provides message-hiding, so place part of the key in the ciphertext
- rFE. KeyGen(msk, π)
- FE. KeyGen msk, ππ2
π2
R π§
skππ2
ππ2 π, π1 = π(π ; PRF(π1 β π2, π) Some operation to combine shares of key
How to Hide the Key?
Key idea: functional encryption provides message-hiding, so place part of the key in the ciphertext
- rFE. KeyGen(msk, π)
- FE. KeyGen msk, ππ2
π2
R π§
skππ2
ππ2 π, π1 = π(π ; PRF(π1 β π2, π) Encrypter controls π1 so we need related- key security
Security Against Dishonest Encrypters
Encrypter has a lot of flexibility in constructing ciphertexts:
- rFE. Encrypt(mpk, π)
- FE. Encrypt mpk, π, π1
π1
R π§
(π, π1)
Security Against Dishonest Encrypters
Encrypter has a lot of flexibility in constructing ciphertexts:
- rFE. Encrypt(mpk, π)
- FE. Encrypt mpk, π, π1
π1
R π§
(π, π1)
Encrypter can choose the key- share
Security Against Dishonest Encrypters
Encrypter has a lot of flexibility in constructing ciphertexts:
- rFE. Encrypt(mpk, π)
- FE. Encrypt mpk, π, π1
π1
R π§
(π, π1)
Encrypter can choose the key- share
Cannot influence
- utput distribution
due to RKA-security
Security Against Dishonest Encrypters
Encrypter has a lot of flexibility in constructing ciphertexts:
- rFE. Encrypt(mpk, π)
- FE. Encrypt mpk, π, π1
π1
R π§
(π, π1)
Encrypter can choose the key- share Encrypter can choose the randomness
Cannot influence
- utput distribution
due to RKA-security
Security Against Dishonest Encrypters
Encrypter has a lot of flexibility in constructing ciphertexts:
- rFE. Encrypt(mpk, π)
- FE. Encrypt mpk, π, π1
π1
R π§
(π, π1)
Encrypter can choose the key- share Encrypter can choose the randomness
Cannot influence
- utput distribution
due to RKA-security Potentially problematic
Security Against Dishonest Encrypters
Encrypter has a lot of flexibility in constructing ciphertexts:
Security Against Dishonest Encrypters
Encrypter has a lot of flexibility in constructing ciphertexts:
- FE. Encrypt mpk, π, π1
Security Against Dishonest Encrypters
Encrypter has a lot of flexibility in constructing ciphertexts:
- FE. Encrypt mpk, π, π1
(π, π1) (π, π1)
Run encryption algorithm twice with different randomness
Security Against Dishonest Encrypters
Encrypter has a lot of flexibility in constructing ciphertexts:
- FE. Encrypt mpk, π, π1
(π, π1) (π, π1)
Two distinct FE ciphertexts encrypting the same message Run encryption algorithm twice with different randomness
Security Against Dishonest Encrypters
Encrypter has a lot of flexibility in constructing ciphertexts:
(π, π1) (π, π1)
Security Against Dishonest Encrypters
Encrypter has a lot of flexibility in constructing ciphertexts:
(π, π1) (π, π1)
Reality: Decryption always produces same output
Security Against Dishonest Encrypters
Encrypter has a lot of flexibility in constructing ciphertexts:
(π, π1) (π, π1)
Reality: Decryption always produces same output Desired: Two different ciphertexts, so should produces independent outputs
Security Against Dishonest Encrypters
Encrypter has a lot of flexibility in constructing ciphertexts:
(π, π1) (π, π1)
Reality: Decryption always produces same output Desired: Two different ciphertexts, so should produces independent outputs Encrypter has too much freedom in constructing ciphertexts
Applying Deterministic Encryption
Key observation: honestly generated ciphertexts have high entropy
Applying Deterministic Encryption
Key observation: honestly generated ciphertexts have high entropy
(π, π1)
Should be random PRF key β high entropy!
Applying Deterministic Encryption
Key observation: honestly generated ciphertexts have high entropy
(π, π1)
Derive encryption randomness from π1 and include a NIZK argument that ciphertext is well-formed
Should be random PRF key β high entropy!
Putting the Pieces Together
- rFE. Encrypt(mpk, π)
Putting the Pieces Together
- rFE. Encrypt(mpk, π)
π1
R π§
Putting the Pieces Together
- rFE. Encrypt(mpk, π)
- FE. Encrypt mpk, π, π1 ; β(π1)
π1
R π§
Randomness for FE encryption derived from deterministic function on π1
Putting the Pieces Together
- rFE. Encrypt(mpk, π)
- FE. Encrypt mpk, π, π1 ; β(π1)
π1
R π§
π
NIZK argument of knowledge of (π, π1) that explains ciphertext Randomness for FE encryption derived from deterministic function on π1
[See paper for full details.]
Putting the Pieces Together
- rFE. Encrypt(mpk, π)
- FE. Encrypt mpk, π, π1 ; β(π1)
π1
R π§
π Ciphertext is a deterministic function
- f π, π1 so for any distinct pairs
(π, π1), (πβ², π1
β²), outputs of PRF
uniform and independently distributed by RKA-security
[See paper for full details.]
Our Transformation in a Nutshell
Simulation- secure FE
Our Transformation in a Nutshell
Simulation- secure FE DDH + RSA
NIZK arguments RKA- secure PRF deterministic encryption
Our Transformation in a Nutshell
Simulation- secure FE DDH + RSA
NIZK arguments RKA- secure PRF deterministic encryption
Simulation- secure rFE
Our Transformation in a Nutshell
Simulation- secure FE DDH + RSA
NIZK arguments RKA- secure PRF deterministic encryption
Simulation- secure rFE
Security properties of underlying FE scheme is preserved (e.g., adaptive security)
The State of (Public-Key) Functional Encryption
PKE / LWE Bounded- Collusion FE Multilinear Maps / iO General- Purpose FE Generally adaptively secure iO General- Purpose rFE Selectively secure Deterministic functionalities Randomized functionalities
[SS10, GVW12, β¦] [GGHRSW13, GGHZ16, β¦ ] [GJKS15]
The State of (Public-Key) Functional Encryption
PKE / LWE Bounded- Collusion FE Multilinear Maps / iO General- Purpose FE
[SS10, GVW12, β¦] [GGHRSW13, GGHZ16, β¦ ]
Bounded- Collusion rFE General- Purpose rFE
Number-theoretic assumptions
Adaptively secure against malicious encrypters! This work
Open Questions
More direct / efficient constructions of rFE for simpler classes of functionalities (e.g., sampling random entries from a vector)?
Open Questions
More direct / efficient constructions of rFE for simpler classes of functionalities (e.g., sampling random entries from a vector)? Generic construction of rFE from FE without making additional assumptions?
Open Questions
More direct / efficient constructions of rFE for simpler classes of functionalities (e.g., sampling random entries from a vector)? Generic construction of rFE from FE without making additional assumptions? Generic transformation for indistinguishability-based notions of security?
Open Questions
More direct / efficient constructions of rFE for simpler classes of functionalities (e.g., sampling random entries from a vector)? Generic construction of rFE from FE without making additional assumptions? Generic transformation for indistinguishability-based notions of security?
Thank you!
http://eprint.iacr.org/2016/482