CKKS算法是一種同態加密算法,專門設計用於處理近似數值的計算。它在2017年的論文《Homomorphic Encryption for Arithmetic of Approximate Numbers》中首次提出,該論文的作者是Cheon等四位韓國研究者。CKKS算法是基於學習問題(Learning With Errors, LWE)的變種,具體構造基於BGV方案,但也可以依賴於其他現有的同態方案。最初,該算法因其論文首字母縮寫被稱為HEAAN算法,後來為了區分,採用了作者姓氏的首字母CKKS。
CKKS算法的核心思想是將加密噪聲視為近似計算誤差的一部分,這樣解密出來的結果可以直接視為原始訊息的近似值。這種算法特別適用於定點運算,因為它比浮點運算更穩定。CKKS方案的主要步驟包括編碼(解碼)、加解密、同態加乘、重縮放、自同構旋轉等。與傳統的基於整數的同態加密算法(如BGV、BFV)不同,CKKS算法的訊息空間是複數空間,這是因為它旨在處理複數(或實數)計算。為了實現這一點,需要將訊息從複數向量「編碼」成整數多項式。
CKKS算法的優點包括其簡單性、有利於並行計算、以及誤差不會被傳送。然而,它也有一些缺點,例如不能隱藏明文的模式,並且可以對明文進行主動攻擊。儘管如此,CKKS算法在需要處理近似數值計算的場景中,如機器學習和數據分析,提供了強大的加密計算能力。