Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
COMPACT FUNCTIONAL ENCRYPTION FOR UNBOUNDED ATTRIBUTE-WEIGHTED SUMS
Document Type and Number:
WIPO Patent Application WO/2024/098074
Kind Code:
A2
Abstract:
Techniques are disclosed relating to functional encryption schemes for attribute-weighted sum (AWS) functionality that support the uniform model of computation. In some embodiments, a device is configured for encrypting for a functional encryption scheme in the public key setting supporting multiple secret keys and multiple ciphertexts. In some embodiments the disclosed techniques may support both public and private attributes of arbitrary lengths.

Inventors:
DATTA PRATISH (US)
PAL TAPAS (US)
Application Number:
PCT/US2023/078860
Publication Date:
May 10, 2024
Filing Date:
November 06, 2023
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
NTT RES INC (US)
International Classes:
H04L9/32
Attorney, Agent or Firm:
DENARO, James (US)
Download PDF:
Claims:
CLAIMS 1. A computerized method for encrypting for a functional encryption scheme in a public key setting supporting multiple secret keys and multiple ciphertexts, the method comprising: executing a computerized setup algorithm, the setup algorithm comprising: receiving a security parameter; executing a functional encryption setup algorithm twice to generate a set of master public- secret key pairs FE.MSK and FE.MPK and a set of master public-secret key pairs FE ˜.MSK and FE ˜.MPK; outputting a master secret key MSK as FE.MSK and FE ˜.MSK and a master public key MPK as FE.MPK and FE ˜.MPK, and storing the output master keys in an electronic setup storage unit, wherein the master keys MSK and MPK only depend on the security parameter; executing a computerized key generation algorithm by: receiving the master secret key MSK as FE.MSK and FE ˜.MSK from the setup storage unit and a function M = where Mt are sub-functions, wherein t represents an integer index and Mt accepts an arbitrary length of inputs and Mt is computed by multiplying several matrices Mt,τ , wherein τ represents an integer index and wherein I represents a set of indices being natural numbers; sampling random values α, βt such that a sum of all entries of βt is 0; setting value vpad comprising α and padded with zeroes and generating an FE secret key FE.SKpad for the values vpad; sampling random values rt for setting values vt,init comprising rt and βt, padded with zeroes and appended with a randomized encoding of the index t and generating an FE secret key FE.SKt,init for the values vt,init; setting values vt comprising rt,Mt,τ , padded with zeroes and appended with a randomized encoding of the index t and generating an FE secret key FE.SKt for the values vt; setting values v˜t comprising rt, α, padded with zeroes and appended with a randomized encoding of the index t and generating an FE secret key F˜E.SKt for the values and outputting the secret key SKM as FE.SKpad, {FE.SKt,init,FE.SKt}, {F˜E.SKt} and M , and storing the output in an electronic key generation storage unit. 2. The method of claim 1, further comprising an encryption method, the encryption method comprising: receiving the master public key MPK as FE.MPK and FE ˜.MPK, one or more public at- tributes x, and one or more private attributes z = {zt}t∈Iz wherein t represents an integer index; sampling randomness s and setting values upad comprising s, padding with zeroes, and computing FE ciphertext FE.CTpad for the value upad; sampling random values rx for setting values ut,init comprising rx, s, padded with zeroes and appended with a randomized encoding of the index t, and computing FE ciphertext FE.CTt,init for the value ut,init; computing coefficients ct comprising x, rx and setting values ut comprising rx, s, ct, padded with zeroes and appended with a randomized encoding of the index t, and com- puting FE ciphertext FE.CTt for the value ut; setting values u˜t comprising rx, s, zt, padded with zeroes and appended with a random- ized encoding of the index t, and computing FE ciphertext F˜E.CTt for the value u˜t; and outputting the ciphertext CT as FE.CTpad and {FE.CTt,init,FE.CTt}, {F˜E.CTt} and storing the output in an electronic encryption device storage unit. 3. The method of claim 2, further comprising a decryption method, the decryption method comprising: receiving the function M and the secret key SKM for function M ; receiving one or more public attributes x and a ciphertext CT for x; retrieving FE.SKpad, {FE.SKt,init,FE.SKt}, {F˜E.SKt} from SKM and retrieving FE.CTpad and {FE.CTt,init,FE.CTt}, {F˜E.CTt} from CT; retrieving sub-functions Mt from the function M ; upon verifying IM ⊆ Iz proceeds as follows: decrypting FE.CTpad by running the decryption algorithm of FE using the secret key FE.SKpad and get a value ρpad; decrypting FE.CTt,init by running the decryption algorithm of FE using the secret key FE.SKt,init and get a value ℓt,init; decrypting FE.CTt by running the decryption algorithm of FE using the secret key FE.SKt and get a value ℓt; decrypting F˜E.CTt by running the decryption algorithm of FE using the secret key F˜E.SKt and get a value ℓ˜t; running an evaluation algorithm of a garbling procedure using the values ℓt,init, ℓt, ℓ˜t and the one or more public attributes x and the sub-function Mt, and get a value d; and recovering the functional value µ from ρpad and d, and outputting the value µ as the plaintext and storing the output in an electronic decryption device storage unit. 4. The method of claim 1, wherein a first FE key pair (FE.MPK,FE.MSK) is for encrypting a public part of attributes and the second FE key pair (FE ˜.MPK,FE ˜.MSK) is for use in encrypting a private part of the attributes. 5. A system for encrypting for a functional encryption scheme, comprising a processor, wherein the processor is configured for: executing a computerized setup algorithm, the setup algorithm comprising: receiving a security parameter; executing a functional encryption setup algorithm twice to generate a set of master public- secret key pairs FE.MSK and FE.MPK and a set of master public-secret key pairs FE ˜.MSK and FE ˜.MPK; outputting a master secret key MSK as FE.MSK and FE ˜.MSK and a master public key MPK as FE.MPK and FE ˜.MPK, and storing the output master keys in an electronic setup storage unit, wherein the master keys MSK and MPK only depend on the security parameter; executing a computerized key generation algorithm by: receiving the master secret key MSK as FE.MSK and FE ˜.MSK from the setup storage unit and a function M where Mt are sub-functions, wherein t represents an integer index and Mt accepts arbitrary length of inputs and Mt is computed by multiplying several matrices Mt,τ , wherein τ represents an integer index and wherein I represents a set of indices being natural numbers; sampling random values α, βt such that the sum of all entries of βt is 0; setting value vpad comprising α and padded with zeroes and generating an FE secret key FE.SKpad for the values vpad; sampling random values rt for setting values vt,init comprising rt and βt, padded with zeroes and appended with a randomized encoding of the index t and generating an FE secret key FE.SKt,init for the values vt,init; setting values vt comprising rt,Mt,τ , padded with zeroes and appended with a randomized encoding of the index t and generating an FE secret key FE.SKt for the values setting values v˜t comprising rt, α, padded with zeroes and appended with a randomized encoding of the index t and generating an FE secret key F˜E.SKt for the values and outputting the secret key SKM as FE.SKpad, {FE.SKt,init,FE.SKt}, {F˜E.SKt} and M , and storing the output in an electronic key generation storage unit. 6. The system of claim 5, wherein the processor is further configured for: receiving the master public key MPK as FE.MPK and FE ˜.MPK, one or more public at- tributes x, and one or more private attributes z = {zt}t∈Iz wherein t represents an integer index; sampling randomness s and setting values upad comprising s, padding with zeroes, and computing FE ciphertext FE.CTpad for the value upad; sampling random values rx for setting values comprising rx, s, padded with zeroes and appended with a randomized encoding of the index t, and computing FE ciphertext FE.CTt,init for the value ut,init; computing coefficients ct comprising x, rx and setting values ut comprising rx, s, ct, padded with zeroes and appended with a randomized encoding of the index t, and com- puting FE ciphertext FE.CTt for the value ut; setting values u˜t comprising rx, s, zt, padded with zeroes and appended with a random- ized encoding of the index t, and computing FE ciphertext F˜E.CTt for the value u˜t; and outputting the ciphertext CT as FE.CTpad and {FE.CTt,init,FE.CTt}, {F˜E.CTt} and storing the output in an electronic encryption device storage unit. 7. The system of claim 6, wherein the processor is further configured for: receiving the function M and the secret key SKM for function M ; receiving one or more public attributes x and a ciphertext CT for x; retrieving FE.SKpad, {FE.SKt,init,FE.SKt}, {F˜E.SKt} from SKM and retrieving FE.CTpad and {FE.CTt,init,FE.CTt}, {F˜E.CTt} from CT; retrieving sub-functions Mt from the function M ; upon verifying IM proceeds as follows: decrypting FE.CTpad by running the decryption algorithm of FE using the secret key FE.SKpad and get a value ρpad; decrypting FE.CTt,init by running the decryption algorithm of FE using the secret key FE.SKt,init and get a value ℓt,init; decrypting FE.CTt by running the decryption algorithm of FE using the secret key FE.SKt and get a value ℓt; decrypting F˜E.CTt by running the decryption algorithm of FE using the secret key F˜E.SKt and get a value running an evaluation algorithm of a garbling procedure using the values and the one or more public attributes x and the sub-function Mt, and get a value d; and recovering the functional value µ from ρpad and d, and outputting the value µ as the plaintext and storing the output in an electronic decryption device storage unit. 8. The system of claim 5, wherein a first FE key pair (FE.MPK,FE.MSK) is for encrypting a public part of attributes and the second FE key pair (FE ˜.MPK,FE ˜.MSK) is for use in encrypting a private part of the attributes. 9. One or more tangible, non-transitory, machine-readable media comprising instructions configured to cause a processor to encrypt for a functional encryption scheme, wherein pro- cessing the functional encryption scheme comprises: executing a computerized setup algorithm, the setup algorithm comprising: receiving a security parameter; executing a functional encryption setup algorithm twice to generate a set of master public- secret key pairs FE.MSK and FE.MPK and a set of master public-secret key pairs FE ˜.MSK and FE ˜.MPK; outputting a master secret key MSK as FE.MSK and FE ˜.MSK and a master public key MPK as FE.MPK and FE ˜.MPK, and storing the output master keys in an electronic setup storage unit, wherein the master keys MSK and MPK only depend on the security parameter; executing a computerized key generation algorithm by: receiving the master secret key MSK as FE.MSK and FE ˜.MSK from the setup storage unit and a function M = where Mt are sub-functions, wherein t represents an integer index and Mt accepts arbitrary length of inputs and Mt is computed by multiplying several matrices Mt,τ , wherein τ represents an integer index and wherein I represents a set of indices being natural numbers; sampling random values such that the sum of all entries of βt is 0; setting value vpad comprising α and padded with zeroes and generating an FE secret key FE.SKpad for the values vpad; sampling random values rt for setting values vt,init comprising rt and βt, padded with zeroes and appended with a randomized encoding of the index t and generating an FE secret key FE.SKt,init for the values vt,init; setting values vt comprising rt,Mt,τ , padded with zeroes and appended with a randomized encoding of the index t and generating an FE secret key FE.SKt for the values vt; setting values v˜t comprising rt, α, padded with zeroes and appended with a randomized encoding of the index t and generating an FE secret key F˜E.SKt for the values v˜t; and outputting the secret key SKM as FE.SKpad, {FE.SKt,init,FE.SKt}, {F˜E.SKt} and M , and storing the output in an electronic key generation storage unit. 10. The one or more machine-readable media of claim 9, wherein processing the encryption method further comprises: receiving the master public key MPK as FE.MPK and FE ˜.MPK, one or more public at- tributes x, and one or more private attributes z = wherein t represents an integer index; sampling randomness s and setting values upad comprising s, padding with zeroes, and computing FE ciphertext FE.CTpad for the value upad; sampling random values rx for setting values comprising rx, s, padded with zeroes and appended with a randomized encoding of the index t, and computing FE ciphertext FE.CTt,init for the value computing coefficients ct comprising x, rx and setting values ut comprising rx, s, ct, padded with zeroes and appended with a randomized encoding of the index t, and com- puting FE ciphertext FE.CTt for the value ut; setting values u˜t comprising rx, s, zt, padded with zeroes and appended with a random- ized encoding of the index t, and computing FE ciphertext F˜E.CTt for the value u˜t; and outputting the ciphertext CT as FE.CTpad and {FE.CTt,init,FE.CTt}, {F˜E.CTt} and storing the output in an electronic encryption device storage unit. 11. The one or more machine-readable media of claim 10, wherein processing the encryption method further comprises: receiving the function M and the secret key SKM for function M ; receiving one or more public attributes x and a ciphertext CT for x; retrieving FE.SKpad, {FE.SKt,init,FE.SKt}, {F˜E.SKt} from SKM and retrieving FE.CTpad and {FE.CTt,init,FE.CTt}, {F˜E.CTt} from CT; retrieving sub-functions Mt from the function M ; upon verifying IM ⊆ Iz proceeds as follows: decrypting FE.CTpad by running the decryption algorithm of FE using the secret key FE.SKpad and get a value ρpad; decrypting FE.CTt,init by running the decryption algorithm of FE using the secret key FE.SKt,init and get a value ℓt,init; decrypting FE.CTt by running the decryption algorithm of FE using the secret key FE.SKt and get a value ℓt; decrypting F˜E.CTt by running the decryption algorithm of FE using the secret key F˜E.SKt and get a value ℓ˜t; running an evaluation algorithm of the garbling procedure using the values ℓt,init, ℓt, ℓ˜t and the one or more public attributes x and the sub-function and get a value d; and recovering the functional value µ from ρpad and d, and outputting the value µ as the plaintext and storing the output in an electronic decryption device storage unit. 12. The one or more machine-readable media of claim 9, wherein a first FE key pair (FE.MPK,FE.MSK) is for encrypting a public part of attributes and the second FE key pair (FE ˜.MPK,FE ˜.MSK) is for use in encrypting a private part of the attributes.
Description:
COMPACT FUNCTIONAL ENCRYPTION FOR UNBOUNDED ATTRIBUTE-WEIGHTED SUMS CROSS-REFERENCE TO RELATED APPLICATION This application claims the benefit of U.S. Provisional Application Ser. No. 63/382,525 filed November 6, 2022, the content of which is incorporated by reference herein in its entirety. FIELD OF THE INVENTION The invention relates to functional encryption schemes for attribute-weighted sum (AWS) functionality that support the uniform model of computation. BACKGROUND OF THE INVENTION Functional Encryption Functional encryption (FE), formally introduced by Boneh et al. and O’Neill, redefines the classical encryption procedure with the motivation to overcome the limitation of the “all-or-nothing” paradigm of decryption. In a traditional encryption system, there is a single secret key such that a user given a ciphertext can either recover the whole message or learns nothing about it, depending on the availability of the secret key. FE in contrast provides fine grained access control over encrypted data by generating artistic secret keys according to the desired functions of the encrypted data to be disclosed. More specifically, in a public-key FE scheme for a function class F , there is a setup authority which produces a master secret key and publishes a master public key. Using the master secret key, the setup authority can derive secret keys or functional decryption keys SK f associated with functions f ∈ F . Anyone can encrypt messages msg belonging to a specified message space msg ∈ M using the master public key to produce a ciphertext CT. The ciphertext CT along with a secret key SK f recovers the function of the message f(msg) at the time of decryption, while unable to extract any other information about msg. More specifically, the security of FE requires collusion resistance meaning that any polynomial number of secret keys together cannot gather more information about an encrypted message except the union of what each of the secret keys can learn individually. FE for Attribute-Weighted Sum We are aware of FE schemes for a new class of func- tionalities termed as “attribute-weighted sums” (AWS). This is a generalization of the inner product functional encryption (IPFE). In such a scheme, an attribute pair (x, z) is encrypted using the master public key of the scheme, where x is a public attribute (e.g., demographic data) and z is a private attribute containing sensitive information (e.g., salary, medical con- dition, loans, college admission outcomes). A recipient having a secret key corresponding to a weight function f can learn the attribute-weighted sum f(x)z. The attribute-weighted sum functionality appears naturally in several real life applications. For instance, as discussed by Abdalla et al. if we consider the weight function f as a boolean predicate, then the attribute-weighted sum functionality f(x) would correspond to the average z over all users whose attribute x satisfies the predicate f . Important practical scenarios include average salaries of minority groups holding a particular job (z = salary) and approval ratings of an election candidate amongst specific demographic groups in a particular state (z = rating). Other works considered a more general case of the notion where the domain and range of the weight functions are vectors, in particular, the attribute pair of public/private attribute vectors (x, z), which is encrypted to a ciphertext CT. A secret key SK f generated for a weight function f allows a recipient to learn f(x) z from CT without leaking any information about the private attribute z. Other FE schemes support an expressive function class of arithmetic branching programs (ABPs) which captures non-uniform Logspace computations. Other schemes were built in asymmetric bilinear groups of prime order and are proven secure in the simulation-based security model, which is known to be the desirable security model for FE, under the (bilateral) k-Linear (k-Lin)/ (bilateral)Matrix Diffie-Hellman (MDDH) assumption. Another FE scheme achieves semi-adaptive security, where the adversary is restricted to making secret key queries only after making the ciphertext queries, whereas another FE scheme achieves adaptive security, where the adversary is allowed to make secret key queries both before and after the ciphertext queries. However, as mentioned above, ABP is a non-uniform computational model. As such, in both the FE schemes, the length of the public and private attribute vectors must be fixed at system setup. This is clearly a bottleneck in several applications of this primi- tive especially when the computation is done over attributes whose lengths vary widely among ciphertexts and are not fixed at system setup. For instance, suppose a govern- ment hires an external audit service to perform a survey on average salary of employ- ees working under different job categories in various companies to resolve salary discrep- ancy.The companies create salary databases (X,Z) where X = (x i ) i contains public at- tributes x i = (job title, department, company name) and Z = (z i ) i includes private attribute z i = salary. To facilitate this auditing process without revealing individual salaries (private attribute) to the auditor, the companies encrypt their own database (X,Z) using an FE scheme for AWS. The government provides the auditor a functional secret key SK f for a function f that takes input a public attribute X and outputs 1 for x i ’s for which the “job title” matches with a particular job, say manager. The auditor decrypts ciphertexts of the various companies using SK f and calculates the average salaries of employees working under that job category in those companies. Now, if the existing FE schemes for AWS supporting non-uniform computations are employed then to make the system sustainable the govern- ment would have to fix a probable size (an upper bound) of the number of employees in all the companies. Also, the size of all ciphertexts ever generated would scale with that upper bound even if the number of employees in some companies, at the time of encryption, are much smaller than that upper bound. Thus, there is a need for an FE scheme for AWS in some uniform computational model capable of handling public/private attributes of arbitrary length. BRIEF SUMMARY OF THE INVENTION Disclosed herein is the first functional encryption (FE) scheme for the attribute-weighted sum (AWS) functionality that supports the uniform model of computation. In embodiments of such an FE scheme, encryption takes as input a pair of attributes (x, z) where the attribute x is public while the attribute z is private. A secret key corresponds to some weight function f , and decryption recovers the weighted sum f(x)z. This functionality has a wide range of potential real life applications, many of which require the attribute lengths to be flexible rather than being fixed at system setup. In the disclosed scheme, the public attributes can be considered as binary strings while the private attributes are considered as vectors over some finite field, both having arbitrary polynomial lengths that are not fixed at system setup. The weight functions are modelled as Logspace Turing machines. The disclosed scheme is built in asymmetric prime-order bilinear groups and is proven adaptively simulation secure under the well-studied symmetric external Diffie-Hellman (SXDH) assumption against an arbitrary polynomial number of secret key queries both before and after the challenge ciphertext. This is the best possible level of security for FE as noted in the literature. As a special case of the disclosed FE scheme, also disclosed is the first adaptively simulation secure inner-product FE (IPFE) for vectors of arbitrary length that is not fixed at system setup. Some embodiments of the invention include systems, methods, network devices, and machine-readable media for encrypting for a functional encryption scheme in a public key setting supporting multiple secret keys and multiple ciphertexts, the method including: exe- cuting a computerized setup algorithm, the setup algorithm comprising: receiving a security parameter; executing a functional encryption setup algorithm twice to generate a set of mas- ter public-secret key pairs FE.MSK and FE.MPK and a set of master public-secret key pairsFE ˜ .MSK and FE ˜ .MPK; outputting a master secret key MSK as FE.MSK and FE ˜ .MSK and a master public key MPK as FE.MPK and FE ˜ .MPK, and storing the output master keys in an electronic setup storage unit, wherein the master keys MSK and MPK only depend on the security parameter; executing a computerized key generation algorithm by: receiving the master secret key MSK as FE.MSK and FE ˜ .MSK from the setup storage unit and a function M = where M t are sub-functions, wherein t represents an integer index and M t ac- cepts an arbitrary length of inputs and M t is computed by multiplying several matrices M t,τ , wherein τ represents an integer index and wherein I represents a set of indices being natural numbers; sampling random values α, β t such that a sum of all entries of β t is 0; setting value v pad comprising α and padded with zeroes and generating an FE secret key FE.SK pad for the values v pad ; sampling random values r t for setting values v t,init comprising r t and β t , padded with zeroes and appended with a randomized encoding of the index t and generating an FE secret key FE.SK t,init for the values v t,init ; setting values v t comprising r t ,M t,τ , padded with zeroes and appended with a randomized encoding of the index t and generating an FE secret key FE.SK t for the values setting values v˜ t comprising r t , α, padded with zeroes and ap- pended with a randomized encoding of the index t and generating an FE secret key F˜E.SK t for the values and outputting the secret key SK M as FE.SK pad , {FE.SK t,init ,FE.SK t }, {F˜E.SK t } and M , and storing the output in an electronic key generation storage unit. Some embodiments further include an encryption method, the encryption method in- cluding: receiving the master public key MPK as FE.MPK and FE ˜ .MPK, one or more public attributes x, and one or more private attributes z = {z t } t∈Iz wherein t represents an integer index; sampling randomness s and setting values u pad comprising s, padding with zeroes, and computing FE ciphertext FE.CT pad for the value u pad ; sampling random values r x for setting values u t,init comprising r x , s, padded with zeroes and appended with a randomized encoding of the index t, and computing FE ciphertext FE.CT t,init for the value u t,init ; computing coeffi- cients c t comprising x, r x and setting values u t comprising r x , s, c t , padded with zeroes and appended with a randomized encoding of the index t, and computing FE ciphertext FE.CT t for the value u t ; setting values u˜ t comprising r x , s, z t , padded with zeroes and appended with a randomized encoding of the index t, and computing FE ciphertext F˜E.CT t for the value u˜ t ; and outputting the ciphertext CT as FE.CT pad and {FE.CT t,init ,FE.CT t }, {F˜E.CT t } and storing the output in an electronic encryption device storage unit. Some embodiments further include decryption method, the decryption method including: receiving the functionM and the secret key SK M for functionM ; receiving one or more public attributes x and a ciphertext CT for x; retrieving FE.SK pad , {FE.SK t,init ,FE.SK t }, {F˜E.SK t } from SK M and retrieving FE.CT pad and {FE.CT t,init ,FE.CT t }, {F˜E.CT t } from CT; retrieving sub-functions M t from the function M ; upon verifying I M ⊆ proceeds as follows: de- crypting FE.CT pad by running the decryption algorithm of FE using the secret key FE.SK pad and get a value ρ pad ; decrypting FE.CT t,init by running the decryption algorithm of FE using the secret key FE.SK t,init and get a value ℓ t,init ; decrypting FE.CT t by running the decryption algorithm of FE using the secret key FE.SK t and get a value decrypting F˜E.CT t by running the decryption algorithm of FE using the secret key F˜E.SK t and get a value ℓ˜ t ; running an evaluation algorithm of a garbling procedure using the values ℓ t,init , ℓ t , ℓ˜ t and the one or more public attributes x and the sub-function M t , and get a value d; and recovering the functional value µ from ρ pad and d, and outputting the value µ as the plaintext and storing the output in an electronic decryption device storage unit. In some further embodiments, a first FE key pair (FE.MPK,FE.MSK) is for encrypting a public part of attributes and the second FE key pair (FE ˜ .MPK,FE ˜ .MSK) is for use in encrypting a private part of the attributes. Some embodiments of the invention include systems, methods, network devices, and machine-readable media for encrypting for a functional encryption scheme in a private key setting supporting at least one secret key and one ciphertext, the method comprising: exe- cuting a computerized setup algorithm, the setup algorithm comprising: receiving a security parameter; executing a functional encryption setup algorithm twice to generate master se- cret key pairs FE.MSK and FE ˜ .MSK; outputting a master secret key MSK as FE.MSK andFE ˜ .MSK, and storing the output master keys in an electronic setup storage unit, wherein the master key MSK only depends on the security parameter; executing a computerized key generation algorithm by: receiving the master secret key MSK as FE.MSK and F ˜ E.MSK from the setup storage unit and a function M = where M t are sub-functions, wherein t represents an integer index and M t accepts arbitrary length of inputs and M t is computed by multiplying several matrices M t,τ , wherein τ represents an integer index and wherein I repre- sents a set of indices being natural numbers; sampling random values β t such that the sum of all entries of β t is 0; sampling random values r t for setting values v t,init comprising r t and β t , padded with zeroes and appended with a randomized encoding of the index t and generating an FE secret key FE.SK t,init for the values v t,init ; setting values v t comprising r t ,M t,τ , padded with zeroes and appended with a randomized encoding of the index t and generating an FE secret key FE.SK t for the values v t ; setting values v˜ t comprising r t , padded with zeroes and appended with a randomized encoding of the index t and generating an FE secret key F˜E.SK t for the values v˜ t ; and outputting the secret key SK M as {FE.SK t,init ,FE.SK t }, {F˜E.SK t } and M , and storing the output in an electronic key generation storage unit. Some embodiments further include an encryption method, the encryption method in- cluding: receiving the master secret key MSK as FE.MSK and FE ˜ .MSK, one or more public attributes x, and one or more private attributes z = {z t } t∈Iz wherein t represents an integer index; sampling random values r x for setting values comprising r x , padded with ze- roes and appended with a randomized encoding of the index t, and computing FE ciphertext FE.CT t,init for the value u t,init ; computing coefficients c t comprising x, r x and setting values u t comprising r x , c t , padded with zeroes and appended with a randomized encoding of the index t, and computing FE ciphertext FE.CT t for the value u t ; setting values u˜ t compris- ing r x , z t , padded with zeroes and appended with a randomized encoding of the index t, and computing FE ciphertext F˜E.CT t for the value u˜ t ; and outputting the ciphertext CT as {FE.CT t,init ,FE.CT t }, {F˜E.CT t } and storing the output in an electronic encryption device storage unit. Some embodiments further include a decryption method, the decryption method in- cluding: receiving the function M and the secret key SK M for function M ; receiving one or more public attributes x and a ciphertext CT for x; retrieving {FE.SK t,init ,FE.SK t }, {F˜E.SK t } from SK M and retrieving {FE.CT t,init ,FE.CT t }, {F˜E.CT t } from CT; retrieving sub-functions M t from the function M ; upon verifying I M proceeds as follows: decrypting FE.CT t,init by running the decryption algorithm of FE using the secret key FE.SK t,init and get a value ℓ t,init ; decrypting FE.CT t by running the decryption algorithm of FE using the secret key FE.SK t and get a value decrypting F˜E.CT t by running the decryption algorithm of FE using the secret key F˜E.SK t and get a value running an evaluation algorithm of a garbling procedure using the values ℓ t,init , ℓ t , ℓ˜ t and the one or more public attributes x and the sub-function M t , and get a value d; and recovering the functional value µ from d and outputting the value µ as the plaintext and storing the output in an electronic decryption device storage unit. In some further embodiments, a first FE key pair (FE.MPK,FE.MSK) is for encrypting a public part of attributes and the second FE key pair (FE ˜ .MPK,FE ˜ .MSK) is for use in encrypting a private part of the attributes. BRIEF DESCRIPTION OF THE DRAWINGS The accompanying drawings, which are included to provide further understanding and are incorporated in and constitute a part of this specification, illustrate disclosed embod- iments, and together with the description, serve to explain the principles of the disclosed embodiments. In the drawings: Fig. 1 illustrates an encryption system in an embodiment of the invention including a setup algorithm, an encryption algorithm, a key generation algorithm, and a decryption algorithm. Fig. 2 illustrates an example system architecture with a functional encryption server, data owner, data user, and trusted authority. Fig. 3 illustrates an example computer system architecture for implementing the claimed systems and methods. Fig. 4 illustrates further details of an example computer system architecture for imple- menting the claimed systems and methods. DETAILED DESCRIPTION Herein, we formally define and construct a FE scheme for unbounded AWS (UAWS) func- tionality where the setup only depends on the security parameter of the system and the weight functions are modeled as Turing machines. The disclosed FE scheme supports both public and private attributes of arbitrary lengths. In particular, the public parameters of the system are completely independent of the lengths of attribute pairs. Moreover, the ciphertext size is compact meaning that it does not grow with the number of occurrences of a specific attribute in the weight functions which are represented as Logspace Turing machines. The scheme is adaptively simulation secure against the release of an unbounded (polynomial) number of secret keys both before and after the challenge ciphertext. As noted in other work, simulation security is the best possible and the most desirable model for FE. Moreover, simulation-based security also captures indistinguishability-based security but the converse does not hold in general. The disclosed FE for UAWS is proven secure in the standard model based on the symmetric external Diffie-Hellman (SXDH) assumption in the asymmetric prime-order pairing groups. Viewing IPFE as a special case of FE for AWS, we also obtain the first adaptively simula- tion secure IPFE scheme for unbounded length vectors (UIPFE), i.e., the length of the vectors is not fixed in setup. Observe that all prior simulation secure IPFE could only support bounded length vectors, i.e., the lengths must be fixed in the setup. On the other hand, the only known construction of UIPFE is proven secure in the indistinguishability-based model. 1 Technical Overview An overview of techniques for achieving a FE scheme for AWS functionality which supports the uniform model of computations is disclosed. We consider prime-order bilinear pairing groups (G 1 ,G 2 ,G T , g 1 , g 2 , e) with a generator g T = e(g 1 , g 2 ) of G T and denote by an element g i a ∈ G i for i ∈ {1, 2,T}. For any vector z, the k-th entry is denoted by z[k] and [n] denotes the set {1, ... , n}. The unbounded AWS Functionality. In this work, we consider an unbounded FE scheme for the AWS functionality for Logspace Turing machines (or the class of L), in shorthand it is written as UAWS L . More specifically, the setup only takes input the security parameter of the system and is independent of any other parameter, e.g., the lengths of the public and private attributes. UAWS L generates secret keys SK (M ,IM ) for a tuple of Turing machines denoted by M = {M k } k∈IM such that the index set I M contains any arbitrary number of Turing machinesM k ∈ L. The ciphertexts are computed for a pair of public-private attributes (x, z) whose lengths are arbitrary and are decided at the time of encryption. Precisely, the public attribute x of length N comes with a polynomial time bound T = poly(N) and a logarithmic space bound S, and the private attribute z is an integer vector of length n. At the time of decryption, if I M ⊆ [n] then it reveals an integer value M k (x)z[k]. Since M k (x) is binary, we observe that the summation selects and adds the entries of z for which the corresponding Turing machine accepts the public attribute x. An appealing feature of the functionality is that the secret key SK (M ,IM ) can decrypt ciphertexts of unbounded length attributes in unbounded time/ (logarithmic) space bounds. In contrast, existing FE for AWSs are designed to handle non-uniform computations that can only handle attributes of bounded lengths and the public parameters grows linearly with the lengths. Next, we describe the formulation of Turing machines in L considered in UAWS L . Turing machines Formulation. We introduce the notations for Logspace Turning ma- chines (TM) over binary alphabets. A Turing machine M = (Q,y acc , consists of Q states with the initial state being 1 and a characteristic vector y acc ∈ {0, 1} Q of accepting states and a transition function δ. When an input (x, N, T, S) with length N and time, space bounds T, S is provided, the computation of M | N,T,S performed in T steps passing through configurations (x, (i, j,W , q)) where i ∈ [N ] is the input tape pointer, j ∈ [S] is the work tape pointer, W ∈ {0, 1} S the content of work tape, and q ∈ [Q] the state under consideration. The initial internal configuration is (1, 1,0 S , 1) and the transition function δ determines whether, on input x, it is possible to move from one internal configuration (i, j,W , q) to the next ((i , j ,W , q )), namely if δ(q,x[i],W [j]) = (q , w ,∆i,∆j). In other words, the transition function δ on input state q, an input bit x[i] and an work tape bitW [j], outputs the next state q , the new bit w overwriting w = W [j] by w = W [j] (keeping W [j ′′ ] = for all j ̸= j ′′ ), and the directions ∆i,∆j ∈ {0,±1} to move the input and work tape pointers. Our construction of adaptively simulation secure UAWS L depends on two building blocks: AKGS for Logspace Turing machines, an information-theoretic tool and slotted IPFE, a com- putation tool. We only need a bounded slotted IPFE, meaning that the length of vectors of the slotted IPFE is fixed in the setup, and we only require the primitive to satisfy adaptive in- distinguishability based security. Hence, our work shows how to (semi-)generically bootstrap a bounded IPFE to an unbounded FE scheme beyond the inner product functionality. 2 Preliminaries In this section, we provide the necessary definitions and backgrounds that will be used in the sequence. Notations. We denote by λ the security parameter that belongs to the set of natural number N and 1 λ denotes its unary representation. We use the notation s ← S to indicate the fact that s is sampled uniformly at random from the finite set S. For a distribution X , we write x ← X to denote that x is sampled at random according to distribution X . A function negl : N → R is said to be a negligible function of λ, if for every c ∈ N there exists a λ c ∈ N such that for all λ > λ c , |negl(λ)| < λ −c . Let Expt be an interactive security experiment played between a challenger and an ad- versary, which always outputs a single bit. We assume that Expt C A is a function of λ and it is parametrized by an adversary A and a cryptographic protocol C. Let Expt C A ,0 and Expt C A ,1 be two such experiment. The experiments are computationally/statistically indistinguishable if for any PPT/computationally unbounded adversary A there exists a negligible function negl such that for all λ ∈ N, negl(λ) We write Expt C A ,0 c Expt C A ,1 if they are computationally indistinguishable (or simply indistin- guishable). Similarly, Expt C A ,0 s Expt C A ,1 means statistically indistinguishable and Expt C A ,0 ≡ Expt C A ,1 means they are identically distributed. Sets and Indexing. For n ∈ N, we denote [n] the set {1, 2, ... , n} and for n,m ∈ N with n < m, we denote [n,m] be the set {n, n+ 1, ... ,m}. We use lowercase boldface, e.g., v, to denote column vectors in Z n p and uppercase boldface, e.g., M, to denote matrices in Z n p ×m for p, n,m ∈ N. The i-th component of a vector v ∈ Z n p is written as v[i] and the (i, j)-th element of a matrixM ∈ Z n p ×m is denoted byM[i, j]. The transpose of a matrixM is denoted by M such that M [i, j] = M[j, i]. To write a vector of length n with all zero elements, we write 0 n or simply 0 when the length is clear from the context. Let u,v ∈ Z n p , then the inner product between the vectors is denoted as u · v = u v = i ∈[n] u ∈ Z p . We define generalized inner product between two vectors u ∈ Z I1 ,v ∈ Z I p 2 by u · v [i] Tensor Products. Let u ∈ Z I p 1 and v ∈ Z I p 2 be two vectors, their tensor product w = u⊗v is a vector in Z I p 1×I2 with entries defined byw[(i, j)] = u[i]v[j]. For two matricesM 1 ∈ Z I1×I2 ′ ′ p ×I )×I ×I and M ∈ Z I p 1 2 ,their tensor product M = M = M ⊗ M is a matrix in Z (I1×I 1 2 2 1 1 2 p with entries defined by M[(i 1 , i′ 1), (i 2 , i′ ′ ′ 2)] = M 1 [i 1 , i 2 ]M 2 [i 1 , i 2 ]. Currying. Currying is the product of partially applying a function or specifying part of the indices of a vector/matrices, which yields another function with fewer arguments or another vector/matrix with fewer indices. We use the usual syntax for evaluating a function or indexing into a vector/matrix, except that unspecified variables are represented by “ ”. For example, let M ∈ Z ( p [I1]×[I2])×([J1]×[J2]) and i 1 ∈ I 1 , j 2 ∈ J 2 , then M[(i 1 , ), ( , j 2 )] is a matrix N ∈ Z [ p I2]×[J2] such that N[i 2 , j 1 ] = M[(i 1 , i 2 ), (j 1 , j 2 )] for all i 2 ∈ I 2 , j 1 ∈ J 1 . Coefficient Vector Let f : Z I p → Z p be an affine function with coefficient vector f ∈ Z S p for S = {const}∪{coef i | i ∈ I}. Then for any x ∈ we have f(x) = f [const] f [coef i ]x[i]. 2.1 Bilinear Groups and Hardness Assumptions We use a pairing group generator G that takes as input 1 λ and outputs a tuple G = (G 1 ,G 2 ,G T , g 1 , g 2 , e) where G 1 ,G 2 ,G T are groups of prime order p = p(λ) and g i is a gen- erator of the group G i for i ∈ {1, 2}. The map e : G 1 × G 2 → G T satisfies the following properties: – bilinear : e(g 1 a , gb 2) = e(g 1 , g 2 ) ab for all a, b ∈ Z p . – non-degenerate: e(g 1 , g 2 ) generates G T . The group operations in G i for i ∈ {1, 2,T} and the map e are efficiently computable in deterministic polynomial time in the security parameter λ. For a matrix A and each i ∈ {1, 2,T}, we use the notation [[A]] i to denote g i A where the exponentiation is element-wise. The group operation is written additively while using the bracket notation, i.e. [[A+B]] i = for matricesA and B. Observe that, givenA and [[B]] i , we can efficiently compute [[AB]] i = A · [[B]] i . We write the pairing operation multiplicatively, i.e. e([[A]] 1 , [[B]] 2 ) = [[A]] 1 [[B]] 2 = [[AB]] T . Assumption 2.1 (Symmetric External Diffie-Hellman Assumption) We 2.2 Turing Machine Formulation In this subsection, we describe the computational model, which is Turing machines with a read-only input and a read-write work tape. This type of Turing machines are used to handle decision problems belonging to space-bounded complexity classes such as Logspace predicates. We define below Turing machines with time complexity T and space complexity S. The Turing machine can either accept or reject an input string within this time/space bound. We also stick to the binary alphabet for the shake of simplicity. Definition 2.1 (Turing machine with time/space bound computation) A (deterministic) Turing machine over {0, 1} is a tuple M = (Q,y acc , δ), where Q ≥ 1 is the number of states (we use [Q] as the set of states and 1 as the initial state), y acc ∈ {0, 1} Q indicates whether each state is accepting, and δ : [Q]× {0, 1} × {0, 1} → [Q]× {0, 1} × {0,±1} × {0,±1}, is the state transition function, which, given the current state q, the symbol x on the input tape under scan, and the symbol w on the work tape under scan, specifies the new state q , the symbol w overwriting w, the direction ∆i to which the input tape pointer moves, and the direction ∆j to which the work tape pointer moves. The machine is required to hang (instead of halting) once it reaches on the accepting state, i.e., for all q ∈ [Q] such that y acc [q] = 1 and all x,w ∈ {0, 1}, it holds that δ(q, x, w) = (q, w, 0, 0). For input length N ≥ 1 and space complexity bound S ≥ 1, the set of internal configu- rations of M is C M,N,S = [N ]× [S]× {0, 1} S × [Q], where (i, j,W , q) ∈ C M,N,S specifies the input tape pointer i ∈ [N ], the work tape pointer j ∈ [S], the content of the work tape W ∈ {0, 1} S and the machine state q ∈ [Q]. For any bit-string x ∈ {0, 1} N for N ≥ 1 and time/space complexity bounds T, S ≥ 1, the machine M accepts x within time T and space S if there exists a sequence of internal configurations (computation path of T steps) c 0 , ... , c T ∈ C M,N,S with c t = (i t , j t ,W t , q t ) such that Denote by M | N,T,S the function {0, 1} N → {0, 1} mapping x to whether M accepts x in time T and space S. Define TM = {M | M is a Turing machine} to be the set of all Turing machines. Note that,the above definition does not allow the Turing machines moving off the in- put/work tape. For instance, if δ specifies moving the input pointer to the left/right when it is already at the leftmost/rightmost position, there is no valid next internal configuration. This type of situation can be handled by encoding the input string. The problem of moving off the work tape to the left can be managed similarly, however, moving off the work tape to the right is undetectable by the machine, and this is intended due to the space bound. That is, when the space bound is violated, the input is silently rejected. 2.3 Functional Encryption for Unbounded Attribute-Weighted Sum for Turing machines We formally present the syntax of FE for unbounded attribute-weighted sum (AWS) and de- fine adaptive simulation security of the primitive. We consider the set of all Turing machines TM = {M | M is a Turing machine} with time bound T and space bound S. Definition 2.2 (The AWS Functionality for Turing machines) For any n,N ∈ N, the class of attribute-weighted sum functionalities is defined as Definition 2.3 (Functional Encryption for Attribute-Weighted Sum) An unbounded- slot FE for unbounded attribute-weighted sum associated to the set of Turing machines TM and the message space M consists of four PPT algorithms defined as follows: Setup(1 λ ) The setup algorithm takes as input a security parameter and outputs the master secret-key MSK and the master public-key MPK. The key generation algorithm takes as input MSK and a tuple of Turing machines M = (M k ) k∈IM . It outputs a secret-key and make (M , I M ) available publicly. Enc(MPK, ( The encryption algorithm takes as input MPK and a mes- sage consisting of N number of public-private pair of attributes (x i , z i ) ∈ M such that the public attribute x i ∈ {0, 1} Ni for some ≥ 1 with time and space bounds given by T i , S i ≥ 1, and the private attribute . It outputs a ciphertext CT (xi,Ti,Si) and make )) The decryption algorithm takes as input SK (M ,IM ) along with the tuple of Turing machines and index sets and a ci- phertext CT (xi,Ti,Si) along with a collection of associated public attributes (x i , T i , It outputs a value in Z p or ⊥. Definition 2.4 (Adaptive Simulation Security) Let (Setup,KeyGen,Enc,Dec) be an unbounded-slot FE for unbounded attribute-weighted sum for TM and message space M. The scheme is said to be (Φ pre CT post )-adaptively simulation secure if for any PPT ad- versary A making at most Φ CT ciphertext queries and Φ pre post secret key queries before and after the ciphertext queries respectively, we have λ (1 ), where the experiments are defined as follows. Also, an unbounded-slot FE for attribute-weighted sums is said to be (poly,Φ CT , poly)-adaptively simulation secure if it is (Φ pre CT post )-adaptively simulation secure as well as Φ pre and Φ post are unbounded polynomials in the security pa- rameter λ. Expt U A A , r W e a S l (1 λ ) O KeyGen(MSK,·) 1. 1 N ← A(1 λ ); 1. input: (M , I M ) 2. (MSK,MPK)← Setup(1 λ ); 2. output: SK (M ,IM ) 3. (((x i , 1 Ti , 1 Si ), z i ∈ Z n p i ) i∈[N ] )← A OKeyGen(MSK,·) (MPK); O KeyGen 0(MSK ,·) 4. CT (xi,Ti,Si) ← Enc(MPK, ((x i , 1 Ti , 1 Si ), z i ) i∈[N ] ); 1. input: (M ϕ , I ) for ϕ ∈ [Φ pre ] 5. return A OKeyGen(MSK,·) (MPK,CT) 2. output: SK (Mϕ,IMϕ ) Expt U A A , i W d e S a l (1 λ ) Enc (MPK,MSK , (x i , 1 Ti , 1 Si , n i ) i∈[N ] , ·) N ← A(1 λ ∑ 1. 1 ); 1. input: V = {(M ϕ , I ), i∈[N ] M ϕ (x i ) z i 2. (MSK ,MPK)← Setup (1 λ , 1 N ); : ϕ ∈ [Φ pre ]} 3. (((x i , 1 Ti , 1 Si ), z i ∈ Z n p i ) i∈[N ] )← A OKeyGen∗ 0(MSK∗,·) (MPK) 2. output: CT (xi,Ti,Si) 4. CT (xi,Ti,Si) ← Enc (MPK,MSK , (x i , 1 Ti , 1 Si , n i ) i∈[N ] ,V); O eyGen (MSK ,(x ,1 O KeyGen 1(MSK ,(x i )i∈[N ] K ∗ ∗ Ti Si ,·,·) 5. return A 1 i ,1 )i∈[N ],·,·) (MPK,CT (xi,Ti,Si) ) ϕ M ∑ 1. input: (M , I ϕ ), i∈N M ϕ (x i ) z i for ϕ ∈ [Φ post ] 2. output: SK (Mϕ,IMϕ ) 2.4 Function-Hiding Slotted Inner Product Functional Encryp- tion Definition 2.5 (Slotted Inner Product Functional Encryption) Let G = (G 1 ,G 2 , G T , g 1 , g 2 , e) be a tuple of pairing groups of prime order p. A slotted inner product functional encryption (IPFE) scheme based on G consists of 5 efficient algorithms: IPFE.Setup(1 λ , S pub , S priv ) The setup algorithm takes as input a security parameter λ and two disjoint index sets, the public slot and the private slot S priv . It outputs the secret-key IPFE.MSK and the master public-key IPFE.MPK. Let S = S pub ∪S priv be the whole index set and |S|, |S pub |, |S priv | denote the number of indices in S, S pub and S priv respectively. IPFE.KeyGen(IPFE.MSK, [[v]] 2 ) The key generation algorithm takes as input IPFE.MSK and a vector ∈ G | 2 S| . It outputs a secret-key IPFE.SK for v ∈ Z |S| IPFE.Enc(IPFE.MSK, [[u]] 1 ) The encryption algorithm takes as input IPFE.MSK and a vector [[u]] 1 ∈ G | 1 S| . It outputs a ciphertext IPFE.CT for u ∈ Z | p S| . IPFE.Dec(IPFE.SK, IPFE.CT) The decryption algorithm takes as input a secret-key IPFE.SK and a ciphertext IPFE.CT. It outputs an element from G T . IPFE.SlotEnc(IPFE.MPK, [[u]] 1 ) The slot encryption algorithm takes as input IPFE.MPK and a vector [[u]] ∈ It outputs a ciphertext IPFE.CT for 2.5 Arithmetic Key Garbling Scheme for Turing machines The notion of arithmetic key garbling scheme (AKGS) is an information theoretic primi- tive, inspired by randomized encodings and partial garbling schemes. It garbles a function f : Z n p → Z p (possibly of size (m + 1)) along with two secrets z, β ∈ Z p and produces affine label functions L 1 , ... , L m+1 : Z n p → Z p . Given f , an input x ∈ Z n p and the val- ues L 1 (x), ... , there is an efficient algorithm which computes zf(x) + β without revealing any information about z and β. We define AKGS for the function class F = {M | N,T,S : Z N p → Z p , N, T, S ≥ 1, p prime} for the set of all time/space bounded Turing machine computations. In this section, we build a secret-key, 1-slot FE scheme for the unbounded attribute- weighted sum functionality in L. At a high level, the scheme satisfies the following prop- erties: – The setup is independent of any parameters, other than the security parameter λ. Specif- ically, the length of vectors and attributes, number of Turing machines and their sizes are not fixed a-priori during setup. These parameters are flexible and can be chosen at the time of key generation or encryption. – A secret key is associated with a tuple (M , I M ), where M = (M k ) k∈IM is a tuple of Turing machines with indices k from an index set I M . For each k ∈ I M ,M k ∈ L, i.e., M k is represented by a deterministic log-space bounded Turing machine (with an arbitrary number of states). – Each ciphertext encodes a tuple of public-private attributes (x, z) of lengths N and n respectively. The runtime T and space bound S for all the machines in M are associated with x which is the input of each machine M k . – Finally, decrypting a ciphertext CT x that encodes (x, z) with a secret key SK M ,IM that is tied to (M , I M ) reveals the value z[k] ·M k (x) whenever I M ⊆ [n]. We build an FE scheme for the functionality sketched above (also described in Defi- nition 2.2) and prove it to be simulation secure against a single ciphertext and secret key query, where the key can be asked either before or after the ciphertext query. Accordingly, we denote the scheme as = (Setup,KeyGen,Enc,Dec), where the index (1, 1, 1) represents in order the number of secret keys, ciphertexts and slots supported. Below, we list the ingredients for our scheme. 1. IPFE = (IPFE.Setup, IPFE.KeyGen, IPFE.Enc, IPFE.Dec): a secret-key, function-hiding IPFE based on G, where G = (G 1 ,G 2 ,G T , g 1 , g 2 , e) is pairing group tuple of prime order p. 2. AKGS = (Garble,Eval): a special piecewise-secure AKGS for the function class M = describing the set of time/space bounded Turing machines. In our construction, the Garble algorithm would run implicitly under the hood of IPFE and thus, it is not invoked directly in the scheme. 3.1 The Construction SK-UAWS L ( 1,1,1) = (Setup,KeyGen,Enc,Dec) is described below. Setup(1 λ ): On input the security parameter, fix a prime integer p ∈ N and define the slots for two IPFE master secret keys as follows: c o } sim mp IPFE.M˜SK) and a function tuple M = (M k ) k∈IM indexed w.r.t. an index set I M ⊂ N of arbitrary size, parse M k = (Q k ,y k , δ k ) ∈ TM ∀k ∈ I M and sample the set of elements For all k ∈ I M , do the following: 1. For M k = (Q k ,y k , δ k ), compute its transition blocks , ∀τ ∈ T . 2. Sample independent random vectors r k,f ← Z Q p k and a random element π k ∈ Z p . 3. For the following vector compute a secret key IPFE.SK k,init ← IPFE.KeyGen (IPFE.MSK, [[v k,init ]] 2 ): 4. For each q ∈ [Q k ], compute the following secret keys where the vectors v˜ k,q are defined as follows: Finally, it returns the secret key as ( { } ) { SK (M ,IM ) = (M , I M ), IPFE.SK k,init , IPFE.SK k,q ,IP ˜ FE.SK k,q } q∈[Qk] . k∈I M T 2 S Enc(MSK, (x, 1 , 1 ), z): On input the master secret key MSK = (IPFE.MSK, IPFE.M˜SK), a public attribute x ∈ {0, 1} N for some arbitrary N ≥ 1 with time and space complexity bounds given by T, S ≥ 1 (as 1 T , 1 2S ) respectively, and the private attribute z ∈ Z n p for some arbitrary n ≥ 1, it does the following: m vector r x ← Z [0,T ]×[N ] S 1. Sample a rando ×[S]×{0,1} p . 2. For each k ∈ [n], do the following: (a) Sample a random element ρ k ← Z p . (b) Compute a ciphertext IPFE.CT k,init ← IPFE.Enc(IPFE.MSK, [[u k,init ]] 1 ) for the vector ( (i) Compute the transition coefficients c τ (x; t, i, j,W ; r x ),∀τ ∈ T using r x . (ii) Compute the ciphertext ← IPFE.Enc(IPFE.MSK, vector u k,t,i,j,W : (d) For t = T + 1, compute the ciphertext IP ˜ FE.CT k,T+1,i,j,W ← I˜PFE.Enc (IPFE.M˜SK, [[u˜ k,T+1,i,j,W ]] 1 ) for the vector u˜ k,T+1,i,j,W : Dec(SK : On input a secret key and a ciphertext , do the following: 1. Parse follows: } ) I P ˜ FE.CTk,T+1,i,j,W ,x ∈ {0, 1} N . k∈[n],i∈[N ],j∈[S],W∈{0,1} S 2. Output ⊥, if I M ̸⊆ [n]. Else, select the sequence of ciphertexts for the indices k ∈ I M as 3. Recall that ∀k ∈ [N ] × [S] × {0, 1} S × [Q ], and that we denote element in it as θ ∈ C Mk,N,S where the only component in the tuple k depending on k is simplicity of notations, we enumerate the states each M as 1, ... , [Q] for some Q ∈ N. Invoke the IPFE decryption compute all label values as: ∀k ∈ I M : [[ℓ k,init ]] T = IPFE.Dec(IPFE.SK k,init , IPFE.CT k,init ) ∀k ∈ I , t ∈ , [[ℓ ∀k 4. Next, invoke the AKGS evaluation and obtain the combined value 5. Finally, it returns µ = DLog . We assume that the attribute-weighted sum lies within a specified polynomial-sized domain so that discrete logarithm can be solved via brute-force. 4 1-Slot FE for Unbounded AWS for L We construct a public key 1-slot FE scheme for the unbounded attribute-weighted sum func- tionality for L. The scheme satisfies the same properties as of the SK-UAWS L ( 1,1,1) . However, the public key scheme supports releasing polynomially many secret keys and a single challenge ciphertext, hence we denote the scheme as . Along with the AKGS for Logspace Turing machines we require a function-hiding slotted IPFE = (IPFE.Setup, IPFE.KeyGen, IPFE.Enc, IPFE.SlotEnc, IPFE.Dec) based on G, where G = (G 1 ,G 2 ,G T , g 1 , g 2 , e) is pairing group tuple of prime order p. 4.1 The Construction We now describe the PK-UAWS L ( poly,1,1) = (Setup,KeyGen,Enc,Dec). Setup(1 λ ): On input the security parameter, fix a prime integer p ∈ N and define the slots for generating two pair of IPFE master keys as follows: { S pub = index 1 , index 2 , pad, init pub , rand pub , acc pub} {tb p τ ub |τ ∈ T }, S copy = {init copy , rand copy } ∪ {tb c τ opy |τ ∈ T }, S priv = S copy ∪ S 1-UAWS ∪ {pad copy , pad temp , acc perm , sim copy }, S˜ pub ={index 1 , index 2 , rand pub , acc pub }, S˜ 1,copy ={rand c 1 opy , acc c 1 opy }, S˜ 2,copy = {rand c 2 opy , acc c 2 opy }, S˜ priv = S˜ 1,copy ∪ S˜ 2,copy ∪ S˜ 1-UAWS ∪ {sim copy } It generates (IPFE.MPK, IPFE.MSK) ← IPFE.Setup(S pub ,S priv ) and (IPFE.M˜PK, IPFE.M˜SK) ← IPFE.Setup(S˜ pub , S˜ priv ) and returnsMSK = (IPFE.MSK, IPFE.M˜SK) andMPK = (IPFE.MPK, IPFE.M˜PK). KeyGen(MSK, (M , I M )): On input the master secret key MSK = (IPFE.MSK, IPFE.M˜SK) and a function tuple M = (M k ) k∈IM indexed w.r.t. an index set I M ⊂ N of arbitrary size, it parses M k = (Q k ,y k , δ k ) ∈ TM ∀k ∈ I M and samples the set of elements } mod p . It computes a secret key IPFE.SK pad ← IPFE.KeyGen(IPFE.MSK, [[v pad ]] 2 ) for the following vector v pad : For all k ∈ I M , do the following: 1. For M k = (Q k ,y k , δ k ), compute transition blocks M k,τ ∈ {0, 1} Qk×Qk ,∀τ ∈ T k . 2. Sample independent random vector r k,f ← and a random element π k ∈ Z p . 3. For the following vector v k,init , compute a secret key IPFE.SK k,init ← IPFE.KeyGen( 4. For each q ∈ [Q k ], compute the following secret keys where the vectors v k,q , v˜ k,q are defined as follows: T 2 S Enc(MPK, (x, 1 , 1 ), z): On input the master public key MPK = (IPFE.MPK, IPFE.M˜PK), a public attribute x ∈ {0, 1} N for some arbitrary N ≥ 1 with time and space complexity bounds given by T, S ≥ 1 (as 1 T , 1 2S ) respectively, and the private attribute z ∈ Z n p for some arbitrary n ≥ 1, it samples s ← Z p and compute a ciphertext IPFE.CT pad ← IPFE.Enc(IPFE.MPK, [[u pad ]] 1 ) for the vector u pad : Next, it does the following: 1. Sample a random vector 2. For each k ∈ [n], do the following: (a) Sample a random element ρ k ← Z p . (b) Compute a ciphertext IPFE.CT k,init ← IPFE.SlotEnc(IPFE.MPK, [[u k,init ]] 1 ) for the vector u k,init : (c) For all t ∈ [T ], i ∈ [N ], j ∈ [S],W ∈ {0, 1} S , do the following: (i) Compute the transition coefficients c τ (x; t, i, j,W ; r x ),∀τ ∈ T using r x . (ii) Compute IPFE.CT k,t,i,j,W ← IPFE.SlotEnc(IPFE.MPK, for the vec- tor u k,t,i,j,W : (d) For t = T+1, and for all i ∈ [N ], j ∈ [S],W ∈ {0, 1} S , computeIP ˜ FE.CT k,T+1,i,j,W ← IPFE.SlotEnc(IPFE.M˜PK, [[u˜ k,T+1,i,j,W ]] 1 ) for the vector u˜ k,T+1,i,j,W : 3. Finally, it returns the ciphertext as Dec(SK (M ,IM ) ,CT (x,T,S) ): On input a secret key SK (M ,IM ) and a ciphertext CT (x,T,S) , do the following: 1. Parse follows: 2. Output ⊥, if I M [n]. Else, select the sequence of ciphertexts for the indices k ∈ I M as 3. Use the IPFE decryption to obtain [[µ pad ]] T ← IPFE.Dec(IPFE.SK pad , IPFE.CT pad ). 4. Recall that ∀k ∈ I M , C Mk,N,S = [N ] × [S] × {0, 1} S × [Q k ], and that we denote any element in it as θ k = (i, j,W , q) ∈ C Mk,N,S where the only component in the tuple θ k depending on k is q ∈ [Q k ]. Invoke the IPFE decryption to compute all label values as: 5. Next, invoke the AKGS evaluation procedure and obtain the combined value , it returns µ ′ 6. Finally such that [[µ]] T = ([[µ pad ]] T ) µ , where g T = e(g 1 , g 2 ). We assume that the desired attribute-weighted sum lies within a specified polynomial-sized do- main so that µ can be searched via brute-force. 5 System Implementations Fig. 1 illustrates an encryption system 100 in an embodiment of the present invention in- cluding a setup algorithm Setup, an encryption algorithm Enc, a key generation algorithm KeyGen, and a decryption algorithm Dec of the functional encryption implementations. As illustrated in Fig. 1, the encryption system 100 in the embodiment of the present invention includes a setup device 10, an encryption device 20, a key generation device 30, and a decryp- tion device 40. These devices are communicably connected to each other via a communication network 105. The setup device 10 can be a computer or a computer system configured to execute the setup algorithm Setup. The setup device 10 includes a setup processing unit 101 and a storage unit 102. The setup processing unit 101 executes the setup algorithm Setup as described herein. In the setup algorithm Setup, a functional encryption setup algorithm executes twice to generate and output a set of master public-secret key pairs FE.MSK and FE.MPK and a set of master public-secret key pairs FE ˜ .MSK and FE ˜ .MPK. The first FE key pair (FE.MPK,FE.MSK) can be used for for encrypting a public part of attributes and the second FE key pair (FE ˜ .MPK,F ˜ E.MSK) can be used for use in encrypting a private part of the attributes. In the storage unit 102, various types of information used in the setup algorithm Setup, an output result of the setup algorithm Setup, and the like are stored. Note that the setup processing unit 101 can be implemented by the processing of execut- ing, by an arithmetic device such as a processor, one or more programs installed in the setup device 10, for example. The storage unit 102 can be implemented using various memories (e.g., a main storage device and an auxiliary storage device). The encryption device 20 can be a computer or a computer system configured to execute the encryption algorithm Enc. The encryption device 20 includes an encryption processing unit 201 and a storage unit 202. The encryption processing unit 201 executes the encryption algorithm by receiving the master public key MPK as FE.MPK and FE ˜ .MPK, one or more public attributes x, and one or more private attributes z = {z t } t∈Iz , and computing FE ciphertext FE.CT t,init for the value u t,init . The storage unit 202 stores various types of infor- mation used in the encryption algorithm Enc, an output result (e.g., the ciphertext) of the encryption algorithm Enc, and the like are stored. Note that the encryption processing unit 201 can be implemented by the processing of executing, by an arithmetic device such as a processor, one or more programs installed in the encryption device 20, for example. The storage unit 202 can be implemented using various memories (e.g., a main storage device and an auxiliary storage device). The key generation device 30 is a computer or a computer system configured to execute the key generation algorithm KeyGen. The key generation device 30 can include a key gen- eration processing unit 301 and a storage unit 302. The key generation processing unit 301 executes the key generation algorithm KeyGen by receiving the master secret key MSK as FE.MSK and F ˜ E.MSK from the setup storage unit and a function M = and out- putting the secret key SK M as FE.SK pad , {FE.SK t,init ,FE.SK t }, {F˜E.SK t } and M , and storing the output in an electronic key generation storage unit. In the storage unit 302, various types of information used in the key generation algorithm KeyGen, an output result of the key generation algorithm KeyGen, and the like are stored. Note that the key generation processing unit 301 is implemented by the processing of executing, by an arithmetic device such as a processor, one or more programs installed in the key generation device 30, for example. The storage unit 302 can be implemented using various memories (e.g., a main storage device and an auxiliary storage device). The decryption device 40 can be a computer or a computer system configured to execute the decryption algorithm Dec. The decryption device 40 includes a decryption processing unit 401 and a storage unit 402. The decryption processing unit 401 executes the decryption algorithm by receiving the function M and the secret key SK M for function M ; receiving one or more public attributes x and a ciphertext CT for x and recovering the functional value µ from ρ pad and d, and outputting the value µ as the plaintext and storing the output in an electronic decryption device storage unit. In the storage unit 402, various types of information used in the decryption algorithm Dec, an output result of the decryption algorithm Dec, and the like are stored. Note that the decryption processing unit 401 is implemented by the processing of exe- cuting, by an arithmetic device such as a processor, one or more programs installed in the decryption device 40, for example. The storage unit 402 can be implemented using various memories (e.g., a main storage device and an auxiliary storage device). The configuration of the encryption system 100 illustrated in FIG. 1 is an example, and other configurations may be employed. For example, any two or more devices of the setup device 10, the encryption device 20, and the key generation device 30 maybe configured as a single device. The encryption system 100 may include a plurality of decryption devices 40. Similarly, any one or more devices of the setup device 10, the encryption device 20, and the key generation device 30 may be provided as a plurality of devices. With reference to Fig. 2, an example system architecture is illustrated. A user 215 allows a remote server 210 to run a specific function F on a ciphertext by issuing a token T F . The server executes F on an available ciphertext C and generates a result R F an encrypted form. The system can include a trusted authority (TA) 220 who is responsible to construct a token T F for the requested function. As illustrated, data owner 205 uploads ciphertext C onto the remote server 210. Data user 215 requests TA 220 for a token for a function F . TA 220 issues token T F to the data user. Data user then sends T F to the server. Server runs F on the encrypted data, and forwards the result R F to the data user. Figs. 3 and 4 depict example computer systems useful for implementing various embod- iments described in the present disclosure. Various embodiments may be implemented, for example, using one or more computer systems, such as computer system 500 shown in Fig. 3. One or more computer system(s) 500 may be used, for example, to implement any of the embodiments discussed herein, as well as combinations and sub-combinations thereof. Computer system 500 may include one or more processors (also called central processing units, processing devices, or CPUs), such as a processor 504. Processor 504 may be connected to a communication infrastructure 506 (e.g., such as a bus). Computer system 500 may also include user input/output device(s) 503, such as monitors, keyboards, pointing devices, etc., which may communicate with communication infrastruc- ture 506 through user input/output interface(s) 502. One or more of processors 504 may be a graphics processing unit (GPU). In an embodiment, a GPU may be a processor that is a specialized electronic circuit designed to process mathematically intensive applications. The GPU may have a parallel structure that is efficient for parallel processing of large blocks of data, such as mathematically intensive data common to computer graphics applications, images, videos, etc. Computer system 500 may also include a main memory 508, such as random-access memory (RAM). Main memory 508 may include one or more levels of cache. Main memory 508 may have stored therein control logic (i.e., computer software, instructions, etc.) and/or data. Computer system 500 may also include one or more secondary storage devices or secondary memory 510. Secondary memory 510 may include, for example, a hard disk drive 512 and/or a removable storage device or removable storage drive 514. Removable storage drive 514 may interact with a removable storage unit 518. Removable storage unit 518 may include a computer-usable or readable storage device having stored thereon computer software (control logic) and/or data. Removable storage drive 514 may read from and/or write to removable storage unit 518. Secondary memory 510 may include other means, devices, components, instrumentalities, or other approaches for allowing computer programs and/or other instructions and/or data to be accessed by computer system 500. Such means, devices, components, instrumentalities, or other approaches may include, for example, a removable storage unit 522 and an interface 520. Examples of the removable storage unit 522 and the interface 520 may include a program cartridge and cartridge interface, a removable memory chip (such as an EPROM or PROM) and associated socket, a memory stick and USB port, a memory card and associated memory card slot, and/or any other removable storage unit and associated interface. Computer system 500 may further include communications interface 524 (e.g., network interface). Communications interface 524 may enable computer system 500 to communicate and interact with any combination of external devices, external networks, external entities, etc. (individually and collectively referenced as remote device(s), network(s), entity(ies) 528). For example, communications interface 524 may allow computer system 500 to communicate with external or remote device(s), network(s), entity(ies) 528 over communications path 526, which may be wired and/or wireless (or a combination thereof), and which may include any combination of LANs, WANs, the Internet, etc. Control logic and/or data may be transmitted to and from computer system 500 via communications path 526. Computer system 500 may also be any of a personal digital assistant (PDA), desktop workstation, laptop or notebook computer, netbook, tablet, smartphone, smartwatch or other wearable devices, appliance, part of the Internet-of-Things, and/or embedded system, to name a few non-limiting examples, or any combination thereof. Computer system 500 may be a client or server computing device, accessing or hosting any applications and/or data through any delivery paradigm, including but not limited to remote or distributed cloud computing solutions; local or on-premises software (“on-premise” cloud- based solutions); “as a service” models (e.g., content as a service (CaaS), digital content as a service (DCaaS), software as a service (SaaS), managed software as a service (MSaaS), platform as a service (PaaS), desktop as a service (DaaS), framework as a service (FaaS), backend as a service (BaaS), mobile backend as a service (MBaaS), infrastructure as a service (IaaS), etc.); and/or a hybrid model including any combination of the foregoing examples or other services or delivery paradigms. Fig. 4 illustrates an example machine of a computer system 900 within which a set of instructions, for causing the machine to perform any one or more of the operations discussed herein, may be executed. In alternative implementations, the machine may be connected (e.g., networked) to other machines in a LAN, an intranet, an extranet, and/or the Internet. The machine may operate in the capacity of a server or a client machine in a client-server network environment, as a peer machine in a peer-to-peer (or distributed) network environment, or as a server or a client machine in a cloud computing infrastructure or environment. The machine may be a personal computer (PC), a tablet PC, a set-top box (STB), a Personal Digital Assistant (PDA), a cellular telephone, a web appliance, a server, a network router, a switch or bridge, a specialized application or network security appliance or device, or any machine capable of executing a set of instructions (sequential or otherwise) that specify actions to be taken by that machine. Further, while a single machine is illustrated, the term “machine” shall also be taken to include any collection of machines that individually or jointly execute a set (or multiple sets) of instructions to perform any one or more of the methodologies discussed herein. The example computer system 900 includes a processing device 902, a main memory 904 (e.g., read-only memory (ROM), flash memory, dynamic random-access memory (DRAM) such as synchronous DRAM (SDRAM), etc.), a static memory 906 (e.g., flash memory, static random-access memory (SRAM), etc.), and a data storage device 918, which communicate with each other via a bus 930. Processing device 902 represents one or more processing devices such as a microproces- sor, a central processing unit, or the like. More particularly, the processing device may be complex instruction set computing (CISC) microprocessor, reduced instruction set comput- ing (RISC) microprocessor, very long instruction word (VLIW) microprocessor, or processor implementing other instruction sets, or processors implementing a combination of instruc- tion sets. Processing device 902 may also be one or more special-purpose processing devices such as an application-specific integrated circuit (ASIC), a field-programmable gate array (FPGA), a digital signal processor (DSP), network processor, or the like. The processing device 902 is configured to execute instructions 926 for performing the operations and steps discussed herein. The computer system 900 may further include a network interface device 908 to commu- nicate over the network 920. The computer system 900 also may include a video display unit 910, an alphanumeric input device 912 (e.g., a keyboard), a cursor control device 914 (e.g., a mouse), a graphics processing unit 922, a signal generation device 916 (e.g., a speaker), graphics processing unit 922, video processing unit 928, and audio processing unit 932. The data storage device 918 may include a machine-readable medium 924 (also known as a computer-readable storage medium) on which is stored one or more sets of instructions 926 (e.g., software instructions) embodying any one or more of the operations described herein. The instructions 926 may also reside, completely or at least partially, within the main memory 904 and/or within the processing device 902 during execution thereof by the computer system 900, where the main memory 904 and the processing device 902 also constitute machine-readable storage media. In an example, the instructions 926 include instructions to implement operations and functionality corresponding to the disclosed subject matter. While the machine-readable storage medium 924 is shown in an example implementation to be a single medium, the term “machine-readable storage medium” should be taken to include a single medium or multiple media (e.g., a centralized or distributed database, and/or associated caches and servers) that store the one or more sets of instructions 926. The term “machine-readable storage medium” shall also be taken to include any medium that is capable of storing or encoding a set of instructions 926 for execution by the machine and that cause the machine to perform any one or more of the operations of the present disclosure. The term “machine-readable storage medium” shall accordingly be taken to include, but not be limited to, solid-state memories, optical media, and magnetic media. Some portions of the detailed description have been presented in terms of algorithms and symbolic representations of operations on data bits within a computer memory. These algorithmic descriptions and representations are the ways used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. An algorithm is here, and generally, conceived to be a self-consistent sequence of operations leading to a desired result. The operations are those requiring physical manipu- lations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, combined, compared, and otherwise manipulated. It has proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like. It should be borne in mind, however, that all of these and similar terms are to be as- sociated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Unless specifically stated otherwise as apparent from the above discus- sion, it is appreciated that throughout the description, discussions utilizing terms such as “identifying” or “determining” or “executing” or “performing” or “collecting” or “creating” or “sending” or the like, refer to the action and processes of a computer system, or similar electronic computing device, that manipulates and transforms data represented as physi- cal (electronic) quantities within the computer system’s registers and memories into other data similarly represented as physical quantities within the computer system memories or registers or other such information storage devices. The present disclosure also relates to an apparatus for performing the operations herein. This apparatus may be specially constructed for the intended purposes, or it may comprise a computer selectively activated or reconfigured by a computer program stored in the com- puter. Such a computer program may be stored in a computer-readable storage medium, such as but not limited to, any type of disk including floppy disks, optical disks, CD-ROMs, and magnetic-optical disks, read-only memories (ROMs), random access memories (RAMs), EPROMs, EEPROMs, magnetic or optical cards, or any type of media suitable for storing electronic instructions, each coupled to a computer system bus. The operations and illustrations presented herein are not inherently related to any par- ticular computer or other apparatus. Various types of systems may be used with programs in accordance with the teachings herein, or it may prove convenient to construct a more specialized apparatus to perform the operations. The structure for a variety of these systems will appear as set forth in the description herein. In addition, the present disclosure is not described with reference to any particular programming language. It will be appreciated that a variety of programming languages may be used to implement the teachings of the disclosure as described herein. The present disclosure may be provided as a computer program product, or software, that may include a machine-readable medium having stored thereon instructions, which may be used to program a computer system (or other electronic devices) to perform a process accord- ing to the present disclosure. A machine-readable medium includes any mechanism for storing information in a form readable by a machine (e.g., a computer). For example, a machine- readable (e.g., computer-readable) medium includes a machine (e.g., a computer) readable storage medium such as read-only memory (“ROM”), random access memory (“RAM”), magnetic disk storage media, optical storage media, flash memory devices, etc. In some embodiments, a tangible, non-transitory apparatus or article of manufacture comprising a tangible, non-transitory computer useable or readable medium having control logic (software) stored thereon may also be referred to herein as a computer program product or program storage device. This includes, but is not limited to, computer system 500, main memory 508, secondary memory 510, and removable storage units 518 and 522, as well as tangible articles of manufacture embodying any combination of the foregoing. Such control logic, when executed by one or more data processing devices (such as computer system 500), may cause such data processing devices to operate as described herein. Based on the teachings contained in this disclosure, it will be apparent to persons skilled in the relevant art(s) how to make and use embodiments of this disclosure using data processing devices, computer systems, and/or computer architectures other than that shown in Figs. 3 and 4. In particular, embodiments can operate with software, hardware, and/or operating system implementations other than those described herein. It is to be appreciated that the Detailed Description section, and not any other section, is intended to be used to interpret the claims. Other sections can set forth one or more but not all exemplary embodiments as contemplated by the inventor(s), and thus, are not intended to limit this disclosure or the appended claims in any way. While this disclosure describes exemplary embodiments for exemplary fields and applica- tions, it should be understood that the disclosure is not limited thereto. Other embodiments and modifications thereto are possible and are within the scope and spirit of this disclo- sure. For example, and without limiting the generality of this paragraph, embodiments are not limited to the software, hardware, firmware, and/or entities illustrated in the figures described herein. Further, embodiments (whether or not explicitly described herein) have significant utility to fields and applications beyond the examples described herein. Embodiments have been described herein with the aid of functional building blocks illus- trating the implementation of specified functions and relationships thereof. The boundaries of these functional building blocks have been arbitrarily defined herein for the convenience of the description. Alternate boundaries can be defined as long as the specified functions and relationships (or equivalents thereof) are appropriately performed. Also, alternative em- bodiments can perform functional blocks, steps, operations, methods, etc. using orderings different than those described herein. References herein to “one embodiment,” “an embodiment,” “an example embodiment,” or similar phrases, indicate that the embodiment described can include a particular feature, structure, or characteristic, but every embodiment may not necessarily include the particular feature, structure, or characteristic. Moreover, such phrases are not necessarily referring to the same embodiment. Further, when a particular feature, structure, or characteristic is described in connection with an embodiment, it would be within the knowledge of persons skilled in the relevant art(s) to incorporate such feature, structure, or characteristic into other embodiments whether or not explicitly mentioned or described herein. Additionally, some embodiments can be described using the expression “coupled” and “connected” along with their derivatives. These terms are not necessarily intended as synonyms for each other. For example, some embodiments can be described using the terms “connected” and/or “coupled” to indicate that two or more elements are in direct physical or electrical contact with each other. The term “coupled,” however, can also mean that two or more elements are not in direct contact with each other, but yet still co-operate or interact with each other. The breadth and scope of this disclosure should not be limited by any of the above- described exemplary embodiments but should be defined only in accordance with the fol- lowing claims and their equivalents. In the foregoing specification, implementations of the disclosure have been described with reference to specific example implementations thereof. It will be evident that various modifications may be made thereto without departing from the broader spirit and scope of implementations of the disclosure as set forth in the following claims. The specification and drawings are, accordingly, to be regarded in an illustrative sense rather than a restrictive sense.