CKKS (Cheon, Kim, Kim, Song) 은 동형암호 최초의 실수 연산을 지원하는 스킴입니다. PPML (Privacy-preserving machine learning) 등 다양한 분야에서 활용되고 있으며 현재까지도 많은 연구가 진행되고 있는 유용한 동형암호 시스템입니다.
여기에서는 처음 CKKS 를 접하는 사람들을 위한 가이드를 제공하는 것을 목표하고 있습니다. 다음과 같은 논문들을 익히는 것을 목표로 진행합니다.
- Homomorphic Encryption for Arithmetic of Approximate Numbers , Cheon et al.
- Bootstrapping for Approximate Homomorphic Encryption , Cheon et al.
pip install -e .
python examples/example_...
구현된 기능들
[Encoding/Decoding, Encryption/Decryption, Addition, Multiplication, Rotation, Relinearization, KeySwitching]
- Ring
$\mathcal{R}_Q$ 에서의 연산의 종류들과 정의들 -
$\mathcal{R}_Q$ 에서 정의되는 곱셈과 CKKS 에서 제공하는 element-wise 곱셈과의 관계 (Encoding/Decoding) - CKKS 곱셈에서 노이즈를 조절하는 방법 (Multiplication, Rescale, Relinearization)
- Automorphism (1 에서 학습) 과 CKKS 에서 제공하는 shift 연산과의 관계 (Rotation, Key switching)
- Lectures/Docs 작업 🏃
- Multiplication 과 rotation 을 이용한 vector-matrix multiplication.
- Multiplication 을 이용한 polynomial evaluation: power-basis
- Multiplication 을 이용한 chebyshev evaluation: chebyshev-basis
- Ciphertext modulus 와 hamming weight 그리고 modulus raise
- Matrix multiplication 을 이용한 homomorphic encoding : coeff-to-slot
- Matrix multiplication 을 이용한 homomorphic decoding : slot-to-coeff
- Homomorphic modulus 연산 : EvalMod
- Bootstrapping
- NTT (Cooley Tukey algorithm)
- RNS-CKKS ( A Full RNS Variant of Approximate Homomorphic Encryption , Cheon et al.)
최근에 일이 바빠져서 언제 마무리 지을 수 있을지는 모르겠지만, 시간 날 때 마다 틈틈히 해보겠습니다.