zkMe FHE
A DID scheme based on homomorphic encryption of face features
CKKS algorithm is a fully homomorphic encryption (HE) scheme used for encrypted computation. Its full name is "Cheon-Kim-Kim-Song" and was proposed by Cheon et al. (2017) [3]. The CKKS algorithm can support encrypted computation for complex and real number data, and can achieve relatively high encryption computation accuracy and small ciphertext expansion factors, making it one of the widely used fully homomorphic encryption schemes today.
CKKS Plaintext Space
Unlike other HE schemes, the CKKS scheme supports approximate arithmetic over complex numbers. More precisely, the plaintext space of the CKKS scheme is Cn/2 for some power-of-two integer n. To deal with the complex plaintext vector efficiently, Cheon et al. proposed plaintext encoding/decoding methods which exploits a ring isomorphism ϕ:R[X]/(Xn+1)→Cn/2 .
Encoding Method
Given a plaintext vector z=(z1,z2,...,zn/2)∈Cn/2 and a scaling factor Δ>1, the plaintext vector is encoded as a polynomial m(X)∈R:=Z[X]/(Xn+1) by computing m(X)=⌊Δ⋅ϕ−1(z)⌉∈R where ⌊⋅⌉ denotes the coefficient-wise rounding function.
Decoding Method
Given a message polynomial m(X)∈R and a scaling factor Δ>1, the message polynomial is decoded to a complex vector z∈Cn/2 by computing z=Δ−1⋅ϕ(m(X))∈Cn/2.
Here the scaling factor Δ>1 enables us to control the encoding/decoding error which is occurred by the rounding process. Namely, one can obtain the approximate equation Dcd(Ecd(z;Δ);Δ)≈z by controlling Δ where Ecd and Dcd denote the encoding and decoding algorithm, respectively.
From the ring-isomorphic property of the mapping ϕ:R[X]/(Xn+1)→Cn/2 , for m1=Ecd(z1;Δ) and m2=Ecd(z2;Δ), the following hold:
Dcd(m1+m2;Δ)≈z1+z2,
Dcd(m1⋅m2;Δ)≈z1∘z2,
where ∘ denotes the [[Hadamard product (matrices)|Hadamard product]] of the same-length vectors. These properties guarantee the approximate correctness of the computations in the encoded state when the scaling factor Δ is chosen appropriately.
Algorithms
The CKKS scheme basically consists of those algorithms: key Generation, encryption, decryption, homomorphic addition and multiplication, and rescaling. For a positive integer q, let Rq:=R/qR be the quotient ring of R modulo q. Let χs, χr and χe be distributions over R which output polynomials with small coefficients. These distributions, the initial modulus Q, and the ring dimension n are predetermined before the key generation phase.
Key generation
The key generation algorithm is following:
Sample a secret polynomial s←χs.
Sample a (resp. a′) uniform randomly from RQ (resp. RPQ), and e,e′←χe.
Output a secret key sk←(1,s)∈RQ2, a public key pk←(b=−a⋅s+e,a)∈RQ2, and an evaluation key evk←(b′=−a′⋅s+e′+P⋅s2,a′)∈RPQ2.
Encryption
The encryption algorithm is following:
Sample an ephemeral secret polynomial r←χr.
For a given message polynomial m∈R, output a ciphertext ct←(c0=r⋅b+e0+m,c1=r⋅a+e1)∈RQ2.
Decryption
The decryption algorithm is following:
For a given ciphertext ct∈Rq2, output a message m′←⟨ct,sk⟩</math><math>(mod q).
The decryption outputs an approximate value of the original message, i.e., Dec(sk,Enc(pk,m))≈m, and the approximation error is determined by the choice of distributions χs,χe,χr. When considering homomorphic operations, the evaluation errors are also included in the approximation error. Basic homomorphic operations, addition and multiplication, are done as follows.
Homomorphic Addition
The homomorphic addition algorithm is following:
Given two ciphertexts ct and ct′ in Rq2, output ctadd←ct+ct′∈Rq2.
The correctness holds as Dec(sk,ctadd)≈Dec(sk,ct)+Dec(sk,ct′).
Homomorphic Multiplication
The homomorphic multiplication algorithm is following:
Given two ciphertext ct=(c0,c1) and ct′=(c0′,c1′) in Rq2, compute (d0,d1,d2)=(c0c0′,c0c1′+c1c0′,c1c1′) (mod q). Output ctmult←(d0,d1)+⌊P−1⋅d2⋅evk⌉∈Rq2.
The correctness holds as Dec(sk,ctmult)≈Dec(sk,ct)⋅Dec(sk,ct′).
Note that the approximation error (on the message) exponentially grows up on the number of homomorphic multiplications. To overcome this problem, most of HE schemes usually use a modulus-switching technique which was introduced by Brakerski et al. (2012) [4].
In case of HEAAN, the modulus-switching procedure is called rescaling. The Rescaling algorithm is very simple compared to Brakerski-Gentry-Vaikuntanathan's original algorithm. Applying the rescaling algorithm after a homomomorphic multiplication, the approximation error grows linearly, not exponentially.
Rescaling
The rescaling algorithm is following:
Given a ciphertext ct∈Rq2 and a new modulus q′ output a rescaled ciphertext ctrs←⌊(q′/q)⋅ct⌉∈Rq′2.
The total procedure of the CKKS scheme is as following: Each plaintext vector z which consists of complex (or real) numbers is firstly encoded as a polynomial m(X)∈R by the encoding method, and then encrypted as a ciphertext ct∈Rq2. After several homomorphic operations, the resulting ciphertext is decrypted as a polynomial m′(X)∈R and then decoded as a plaintext vector z′ which is the final output.
zkMe DID Creation Based on FHE Face Features
This scheme uses homomorphic encryption technology to protect users' facial feature data. During user registration, facial features are extracted using liveness verification technology, encrypted using homomorphic encryption technology, and uploaded to the server. The server uses homomorphic encryption technology to compare and generate similarity ciphertext, which will be sent back to the frontend application for decryption and verification. If the user's facial features are not registered, the DID identifier and facial feature ciphertext will be saved in the database to complete the registration.
Homomorphic encryption technology allows calculations to be performed on data in an encrypted state, which can prevent sensitive data from being exposed in plaintext. At the same time, liveness verification technology can prevent malicious users from uploading photos of others to register fake accounts. This scheme provides a secure and reliable method for creating DID identifiers and protecting user privacy.
The creation process is as follows:
Generate a public-private key pair on the frontend: Users generate a public-private key pair on the frontend application, where the public key is used to create the DID identifier, and the private key is used for signature.
Generate a DID identifier: The DID identifier is generated using the public key, which is used to identify the user's identity.
Scan the user's face, perform liveness verification, and extract facial features: The frontend application scans the user's face, uses liveness verification technology to ensure that the face is real, and extracts facial features (faceprint) from it.
Homomorphically encrypt the faceprint vector values and upload the facial feature ciphertext to the server: Use homomorphic encryption technology to encrypt the facial features, and upload the encrypted facial feature values to the server.
Perform similarity matching based on facial feature ciphertext on the server and obtain the similarity ciphertext: The server uses homomorphic encryption technology to compare the encrypted facial features, and obtains a similarity score ciphertext.
Send the similarity ciphertext to the frontend: The server sends the similarity ciphertext to the frontend application.
Decrypt the similarity ciphertext on the frontend and determine if the facial features have been registered: The frontend application uses the private key to decrypt the similarity ciphertext to determine whether the facial features have been registered.
Register the DID identifier and facial feature ciphertext: If the facial features are not registered, the DID identifier and facial feature ciphertext will be saved to the database to complete the registration process.
References
Boddeti, Vishnu Naresh. "Secure face matching using fully homomorphic encryption." 2018 IEEE 9th International Conference on Biometrics Theory, Applications and Systems (BTAS). IEEE, 2018.
Liu, Weiyang, et al. "Sphereface: Deep hypersphere embedding for face recognition." Proceedings of the IEEE conference on computer vision and pattern recognition. 2017.
Cheon, Jung Hee, et al. "Homomorphic encryption for arithmetic of approximate numbers." Advances in Cryptology–ASIACRYPT 2017: 23rd International Conference on the Theory and Applications of Cryptology and Information Security, Hong Kong, China, December 3-7, 2017, Proceedings, Part I 23. Springer International Publishing, 2017.
Brakerski, Zvika. "Fully homomorphic encryption without modulus switching from classical GapSVP." Advances in Cryptology–CRYPTO 2012: 32nd Annual Cryptology Conference, Santa Barbara, CA, USA, August 19-23, 2012. Proceedings. Springer Berlin Heidelberg, 2012.
Last updated