Research Article

Efficient Privacy-Preserving Fingerprint-Based Authentication System Using Fully Homomorphic Encryption

Algorithm 1

Homomorphic addition.
program HomAddition (LweSample ∗x, LweSample ∗y, int numberofbits, CloudKeySet ∗evalkey)
//two carries
LweSample ∗carry=new_LweSample_array(2);
//the first carry is intialized to 1
bootsCONSTANT(carry, 1, evalkey);
 //two temps
LweSample ∗temp=new_LweSample_array(2);
For int i: 0 to (numberofbits − 1)
  temp=bootsXOR(x+i, y+i, evalkey);
  //sum[i]=x[i] XOR y[i] XOR carryin
  sum+i=boots XOR(temp, carry, evalkey);
  temp+1=boots AND(x+i, y+i, evalkey);
  //carry out
  carry+1=boots MUX(temp, carry, temp+1, evalkey);
  carry=carry+1;
end
sum+numberofbits=carry;
return sum;
end