[0043] 下面结合附图和实施例来对本发明做进一步的说明。
[0044] 如图1所示,本发明具体实现步骤如下:
[0045] 步骤1:生成系统参数
[0046] 步骤1.1:根据输入的安全参数λ,调用TRAPGEN(λ)算法生成矩阵A和主密钥 ;主密钥 由两个向量d和u组成, 这两个向量都是使用分布参数为σ的离散高斯分布进行采样, , , 表示在多项式环R上的高斯分布; ,其中m取决于具体的 构造, ;
[0047] 步骤1.2:根据输入的属性数量参数 ,随机生成 对均匀分布的向量对,其中 , 对应着属性集对应着属性集里的属性 ,, 为属性的数量,最后均匀随机的生成一个挑战 ;其中
是一个分圆多项式环, 是整系数多项式环, ,q是模数;
代表 的列向量, 中的元素都属于环 ; 代表 的行向量, 中的元素
都属于环 ; 代表 的矩阵, 中的元素都属于环 ;
[0048] 步骤2:离线密钥生成算法
[0049] 步骤1.3:输出 ,MSK= ,当 是未知,且A是伪随机时,该方法满足RLWE假设; 代表 。
[0050] 根据perturb(n, ,sigma, , dgg, dggLargeSigma)算法生成扰动向量p;扰动向量p保证 的解 满足球面高斯分布; ← ,其中n是环的维数,是高斯分布的参数, 保证扰动协方差矩阵定义良好, 代表在格 上的高
斯分布; ;perturb算法中,b为徽标格G‑lattice的
base, base=2。这保证了高斯采样G‑sampling里的所有整数采样操作最少使用大小为σ的平滑参数,这足以近似于连续高斯分布,误差可以忽略不计。 m取决于具体的 构造,n为环的维数, =1.3,t=4.7;sigma是高斯分布参数表现为(b+1)*σ,σ为 构造的分布参数;dgg是误差采样的离散高斯生成器,dggLargeSigma是扰动向量采样的离散高斯生成器,返回扰动向量p。
[0051] 步骤3:在线密钥生成算法
[0052] 根据数据使用者所持有的属性集Y计算一个新的挑战η, ;当 时代表用户所持有的属性集Y中拥有属性 , ,否则 , ,其中;此时有 , ;当 时, ;否则
; 代表在环 上的高斯分布,m取决于具体的 构造,q是模数;然后使用SAMPLEG(σ, β‑η‑Ap,q)算法完成 的构造,在该算法中 ,b为徽标格
G‑lattice的base,且base=2、m取决于具体的 构造,n是环的维数;其中σ为 构造的分布参数,p为扰动向量;t根据经验设置为4.7, 为扰动协方差矩阵定义良好的最小值,取为1.3;SAMPLEG算法的目的是用扰动向量p和 构造一个向量 ,使得A =β‑η;最后返回私钥 。
[0053] 步骤4:离线加密算法
[0054] 在得知明文 和访问策略 之前生成中间密文IC ; ,, , ;其中s← 满足离散均匀分布,
, , 满足离散高斯分布; 代表在环R上的高斯分布,
代表在 上的高斯分布;输出中间密文 。
[0055] 步骤5:在线加密算法:
[0056] 数据持有者确定一个访问策略W = (W⁺∪W⁻),访问策略W包含正负属性;访问策略中的正向属性要求数据使用者拥有该属性才能解密根据该访问策略加密的密文;另一方面负向属性被用来排除某一组数据使用者,使其不能解密根据该访问策略产生的密文;使用符号+和‑作为上标来分别表示正向和负向属性; 即代表属性 , 即代表属性 。然后根据离线加密算法生成的中间密文,结合访问策略生成最终密文,访问策略也作为密文的一部分被输出。
[0057] 根据访问策略W、中间密文IC、明文 生成最终密文C, ,其中满足离散均匀分布, , ,q是模数,为明文, ;
, ,N为明文的长度, 代表在环R上的高斯分布;当 时,代
表访问策略中含有属性 并要求用户拥有该属性才能解密根据该访问策略加密的密文,,当 <0时,代表访问策略排除掉含有属性 的数据使用者, ,否则访
问策略中不含有属性 , , ;输出密文 。
[0058] 步骤6:解密算法。
[0059] 步骤6.1:定义 ;
[0060] 步骤6 .2: 时代表访问策略包含属性 , ;当时,代表访问策略不包含属性 且数据使用者拥有属性 ,
;否则 , ;
[0061] ;
[0062] 当 时代表访问策略包含属性 , ; 时, ;否则 ;
[0063] ;当 时, ;当 时, ; 时, ;
否则 ;
[0064] 步骤6.3:又有 ;
[0065] 根据步骤3的公式(1) ,和 ;可得 ,即 ,当 时, ;否则 ;
[0066] 步骤6.4:已知 ,当且仅当用户持有的属性 并且 时可以解密,即访问策略里的正向属性与用户
持有的属性Y交集为访问策略里的正向属性同时用户持有的属性Y与访问策略的负向属性交集为空集;此时 ; ,
[0067] 化简可得:
[0068]
[0069] 定义:
[0070] ;
[0071] ;
[0072] 当 时, ;否则 , ,N为明文的长度,得到解密集合 ,即数据拥有者进行加密的明文 。
[0073] 安全性证明
[0074] 假设存在一个多项式时间攻击者L,它能以优势 破解此CP‑ABE方案的选择性CPA安全性,并且最多可以进行 q次密钥生成查询。构建一个安全游戏,它可以以优势 解决Decisional RLWE问题。提供RLWE问题实例作为预言机O,预言机采样的元素是真实随机的或者噪声伪随机的 。模拟器M使用攻击者L来区分这两者。
[0075] 实施例:
[0076] 攻击者L生成一个访问策略 ,并且将 发送给模拟器M。
[0077] 模拟器M在接受到 之后,模拟器M请求预言机O,获得 和。
[0078] 对于每个 ,M请求预言机O,获得 。
[0079] 对于每个 ,M请求预言机O,获得 ,然后计算。
[0080] 对于每个 ,M请求预言机 O,获得 ,然后计算。
[0081] 模拟器M发布 。保持不被知道。
[0082] 阶段1:密钥查询
[0083] 在接受到一个带有属性集S的查询时,如果 并且 ,模拟器M输出 。否则,对每个 , 如果S中含有属性 即 , M让 ,否则 。
那么必定存在一个 ,此时 由TRAPGEN算法生成。因此M知道它的Trapdoor,那么可以计算出对应的密钥 。L可以进行不止一次查询。
[0084] 挑战
[0085] 当攻击者L提交消息 ,M随机选择 ,中间密文
[0086] 。同 时 ,对 于 每 个。 然后根据 计算出密文, 时, 。 时,
,否则 。
[0087] 最后B返回密文 。
[0088] L可以对不满足 的属性集S进行多次密钥生成查询。最终L输出一个值 作为的猜测。如果 ,M输出1,否则输出0。
[0089] 阶段2:与阶段1类似,攻击者L继续向模拟器M发出请求。
[0090] 猜测:最后攻击者L输出 ,如果O是伪随机的,对于某些属性S, 是有效的最终密文,L以 的优势输出正确的 。另一方面如果O是均匀随机的,那么密文也是均匀随机的,那么攻击者L只能做一个随机的猜测,也就是以1/2的概率(没有任何优势)。所以如果L能够打破这个系统,那么这意味B可以打破Decisional RLWE假设,所以,根据 RLWE 问题的困难性可得出该方案是安全的。
[0091] 实验结果
[0092] 由于所使用的算法库仅支持Linux系统下的安装与使用,所以在笔记本电脑的虚拟机(如VMware Workstation 16 Pro)中安装了Ubuntu,在笔记本电脑的Ubuntu 18.04.5 TLS虚拟机上进行代码开发,加密方法所涉及的算法将使用C++语言实现,所使用的电脑处理器型号为Intel Core i7‑9750H@2.60GHz, 内存(RAM)为8.0GB,操作系统为Windows10。
[0093] 表1 实验结果
[0094]
[0095] 根据我们的实验结果表1可以看到,密钥生成、加密以及解密的时间随着属性数l的增加而增加。因为解密消耗的时间比较小,可以优化的空间有限。所以可以优化的地方为密钥生成和加密阶段。在知道数据使用者的属性之前使用离线密钥生成算法生成中间密钥,在知道数据使用者属性后,使用在线密钥生成算法生成对应密钥。同时提出一种离线在线的方法优化加密阶段,在知道访问策略和密文之前使用离线加密算法生成中间密文,在知道访问策略和密文之后使用在线加密算法生成最终密文,从而达到优化整个属性加密的效果。