课程笔记:全同态加密的理论与构造-上篇:学习
本文学习“课程笔记:全同态加密的理论与构造-上篇”,并做笔记和补充。
基础
- 同态加密特点就是能够对密文执行任意操作(函数\(F\)),解密后相当于对明文执行对应的操作,这也是方案的同态性体现。
- 函数\(F\)也可以用电路表示,都是多项式时间可以计算的。
- 加法和乘法运算实现可以用对应的加法和乘法门。
- SomeWhat HE(Leveled HE)能支持有限次加法和乘法计算。
- 同态计算可以放在云上,满足计算量大,又保证数据隐私的特性。
加密方案的安全性
参考:https://www.cnblogs.com/pam-sh/p/15244862.html
https://blog.csdn.net/m0_47659650/article/details/125223197
- 语义安全(Semantic Security,SS)就是给定一个密文,不会泄露出任何明文信息,理论上已证明,语义安全等价于密文不可区分性。
- 公钥加密的语义安全有以下三类。
IND-CPA
即IN Distinguishability under Chosen Plaintext Attack,选择明文攻击下的不可区分性,就是敌手知道部分密文,猜测明文。
这就是密文不可区分!
IND-CCA1
即IN Distinguishability under Chosen Ciphertext Attack,选择密文攻击下的不可区分性,就是相对前者,增加敌手可以在收到之前,可以调用一次加密或解密能力。
IND-CCA2
即IN Distinguishability under adaptive Chosen Ciphertext Attack,自适应选择密文攻击下的不可区分性,就是不限制敌手调用解密的时间。
SH-HE到PK-HE
- 对称加密方案:G是密钥生成,E是加密,D是解密,Eval是同态计算。
- 其中\(SK\)是对称加密的密钥,这里以此生成公钥加密中的公私钥。
- 加密:明文\(b\),密文\(c=Eval(c_0^*,...,c_{m-1}^*,f_s(.))\),\(c_0^*,...,c_{m-1}^*\)是随机数\(r_0,...,r_{m-1}\)的对称加密,
这里加密还用到了同态计算?
3 - 解密和同态计算不变,
解密是不是得变?
自举技术
增强解密电路
- 这里的解密电路就是解密函数,这里的增强解密电路可以用NAND门构成。
- \(ADC_{C_1,c_2}(SK)=DC_{C_1}(SK)\)
NAND
\(DC_{C_2}(SK)=m_1\)NAND
\(m_2\) - 这样就是实现了在不解密的情况下计算密文。
自举原理
- 密文支持增强解密电路,即满足加法和乘法同态性。
- 自举的原理最容易理解的还是“戴着手套制作宝石”的例子。
自举构造
- 这里的\(BK\)是加密的私钥\(SK\),即用在同态计算\(Eval\)中,是计算密钥。
- 这里是\(ADC电路\),作者应该是笔误\(AGC\)电路。
- 所以私钥\(SK\)是按位加密的。
- 使用公钥加密私钥,该操作是否安全,目前是无法证明是不安全的,所以就假设它是安全的,这就是“循环安全假设”。
Leveled-FHE
即最多支持执行d次同态乘法计算。
- 密钥生成:这里生成\(d+1\)对公私钥对,并根据这些公私钥对生成计算密钥,最终方案的公钥为\((PK_0,...,PK_{d})\),私钥为\((SK_0)\),计算密钥为\((BK_0,...,BK_{d-1})\),文中是把计算密钥也作为公钥的一部分(计算密钥确实也是公开的!)。
- 加密:对于新鲜明文使用\(PK_d\)加密的。
- 解密:使用\(SK_0\)解密。
- 每一个密文都对应各自层数,对于新鲜密文的层数为\(d\)层。
- 在对\(d\)层的密文做\(Eval\)计算时,使用的是\(BK_{d-1}\)的计算密钥,得到的结果实际上是由\(PK_{d-1}\)加密所对应明文的密文。
- 直到计算出的密文层数是\(0\)层时,不能继续计算,这就是有限次计算的FHE。
- 这种情况使用多对公私钥,并以此形成计算密钥,避免了使用自己的公钥加密私钥的问题,即避免了“循环安全假设”问题。