Abstract:
A blueprint that produces a family of FHE schemes given any homomorphic monoidal encryption scheme. The ciphertext space is a subspace of the monoid algebra over F 2  generated by the initial encryption monoid. The method can be generally applied to any monoid encryption schemes. Advantageously, monoid encryption schemes produce efficient FHE schemes with the inventive blueprint. Furthermore, the corresponding FHE scheme can correctly decrypt and efficiently compute circuits with low (polynomial in the security parameter) additive depth, a feature not realized by prior encryption methods.

Description:
FIELD OF THE INVENTION 
       [0001]    The present invention is directed to methods for processing a message. Yet more specifically, the present invention is directed to methods and systems for secure transmittal of information which is encrypted and decrypted using fully homomorphic encryption and decryption methods. 
       BACKGROUND OF THE INVENTION 
       [0002]    Homomorphic encryption is a form of encryption that allows (some) computations to be carried out on ciphertext, thus generating an encrypted result which, when decrypted, matches the result of operations performed on the plaintext. A fully homomorphic encryption scheme (FHE) allows a computer to receive encrypted data and perform arbitrarily chosen computations on that data while it remains encrypted, without requiring the use of a decryption key. This concept, originally called a privacy homomorphism, was introduced by Rivest, Adleman and Dertouzos in [RAD78], shortly after the development of RSA [RSA78]. Many known public-key cryptosystems, like RSA, support one operation (either addition or multiplication) of encrypted data; supporting both operations at the same time is a much more difficult problem, and until recently, all attempts at constructing fully homomorphic encryption schemes turned out to be insecure. 
         [0003]    In the early 1990&#39;s, Fellows et al. [FK94] proposed a first algorithm, PolyCracker, which is capable of performing algebraic computations on encrypted data without revealing the encrypted information. However, several years later, the algorithm proved to be insecure and attempted modifications to make the algorithm secure were not successful. 
         [0004]    In the late 1990&#39;s, a secure and efficient algorithm to encode messages (NTRU) was proposed by [HPS98]. The algorithm has the same ring homomorphic feature (defined further below) as PolyCracker, but only a few operations can be performed on the encrypted data. Specifically, only a few additions and no multiplications are allowed. This “leveled” feature comes from the fact that the algorithm is an “error” based one, so that only circuits which keep the noise very low can be applied to the encrypted data. 
         [0005]    In his thesis [GeTh09], C. Gentry described the first construction of a fully homomorphic cryptosystem that supports both addition and multiplication. Gentry&#39;s general recipe that produces fully homomorphic encryption schemes consists of several steps. First, one considers a probabilistic homomorphic encryption scheme. A probabilistic scheme is an encryption scheme that assigns to each message several different ciphertexts. One way of obtaining probabilistic schemes is by constructing encryption algorithms that depend on certain random quantities, called errors. Such encryption schemes are also called error-based encryption schemes. In general, a homomorphic encryption scheme is somewhat homomorphic, that is it can “handle” (i.e. decrypt correctly) low-degree polynomials on the encrypted data. Next, one squashes the decryption algorithm such that it can be expressed by a low-degree polynomial supported by the scheme, in which case the scheme is called bootstrappable. Finally, Gentry describes a bootstrapping transformation that allows conversion of a boostrappable scheme into a fully homomorphic encryption scheme ([Ge11]). The bootstrapping transformation involves a recryption procedure in which the scheme&#39;s decryption algorithm is evaluated homomorphically. Gentry applied in [GeTh09] (see also [Ge09]) this general recipe to a GGH-type scheme [GGH97] over ideal lattices. A significant research effort has been devoted to increase the efficiency of the implementation of this scheme [GH11], [SV10]. 
         [0006]    The main building block in Gentry&#39;s construction, that is, the somewhat homomorphic encryption scheme, was based on the hardness of problems on ideal lattices. Starting with the seminal work of Z. Brakerski and V. Vaikuntanathan [BV11], a new generation of fully homomorphic encryption schemes were constructed. The security of these schemes is based on the learning with error (LWE) assumption (more generally on the ring learning with error (RLWE) assumption) that is known to be at least as hard as solving hard problems in general lattices [R05]. To obtain (leveled) fully homomorphic encryption schemes, the authors introduced the so-called re-linearization technique. In [BGV12], the construction is refined using a modulus-switching technique to obtain better efficiency. 
         [0007]    Currently, perhaps the simplest (leveled) FHE scheme based on the learning with errors assumption is by Z. Brakerski [Br12]. The most recent achievement in this direction was obtained in [GSW13], where the authors were able to construct a simpler (leveled) FHE scheme based on the LWE assumption by removing the extensive and complicated step that involves the re-linearization procedure. 
         [0008]    The current state of the art in terms of FHE implementation is represented by a recent software library (HElib) of S. Halevi and V. Shoup, available at https://github.com/shaih/HElib. HElib is an implementation of the RLWE encryption scheme described in [BGV12], along with many other optimizations [HS14a]. To achieve FHE, the authors implemented a new recryption procedure with running times around 6 minutes [HS14b]. The fact that bootstrapping takes such a large amount of time makes this implementation of FHE unattractive. Future work in this direction will focus on minimizing the running time of the FHE bootstrapping procedure [DM15]. 
         [0009]    There appears to be only a single example of a ring homomorphic encryption scheme (as defined below), provided by Grigoriev and Ponomarenko [GP04]. More precisely, they disclosed the use of the theory of group algebras to produce cryptosystems over any field of odd characteristic. Consequently, they explicitly mention that their method cannot produce FHE schemes. In addition, even in the odd characteristic case, they do not give a concrete description of those schemes. More precisely, the encryption algorithm is not described and is only assumed to exist. 
       SUMMARY OF THE INVENTION 
       [0010]    The present invention is intended to overcome, or at least address, the above-described deficiencies of the prior art. The present invention uses an entirely different approach than those disclosed by others, including Gentry et al. Specifically, the present invention uses monoid algebras and/or character theory to provide a family of fully homomorphic encryption (FHE) schemes. 
         [0011]    An object of the present invention is provide new encryption methods that allow for accurate and secure transmission of information from one party to another in a manner which makes the information unreadable by unauthorized individuals. In view of this object, the present invention provides computer-implemented methods for encrypting and decrypting a message, computer-implemented methods for encrypting a message and for decrypting a message, a computer-readable storage device, an encryption system, and non-transitory computer-readable storage medium having the features of the invention as further discussed below. 
         [0012]    According to the invention, by using the fully homomorphic encryption and decryption schemes disclosed herein, messages can be readily encrypted without requiring heavy computer processor power and transmitted in a secure manner to a recipient who can decrypt the message to retrieve the information in its original format. The system is secure against unauthorized access since brute force attack of the encryption and decryption schemes requires computer power which is far beyond today&#39;s (or near future) processing capacity, thereby making such attacks highly unlikely to succeed. 
         [0013]    For convenience, the information to be digitally encrypted will be termed a message, and it is to be understood that any kind of digital information without restriction can be considered a message for encryption: for example, banking information such as credit card numbers and financial payments; confidential diplomatic and consular communications: and secure business communications such as trade secrets. “Messages” as used herein also envisages information exchanged between mobile telecommunication devices such as smartphones. Also information received by and transmitted from vehicles such as aircraft, land or water vehicles are envisaged as “messages” herein. 
         [0014]    The present invention constructs a blueprint that produces a family of FHE schemes given any (one operation) homomorphic (monoidal) encryption scheme. In one embodiment, the ciphertext space is a subspace of the monoid algebra over F 2  generated by the initial encryption monoid. 
         [0015]    The examples presented below exemplify the workings of the blueprint, and the principles of the invention are intended to be generally applicable for all monoid encryption schemes. Moreover, monoid encryption schemes produce the most efficient FHE schemes using the novel blueprint. 
         [0016]    In one embodiment of the invention, the FHE scheme can correctly decrypt and efficiently compute any circuit which has low (polynomial in the security parameter) additive depth. This advantageous feature of the invention provides enhanced efficiency over prior known methods. 
         [0017]    One aspect of the present invention is directed to a computer-implemented method for processing a message comprising the steps of receiving the message for encryption, and encrypting the message by applying a monoid algebra based homomorphic encryption scheme with a key to obtain an encrypted message. 
         [0018]    An embodiment of the inventive method may further comprise the step of sending an encrypted message to a recipient, wherein a decryption operation applied to the encrypted message behaves homomorphically to both addition and multiplication operations. 
         [0019]    In an embodiment of the inventive method, the (monoid algebra based) homomorphic encryption scheme may comprise an encryption algorithm which is Enc(m)=Σr i [E(h i )], wherein:
       the homomorphic encryption scheme is (M, A, Enc, Dec.);   S is the image of χ in A;   r is part of a fixed tuple (r 1 , . . . , r k )ΣR k , where k≧1;   the set that contains all the elements of the form Σr i s i  and s i ∈S is the whole R-algebra A; and       
 
         [0024]    plaintext m∈A is (h 1 , . . . , h k )ΣH k  such that m=Σr i χ(h i ) 
         [0025]    The inventive method may further comprise the step of decrypting the encrypted message by the recipient using a decryption algorithm which behaves homomorphically to both addition and multiplication operations. 
         [0026]    In an embodiment of the inventive method, the decryption algorithm is Dec(Σ g∈G  a g  [g])=Σ g∈G  a g  χ(D(g)), and the decryption step behaves homomorphically to both addition and multiplication operations. 
         [0027]    In embodiments of the invention, encryption and decryption in the inventive method may be symmetric using an identical key; or asymmetric using a public key and a secret key. In one embodiment of the invention, the secret key is a bit vector comprising a plurality of bits. 
         [0028]    In embodiments of the invention, the message to be encrypted may be written as a linear combination of post messages, individual messages, or submessages, and the encrypted message may be obtained as a linear combination of encrypted post messages, individual messages, or submessages. 
         [0029]    Embodiments of the inventive method may comprise the steps of compressing an encrypted message to reduce its size; and sending the compressed encrypted message to a recipient. 
         [0030]    Embodiments of the method may comprise the steps of dividing an encrypted message into two or more message parts, and sending the encrypted message parts together or separately to the recipient. Further embodiments may also comprise the steps of receiving and decrypting the encrypted message parts by the recipient, and combining the decrypted message parts to obtain the original message. 
         [0031]    In an embodiment of the inventive method, encryption and decryption operations may be performed by separate computers which are linked by a network. 
         [0032]    An embodiment of the inventive method may further comprise the steps of converting the encrypted message at a circuit into a polynomial by replacing an AND gate with multiplication and an XOR gate with addition; and evaluating the resulting polynomial. 
         [0033]    An embodiment of the inventive method may further comprise applying a component-wise probabilistic multiplicative homomorphic encryption scheme onto a multiplicative monoid of the field with two elements during encryption, wherein the ciphertext space G consists of bit vectors of length X. 
         [0034]    Another aspect of the present invention is directed to a computer-implemented method for processing a message. The method may comprise the steps of receiving the message to be encrypted; encrypting the message by applying a monoid algebra based homomorphic encryption scheme with a key to obtain an encrypted message; sending the encrypted message to a recipient; and decrypting the encrypted message by the recipient using a decryption algorithm, wherein the decryption step behaves homomorphically to both addition and multiplication operations. 
         [0035]    Another aspect of the present invention is directed to a non-transitory computer-readable storage device tangibly embodying a program of computer code instructions which, when executed by a processor, cause the processor to perform a method comprising the steps of: receiving a message for encryption; encrypting the message by applying a monoid algebra based homomorphic encryption scheme with a key to obtain an encrypted message; and sending the encrypted message to a recipient, wherein the decryption step behaves homomorphically to both addition and multiplication operations. 
         [0036]    In an embodiment of the invention, the non-transitory computer-readable storage device also tangibly embodies computer code instructions for the step of decrypting the encrypted message by the same or different processor using a decryption algorithm, wherein the decryption step behaves homomorphically to both addition and multiplication operations. 
         [0037]    In an embodiment of the invention, the non-transitory computer-readable storage device also tangibly embodies computer code instructions for a monoid algebra based homomorphic encryption scheme which comprises an encryption algorithm which is Enc(m)=Σr i [E(h i )], wherein:
       the homomorphic encryption scheme is (M, A, Enc, Dec.);   S is the image of χ in A;   r is part of a fixed tuple (r i , . . . , r k )ΣR k , where k≧1;   the set that contains all the elements of the form Σr i s i  and s i ∈S is the whole R-algebra A; and   plaintext m∈A is (h 1 , . . . , h k )∈H k  such that m=∈r i χ(h i ).       
 
         [0043]    In an embodiment of the invention, the non-transitory computer-readable storage device also tangibly embodies a program of computer code instructions for performing the operation of decrypting the encrypted message by the recipient using a decryption algorithm which is: Dec(Σ g∈G  a g  [g])=Σ g∈G  a g  χ(D(g)) 
         [0044]    Another aspect of the present invention is directed to a message processing system which comprises an electronic apparatus comprising a processor, circuitry, memory, and a communications component; and an embodiment of the inventive the non-transitory computer-readable storage device disclosed herein. 
         [0045]    In an embodiment of the present invention, the disclosed method or non-transitory computer-readable storage device or message processing system may comprise a decryption step, Dec, which is according to: Dec(Σ g∈G  a g  [g])=Σ g∈G  a g  χ(D(g)). 
         [0046]    In accordance with one exemplary aspect of the invention, a method for fully homomorphic encryption is provided. The method comprises providing an encryption scheme which supports a homomorphic operation on encrypted data and a multiplicative character from the plaintext space of the encryption scheme to the multiplicative monoid of the want-to-be encrypted plaintext space. The method encrypts data and supports any algebraic circuit computation on encrypted data. Specifically, given a monoid encryption scheme G→H on which the encryption and decryption algorithms are respectively denoted by E and D and any nontrivial character χ:H→(A, •) where A is a (semi)ring over the ring R and also any embedding of the plaintext space P in A, ι: P→A such that A is generated as an R-algebra by the image of χ, the encryption algorithm Enc:P→R[G] runs as follows: for a plaintext m in P, let a 1 , . . . , a d  in χ(H) such that m=k 1 a 1 + . . . +k d a d  in A and k 1 , . . . , k d  in R, put Enc(m):=k 1 E(χ −1 (a 1 ))+ . . . +k d  E((χ −1 (a d )); the decryption algorithm Dec:R[G]→A is given by Dec(c)=Dec(k 1 g 1 + . . . +k d  g d ):=k 1 χ(D(g 1 ))+ . . . +k d  χ(D(g d )). The decryption algorithm behaves homologically in respect of both, multiplication and addition operations, when the multiplication and/or addition operations are applied to the encrypted message. 
         [0047]    In another exemplary embodiment of the invention, a multiplicative homomorphic scheme is provided. The scheme involves applying an encryption scheme (G, (F 2 •), E, D) onto the multiplicative monoid of the field with two elements on which the ciphertext space G consists of bit vectors of length n(λ) with componentwise multiplication. Given a plaintext (bit) m and a secret key (sk) consisting of a vector of length n(λ) with s zero components, then E(m) consists of a random vector with d components equal to 0 such that at least one of them coincides with the zeroes of the secret key if m=0 and none of them coincide with the zeroes of the secret key if m=1. As for decryption, given a vector v in G, the decryption D(v) is 0 if v has at least a common zero with sk and 1 otherwise. 
         [0048]    In another exemplary embodiment of the invention, a probabilistic multiplicative scheme (G, (F 2 , •), E, D) is applied to the multiplicative monoid of the field with two elements on which the ciphertext space G consists of bit vectors of length n(λ) with component-wise multiplication. The secret key consists of (a) a vector of length n(λ) with s components equal to 0, and (b) a vector v of length n(λ), and has components with certain probabilities of occurrences of a zero on each position, i.e. the components are particular numbers (p i ) for each i in [1, n(λ)] such that Σp i  sk[i]=1 and Σp i  (1−sk[i])=1 and such that the vector v has indistinguishable ordering that could reveal the sk. The encryption and decryption algorithms are as described above, with the exception that a zero on a component i is drawn with the probability p i . 
         [0049]    One aspect of the present invention is directed to a computer-implemented method for encrypting and decrypting a message. The method comprises the steps of: receiving the message to be encrypted;
       encrypting the message using an encryption algorithm using a key to obtain an encrypted message, wherein the encryption algorithm is Enc(m)=Σr i [E(h i )], wherein the homomorphic encryption scheme is (M, A, Enc, Dec.); S is the image of χ in A; r is part of a fixed tuple (r 1 , . . . , r k )∈R k , where k≧1; the set that contains all the elements of the form Σr i s i  and s i ∈S is the whole R-algebra A; and plaintext m∈A is (h 1 , . . . , h k )∈H k  such that m=Σr i χ(h i );   sending the encrypted message to a recipient; and   decrypting the encrypted message by the recipient using a decryption algorithm which follows Dec(Σ g∈G  a g  [g])=Σ gΣG  a g  χ(D(g)).
 
The encryption algorithm is so constructed that the decryption step behaves homomorphically to both addition and multiplication operations.
       
 
         [0053]    The message to be encrypted may be written as a linear combination of post messages. That is, the message to be encrypted may be written as a plurality of individual messages or submessages which are joined in a linear manner to form a single message for subsequent encryption. The inventive method may consequently provide the resultant encrypted message as a linear combination of encrypted post messages, individual messages, or submessages. 
         [0054]    The method may further comprise the steps of converting an encrypted message at a circuit into a polynomial by replacing an AND gate with multiplication and an XOR gate with addition; and evaluating the resulting polynomial. Such steps allow detection of errors and verification of correct transmission of encrypted messages. 
         [0055]    Encryption and decryption by the method may be symmetric using an identical key for both procedures. Alternatively, encryption and decryption may be asymmetric using a public key and a secret key. If a secret key used, the secret key may be/is a bit vector comprising a plurality of bits. 
         [0056]    The method may further comprise the steps of compressing an encrypted message to reduce its size; and sending the compressed encrypted message to a recipient. Compression can be performed using known algorithms in the art, such as but not limited to ZIP, RAR, LZMA, or PAQ. The recipient would decompress the compressed encrypted message before applying the decryption algorithms according to the present invention. 
         [0057]    The method may further comprise the steps of dividing an encrypted message into two or more message parts, and sending the encrypted message parts together or separately to the recipient. For example, a message can divided into halves or thirds and be sent to a recipient separately or over separate communications lines or channels. Sending an encrypted message (for example, a credit card number) as separate message parts or over separate channels allows for enhanced security of the message by reducing the chances an unauthorized recipient will be able to receive and decode an entire message. Furthermore, even if the unauthorized recipient is able to decode a part of a message, the unauthorized recipient will still not possess the entire message and therefore will not be able to act upon any information contained therein. 
         [0058]    When a message is sent as separate encrypted message parts, the recipient will receive and decrypt the encrypted message parts, and combine the decrypted message parts to obtain the original message. Using the example of a credit card number, the recipient can receive a first encrypted message comprising the first half of a credit card number, and a second encrypted message comprising the second half of the credit card number. The recipient will decrypt the two message parts and reassemble the original credit card number for subsequent handling. Alternatively, the recipient can first reassemble the original encrypted message by combining the two encrypted parts, and then decrypt the combined encrypted message to obtain the original message (such as the credit card number). 
         [0059]    Depending upon the particular implementation of the invention, the encryption and decryption steps can be performed by separate computers which are linked by a network. The computers can function as peers or in a client/server relationship. Alternatively, encryption and decryption can be performed by the same computer. Encryption and decryption can take place in real time, for example, in order to receive authorization for a customer&#39;s credit card purchase, or messages can be stored in computer memory for later encryption and decryption. 
         [0060]    In an embodiment of the invention, encryption comprises a monoid homomorphic encryption scheme. The encryption algorithm may also construct clustered relative frequencies for a particular selection of d-tuples. 
         [0061]    An embodiment of invention may comprise applying a componentwise multiplicative homomorphic encryption scheme onto a multiplicative monoid of the field with two elements during encryption, wherein the ciphertext space G consist of bit vectors of length λ. 
         [0062]    The invention may further comprising applying a component-wise probabilistic multiplicative homomorphic encryption scheme onto a multiplicative monoid of the field with two elements during encryption, wherein the ciphertext space G consists of bit vectors of length λ. 
         [0063]    Another aspect of the present invention provides a computer-implemented method for encrypting a message. The method may comprise the steps of: receiving the message for encryption; encrypting the message using an encryption algorithm using a key to obtain an encrypted message; and sending the encrypted message to a recipient. 
         [0064]    In one embodiment, the encryption algorithm is Enc(m)=Σr i [E(h i )], wherein the homomorphic encryption scheme is (M, A, Enc, Dec.); S is the image of χ in A; r is part of a fixed tuple (r 1 , . . . , r k )∈R k , where k≧1; the set that contains all the elements of the form Σr i s i  and s i ∈S is the whole R-algebra A; and plaintext m∈A is (h 1 , . . . , h k )∈H k  such that m=Σr i χ(h i ). 
         [0065]    The method may further comprising the separate step of decrypting the encrypted message by the recipient using a decryption algorithm. In one embodiment, the decryption algorithm follows Dec(Σ gΣG  a g  [g])=Σ gΣG  a g  χ(D(g)). The decryption step behaves homomorphically to both addition and multiplication operations. 
         [0066]    Another aspect of the present invention is directed to a computer-readable storage device tangibly embodying a program of instructions for encrypting a message. The storage device can be installed in a computer, and the program may be configured to perform the operations of: receiving the message to be encrypted; encrypting the message using an encryption algorithm using a key to obtain an encrypted message; sending the encrypted message to a recipient; and decrypting the encrypted message by the recipient using a decryption algorithm. 
         [0067]    In an embodiment of the invention, the program of instructions for encrypting the message comprises computer code for an encryption algorithm which is: Enc(m)=Σr i  [E(h i )], wherein: the homomorphic encryption scheme is (M, A, Enc, Dec.); S is the image of χ in A; r is part of a fixed tuple (r 1 , . . . , r k )∈R k , where k≧1; the set that contains all the elements of the form Σr i s i  and s i ∈S is the whole R-algebra A; and plaintext m∈A is (h 1 , . . . , h k )∈H k  such that m=Σr i χ(h i ). 
         [0068]    In an embodiment of the invention, the program of instructions for decrypting the encrypted message comprises computer code for a decryption algorithm which is: Dec(Σ g∈G  a g  [g])=Σ g∈G  a g  χ(D(g)), wherein the decryption step behaves homomorphically to both addition and multiplication operations. 
         [0069]    Another exemplary embodiment of the invention provides an efficient fully homomorphic encryption scheme which is constructed using the multiplicative homomorphic scheme and the method disclosed above. Specifically, freshly encrypted ciphertexts are encryptions E(m) for the inventive algorithm. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0070]      FIG. 1  shows an exemplary embodiment of a computer system in which certain embodiments of the invention may be implemented. 
           [0071]      FIG. 2  shows a general method to construct fully homomorphic encryption schemes starting with a monoid homomorphic encryption scheme in accordance with the present invention. 
           [0072]      FIG. 3  shows an example of a monoid homomorphic encryption scheme which provides high efficiency using the inventive method. 
           [0073]      FIG. 4  shows a method in accordance with an aspect of the present invention for producing clustered relative frequencies, which reveal no information about the secret key, using an algorithm that is able to generate random tuples with distinct values from a selected alphabet. 
           [0074]      FIG. 5  shows a method in accordance with the present invention for producing clustered relative frequencies, which reveal no information about the secret key using repeated random draws with rejections. 
           [0075]      FIG. 6  shows an example of monoid homomorphic encryption scheme which uses probabilistic encryption in accordance with an aspect of the present invention. 
       
    
    
     DETAILED DESCRIPTION 
     I. Homomorphic Encryption Schemes 
       [0076]    Homomorphic encryption schemes are discussed by a number of different authors. For example, [Sen] provides a monograph treatment of the subject and [AK13] discusses a treatment of their security behavior. 
         [0077]    General encryption schemes are composed of three algorithms: KeyGen, Enc, and Dec, and two sets: the plaintext space P and the ciphertext space C. Generally, given a security parameter X, one first generates a secret and a public key (sk, pk) by KeyGen. The next two algorithms, Enc and Dec, describe how to associate to a plaintext m∈P a ciphertext c=Enc(m)∈C using the public key pk, and vice versa, that is, using the secret key sk, how to associate to a ciphertext c∈C a plaintext m=Dec(c), such that Dec(Enc(m))=m. Since the key generation is made explicitly, the existence of this algorithm in all of the encryption schemes discussed below is to be understood even if it is not expressly mentioned in the notation. Such short encryption schemes will be identified by the quadruple (C, P, Enc, Dec). 
         [0078]    Definition 1: Let Struc be an algebraic structure, such as a semigroup, monoid, group, ring, etc. A Struc homomorphic encryption scheme (G, H, Enc, Dec) is an encryption scheme such that both plaintext space H and ciphertext space G are endowed with the structure Struc and such that Dec: G→H is a Struc homomorphism. 
         [0079]    It is to be noted that different authors give different names for such an encryption scheme, all of them bearing the name homomorphic. Some authors identify the above schemes as group homomorphic encryption schemes without requiring that the plaintext (or the resultant ciphertext) space to be an actual group but only to have operations compatible with the decryption algorithm. In accordance with the principles of the present invention, such schemes would be identified as semi-group homomorphic encryption schemes. 
         [0080]    It can also be mentioned that many of the encryption schemes already discussed in the literature are in fact group homomorphic schemes (RSA, ElGamal, Paillier, Goldwasser-Micali, Benaloh, etc.), but one can easily produce other schemes where the spaces have only a monoid structure or even a semigroup structure. 
         [0081]    Practical encryption schemes require additional constraints on the algorithms KeyGen, Enc and Dec such that the encryption and decryption processes are feasible, secure and efficient. For a Struc-homomorphic encryption scheme, the algorithms that compute the structure on both plaintext and ciphertext spaces also need to be efficient. The additional structure on the plaintext and ciphertext spaces is needed in order to perform computations on encrypted data. 
         [0082]    Definition 2: A Struc homomorphic encryption scheme (G, H, Enc, Dec) is called a leveled Struc homomorphic encryption scheme if the decryption algorithm is correct only for a certain number of Struc operations made on G. 
         [0083]    All of the proposed secure ring homomorphic encryption schemes are “error”-based schemes which make them leveled for practical purposes. Even if the scheme is bootstrapable (see [vDGHV]), the practical implementation of any previously existing ring homomorphic scheme is leveled (such as HeLib), because the construction of a fully homomorphic encryption scheme out of a bootstrapable one is a limiting process. 
         [0084]    It should be recalled that the notion of a fully homomorphic encryption scheme (for example, as discussed in [vDGHV]) is equivalent to the ring homomorphic encryption scheme, where the plaintext space is the field with two elements F 2 . Indeed, this is due to the fact that any boolean circuit with XOR and AND gates can be written as a polynomial over F 2  with the XOR and AND gates replaced by addition and multiplication (for more details, see [Ge11]). 
       II. Monoid Algebras 
       [0085]    It will be useful to recall how one can associate to any monoid and any commutative ring with unity a ring called monoid algebra. Let (M,•) be a monoid and let R be a commutative ring with unity. As an R-module, the monoid algebra R[M] is free with a basis consisting of the symbols [x],x∈M, and the multiplication on R[M] is defined by the R-bilinear extension of [x]·[y]=[xy]. Therefore, every element of a∈R[M] has a unique representation 
         [0000]        a=Σ   x∈m   a   x   [x]   (1f),
 
         [0000]    in which a x =0 for all but finitely many x∈M, and the product of a, b∈R[M] is given by 
         [0000]        ab=Σ   x∈m Σ yz=x   a   y   b   z   [x].   (2f)
 
         [0086]    The identity element of R[M] with respect to multiplication is 1 [e] where e is the identity element of M. If M is a group, then the monoid algebra above is called group algebra. Notice that the R-algebra R[M] is commutative if and only if M is commutative. 
         [0087]    Remark 3: If M is the free monoid in one generator, then R[M] is isomorphic to R[X] as R-algebras, whereas if G is the free group in one generator, then R[G] is isomorphic to R[X, 1/X] as R-algebras. 
         [0088]    An R-character of a monoid M is a monoid homomorphism χ: M→A from M to the multiplicative monoid of an R-algebra A, i.e. χ(xy)=χ(x)χ(y), for all x, y∈M, and χ(e)=1. The monoid algebra R[M] is characterized up to isomorphism by the following universality property: for every R-character χ: M→A, there exists a unique R-algebra homomorphism R[M]→A extending χ. If we also denote by χ the extension R[M]→A then: 
         [0000]      χ(Σ a   x   [x ])=Σ a   x χ( x ).  (3f)
 
         [0089]    Let M, M′ be monoids, and φ: M→M′ a monoid homomorphism. Then φ induces an R-algebra homomorphism φ R : 
         [0000]    
       
      
       R[M]→R[M′] 
      
     
         [0000]      via 
         [0000]      φ R (Σ a   x   [x ])=Σ a   x [φ( x )].  (4f)
 
         [0090]    Notice that formula (4f) defines (p R  as the R-linear extension of cp. For any R-algebra A, there is a natural R-algebra homomorphism ∈: 
         [0000]    
       
      
       R[A]→A  
      
     
         [0000]      given by 
         [0000]      ∈(Σ r   x   [x ])=Σ r   x   x.    (5f)
 
       III. Blueprint 
       [0091]    Let R be a ring and let (G, H, E, D) be a monoid homomorphic encryption scheme. Consider also an R-character χ: H→A and let M be the monoid algebra R[G]. As explained above, the monoid homomorphism D: G→H induces the R-algebra homomorphism D R : R[G]→R[H]. At the same time, the R-character χ induces the R-algebra homomorphism χ R : R[H]→R[A]. The R-algebra homomorphism Dec is defined as the composition Dec=∈°χ R °D R : R[G]→R[H]→R[A]→A. It is straightforward to check that Dec satisfies or is defined by the following formula: Dec(Σ g∈G  a g  [g])=Σ g∈G  a g  χ(D(g)). Because the proposed encryption scheme is based on the monoid algebra R[G] as described herein, the decryption algorithm can be applied homologically with respect to multiplication and/or addition operations applied to the encrypted message. 
         [0092]    Let S denote the image of χ in A. For Dec to remain secure, one needs the assumption that |S|≧2, i.e. χ is not the trivial character, a condition always assumed in the inventive blueprint. We shall suppose that the pair (A, S) satisfies the following condition: there exist a k-tuple (r 1 , . . . , r k )∈R k , where k≧1, such that the set containing the elements of the form Σr i s i  with s i ∈S, ∇i (not necessarily distinct) is the whole R-algebra A. A necessary condition for the existence of such a tuple is that A is generated as an R-module by S. If this is not the case, then A may be replaced by its R-submodule generated by S. Indeed, since S is closed under multiplication, the R-submodule of A generated by S is an R-subalgebra of A. 
         [0093]    This necessary condition is not sufficient to ensure the existence of a tuple as above. However, if S contains 0, the two conditions are equivalent because A is a finite ring. The ring homomorphic encryption scheme (M, A, Enc, Dec) will now be described as follows: 
         [0094]    1. Enc: Let S be the image of χ in A and consider a fixed tuple (r 1 , . . . , r k )ΣR k , where k≧1, such that the set containing the elements of the form Σr i s i  with s i ∈S is the whole R-algebra A. For a plaintext m∈A, consider (h 1 , . . . , h k )∈H k  such that m=Σr i χ(h i ). Then Enc(m)=Σr i [E(h i )]. 
         [0095]    2. Dec: The decryption algorithm is given by: 
         [0000]        Dec (Σ g∈G   a   g   [g ])=Σ g∈G   a   g χ( D ( g )).
 
         [0096]    The encryption scheme (M, A, Enc, Dec) is a ring homomorphic encryption scheme. 
         [0097]    As seen above, given the homomorphic properties of D and χ, one gets that Dec is actually a ring homomorphism. The security of the scheme is the same as the security of the monoid encryption scheme (G, H, E, D) since no information and no additional security was revealed or added through the steps describing the encryption algorithm. The choice of the generating set (r 1 , . . . , r k ) described in Enc ensures the privacy of the encryption scheme in the sense that any plaintext has the same probability of being encrypted. One should make the difference (as discussed further below) between the probability of plaintexts generated by choosing random elements in S and producing the plaintext Σr i s i , and the probability of a certain plaintext to be encrypted. In essence, the choice of the set (r 1 , . . . , r k ) ensures that no plaintext is left outside the encryption process. The bigger the set S is inside A, the smaller the number k can be chosen. 
         [0098]    The efficiency of a typical encryption scheme is k times less than the efficiency of the inventive monoid homomorphic encryption scheme since the length of the ciphertext obtained by Enc is approximately k times the length of a ciphertext obtained by E. In particular, the encryption algorithm has size polynomial in the security parameter and the output has length polynomial in the same parameter if and only if the monoid homomorphic encryption scheme has the same property. The decryption algorithm Dec has also the same efficiency as the algorithm D in the monoid homomorphic encryption scheme. 
         [0099]    Having fixed the encryption scheme, the length of the ciphertexts obtained by performing algebraic computations is finite since all computations take place in M, which is a finite ring. In other words, all of the algebraic properties as well as the properties required in the privacy, efficiency and security problems are satisfied by the ring homomorphic encryption scheme constructed above if one starts with an efficient, private and secure monoid homomorphic encryption scheme. 
         [0100]    In general, the plaintext space P need not be the whole R-algebra A, but just a subring of it. Therefore, one can encrypt only the desired plaintexts and still obtain the desired degree of efficiency. This feature will be illustrated in the Example below. Moreover, the blueprint works in the more general case of non-commutative setting (noncommutative monoids and algebras). 
       Example 
       [0101]    The follow discussion illustrates a FHE scheme based on the above blueprint. Hereafter, the ring R is the field F 2 . If (G, H, E, D) is a group homomorphic encryption scheme, since H is a group, the image of any character χ: H→A is also a group, so that if A=F 2 , then any character is trivial. This is the reason to consider an F 2 -algebra A different from F 2  itself, and a group homomorphic encryption scheme (G, H, E, D) such that there exists a nontrivial F 2 -character χ: H→A (in particular gcd(|H|, |A x |)&gt;1). The simplest (but not the most efficient) example of such a situation is the following variant of Benaloh&#39;s cryptosystem (cf. [Be94]), which is an extension of the Goldwasser-Micali cryptosystem (cf. [GM]). 
         [0102]    An explicit description of the group homomorphic encryption scheme will now be described. Choose two large primes p, q such that p≡1 (mod 3), p≢1 (mod 9), q≡1 (mod 3), and let N=p·q. Let G:=(Z/NZ)x be the group of invertible elements mod N, and let π p : (Z/NZ) x →(Z/pZ) x  and π q : (Z/NZ) x →(Z/qZ) x  be the projection maps. Fix two primitive third roots of unity: ω p  Σ(Z/pZ)x and ω q  Σ(Z/qZ)x, i.e. let ω p =g p   (P-1)/3 , where g p  is a generator of the cyclic group (Z/pZ)x, and similarly for ω q . 
         [0103]    Let φ: (Z/pZ)x→Z/3Z be the group homomorphism defined by: φ(x)=i if and only if x (P-1)/3 =ω p   i(p-1)/3  The morphism φ is efficiently computable because raising x to the power (p−1)/3 can be done in log p steps. By Fermat&#39;s Little Theorem, x (P-1)/3  is a third root of unity modulo p, therefore x (P-1)/3 Σ{1, ω, ω 2 }, so that φ is well defined if and only if p≢1(mod 9). 
         [0104]    For encryption, let η be the unique element of G, such that π p (η)=ω p  and π q (η 1 )=ω q . The group homomorphic encryption scheme (G, Z/3Z, E, D) is given as follows: 
         [0105]    1. Setup (1 λ ): Choose two large enough primes (to ensure semantic security) p=p(λ), q=q(λ) such that p≡1 (mod 3), p≢1 (mod 9), and q≡1 (mod 3). 
         [0106]    2. PublicKeygen: Set N=pq. Fix a primitive third root of unity modulo p, say ω p , and a primitive third root of unity modulo q, say, ω q . Such a choice does not necessarily make use of the generators g p  and g q . Let η∈G be such that: π p (η)=ω p  and π q (η)=ω q . The public key is the pair (N, η). 
         [0107]    3. SecretKeygen: The secret key is the prime p. 
         [0108]    4. E: To encrypt m∈Z/3Z, choose a random y∈G and let E(m)=η m y 3 . 
         [0109]    5. D: The decryption of c∈G is given by D(c)=φ(π p (c)). 
         [0110]    To describe the associated FHE scheme, let μ 3 ={1, ω, ω 2 } be the group of third roots of unity of  F 2    (the algebraic closure of F 2 ). The field with four elements will then consist of F 4 ={0, 1, ω, ω 2 } (here ω satisfies the equation ω 2 +ω+1=0). Let A=F 4  and let the character χ:Z/3Z→F 4  be defined by m→ω m . Notice that χ: Z/3Z→F 4   x  is an isomorphism of groups so that we shall denote by χ −1  its inverse. Now the encryption and decryption algorithms of the FHE scheme are given by: 
         [0111]    Enc: To encrypt the bit m=0, encode w twice using the above scheme to get E 1 (χ −1 (ω)), E 2 (χ −1 (ω)) and then set Enc(0)=[E 1 (χ −1 (ω))]+[E 2 (χ −1 (ω))]. 
         [0112]    For m=1, let E 1 (χ −1 (ω)) and E 2 (χ −1 (ω 2 )) be encryptions of ω and ω 2  respectively, and set Enc(1)=[E 1 (χ −1 (ω))]+[E 2 (χ −1 (ω 2 ))]. 
         [0113]    Dec: For c=Σ g∈G  r g  [g]∈F 2 [G], let Dec(c)=E g∈G  r g  χ(D(g)). One sees easily that the homomorphic properties and the security of the scheme are as described in the blueprint. 
         [0114]    One can avoid the extra condition p≢1 (mod 9), respectively the rather unnatural definition of φ, by choosing η to be a lifting of a fixed generator g p  of (Z/pZ)x. This particular example deliberately did not make use of knowledge of such a generator. 
         [0115]    The inventive monoid homomorphic encryption has another interesting feature. It detects with high probability if the message sent for encryption has been altered during the transmission. Specifically, for every bit encrypted as [g 1 ]+[g 2 ], if one changes randomly the elements g 1  and g 2 , there is a ½ probability that the altered ciphertext does not decrypt to 0 or 1 (but rather to ω or ω 2 ). For a large text that has been tampered with during the encryption, the probability of detecting if the message has been altered or not is very high. This feature is very useful in many applications, and is not provided by any the “error”-based encryptions. 
         [0116]    The monoid homomorphic encryption scheme will now be described. Let G be the set (F 2 ) n , with the monoid structure defined by componentwise multiplication. Basically, G is the commutative monoid generated by n idempotents with no “extra” relations. The scheme is defined as follows: 
         [0117]    Setup (1 λ ): Choose the dimension parameter n=n(λ), and the integers d=d(λ)&lt;s=s(λ) to be defined as follows: Use the Simplex algorithm to solve the following problem: set P(k, u, v):=Binomial(v-k, u-k)/Binomial(v, u). Fix Σ an acceptable statistical error (of size of order 1/(dimension of the document in clear or to be encrypted)). Fix X=(X(1), . . . , X(d)) a random variable with probabilities to be determined by the simplex algorithm. For each r=1, . . . , √{square root over (2d)} and each i=1, . . . , r, set the expression 
         [0000]        E ( X,i,r,s,d,n ):=Σ k=1   d   X ( k )( P ( i,k,s ) P ( r−i,d−k,n−s )− P ( r,d−k,n−s )),
 
         [0000]    where P(k, u, v) is set to be 0 if k&gt;Min(u, v). The system of approximate equations to be solved takes the form: 
         [0000]    
       
         
           
             
               
                  
                 
                   
                     E 
                      
                     
                       ( 
                       
                         X 
                         , 
                         i 
                         , 
                         r 
                         , 
                         s 
                         , 
                         d 
                         , 
                         n 
                       
                       ) 
                     
                   
                   - 
                   
                     
                       1 
                       2 
                     
                      
                     
                       P 
                        
                       
                         ( 
                         
                           r 
                           , 
                           d 
                           , 
                           
                             n 
                             - 
                             s 
                           
                         
                         ) 
                       
                     
                   
                 
                  
               
               &lt; 
               ε 
             
             , 
           
         
       
     
         [0000]    for all i, r in the given range, X(k)≧0 for all k and 
         [0000]    
       
         
           
             
               
                 ∑ 
                 
                   k 
                   = 
                   1 
                 
                 d 
               
                
               
                   
               
                
               
                 X 
                  
                 
                   ( 
                   k 
                   ) 
                 
               
             
             = 
             
               
                 1 
                 2 
               
               . 
             
           
         
       
     
         [0118]    SecretKeygen: Choose a subset Sk of {1, 2, . . . , n} of size s. Set the secret key to be Sk. 
         [0119]    E: To encrypt 1ΣF 2 , choose d random numbers i 1 , i 2 , . . . , i d  from the set {1, 2, . . . , n} such that none of them is in the secret key set Sk. Set E(1) to be the vector of length n with zeroes on the chosen positions and 1 everywhere else. To encrypt 0ΣF 2 , choose k in {1, . . . , d} with probability 2 X(k). Choose k random positions in Sk and d-k random positions outside Sk and set E(0) to be the vector of length n with zeroes on the chosen positions and 1 everywhere else. 
         [0120]    D: To decrypt a ciphertext c using the secret key Sk, set D(c)=0 if c has at least one component equal to 0 corresponding to an index from Sk. Otherwise, D(c)=1. 
         [0121]    It is straightforward to verify that D(c 1 ·c 2 )=D(c 1 )·D(c 2 ), so that the above scheme is a monoid homomorphic encryption scheme. 
         [0122]    The security of the scheme under brute-force attack will now be discussed. To achieve 2 λ  security against brute-force attacks, it will be necessary for the parameters n, d, s to satisfy the following conditions: s, d=Θ(λ), and n=Θ(λ 2 ). Using brute-force attack, an adversary needs to try Binomial[n, s] subsets of {1, 2, . . . , n} in order to find the secret key Sk. Since by Stirling&#39;s formula Binomial[n, s]=2 ω(λ log λ) , the required security is obtained. Therefore a brute force attack has a chance of less than 2 −λ  to be successful, thereby making the scheme secure for this type of attack. 
         [0123]    A more skillful adversary that has access to an encrypted text can try to attack by computing the statistics of occurrences of 0 on ciphertexts. This type of computation will reveal no significant information if the statistic of r-tuple occurrences of zero is uniform up to the acceptable error ∈ for each r (a random variable is determined by its moments). But the setup provides that up to a high enough moment, the statistic is uniform within an acceptable error. 
         [0124]    In fact, in practice, the above scheme is far more efficient than the mathematical prediction since in practice one works only within a fixed range of values for the security parameter, etc. The above simplex algorithm was run where the acceptable statistical error was fixed as ∈=2 −30  and found an acceptable range of solutions for (d, s, n)=(22, 31, 1010). The solution is found almost instantaneously on a regular PC. For example, the algorithm found it in 0.17 sec using a 2.66 GHz 17 PC equipped with 8 Gb RAM. In fact, the solution will ensure that no r-tuple statistics will reveal significant information because already at the 6 th  moment (which is guarantied by the simplex algorithm to reveal no information), the probability of encryption with a fixed 6-tuple is less than ∈. The brute force attack is also impossible since Binomial[1010, 31] is of order 2 196 , which is far beyond today&#39;s (or near future) capacity of processing. Therefore, for documents of size of Gb-order, the inventive encryption is proved to be secure and sufficiently efficient. 
         [0125]    In order to make the encryption even more secure (or more efficient for the same security level), the size of the secret key is not made public (and not deducible from the encryption algorithm), and a probabilistic attack is avoided by encrypting each position i with a certain probability p i . The secret key now consists of the set Sk which will be identified with a vector v∈G, which has 0 on the positions corresponding to Sk and 1 on the other positions, a probability vector X=(X(1), . . . , X(d)) and of a set of probabilities p k (p 1, k , . . . , p n, k ) with the constraints Σp i, k  Sk[i]=1 and Σp i, k  (1−Sk[i])=1 for each k=1, . . . , d. Each time one encrypts 0, one chooses k according to X and k positions from Sk are drawn according to their probabilities. While completing the ciphertext, the probability vector is used to draw the rest of (d-k) zeroes. A similar procedure is conducted for the encryption of  1 , only that now we draw only 1 on the positions corresponding to Sk, according to a vector of probabilities p k =(p i, 0 ) i∈Sk . 
         [0126]    The probability vector is input with numbers, which makes a probabilistic attack indistinguishable, i.e. the relative frequencies f i  corresponding to Sk are distributed uniformly within the vector of all relative frequencies. The computations corresponding to the first moment (or 1-point statistics) will now be presented, and the general case can be treated similarly. 
         [0127]    Let M=(M 1 , . . . , M m ) be an ordered set of natural numbers. Define the C j (M) by P m (X):=Π(1+M i  X)=Σ j  C j (M) X j . For 1≦i≦|M|, let M i  be the set obtained from M by deleting the i th  number and M:=Σ I  M I . Let also N I :=M 1 + . . . +M 1  for all 1≦i≦m and N 0 :=0. To chose a tuple of length k with probabilities p I =M I /M, choose Random((x 1 , . . . , x k ), [1, M]) such that no two extractions are within the same interval (N i-1 , N i ]. Output the indices i for which there exist x∈{x 1 , . . . , x k } with x∈(N i-1 , N i ]. The probability for an index i to appear in a k-tuple extraction is given by M i  C k-1 (M i )/C k (M). It is assumed that one can draw uniformly a k-tuple with different indices i. This can be done with the function Random((x 1 , . . . , x k ), [1, M]) 
         [0128]    The encryption algorithm runs as follows. Let A=(A 1 , . . . , A n-s ) be a finite ordered set of natural numbers corresponding to the positions outside Sk and B=(B 1 , . . . , B s ) for the positions in Sk. For E(0): choose 1≦k≦d according to the probability vector X, then choose a k-tuple in Sk and a (d-k)-tuple outside Sk as in the above procedure. Output the vector which has 0 on the chosen positions and 1 everywhere else. For E(1): Choose a d-tuple outside Sk according to the above procedure. Output the vector which has 0 on the chosen positions and 1 everywhere else. 
         [0129]    The frequency f i  of appearance of 0 on the i th  position is given by: 
         [0000]    
       
         
           
             
               
                 1 
                 2 
               
                
               
                 
                   ∑ 
                   
                     k 
                     = 
                     1 
                   
                   d 
                 
                  
                 
                     
                 
                  
                 
                   
                     X 
                      
                     
                       ( 
                       k 
                       ) 
                     
                   
                   * 
                   
                     B 
                     i 
                   
                    
                   
                     
                       
                         C 
                         
                           k 
                           - 
                           1 
                         
                       
                        
                       
                         ( 
                         
                           B 
                           i 
                         
                         ) 
                       
                     
                     
                       
                         C 
                         k 
                       
                        
                       
                         ( 
                         B 
                         ) 
                       
                     
                   
                 
               
             
             , 
             
               
                 if 
                  
                 
                     
                 
                  
                 i 
               
               ∈ 
               Sk 
             
           
         
       
       
         
           
             
               
                 
                   1 
                   2 
                 
                  
                 
                   A 
                   i 
                 
                  
                 
                   
                     
                       C 
                       
                         d 
                         - 
                         1 
                       
                     
                      
                     
                       ( 
                       
                         A 
                         i 
                       
                       ) 
                     
                   
                   
                     
                       C 
                       d 
                     
                      
                     
                       ( 
                       A 
                       ) 
                     
                   
                 
               
               + 
               
                 
                   1 
                   2 
                 
                  
                 
                   
                     ∑ 
                     
                       k 
                       = 
                       1 
                     
                     
                       d 
                       - 
                       1 
                     
                   
                    
                   
                       
                   
                    
                   
                     
                       X 
                        
                       
                         ( 
                         k 
                         ) 
                       
                     
                     * 
                     
                       A 
                       i 
                     
                      
                     
                       
                         
                           C 
                           
                             d 
                             - 
                             k 
                             - 
                             1 
                           
                         
                          
                         
                           ( 
                           
                             A 
                             i 
                           
                           ) 
                         
                       
                       
                         
                           C 
                           
                             d 
                             - 
                             k 
                           
                         
                          
                         
                           ( 
                           A 
                           ) 
                         
                       
                     
                   
                 
               
             
             , 
             
               
                 if 
                  
                 
                     
                 
                  
                 i 
               
               ∉ 
               Sk 
             
           
         
       
     
         [0130]    If one simply uses successive drawing with rejection (instead of random drawing), then the associated probability that an index i appears in a k-tuple relative to a vector M=(M 1 , . . . , M m ) is: 
         [0000]    
       
         
           
             
               
                 
                   Q 
                   i 
                 
                  
                 
                   ( 
                   
                     k 
                     , 
                     M 
                   
                   ) 
                 
               
               := 
               
                 
                   ∑ 
                   
                     t 
                     = 
                     0 
                   
                   
                     k 
                     - 
                     1 
                   
                 
                  
                 
                   
                     ∑ 
                     
                       ( 
                       
                         
                           j 
                           1 
                         
                         , 
                         … 
                         , 
                         
                           j 
                           t 
                         
                       
                       ) 
                     
                   
                    
                   
                     
                       ( 
                       
                         
                           ∏ 
                           
                             v 
                             = 
                             1 
                           
                           t 
                         
                          
                         
                             
                         
                          
                         
                           
                             M 
                             
                               j 
                               v 
                             
                           
                           
                             M 
                             - 
                             
                               M 
                               
                                 j 
                                 1 
                               
                             
                             - 
                             … 
                             - 
                             
                               M 
                               
                                 j 
                                 
                                   v 
                                   - 
                                   1 
                                 
                               
                             
                           
                         
                       
                       ) 
                     
                      
                     
                       
                         M 
                         i 
                       
                       
                         M 
                         - 
                         
                           M 
                           
                             j 
                             1 
                           
                         
                         - 
                         … 
                         - 
                         
                           M 
                           
                             j 
                             t 
                           
                         
                       
                     
                   
                 
               
             
             , 
           
         
       
     
         [0000]    with the convention that M j     0   =0 and the sum is taken over all ordered k-tuples which do not contain i. In this case, the associated frequency is: 
         [0000]    
       
         
           
             
               
                 1 
                 2 
               
                
               
                 
                   ∑ 
                   
                     k 
                     = 
                     1 
                   
                   d 
                 
                  
                 
                   
                     X 
                      
                     
                       ( 
                       k 
                       ) 
                     
                   
                    
                   
                     
                       Q 
                       i 
                     
                      
                     
                       ( 
                       
                         k 
                         , 
                         B 
                       
                       ) 
                     
                   
                 
               
             
             , 
           
         
       
     
         [0000]    if i∈Sk 
         [0000]    
       
         
           
             
               
                 1 
                 2 
               
                
               
                 
                   Q 
                   i 
                 
                  
                 
                   ( 
                   
                     d 
                     , 
                     A 
                   
                   ) 
                 
               
             
             , 
             
               
                 
                   + 
                   
                     1 
                     2 
                   
                 
                  
                 
                   
                     ∑ 
                     
                       k 
                       = 
                       1 
                     
                     
                       d 
                       - 
                       1 
                     
                   
                    
                   
                       
                   
                    
                   
                     
                       X 
                        
                       
                         ( 
                         k 
                         ) 
                       
                     
                     * 
                     
                       
                         Q 
                         i 
                       
                        
                       
                         ( 
                         
                           
                             d 
                             - 
                             k 
                           
                           , 
                           A 
                         
                         ) 
                       
                     
                      
                     
                       ,, 
                     
                      
                     
                         
                     
                      
                     if 
                      
                     
                         
                     
                      
                     i 
                   
                 
               
               ∉ 
               Sk 
             
           
         
       
     
         [0131]    To ensure security against statistical attack, then one has to be sure that the vector (f 1 , . . . , f n ) has no particularities that reveal information about the secret key Sk. In order to properly define this, a vector (set) of real numbers is defined: 
         [0132]    Definition 4: A vector (set) of real numbers is said to be (m, δ) clustered if any element has at least m neighbors within a δ-distance. 
         [0133]    In the present instance, if δ is small (say of order λ −5 ), then one cannot statistically distinguish between the m close points in any meaningful sense. Therefore, it is enough to achieve the vector of frequencies to be (m, δ) clustered. This can be done because the frequencies f i  are continuous functions with respect to the vector of probabilities (p i,k ). One chooses M i  clustered, computes the corresponding frequencies, and attaches the probabilities within the zero locus of the secret key so the relative frequencies remain clustered. 
         [0134]    The analysis of security in this setup shows that in order to achieve 2 λ  security against brute-force attacks, it is only necessary that n=O(λ). 
         [0135]    The FHE schemes corresponding to the above encryption realize the highest efficiency. This is due to the fact that one can take k=1 in the blueprint. In particular, multiplying fresh ciphertexts does not increase the length of the resulting ciphertext. This being said, the FHE scheme can efficiently evaluate any circuit, which has additive depth polynomial in the security parameter λ. It should be noticed that, in fact, any practical circuit is of this type. Consequently, the present invention provides a high degree of security required for commercial transactions such as but not limited to electronic commerce. 
       IV. Figures 
       [0136]    The invention will now be described with reference to the Figures. Numerals in parentheses [such as “(11)”] or indicators in parentheses [such as “(step  21 )”] in the discussion below are figure reference numerals which refer to corresponding elements in the respective figures. 
         [0137]      FIG. 1  shows an embodiment of a computer system ( 11 ) which implements the invention. The system ( 11 ) contains components such a processor ( 13 ), memory ( 16 ), storage ( 14 ), a communication component ( 15 ), circuitry ( 12 ) such as a data bus, and program logic ( 17 ) and computer code ( 18 ) for the functioning of the invention. 
         [0138]    The system ( 11 ) may be a conventional mainframe, microcomputer, desktop, laptop, or tablet computer which is configured and pre-loaded with the required computer logic including computer code or software, or it may be a custom-designed computer. The computer system ( 11 ) may be a single computer which performs the steps of the invention, or it may comprise a plurality of computers, such as a server/client. In certain embodiments, a plurality of clients can be connected to one or more servers. The computer system ( 11 ) may also be networked with other computers over a local area network (LAN) connection or via an Internet connection. The system may also comprise a backup system which retains or stores a copy of the data obtained by or used by the invention. Any computer systems ( 11 ) involved in the performance of the invention may each have their own processors ( 13 ), computer storage ( 14 ), memory ( 16 ), and program logic ( 17 ) and code ( 18 ). A computer may have multiple processors, or a processor may have multiple cores, caches, or other features as are known in the art. 
         [0139]    Examples of computer storage ( 14 ) include conventional storage devices such as hard drives such solid state drives or drives having spinning platters. Storage ( 14 ) may be volatile or non-volatile, or both in particular embodiments, and it may be magnetic, optical, or use other data storage technologies. Data used by the system may be stored in a single location, for example, an associated hard drive, or the data may be stored or generated over a plurality of computer systems. For example, one system may contain or generate data such as an encryption key, another system may contain stored or generated data to be encrypted by the invention, and a separate system may be equipped to store or generate the transformed data or to maintain a record of transactions performed by the invention. 
         [0140]    Memory ( 16 ) used by the invention may include volatile or nonvolatile memory such as RAM or ROM. The system components are interconnected using electronic circuitry ( 12 ) to so that they may communicate and exchange data and information. 
         [0141]    The system ( 11 ) also comprises a communication component ( 15 ) to enable the system and user to exchange data, or to allow the system to exchange data with another computer. The communication component ( 15 ) may be a programmable printed circuit board, microcontroller, or other device which receives incoming data signals, and which transmits data to an outside system. There may be any number of communications components ( 15 ), and they may also include input devices such as a keyboard or mouse to enable a user to interact with the system. To communicate over a network such as a LAN, VPN, or the Internet, the communications component ( 15 ) may comprise a modem, digital/analog converter, or other device which allows electronic signals or data to be exchanged with another computer such as a peer, client, or server. The system may also be equipped with a display (not illustrated) to allow a user to view information. 
         [0142]    The components of the system may be conventional, although the system will generally be custom-configured for each particular implementation. The computer system ( 11 ) may run on any particular architecture, for example, personal/microcomputer, minicomputer, or mainframe systems. Operating systems may include Apple OSX and iOS, Microsoft Windows, and UNIX/Linux; SPARC, POWER and Itanium-based systems; and z/Architecture. 
         [0143]    The computer program logic ( 17 ) and associated code ( 18 ) to perform the invention may be written in any programming language, such as but not limited to C/C++, Objective-C, Java, Basic/VisualBasic, or assembler. The code ( 18 ) may also be written in a proprietary computer language which is specific to a particular manufacturer or a particular computer hardware component used in conjunction with the invention. The runtime, installation files, or other computer code of the present invention may also be sold commercially or be sold pre-installed on or in a circuit board, microcontroller, memory, storage, or other computer hardware component. The invention can also be implemented in hardware, such as a computer chip or board on which the computer instructions are embedded during manufacture. Alternatively, the program logic ( 17 ) and code ( 18 ) can be obtained via download or purchase over the Internet or a local area network. The computer program logic and code is installed in a non-volatile and non-transitory manner on a storage device known in the art, such as but not limited to a hard drive, magnetic drive, optical drive, tape drive, or the like. 
         [0144]    Although exemplary embodiments presented herein may be illustrated or discussed by reference to particular computer storage media, it should be understood that any kind of non-transitory or non-volatile computer storage media can be used, such as magnetic cassettes, flash memory cards, random access memory, and read-only memory. 
         [0145]      FIG. 2  shows a general method to construct homomorphic encryption schemes starting with a monoid homomorphic encryption scheme. The method involves the following steps:
       1. Having a monoid homomorphic encryption (G, H, E, D), embed the plaintext space R→A and a homomorphism of monoids H→(A, x) (step  21 ).   2. Construct t 1 , t 2 , . . . , t r  in the image of H such that A=R[t 1 , t 2 , . . . , t r ] (step  22 ).   3. For m∈R, find k 1 , . . . , k r ∈R such that m=k 1 t 1 + . . . +k r t r  (step  23 ).   4. Set Enc(m):=k 1  [E(t 1 )]+ . . . +k r  [E(t r )]∈R[G] (step  23 ).   5. For c=k 1 [g 1 ]+ . . . +k r  [g r ]∈R[G], set Dec(c):==k 1 D(g 1 )+ . . . +k r  D(g r ) (step  24 ).       
 
         [0151]      FIG. 3  shows an example of a monoid homomorphic encryption scheme which provides high efficiency using the inventive method. The method involves the following steps:
       1. Take n=O(λ 2 ) and s, d=O(λ) such that Simplex(s, d, n, E)←X. Fix a secret key, Sk, a subset of {1, . . . , n} of length s. Set G=F 2   n , and H=(F 2 , x) (step  31 ).   2. To encrypt 0, choose a random k according to X, k random elements in Sk and d-k random elements not in Sk. To encrypt 1, choose d random elements not in Sk (step  32 ).   3. Set E(m) to be the vector in G with 0 on all the chosen positions and 1 in the remaining positions (step  32 ).   4. Fix v∈G. Set D(v) to be 0 if v has at least one component equal to 0 on a position in Sk. Otherwise, set D(v) to be 1 (step  33 ).       
 
         [0156]      FIG. 4  shows a method to produce clustered relative frequencies, which reveal no information about the secret key, using an algorithm that is able to generate random tuples with distinct values from a selected alphabet. The method involves the following steps:
       1. Fix n=0(X). Fix s&lt;d&lt;n. Choose a probability vector X=(X(0), . . . , X(d)) and a set of probabilities p k =(p i, k ) i∉Sk , p k   sk (p i, k ) i∈Sk  (step  41 ).   2. Put p p (X)=Π i (1+p i  X) for any set of probability vector p (step  42 ).   3. For each i, put       
 
         [0000]    
       
         
           
             
               
                 f 
                 i 
               
               := 
               
                 
                   ∑ 
                   
                     k 
                     = 
                     0 
                   
                   d 
                 
                  
                 
                   
                     X 
                      
                     
                       ( 
                       k 
                       ) 
                     
                   
                    
                   
                     p 
                     
                       i 
                       , 
                       k 
                     
                   
                    
                   
                     
                       
                         C 
                         
                           k 
                           - 
                           1 
                         
                       
                        
                       
                         ( 
                         
                           p 
                           k 
                           
                             Sk 
                             , 
                             
                               ( 
                               i 
                               ) 
                             
                           
                         
                         ) 
                       
                     
                     
                       
                         C 
                         k 
                       
                        
                       
                         ( 
                         
                           p 
                           k 
                           Sk 
                         
                         ) 
                       
                     
                   
                    
                   
                     
                       
                         C 
                         
                           d 
                           - 
                           k 
                           - 
                           1 
                         
                       
                        
                       
                         ( 
                         
                           p 
                           k 
                           
                             ( 
                             i 
                             ) 
                           
                         
                         ) 
                       
                     
                     
                       
                         C 
                         
                           d 
                           - 
                           k 
                         
                       
                        
                       
                         ( 
                         
                           p 
                           k 
                         
                         ) 
                       
                     
                   
                 
               
             
             , 
           
         
       
       
         
           
             where C m (p) represent the coefficient of X m  in P p  and p (i)  represents the vector with the i th  position removed (step  42 ). 
             4. Run algorithm to produce X, p k , p k   Sk  such that f u  is in some clustered subset of the vector [f i , i∈[1, n]] (step  43 ). 
           
         
       
     
         [0162]      FIG. 5  shows a method to produce clustered relative frequencies which reveal no information about the secret key using repeated random draws with rejections. The method involves the following steps:
       1. Fix n=O(X). Fix d&lt;s&lt;n. Choose a probability vector X=(X(0), . . . , X(d)) and a set of probabilities p k =(p i, k ) i∉Sk , p k   Sk =(P i, k ) i∉Sk  (step  51 ).   2. For each i, put       
 
         [0000]    
       
         
           
             
               
                 
                   
                     
                       Q 
                       i 
                     
                      
                     
                       ( 
                       
                         d 
                         , 
                         p 
                       
                       ) 
                     
                   
                   := 
                   
                     
                       ∑ 
                       
                         k 
                         = 
                         0 
                       
                       
                         d 
                         - 
                         1 
                       
                     
                      
                     
                       
                         ∑ 
                         
                           ( 
                           
                             
                               j 
                               1 
                             
                             , 
                             … 
                              
                             
                                 
                             
                             , 
                             
                               j 
                               k 
                             
                           
                           ) 
                         
                       
                        
                       
                         
                           ( 
                           
                             
                               ∏ 
                               
                                 s 
                                 = 
                                 1 
                               
                               k 
                             
                              
                             
                               
                                 p 
                                 
                                   j 
                                   s 
                                 
                               
                               
                                 1 
                                 - 
                                 
                                   p 
                                   
                                     j 
                                     1 
                                   
                                 
                                 - 
                                 … 
                                 - 
                                 
                                   p 
                                   
                                     j 
                                     
                                       s 
                                       - 
                                       1 
                                     
                                   
                                 
                               
                             
                           
                           ) 
                         
                          
                         
                           
                             
                               p 
                               i 
                             
                             
                               1 
                               - 
                               
                                 p 
                                 
                                   j 
                                   1 
                                 
                               
                               - 
                               … 
                               - 
                               
                                 p 
                                 
                                   j 
                                   k 
                                 
                               
                             
                           
                           . 
                         
                       
                     
                   
                 
               
               
                 
                   ( 
                   
                     step 
                      
                     
                         
                     
                      
                     52 
                   
                   ) 
                 
               
             
             
               
                 
                   
                       
                   
                    
                   
                     Set 
                      
                     
                       
 
                     
                      
                     
                         
                     
                      
                     
                       
                         f 
                         i 
                       
                       = 
                       
                         
                           ∑ 
                           
                             k 
                             = 
                             0 
                           
                           d 
                         
                          
                         
                           
                             X 
                              
                             
                               ( 
                               k 
                               ) 
                             
                           
                            
                           
                             
                               Q 
                               i 
                             
                              
                             
                               ( 
                               
                                 
                                   d 
                                   - 
                                   k 
                                 
                                 , 
                                 
                                   p 
                                   k 
                                 
                               
                               ) 
                             
                           
                            
                           
                             
                               
                                 Q 
                                 i 
                               
                                
                               
                                 ( 
                                 
                                   k 
                                   , 
                                   
                                     p 
                                     k 
                                     sk 
                                   
                                 
                                 ) 
                               
                             
                             . 
                           
                         
                       
                     
                   
                 
               
               
                 
                   ( 
                   
                     step 
                      
                     
                         
                     
                      
                     52 
                   
                   ) 
                 
               
             
           
         
       
       
         
           
             4. Run algorithm to produce X, p k , p k   sk  such such that f u  is in some clustered subset of the vector [f i , i∈[1, n]] (step  53 ). 
           
         
       
     
         [0166]      FIG. 6  shows an example of a monoid homomorphic encryption scheme which uses probabilistic encryption. The method involves the following steps:
       1. Take n=O(X) and s, d&lt;n. Fix a secret key, Sk, a subset of {1, . . . , n} of length s. Set G=F 2   n , and H=(F 2 , x). Fix a probability vector X=(X(1), . . . , X(d)) and of a set of probabilities p k =(p i, k ) i∈Sk , d≧k≧0 p k   Sk =(p i, k ) i∈Sk  d≧k≧1 as in  FIG. 4 or 5  (step  61 ).   2. To encrypt 0, choose a random k according to X, k random elements in Sk according to p k   Sk  and d-k random elements not in Sk according to p k . To encrypt 1, choose d random elements not in Sk according to p 0  (step  62 ).   3. Set E(m) to be the vector in G with 0 on all the chosen positions and 1 in the remaining positions (step  62 ).   4. Fix v∈G. Set D(v) to be 0 if v has at least one component equal to 0 on a position in Sk. Otherwise, set D(v) to be 1 (step  63 ).       
 
         [0171]    Other objects, advantages and embodiments of the various aspects of the present invention will be apparent to those who are skilled in the field of the invention and are within the scope of the description and the accompanying figure. For example, but without limitation, structural or functional elements might be rearranged, or method steps reordered, consistent with the present invention. A person of skill in the relevant art will understand that the principles according to the present invention, and methods and systems that embody them, could be applied to other examples and configurations, which, even if not specifically described here in detail, would nevertheless be within the scope of the present invention. 
       V. References 
       [0000]    
       
         [AK13] F. Armknecht, S. Katzenbeisser, A. Peter; Group Homomorphic Encryption: Characterizations, Impossibility Results, and Applications, in Designs, Codes and Cryptography, vol. 67, no. 2, 2013, pp. 209-232. 
         [BPCat] M. Barcau, V. Pasol; The Category of Fully Homomorphic Encryption Schemes, work in progress. 
         [BSJR] M. Bellare, A. Desai, E. Jokipii, P. Rogaway; A concrete security treatment of symmet-ric encryption, in Proceedings of the 38th Symposium on Foundations on Computer Science, IEEE, 1997, pp. 394-403. 
         [Be94] J. Benaloh; Dense Probabilistic Encryption, in Proceedings of the Workshop on Selected Areas of Cryptography, 1994, pp. 120-128. 
         [BV11] Z. Brakerski, V. Vaikuntanathan; Efficient fully homomorphic encryption from (stan-dard) LWE, R. Ostrovsky editor, IEEE 52nd Annual Symposium on Foundations of Computer Science, FOCS 2011, Palm Springs 2011, pp. 97-106. 
         [Br12] Z. Brakerski; Fully homomorphic encryption without modulus switching from classical GapSVP, in CRYPTO 2012, pp. 868-886. 
         [BGV12] Z. Brakerski, C. Gentry, V. Vaikuntanathan; Fully homomorphic encryption without bootstrapping, in Innovations in Theoretical Computer Science (ITCS &#39;12), 2012, Available at http://eprint.iacr.org/2011/277. 
         [CMNT] J.-S. Coron, A. Mandal, D. Naccache, M. Tibouchi; Fully homomorphic encryption over the integers with shorter public keys, P. Rogaway editor, Advances in Cryptology—CRYPTO 2011-31st Annual Cryptology Conference, Santa Barbara 2011, Lecture Notes in Computer Science, volume 6841, Springer, 2011, pp. 487-504. 
         [vDGHV] M. van Dijk, C. Gentry, S. Halevi, V. Vaikuntanathan; Fully hohomomorphic encryption over the integers, In EUROCRYPT, 2010, pp. 24-43. 
         [DM15] L. Ducas, D. Micciancio; FHEW: Homomorphic Encryption Bootstrapping in less than a second, Advances in Cryptology—EUROCRYPT 2015, Lecture Notes in Computer Science, Vol. 9056, pp. 617 640, 2015. 
         [FK94] M. Fellows, N. Koblitz; Combinatorial cryptosystems galore!, in Finite Fields: Theory, Applications, and Algorithms, vol. 168 of Contemporary Mathematics, A M S 1994, pp. 51-61. 
         [GeTh09] C. Gentry; A fully homomorphic encryption scheme, PhD thesis, Stanford University, 2009. 
         [Ge09] C. Gentry; Fully homomorphic encryption using ideal lattices, in STOC &#39;09, pp. 169-178. 
         [Ge10] C. Gentry; Computing arbitrary functions of encrypted data, Communications of the ACM, Volume 53 Issue 3, March 2010, pp. 97-105. 
         [Ge11] U.S. Pat. No. 8,630,422; Fully homomorphic encryption method based on a bootstrappable encryption scheme, computer program and apparatus; Craig B. Gentry, Assigned to International Business Machines Corporation 
         [GH11] C. Gentry, S. Halevi; Implementing Gentry&#39;s Fully-Homomorphic Encryption Scheme, Advances in Cryptology—Proceedings of EUROCRYPT 2011, Lecture Notes in Computer Science, Vol. 6632, Springer, pp. 129-148, 2011 
         [GSW13] C. Gentry, A. Sahai, B. Waters; Homomorphic Encryption from Learning with Errors: Conceptually-Simpler, Asymptotically-Faster, Attribute-Based, Advances in Cryptology, CRYPTO 2013, Lecture Notes in Computer Science, Volume 8042, 2013, pp. 75-92. 
         [GGH97] O. Goldreich, S. Goldwasser, and S. Halevi; Public-key cryptosystems from lattice reduction Problems, Advances in Cryptology—CRYPTO 1997, Lecture Notes in Computer Science, Vol. 1294, pages 112-131, Springer, 1997. 
         [GM] S. Goldwasser, S. Micali; Probabilistic Encryption, Journal of Computer and System Sciences 28, 1984, pp. 270-299. 
         [GP04] D. Grigoriev, I. Ponomarenko; Homomorphic Public-Key Cryptosystems over Groups and Rings, Quaderni di Mathematica, Vol 13, 2004, pp. 304-325. 
         [HaGeVa] U.S. Pat. No. 8,861,716 B2; Vinod 08861716 C1. 380-28; Efficient homomorphic encryption scheme for bilinear forms; Shai Halevi, Elmsford, N.Y. (US); Craig B. Gentry, New York, N.Y. (US); and Vinod Vaikuntanathan, White Plains, N.Y. (US); Assigned to International Business Machines Corporation, Armonk, N.Y. (US) 
         [HaGe13] US20120039473 A1; Efficient implementation of fully homomorphic encryption Gentry; Craig B. (New York, N.Y.), Halevi; Shai (Elmsford, N.Y.), Assigned to International Business Machines Corporation, Armonk, N.Y. (US) 
         [HS14a] S. Halevi and V. Shoup; Algorithms in HElib, J. A. Garay and R. Gennaro, editors; CRYPTO 2014, Part I, Lecture Notes in Computer Science, Vol. 8616, pp. 554 571, Springer, 2014. 
         [HS14b] S. Halevi and V. Shoup; Bootstrapping for HElib, IACR Cryptology ePrint Archive, http://eprint.iacr.org/2014/873, 2014. 
         [HPS98] J. Hoffstein, J. Pipher, J. H. Silverman; NTRU: A Ring Based Public Key Cryptosystem, Algorithmic Number Theory (ANTS III), Portland, Oreg., June 1998, Lecture Notes in Computer Science 1423 (J. P. Buhler, ed.), Springer-Verlag, Berlin, 1998, pp. 267-288. 
         [HPS01] J. Hoffstein, J. Pipher, J. H. Silverman; NSS: an NTRU lattice-based signature scheme, Advances in cryptology—EUROCRYPT 2001 (Innsbruck), Lecture Notes in Computer Science, Volume 2045, Springer, 2001, pp. 211-228. 
         [PaClass] V. Pasol; Classifying Fully Homomorphic Encryption Schemes, preprint. 
         [RAD78] R. Rivest, L. Adleman, M. Dertouzos; On data banks and privacy homomorphisms, In Foundations of Secure Computation, Academic Press, 1978, pp. 169 177. 
         [R05] O. Regev; On lattices, learning with errors, random linear codes, and cryptography, in STOC, pp. 84-93, 2005. 
         [Ro11] R. Rothblum; Homomorphic Encryption: From Private-Key to Public-Key, Theory of Cryptography, Lecture Notes in Computer Science, Vol. 6597, 2011, pp. 219-234. 
         [RSA78] R. Rivest, A. Shamir, and L. Adleman; A method for obtaining digital signatures and public-key cryptosystems, in Communications of the ACM, 21(2), pages 120-126, 1978. 
         [ScVe] J. Scholten, F. Vercauteren; An Introduction to Elliptic and Hyperelliptic Curve Cryptography and the NTRU Cryptosystem; To appear in B. Preneel Ed., State of the Art in Applied Cryptography, COSIC &#39;03, Lecture Notes in Computer Science, Springer, 2004. 
         [Sen] J. Sen; Homomorphic Encryption: Theory &amp; Application, available at http://arxiv.org/abs/1305.5886. 
         [Sh97] V. Shoup; Lower bounds for discrete logarithms and related problems, in Advances in Cryptology, EUROCRYPT &#39;97, Lecture Notes in Computer Sciences, Volume 1233, Springer, 1997, pp. 256-266. 
         [SV10] N. Smart, F. Vercauteren; Fully homomorphic encryption with relatively small key and ciphertext sizes, P. Nguyen and D. Pointcheval, editors, in Public Key Cryptography, volume 6056 of Lecture Notes in Computer Science, Springer, 2010, pp. 420-443. 
       
     
       GLOSSARY 
       [0000]    
       
         D, Dec=Decryption algorithms 
         E, Enc=Encryption algorithms 
         M=Monoid 
         M′=Monoid 
         G=Monoid, 
         H=Monoid, 
         R=Commutative ring 
         R[M]=Monoid Algebra 
         A=R-algebra 
         S=Im(×), the image of elements in H under the character χ: H→A. 
         F 2 =The field with two elements=({0, 1}, AND, XOR) 
           F 2   =the algebraic closure of F 2    
         |A x |=number of invertible elements in A 
         p, q=primes 
         N=pq 
         (Z/NZ)x, (Z/pZ)x, (Z/qZ)x=the group of invertible elements mod N, mod p respectively mod q 
         ω p , ω q =third root of unity mod p, respectively mod q 
         π p , π q =projection map from mod N to mod p, respectively to mod q 
         η=unique element mod N such that π p (η)=ω p  and π q (η)=ω g    
         sk, Sk=secret key 
         φ=Monoid homomorphism 
         φ R =Algebra homomorphism 
         λ=security parameter (between 256-2048) 
         χ=monoid character 
         ∈=Evaluation map 
         m=plaintext message (for FHE, a bit) 
         d=d(λ)=number of zeroes in a fresh ciphertext 
         s=s(λ)=size of the secret key Sk 
         p i =the probability of zero withdrawal on position i 
         f i =appearance frequency of zero on position i 
         M={M 1 , . . . , M n }=sequence of natural numbers 
         M i :=the set M with M i  deleted. 
         ∈=acceptable error (of size 2 −λ ) 
         M=M 1 + . . . +M n    
         P M (X):=Π(1+M i  X)=Σ d  C d (M) X d =the polynomial which computes the relative frequencies of extraction d numbers with no repeating occurrences in the same M i  interval. 
       
     
         [0000]    
       
         
           
             
               
                 
                   Q 
                   i 
                 
                  
                 
                   ( 
                   
                      
                     
                       , 
                       M 
                     
                   
                   ) 
                 
               
               := 
               
                 
                   ∑ 
                   
                     k 
                     = 
                     0 
                   
                   
                     d 
                     - 
                     1 
                   
                 
                  
                 
                   
                     ∑ 
                     
                       ( 
                       
                         
                           j 
                           1 
                         
                         , 
                         … 
                         , 
                         
                           j 
                           k 
                         
                       
                       ) 
                     
                   
                    
                   
                     
                       ( 
                       
                         
                           ∏ 
                           
                             s 
                             = 
                             1 
                           
                           k 
                         
                          
                         
                           
                             M 
                             
                               j 
                               s 
                             
                           
                           
                             M 
                             - 
                             
                               M 
                               
                                 j 
                                 1 
                               
                             
                             - 
                             … 
                             - 
                             
                               M 
                               
                                 j 
                                 
                                   s 
                                   - 
                                   1 
                                 
                               
                             
                           
                         
                       
                       ) 
                     
                      
                     
                       
                         M 
                         i 
                       
                       
                         M 
                         - 
                         
                           M 
                           
                             j 
                             1 
                           
                         
                         - 
                         … 
                         - 
                         
                           M 
                           
                             j 
                             k 
                           
                         
                       
                     
                   
                 
               
             
             , 
           
         
       
     
         [0000]    the relative frequencies of extraction of d numbers with rejection with no repeating occurrences in the same M, interval.