1. 引言
全同态加密(Fully Homomorphic Encryption, FHE)是一种具有特殊性质的公钥加密体制。它能在不解密的情形下对密文数据进行任意计算,即
,其中f为任意函数。2009年Gentry [1] 基于理想格提出了第一个全同态加密方案。Genry开拓性的工作迅速掀起了全同态加密研究的浪潮。2013年Gentry、Sahai和Waters [2] 提出了一种构造全同态加密方案的新技术,他们称之为近似特征向量技术。Gentry、Sahai和Waters [2] 利用近似特征向量技术,基于带误差学习(Learning with Errors, LWE)问题 [3] 构造了一个层次型全同态加密(leveledFHE)方案。在层次型全同态加密方案中,方案的参数取决于方案所能计算的电路深度。利用Gentry [1] 提出的自举技术可以把层次型全同态加密方案转换为全同态加密方案。本文的工作专注于层次型全同态加密方案,故在下文的叙述中经常省去“层次型”一词。
无证书加密(Certificateless Encryption, CLE) [4] 是一种新型公钥加密体制。它消除了基于身份的加密(Identity-Based Encryption, IBE) [5] 固有的密钥托管问题,同时,它也避免了传统公钥加密系统中的公钥证书管理问题。无证书全同态加密(Certificateless Fully Homomorphic Encryption, CLFHE)结合了全同态加密和无证书加密两者的优势,它引起了人们的研究兴趣。2017年Chen等人 [6] 利用近似特征向量技术,基于LWE问题提出了一个无证书全同态加密方案,并在随机预言机模型下证明了它满足IND-CPA安全性。最近,Li [7] 利用近似特征向量技术,基于LWE问题又提出了一个在随机预言模型下可证明安全的无证书全同态加密方案和一个在标准模型下可证明安全的无证书全同态加密方案。
带舍入学习(Learning with Rounding, LWR)问题 [8] 是LWE问题 [3] 的变形。LWE问题需要进行高斯噪声抽样。高斯噪声抽样的计算开销非常大,严重制约了基于LWE问题的全同态加密方案的计算性能。LWR问题不需要进行高斯噪声抽样。近几年来,人们基于LWR问题构造了几个全同态加密方案 [9] [10] 。与Gentry、Sahai和Waters [2] 提出的基于LWE问题的全同态加密方案相比,这些全同态加密方案 [9] [10] 由于舍弃了计算代价高昂的高斯噪声抽样其计算效率有了很大提高。截至目前,人们尚未提出基于LWR问题的无证书全同态加密方案。
鉴于无证书全同态加密的研究现状,本文致力于基于LWR问题的无证书全同态加密方案的设计与分析。首先,利用Gentry、Sahai和Waters [2] 提出的近似特征向量技术,基于LWR问题设计了一个无证书全同态加密方案。其次,在随机预言机模型下证明了所设计的方案满足INDr-CPA安全性。INDr-CPA比IND-CPA的安全性更强,它包括IND-CPA安全性和接收方匿名性。最后,本文具体给出了所设计的方案的系统参数设置。相比于现有的基于LWE问题的无证书全同态加密方案 [6] [7] ,本文所设计的方案省掉了耗时的高斯噪声抽样,其计算效率更高。
2. 预备知识
2.1. 符号约定
下面介绍本文的符号约定,如表1所示。

Table 1. Notations and descriptions
表1. 符号及其描述
2.2. 格
下面简单介绍一下格理论,详细内容可参阅 [11] 。
定义1 设
是一组线性无关向量,格
定义为
,
其中
称为
的一组基。这里,n为
的维数,m为
的秩,且
。在
时,
称为满秩格。
定义2 对正整数q、矩阵
和向量
,定义m维满秩整数格:
.
可以看出,如果
,则
。即
是
的陪集。
定义3 对任意的向量
和实数
,
上高斯函数定义为
,
,
它以
为中心,以
为参数。
对任意的向量
、实数
以及n维格
,
上的离散高斯分布定义为
,
.
当下标
和
的值分别为1和
时,可省去不写。
2.3. 格上的算法
引理1 ( [12] ) 令
为任意固定常数。存在概率多项式时间算法
,它输入正整数n、
和
,输出
和
,并满足以下条件:①
的分布统计接近
上的均匀分布,②
为
的一组基,③
。
引理2 ( [13] ) 存在概率多项式时间算法
,它输入矩阵
、
的一组基
、向量
和参数
,其中
,
,输出向量
,并且
的分布统计接近分布
。
引理3 ( [13] ) 令n和q为正整数,且q为素数,令
。则对几乎所有的
以及任意的
,
的分布统计接近
上的均匀分布,其中
。
引理4 ( [14] ) 对任意n维格
、向量
以及实数
和
,有
,
其中
是光滑参数。对
的任意一组基
,有
。
2.4. 困难问题
定义4 令
为安全参数,令
和
为整数,令
为
上的概率分布。
问题可叙述为:对任意
,令
,
,
,
,
和
是计算不可区分的。
定义5 对整数上的分布系集
,如果
,则称分布系集
是B有界的。
引理5 ( [3] [15] ) 对任意
,存在
、
和
,且
是B有界的,
,使得
至少和
的经典困难性以及
的量子困难性一样困难,其中
。
定义6对整数q和p,且
,取整函数
定义为
。通过逐项处理,可把
扩展到
上的向量或矩阵。
定义7令
为安全参数,令
、
和
为整数,且
,
问题可叙述为:对任意
,令
,
,
,
和
是计算不可区分的。
引理6 ( [8] ) 令
是
上可有效抽样的B有界分布,令
,则求解任一分布上
的
问题,至少与求解同一分布上
的
问题的一样困难。
3. CLFHE的定义及安全模型
3.1. 定义
CLFHE由系统参数生成Setup、部分私钥抽取Extract、公私钥生成KeyGen、加密Encrypt、解密Decrypt和密文计算Eval六个多项式时间算法组成。其中Setup和Extract算法由密钥生成中心(Key Generation Center, KGC)执行。
:输入安全参数
和电路深度L,输出系统主公钥mpk和主私钥msk。
:输入主公钥mpk、主私钥msk和身份
,输出身份id的部分私钥
。
:输入主公钥mpk、身份id和部分私钥
,输出用户的公钥
和私钥
。
:输入主公钥mpk、接收方身份id、接收方公钥
以及消息
,这里
为消息空间,输出密文
或错误标识
,这里
为密文空间。
:输入主公钥mpk、接收方私钥
以及密文
,输出消息
或错误标识
。
:输入主公钥mpk、身份id、电路
和身份id下的一组密文
,输出密文
。
CLFHE应满足正确性约束。即
假定
,
,
,则对全部
,其中
,
,都有
。
3.2. 安全模型
我们这里给出INDr-CPA的安全定义。INDr-CPA比IND-CPA的安全性更强。INDr-CPA包括IND-CPA安全性和接收方匿名性。CLFHE的攻击者分为两类,即第1类攻击者
和第2类攻击者
。
模拟外部攻击者,允许它替换用户的公钥。
模拟诚实但好奇的KGC,不允许它替换用户的公钥。
攻击者
的INDr-CPA安全游戏如下:
初始化:挑战者产生
。并把主公钥mpk发送给
。
阶段1:
可查询公钥询问(request public key)、公钥替换(replace public key)和部分私钥抽取(extract partial private key)预言机。
公钥询问预言机:输入身份id,它利用KeyGen和Extract产生公钥
,并返回
。同时它把身份id和它的
记载下来。
公钥替换预言机:输入身份id和公钥
,它修改身份id的有关记载,这以后id关联的公钥为
。部分私钥抽取预言机:输入身份id,它产生部分私钥
,并返回
。
结束查询输出目标身份
和消息
。
挑战:挑战者随机选择
和密文
。若
,设置挑战密文
,其中
是
当前关联的公钥;若
,设置挑战密文
。挑战者把
发送给
。
阶段2:
继续查询公钥询问、公钥替换和部分私钥抽取预言机。在结束查询时
输出猜测
。
如果
,并且
在阶段1没有替换
的公钥或在两个查询阶段都没有询问
的部分私钥,则
赢得游戏。
的优势定义为
。如果
是可忽略的,则称这个CLFHE方案在
攻击下是INDr-CPA安全的。
攻击者
的INDr-CPA安全游戏如下:
初始化:挑战者产生
。并把主公钥mpk和主私钥msk发送给
。
阶段1:
可查询公钥询问(request public key)预言机。
公钥询问预言机:输入身份id和部分私钥
,它计算公钥
,并返回
。
结束查询输出目标身份
和消息
。
挑战:挑战者随机选择
和密文
。若
,设置挑战密文
,其中
是
关联的公钥;若
,设置挑战密文
。
阶段2:
继续查询公钥询问预言机。在结束查询时
输出猜测
。
如果
,则
赢得游戏。
的优势定义为
。如果
是可忽略的,则称这个CLFHE方案在
攻击下是INDr-CPA安全的。
4. 基于LWR问题CLFHE
4.1. 方案描述
我们令向量
。令矩阵
,其中
。定义反函数
,它把输入矩阵的每个元素
扩展为比特向量
,且满足
。对任意矩阵
,有
。
下面给出基于LWR问题的CLFHE方案,它的消息空间为
,密文空间为
。
:KGC设置参数
、
、
、
、
和
。这些参数具体见4.3节。调用
产生矩阵
和
的一组基
,且
。随机选择矩阵
和
。选择哈希函数
。输出主公钥
和主私钥
。
:对身份
,KGC计算
。调用
产生向量
。输出部分私钥
。这里有
。
:用户选择
,令
。此外令
。令
。输出公钥
和私钥
。
:对消息
,计算
。随机选择矩阵
、
和
,输出密文
.
:给定密文
,已知
。输出消息
,其中
为密文
的倒数第2列。
给定同一身份id下的两个密文
和
,密文同态加法和乘法如下:
:输出
。
:输出
。
4.2. 方案分析
4.2.1. 正确性
对于Encrypt输出的密文
,有
其中
.
令
,则
的误差
其中
,
。我们记
。
对
输出的密文
,有
.
令
,则
的误差
。
对
输出的密文
,有
令
,则
的误差
通过迭代调用
和
,密文计算
可输出密文
。因为
的电路深度
。又知道有
,
,即
。故
的误差
。于是对
的倒数第2列
,有
。因为
,故如果
,
输出的密文
可正确解密得到消息
。
4.2.2. 安全性
所提出的CLFHE在
攻击下是INDr-CPA安全的。即:
定理1令哈希函数H为随机预言机。若攻击者
在INDr-CPA安全游戏中以优势
攻破所提出的CLFHE方案,且H预言、公钥询问次数为
、
。则存在以优势
解决
问题的算法
。其中
.
证明:我们基于游戏序列进行证明。并定义
为攻击者
在Game i中赢得游戏这一事件。
Game 0 它是攻击所提出的方案的
和挑战者之间的原始INDr-CPA游戏。在这个游戏中,
的优势
。
Game 1这个游戏相比Game 0的变化是以下四个方面:
① 始化:挑战者随机选择
。
② H预言机:当
询问身份id的H预言时,挑战者选择
,令
和
,把元组
存储起来,并返回
给
。
③ 公钥询问预言机:当
询问身份id的公钥时,挑战者选择
,令
。从H记载里找到元组
。令公钥
,把元组
存储起来,并返回
给
。其中
表示该元素空缺,它用于存储替换公钥
。
④ 部分私钥抽取预言机:当
询问身份id的部分私钥时,挑战者从H记载里找到元组
,把
返回给
。
由引理3等可知,Game 0和Game 1是统计不可区分的。故
。
Game 2 这个游戏相比Game 1调整了以下两个地方:
① 始化:挑战者随机产生猜测
。
表示
会询问目标身份的部分私钥,
表示
不会询问目标身份的部分私钥。
② 获胜条件:令Extract表示
询问了目标身份的部分私钥。则
如果
,并且Extract发生了,则在
时
获胜;
如果
,并且Extract发生了,则
以概率
获胜;
如果
,并且Extract没有发生,则
以概率
获胜;
如果
,并且Extract没有发生,则在
时
获胜。
经简单计算可知
。又
于是接下来我们依据猜测
的值把游戏分为两条不同的链。即猜测
下的链
和猜测
下的链
。因为猜测
只能为0或1,所以在Game 2之后只可能选择其中的一条链执行。
这个游戏相比Game 2的变化是以下三点:
① 初始化:挑战者选择
。
② 公钥询问预言机:如果身份id是第i次公钥询问,挑战者随机选择
。从H记载里找到元组
。令公钥
,把元组
存储起来,并返回
给
。否则,挑战者选择
,令
。从H记载里找到元组
。令公钥
,把元组
存储起来,并返回
给
。
③ 挑战:如果目标身份
不是第i次询问的公钥预言机,则挑战者中止并输出
。否则挑战者选择
、
和
,设定挑战密文
.
在这个游戏中,
若没有询问目标身份
的部分私钥,挑战者输出一个随机比特,否则输出
的猜测
。
不中止输出
的概率为
。故
。
这个游戏相比Game 2的变化是以下四点:
① 初始化:挑战者选择
。
② H预言机:如果id是第j次H询问,挑战者随机选择
和
,把元组
存储起来,并把
返回给
。否则,挑战者选择
,令
和
,把元组
存储起来,并返回
给
。
③ 部分私钥抽取预言机:当
提交身份id询问其部分私钥时,挑战者从H记载里找到元组
,如果
,挑战者中止并输出一个随机比特。否则把
返回给
。
④ 挑战:如果目标身份
不是第j次询问的H预言机,则挑战者中止并输出
。否则挑战者选择
、
和
,设定挑战密文
,
其中
是目标身份
当前关联的公钥。
不中止输出
的概率为
。故
。
这个游戏只对
进行了一处修改。即
挑战:挑战者随机选择
和
,令挑战密文
.
假设
以不可忽略的优势区分
和
,则利用
可构造解决
问题的算法
。
的输入是一个
问题实例
。
模拟挑战者与
交互如下:初始化:
令
。并选择
。
公钥询问预言机:如果id是第i次公钥询问,
令
。从H记载里找到元组
。令公钥
,把元组
存储起来,并返回
给
。
挑战:
选择
和
,设定挑战密文
.
其余的内容
都与
一样进行处置。
若
是通过密钥
产生的,
的分布和
中一样。若
是随机选择的,
的分布和
中一样。故
。
这个游戏只对
进行了一处修改。即
挑战:挑战者随机选择
和
,令挑战密文
.
假设
以不可忽略的优势区分
和
,则利用
可构造解决
问题的算法
。
的输入是一个
问题实例
。
模拟挑战者与
交互如下:
初始化:
令
。并选择
。
H预言机:如果id是第j次H询问,
令
。
随机选择
。把元组
存储起来,并把
返回给
。
挑战:
选择
和
,设定挑战密文
.
其余的内容
都与
一样进行处置。
若
是由密钥
产生的,
的分布和
中一样。若
是随机选择的,
的分布和
中一样。故
。
它只对
进行了一处修改。即
挑战:挑战者随机选择
,令挑战密文为
.
在
中,
是均匀随机的,故
亦是均匀随机的。故
。
它只对
进行了一处修改。即
挑战:挑战者随机选择
和
,令挑战密文为
.
在
中,
和
是均匀随机的,故
和
亦是均匀随机的。故
。
相比
只进行了一处修改。即
挑战:挑战者随机选择
,令挑战密文为
.
假设
以不可忽略的优势区分
和
,则利用
可构造解决
问题的算法
。
的输入是一个
问题实例
。
模拟挑战者与
交互如下:
初始化:
令
。
挑战:
选择
,令挑战密文为
.
其余的内容
都与
一样进行处置。
若
是通过密钥
产生的,
的分布和
中一样。若
是随机选择的,
的分布和
中一样。故
。
相比
只进行了一处修改。即
挑战:挑战者随机选择
,令挑战密文为
.
假设
以不可忽略的优势区分
和
,则利用
可构造解决
问题的算法
。
的输入是一个
问题实例
。
模拟挑战者与
交互如下:
初始化:
令
。
挑战:
令挑战密文为
。
其余的内容
都与
一样进行处置。
若
是由密钥
产生的,
的分布和
中一样。若
是随机选择的,
的分布和
中一样。故
。
相比
只有一处修改。即
挑战:挑战者随机选择
,令挑战密文为
.
在
中,
是均匀随机的,故
亦是均匀随机的。故
。
相比
只有一处修改。即
挑战:挑战者随机选择
。
在
中
是均匀随机的,故
亦是均匀随机的。故
。
在
中,挑战密文
是均匀随机的,故
。
只对
进行了一处修改。即
挑战:挑战者随机选择
。
在
中
是均匀随机的,故
亦是均匀随机的。故
。
在
中,挑战密文
是均匀随机的,故
。
综上,我们有
所提出的CLFHE在
攻击下是INDr-CPA安全的。即:
定理2 若攻击者
在INDr-CPA安全游戏中以优势
攻破所提出的CLFHE方案,且公钥询问次数为
。则存在以优势
解决
问题的算法
。其中
.
证明:我们基于游戏序列进行证明。并定义
为攻击者
在Game i中赢得游戏这一事件。
Game 0它是攻击所提出的方案的
和挑战者之间的原始INDr-CPA游戏。在这个游戏中,
的优势
。
Game 1 这个游戏相比Game 0修改了以下三点:
① 初始化:挑战者选择
。
② 公钥询问预言机:如果id是第i次公钥询问,挑战者随机选择
,令
,并返回
给
。否则,挑战者计算
,并返回
给
。
③ 挑战:如果
不是第i次询问的公钥预言机,则挑战者中止并输出
。否则挑战者选择
、
和
,令挑战密文
.
Game 1不中止输出
的概率为
。故
。
Game 2 这个游戏相比Game 1只修改了一处。即
挑战:挑战者随机选择
和
,令挑战密文
.
假设
以不可忽略的优势区分Game 1和Game 2,则利用
可解决一个
问题实例
。于是,有
。
Game 3 相比Game 2只修改了一个地方。即
挑战:挑战者随机选择
,令挑战密文为
.
这里有
。
Game 4 相比Game 3只修改了一个地方。即
挑战:挑战者随机选择
,令挑战密文为
.
假设
以不可忽略的优势区分Game 3和Game 4,则利用
可解决一个
问题实例
。于是,有
。
Game 5 相比Game 4只进行了一处修改。即
挑战:挑战者随机选择
,令挑战密文为
.
这里有
。
Game 6 只对Game 5进行了一处修改。即
挑战:挑战者随机选择
。
这里,有
,且有
。
综上,我们有
4.3. 参数设置
所提出的CLFHE方案应满足以下条件:
,其中
,其中
,
,其中
。
于是,所提出的CLFHE方案的系统参数可设置如下:
,
其中
使得
。
5. 结束语
本文提出了第一个基于LWR问题的CLFHE方案,并在随机预言机模型下证明了它是INDr-CPA安全的。LWR问题是LWE问题的变形。它省掉了LWE问题中的高斯噪声抽样。高斯噪声抽样计算开销非常大。因此本文所提出的CLFHE方案比现有基于LWE问题的CLFHE方案 [6] [7] 具有更高的计算效率。我们接下来会致力于基于所提出的CLFHE方案构造相关安全协议解决物联网、云计算和区块链等面临的安全问题。
参考文献