Abstract: A method of executing a program segment operating on homomorphically encrypted data, the method comprising: providing a processing and memory circuitry (PMC) configured to execute, responsive to a respective program instruction, at least: i) a move operation, and ii) an operation of comparing two homomorphically encrypted input bits; executing, on the PMC, responsive to instructions of the program segment: i) a first operation of comparing two homomorphically encrypted bits to store a comparison result to a first memory location, and ii) a second operation that is configured to access the first memory location; thereby giving rise to branch-free execution of a program segment in accordance with the comparison result of homomorphically encrypted bits.
Abstract: There is provided an encryption method which comprises, by at least one server including a processing unit and memory, obtaining data, encrypting the data to obtain encrypted data, the encrypting comprising generating encryption keys using a plurality of seeds and a set of encrypting functions, processing the data using at least the encryption keys to generate the encrypted data, generating encrypted data DS,Enc informative of at least some of the plurality of seeds and transmitting the encrypted data and DS,Enc to a host different from the server, thereby enabling decryption of the encrypted data by the host. Corresponding decryption method is provided.