...
So using FHE allows us to perform calculations on the encrypted data, and get results which, when decrypted, match the equivalent calculations on the decrypted data.
A really important characteristic of Homomorphic Encryptions is that the encryption process adds entropy, so that a given value x will be encrypted to multiple different values (most likely a different value every time) - this will come up later.
So how do we use this to solve our problem? Let’s go through the details:
...
Server 1 now computes the difference between d (encrypted x) and each of the (encrypted) points of infection, c_i (encrypted y_i).
The reason Server 1 can’t just compare the encrypted values directly is that a homomorphic encryption will add entropy, so the exact same value will generate different results each time that it is encrypted.
Server 1 then multiplies together all of these numbers. It also multiplies the result by another encrypted random number s, and adds the encrypted random number R (which came from P).
...