Im in my final year of PhD in computer vision and my supervisor has given me a task that I am not very familiar with. So I am teaching myself homomorphic encryption everyday. This question is mostly about clarifying my understandings as well.

He wants me to setup an encrypted dataset for an internal competition among his first year students. The task is to identify faces within the encrypted domain using homomorphic properties.

So to begin with I started reading about Paillier encryption and coded the encryption and decryption part from the equations in the literature review. So now I can encrypt data into ciphertext and decrypt that ciphertext back into its original text successfully. I then tested homomorphism and that is working as well. I can add together the ciphertexts and also multiply a scalar value to the ciphertexts. So the implementation and practical side that I taught myself was done.

I understand that in Paillier system we have a public key n (n = p * q) and g, and a private key mu and lambda. The client and the server know the public keys and the server can use this public key to perform homomorphic addition/multiplication and only the client knows the private key as only the client can decrypt the messages. Now from my understanding, his idea is for me to encrypt a simple face dataset like the ORL dataset and make available the encrypted dataset and the public keys for his students to perform operations on and hopefully determine the correct identity of another encrypted query image.

Now my main concern is about the practicality and possibility of all of this. My supervisor did not give me much details and just basically said make this happen.

My understanding is that to have a decent level of encryption for such a local dataset a n of size 1024 bits would suffice. So I should encrypt the images with a key size of 1024 and then give the encrypted dataset along with the public key to the students. Maybe I should also give the private key so that they can decrypt their results to see if they identified correctly.

Sorry for the long post but Im trying to understand is all of this possible? Can the students perform identification in the encrypted domain using only the data I provide them?


1 Answer 1


If I understand correctly, the setting describe by you is that you want to simulate a scenario where an encrypted dataset is hosted on an untrusted server, then a user can send encrypted image to it, the server blindly match the image with every encrypted image in the set, then return the user the best match. This seems not possible (at least without some carefully thought and design) because the server does not have the private key thus would not know which one is the best match. Of course the server can, for each encrypted image, return a result and the user can decrypt, then the user decide which one is the best match.

Whether the matching can be done in the encrypted domain depends much on what matching algorithm you use. Paillier is only additively homomorphic, meaning that you cannot do multiplication in the encrypted domain (except multiply a constant). The computation is restricted to an integer group, not real numbers. All of those constraints would restrict your choices, possibly only to those simple ones.

  • $\begingroup$ That's what I thought, it does not seem practical. The server does not need to know the private key but it will be very limited in what it can do with the encrypted pixels. I'll just do as I'm asked but I posted here in hopes that maybe I did not understand the task correctly and there was a practical way to accomplish this $\endgroup$
    – ipunished
    Commented Jun 10, 2018 at 2:29

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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