CKKS(Cheon-Kim-Kim-Song)全同态加密方案是一种允许在加密态下进行浮点数运算的加密方案,通常用于隐私保护计算,特别是在机器学习和联邦学习场景中。CKKS的工作流程由9个核心算法组成,分别用于初始化、密钥生成、加密、解密以及同态运算。以下是CKKS的9个主要算法及其功能:
1. 初始化算法(Init)
- 功能:初始化系统参数,包括生成用于加密的多项式环 ( R ) ( R ) (R) 和相关模数 ( q 0 ) ( q_0 ) (q0)。
- 描述:给定安全参数 ( λ ) ( \lambda ) (λ) 和电路深度 ( L ) ( L ) (L),输出多项式环 ( R ) ( R ) (R)、一个素数 ( p ) ( p ) (p)、模数 ( q 0 ) ( q_0 ) (q0),并设置其他模数 ( q l = p l ⋅ q 0 ) ( q_l = p^l \cdot q_0 ) (ql=pl⋅q0),其中 ( 0 ≤ l ≤ L ) ( 0 \leq l \leq L ) (0≤l≤L)。
- 作用:为后续的加密操作确定密钥的环结构和加密参数。
2. 密钥生成算法(KeyGen)
- 功能:生成公钥、私钥和评估密钥 ( e v a l u a t i o n k e y ) (evaluation key) (evaluationkey)。
- 描述:给定安全参数 ( λ ) ( \lambda ) (λ),生成一个随机私钥 ( s k ) ( sk ) (sk),并基于此生成公钥 ( p k ) ( pk ) (pk) 和评估密钥 ( e v k ) ( evk ) (evk)。私钥和公钥用于加密和解密,评估密钥用于支持同态乘法操作。
- 作用:生成用于加密、解密和同态操作的关键密钥。
3. 加密算法(Enc)
- 功能:使用公钥对明文进行加密,生成密文。
- 描述:给定公钥 ( p k ) ( pk ) (pk) 和一个明文消息 ( m ) ( m ) (m),生成密文 ( c ) ( c ) (c)。加密过程中会引入随机性,以确保相同的明文每次加密产生不同的密文。
- 作用:将明文数据加密为密文,保护数据隐私。
4. 解密算法(Dec)
- 功能:使用私钥对密文进行解密,还原明文。
- 描述:给定私钥 ( s k ) ( sk ) (sk) 和一个密文 ( c ) ( c ) (c),通过解密操作得到明文 ( m ) ( m ) (m)。
- 作用:将加密的密文还原为原始明文数据。
5. 加法算法(Add)
- 功能:对两个密文进行同态加法操作。
- 描述:给定两个密文 ( c 1 ) ( c_1 ) (c1) 和 ( c 2 ) ( c_2 ) (c2),返回它们的同态加法结果 ( c add = c 1 + c 2 ) ( c_{\text{add}} = c_1 + c_2 ) (cadd=c1+c2)。
- 作用:在加密态下执行加法操作,无需解密数据。
6. 乘法算法(Mult)
- 功能:对两个密文进行同态乘法操作。
- 描述:给定两个密文 ( c 1 ) ( c_1 ) (c1) 和 ( c 2 ) ( c_2 ) (c2),使用评估密钥 ( e v k ) ( evk ) (evk) 来计算它们的同态乘法结果 ( c mult = c 1 ⋅ c 2 ) ( c_{\text{mult}} = c_1 \cdot c_2 ) (cmult=c1⋅c2)。
- 作用:支持在加密态下执行乘法操作,用于计算更复杂的表达式。
7. 编码算法(Ecd)
- 功能:将浮点数或其他数据编码为可加密的多项式格式。
- 描述:给定一个数据向量 ( z ) ( z ) (z) 和一个缩放因子 ( Δ ) ( \Delta ) (Δ),将数据编码为多项式 ( m ) ( m ) (m),以便进行加密。
- 作用:将输入数据转换为适合同态加密的形式,支持浮点数加密运算。
8. 解码算法(Dcd)
- 功能:将解密后的多项式解码为原始浮点数或数据。
- 描述:给定一个多项式 ( m ) ( m ) (m) 和缩放因子 ( Δ ) ( \Delta ) (Δ),将其解码为浮点数向量 ( z ) ( z ) (z)。
- 作用:在解密后还原浮点数或原始数据,配合编码算法使用。
9. 重缩放算法(RS,Rescale)
- 功能:在同态乘法后减少密文的噪声,防止噪声累积导致解密失败。
- 描述:给定一个密文 ( c ) ( c ) (c) 和缩放因子,重缩放密文以保持加密计算结果的精度,同时控制噪声水平。
- 作用:在同态乘法后对密文进行缩放,确保密文保持在可解密范围内,并提高计算稳定性。
总结
CKKS的9个核心算法涵盖了从加密、解密到同态运算和数据编码的整个流程。通过这些算法,CKKS能够在加密状态下执行高效的加法和乘法操作,并且支持浮点数的同态计算,适合用于如联邦学习中对数据隐私要求较高的场景。