明顯可以看出「教科書式RSA加密」方案是確定性加密,因此不是CPA安全的。儘管「教科書式ElGamal加密「在判定Diffie-Hellman(DDH)假設下被嚴格證明是CPA安全的,卻容易受到選擇密文攻擊。選擇密文攻擊(CCA)安全的一個密切的相關問題就是密文的可延展性,直觀上來解釋,即一個加密方案擁有這樣一個屬性:給定未知消息m的密文c,可以得到未知消息m_1的密文c_1,其中m和m_1具有某種已知的關聯。「教科書式RSA」加密就容易出現上面的攻擊,比方說敵手觀察到使用公鑰〈N,e〉加密的密文c=m^e mod N,則有密文c_1=2^e c mod N,解密為2m mod N,因為〖c_1〗^d≡〖(2^e m^e ) 〗^d≡2^ed m^ed≡2m mod N。對於「教科書式ElGamal加密」,比如說敵手A攔截了使用公鑰pk=(G,q,g,h)加密消息m的密文c=〈c_1,c_2 〉,這意味著c_1=g^y,c_2=h^y∙m。一些隨機選擇的y←Z_q對敵手來說是未知的,但敵手可以計算〖c_2〗^/=c_2∙m^/,則很容易知道密文c^/=〈c_1,〖c_2〗^/ 〉是消息m∙m^/的密文,這個觀察結果就容易引起選擇密文攻擊。有人可能會反對:如果接收者收到兩個密文c、c^/,並且密文的前一個元素相同,將產生懷疑(確實,對於正常生成的密文,密文的第一個元素相同的概率是可忽略的)。然而,敵手很容易避免其發生,令c_1,c_2,m,m^/如上面所述,敵手可以選擇隨機的y^/←Z_q,並且設〖c_1〗^((2))=c_1∙g^(y^/ ),〖c_2〗^((2))=c_2∙h^(y^/ )∙m^/,容易驗證c^((2))=〈〖c_1〗^((2)),〖c_2〗^((2)) 〉是消息m∙m^/的密文,且密文的第一個元素是完全隨機的。
相對來說,「教科書式ElGamal」加密方案不僅有效並且能夠基於DDH假設證明是安全的,卻沒有在實踐中得到廣泛採用,或許因為有限域上存在亞指數演演算法求解離散對數問題。而工程實現ElGamal式加密時,出於安全和效率的考慮,現在廣泛使用ECC,至於實現的標準可以參考商用密碼演演算法標準-SM2橢圓曲線公鑰密碼演演算法或者美國國家標準與技術研究所(National Institute of Standards and Technology,NIST)頒布的ECC標準。
目前,已有的基於格的加密方案主要分為兩大類,一類是NTRU密碼系統,其方案的實現效率較高,但缺乏可證明安全性。另一類是基於格上平均情形下的困難問題如帶誤差學習問題(Learning with Errors, LWE),環上帶誤差學習問題(Ring Learning with Errors, RLWE)等的加密方案,也是基於格的加密體制的一個熱門研究領域。基於平均情形下困難問題的主要加密方案包括基於一般格的最早的Regev 加密方案、對偶Regev(dual-Regev)加密方案以及基於理想格的RLWE的加密方案等。在這裡,我們就不深入介紹了。