FATE框架Paillier模块分析

FATE框架Paillier模块分析

1.编码模块
  1. 默认参数Q = 293973345475167247070445277780365744413为127 bit的素数(是否是最大,有待验证)
    Note:在线检验素数
  2. 对负数的编码:乘完大整数后会进行模n的操作,故负数会变成超过max_int的正数。
2.加解密
  1. 对负数的加密:
    编码时所有负数均被处理成了正数,故不会直接对负数进行加密;
  2. 同态减法:
    由于减法可能会产生负数,所以用加法处理减法的操作无法避免计算结果为负数:
    明文: s u m = a − b = a + ( − b ) sum = a - b = a +(-b) sum=ab=a+(b)
    密文: E n c ( s u m ) = E n c ( a ) + E n c ( − b ) m o d    n Enc(sum) = Enc(a) +Enc(-b) \mod n Enc(sum)=Enc(a)+Enc(b)modn
    此时如果 s u m sum sum为负数,则相当于对负数 s u m sum sum进行了加密,也就是说,由于密码方案的代数结构,解密就会出错,解密的结果则为: D e c ( E n c ( s u m ) ) = s u m + n , Dec(Enc(sum))= sum+n, Dec(Enc(sum))=sum+n,为什么只加一个 n n n,因为在FATE的加密方案中,明文 a , b a, b a,b均有限制( a < n / 3 − 1 a< n/3-1 a<n/31),这保证了二者之和(差)大致 满足:
    − n / 3 < s u m < 2 n / 3 - n/3 <sum<2n/3 n/3<sum<2n/3其实还是在一个 n n n 的范围内,所以进行一次减法是可以得到正确结果的。但是多次减法就可能有出错的风险,因此方案中经常选择一个足够大的 n n n来避免这种情况。
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值