Fully Homomorphic Encryption Method Based On A Bootstrappable Encryption Scheme, Computer Program And Apparatus
A method includes encrypting information in accordance with an encryption scheme that uses a public key; encrypting a plurality of instances of a secret key, each being encrypted using at least one additional instance of the public key; sending the encrypted information and the plurality of encrypted instances of the secret key to a destination; receiving an encrypted result from the destination; and decrypting the encrypted result. A further method includes receiving a plurality of encrypted secret keys and information descriptive of a function to be performed on data; converting the information to a circuit configured to perform the function on the data; and applying the data to inputs of the circuit and evaluating the data using, in turn, the plurality of encrypted secret keys.
1 . A method, comprising:
encrypting information in accordance with an encryption scheme that uses a public key;
encrypting a plurality of secret keys, each being encrypted using one public key of a plurality of additional public keys and encrypted using different ones of the plurality of additional public keys;
sending the encrypted information and the plurality of encrypted secret keys to a destination;
receiving an encrypted result from the destination, the encrypted result corresponding at least to the encrypted information and the plurality of encrypted secret keys; and
decrypting the encrypted result.
2 . The method of claim 1 , where a number of the plurality of encrypted secret keys is descriptive of a function to be performed by the destination on the encrypted information.
3 . The method of claim 1 , where a number of the plurality of encrypted secret keys is descriptive of a number of levels of a circuit used to compute a function to be performed by the destination on the encrypted information.
4 . The method of claim 1 , where the encrypted result comprises an output of a search engine.
5 . The method of claim 1 , where the encrypted result comprises information related to one or more files stored at the destination.
6 . The method of claim 1 , where the encrypted result comprises an output of a spam filter applied to encrypted messages at the destination.
7 . A method, comprising:
receiving from a requestor a plurality of encrypted secret keys and encrypted information;
determining a circuit configured to perform a function on the encrypted information;
applying the encrypted information to inputs of the circuit and evaluating the encrypted information using, in turn, the plurality of encrypted secret keys to create an encrypted result; and
sending the encrypted result to the requestor.
8 . The method of claim 7 , where the plurality of secret keys are each encrypted using a different one of a plurality of public keys.
9 . The method of claim 7 , where the received encrypted information is encrypted using a first public key, and where the plurality of secret keys are each encrypted using one of a plurality of additional public keys and encrypted using different ones of the plurality of additional public keys.
10 . The method of claim 7 , where a number of the plurality of received encrypted secret keys is descriptive of a number of levels of the circuit and wherein determining further comprises determining at least the number of levels of the circuit based on the number of the plurality of received encrypted secret keys.
11 .- 15 . (canceled)
16 . A non-transitory program storage device readable by a machine and tangibly embodying a program of instructions executable by the machine for performing operations comprising:
encrypting information in accordance with an encryption scheme that uses a public key;
encrypting a plurality of secret keys, each being encrypted using one additional public key of a plurality of additional public keys and encrypted using different ones of the plurality of additional public keys;
sending the encrypted information and the plurality of encrypted the secret keys to a destination;
receiving an encrypted result from the destination, the encrypted result corresponding at least to the encrypted information and the plurality of encrypted secret keys; and
decrypting the encrypted result.
17 . The program storage device of claim 16 , where a number of the plurality of encrypted secret keys is descriptive of a function to be performed by the destination on the encrypted information.
18 . The program storage device of claim 16 , where a number of the plurality of encrypted secret keys is descriptive of a number of levels of a circuit used to compute a function to be performed by the destination on the encrypted information.
19 . The program storage device of claim 16 , where the encrypted result comprises an output of a search engine.
20 . The program storage device of claim 16 , where the encrypted result comprises information related to one or more files stored at the destination.
21 . The program storage device of claim 16 , where the encrypted result comprises an output of a spam filter applied to encrypted messages at the destination.
22 . A non-transitory program storage device readable by a machine and tangibly embodying a program of instructions executable by the machine for performing operations comprising:
receiving from a requestor a plurality of encrypted secret keys and encrypted information;
determining a circuit configured to perform a function on the encrypted information;
applying the encrypted information to inputs of the circuit and evaluating the encrypted information using, in turn, the plurality of encrypted secret keys to create an encrypted result; and
sending the encrypted result to the requestor.
23 . The program storage device of claim 22 , where the plurality of secret keys are each encrypted using a different one of a plurality of public keys.
24 . The program storage device of claim 22 , where the received encrypted information is encrypted using a first public key, and where the plurality of secret keys are each encrypted using one of a plurality of additional public keys and encrypted using different ones of the plurality of additional public keys.
25 . The program storage device of claim 22 , where a number of the plurality of received encrypted secret keys is descriptive of a number of levels of the circuit and wherein determining further comprises determining at least the number of levels of the circuit based on the number of the plurality of received encrypted secret keys.