I am currently developing a service that calculates statistics (currently only sum/average) on homomorphically encrypted user data, and then gives the results to a third party. Because encryption is computationally expensive, and user devices are routers or small SoCs, I want to blind the data (e.g. add a random big number to the data value), use a blind for multiple data values, and encrypt only the blind.

Now the question is, how big does this blind have to be compared to the actual data so that it can be considered secure? For example, if I have temperature values between -20°C and +40°C, how big would I have to choose the blinds? If I take extremely big blinds, I will run into the issue of overflows, which will probably be hard to deal with, since I am summing up encrypted numbers.


You can try to encrypt your sensitive data with a lightweight cipher, like Prince. You encrypt your Prince key with a HE encryption scheme like BGV (HElib implements it) and give the cloud two things: Enc_HE(Key_Prince), Enc_PRINCE(Data). The cloud is able to decrypt homomorphically Enc_PRINCE(Data) using Enc_HE(Key_Prince) and obtain only Enc_HE(Data). The cloud can now perform unlimited computations on encrypted data. Your Key_Prince will not be found. You can find more about this scenario in: Toward Practical Homomorphic Evaluation of Block Ciphers Using Prince and Homomorphic Evaluation of the AES Circuit. HElib can be hard to use, do you might instead try a more friendly library, SEAL. But if you want to do only additions or only multiplications, there are more practicals schemes than fully homomorphic ones.

| improve this answer | |
  • $\begingroup$ Thank you very much, this looks promising! I will look into it! $\endgroup$ – Gasp0de Mar 24 '18 at 18:50

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.