0

I am using Integer Vector Homomorphic Encryption for the encryption lib.

I have to multiply a learning rate of 0.01 (i.e. between 0 and 1) by the encrypted data (vector) but it is not integer. I had wanted to multiply by 1/10 instead. Is it possible? because it is know that HE scheme doesn't support division. Is the any way out?

Eric
  • 11

1 Answers1

3

There are several ways...

If the message space of your scheme is $\mathbb{Z}_t$, then you can

  1. Multiply all the plaintexts by $10^k$ before encrypting them and instead of multiply those vectors by a learning rating between $0$ and $1$, multiply them by an integer learning rate between $0$ and $10^k$.

  2. Remove the divisions and track the changes introduced by this remotion. For instance, instead of evaluate $x = \frac{c_0 + c_1}{10}$, do $y = c_0 + c_1$ and keep in mind that $y = 10x$ so you can find the right answer after decrypting. Take a look to the section 3.2 (Division-Free Integer Algorithms for Classification) of this paper...

But if the message space of the scheme you are using is (let's say) more robust, like a polynomial ring, then you can encode double values into plaintexts, which enables you to encode the learning rate, then encrypt it and finally multiply by the vector of ciphertexts.

That answer may be helpful to you.