Photo by Marija Zaric on Unsplash

Homomorphic Multiplication and Division Using ElGamal in PowerShell

--

Data exists in three main states: over-air, at-rest and in-process. While we have encryption for over-air (such as with TLS and wireless encryption) and for at-rest (such as for disk encryption), we often do not protect our data within process. And, so, if someone gets access to the memory they would reveal sensitive information such as passwords and encryption keys.

Homomorphic encryption aims to overcome this problem, and where we can process data using encrypted values. This involves generating a private key and a public key, and where we encrypt the data with the public key, and then can process the values using arithmetic values, and then decrypt the result with the private key. Overall, we can have partial homomorphic encryption (PHE) or full homomorphic encryption (FHE). We can also have methods which operate just on integers, and others that deal with floating point values.

While new methods, such as CKKS (Cheon, Kim, Kim and Song) are defined for FHE, there is a performance hit for the processing. If we just need to multiply or divide integers, then some of our existing public key methods can be used, and where they typically have good performance levels against the FHE methods. One of these is the usage of ElGamal encryption, and which naturally supports multiplication and division. So let’s…

--

--

Prof Bill Buchanan OBE FRSE
ASecuritySite: When Bob Met Alice

Professor of Cryptography. Serial innovator. Believer in fairness, justice & freedom. Based in Edinburgh. Old World Breaker. New World Creator. Building trust.