HEAAN (Homomorphic Encryption for Arithmetic of Approximate Numbers) is an open source homomorphic encryption (HE) library which implements an approximate HE scheme proposed by Cheon, Kim, Kim and Song (CKKS). The first version of HEAAN was published on GitHub on 15 May 2016, and later a new version of HEAAN with a bootstrapping algorithm was released. Currently, the latest regular version is version 1.1 and the latest pre-release version is 2.1.
CKKS plaintext space Unlike other HE schemes, the CKKS scheme supports approximate arithmetics over complex numbers (hence, real numbers). More precisely, the plaintext space of the CKKS scheme is C n / 2 {\displaystyle \mathbb {C} ^{n/2}} for some power-of-two integer n {\displaystyle n} . To deal with the complex plaintext vector efficiently, Cheon et al. proposed plaintext encoding/decoding methods which exploits a ring isomorphism ϕ : R [ X ] / ( X n + 1 ) → C n / 2 {\displaystyle \phi :\mathbb {R} [X]/(X^{n}+1)\rightarrow \mathbb {C} ^{n/2}} .
Encoding method With a plaintext vector z → = ( z 1 , z 2 , . . . , z n / 2 ) ∈ C n / 2 {\displaystyle {\vec {z}}=(z_{1},z_{2},...,z_{n/2})\in \mathbb {C} ^{n/2}} and a scaling factor Δ > 1 {\displaystyle \Delta >1} , the plaintext vector is encoded as a polynomial m ( X ) ∈ R := Z [ X ] / ( X n + 1 ) {\displaystyle m(X)\in R:=\mathbb {Z} [X]/(X^{n}+1)}
by computing m ( X ) = ⌊ Δ ⋅ ϕ − 1 ( z → ) ⌉ ∈ R {\displaystyle m(X)=\lfloor \Delta \cdot \phi ^{-1}({\vec {z}})\rceil \in R} where ⌊ ⋅ ⌉ {\displaystyle \lfloor \cdot \rceil } denotes the coefficient-wise rounding function.
… excerpt ends here. Continue reading the full article.
