SEAL全同态加密开源库(六) 整数运算numth源码解析
2021SC@SDUSC
2021-11-07
前言
这是SEAL开源库代码分析报告第五篇,本篇将首先照例引入一些理论知识,然后本篇将开始分析整数运算部分,numth.cpp的源代码。关于其重要性,在公钥和密钥的生成、明文加密以及密文解密过程中,都需要整数的运算。
举个陈智罡教授博客中的例子,假设已知明文为m,通过加密算法得到m+2r+pq,想要对其解密就需要先通过模p运算把pq消去,模2运算把2r消去,最后剩下明文m。因此整数运算这一部分,有仔细分析的必要。
理论知识补充
推荐一篇很好的初学者入门博客,陈志罡教授写的:科学网—整数上全同态加密方案分析(1)–献给全同态加密的初学者 - 陈智罡的博文 (sciencenet.cn)
本期的理论知识补充,我们介绍整数上的全同态加密。
Enc(m): m+2r+pq
Dec©: (c mod p) mod 2=(c – p*「c/p」)mod 2 = Lsb© XOR Lsb(「c/p」)
上面这个加密方案显然是正确的,模p运算把pq消去,模2运算把2r消去,最后剩下明文m 。这个公式看上去很简单,但是却很耐看,需要多看看。
公式中的p是一个正的奇数,q是一个大的正整数(没有要求是奇数,它比p要大的多),p 和q在密钥生成阶段确定,p看成是密钥。而r是加密时随机选择的一个小的整数(可以为负数)。明文m∈ {0,1},是对“位”进行加密的,所得密文是整数。
上面方案的明文空间是{0,1},密文空间是整数集。
全同态加密方案中除了加密、解密还有一个非常重要的算法就是:Evaluate,它的作用就是对于给定的功能函数f以及密文c1,c2,…,ct等做运算f (c1,

本文详细分析了SEAL全同态加密库numth.cpp中的整数运算核心代码,涉及共轭类的生成与加密过程中的关键步骤。通过实例解释了整数运算在加密解密中的作用,并介绍了DGHV方案。后续内容包括共轭类的构造算法和素数判断方法。
最低0.47元/天 解锁文章
7014

被折叠的 条评论
为什么被折叠?



