发明名称 一种云计算环境下双线性对的安全外包的方法
摘要 本发明公开了一种云计算环境下双线性对的安全外包的方法,需要进行外包计算的用户T首先调用提高计算速度的子程序Rand生成一个六元组,利用六元组中的一些元素将e(A,B)逻辑拆分为五部分,接着调用Rand来生成两个新的六元组,紧接着对计算服务器U<sub>1</sub>,U<sub>2</sub>进行8次询问,服务器计算出双线性对结果,其中的四部分作为中间的计算结果,另外的四部分作为测试数据。最后T检测U<sub>1</sub>和U<sub>2</sub>的输出结果是否正确,根据服务器的响应,T计算出结果。该方法可适用于资源受限的设备。它的计算效率更高,运算的次数少,外包商T不需要再执行代价过高的计算SM和Exp运算。此外,利用该方法作为子例程可以实现Boneh-Franklin基于身份的加密方案和Cha-Cheon基于身份的签名方案的安全外包。
申请公布号 CN103024006B 申请公布日期 2016.05.25
申请号 CN201210507847.X 申请日期 2012.11.23
申请人 西安电子科技大学 发明人 陈晓峰;杨昌松;王星;尤沛;李进;朱辉
分类号 H04L29/08(2006.01)I;H04L29/06(2006.01)I 主分类号 H04L29/08(2006.01)I
代理机构 代理人
主权项 一种云计算环境下双线性对的安全外包的方法,其特征在于该方法包括以下步骤:第一步:调用Rand生成一个六元组:为了用外包计算中的第一服务器U<sub>1</sub>和外包计算中的第二服务器U<sub>2</sub>来实现双线性对的外包算法,外包用户T首先要调用Rand来生成一个六元组(V<sub>1</sub>,V<sub>2</sub>,v<sub>1</sub>V<sub>1</sub>,v<sub>2</sub>V<sub>1</sub>,v<sub>2</sub>V<sub>2</sub>,e(v<sub>1</sub>V<sub>1</sub>,v<sub>2</sub>V<sub>2</sub>));记λ=e(v<sub>1</sub>V<sub>1</sub>,v<sub>2</sub>V<sub>2</sub>);双线性对的外包算法的核心技巧是将A,B拆分成看似随机的、可以被外包计算中的第一服务器U<sub>1</sub>和外包计算中的第二服务器U<sub>2</sub>计算的数;A和B是保密的,且外包计算中的第一服务器U<sub>1</sub>和外包计算中的第二服务器U<sub>2</sub>无法通过其他方法计算出A和B;第二步:逻辑拆分,利用六元组中的一些元素将e(A,B)逻辑拆分为五部分,其中一部分在生成的六元组中,只需计算另外的四部分;利用六元组中的一些元素将e(A,B)逻辑拆分为五部分α<sub>1</sub>、α<sub>2</sub><sup>‑1</sup>、α<sub>3</sub><sup>‑1</sup>、λ<sup>‑1</sup>、e(V<sub>1</sub>,V<sub>2</sub>)<sup>v1+v2</sup>,其中一部分在生成的六元组中,只需计算另外的四部分α<sub>1</sub>、α<sub>2</sub><sup>‑1</sup>、α<sub>3</sub><sup>‑1</sup>、λ<sup>‑1</sup>;具体描述如下:第一个逻辑拆分:α<sub>1</sub>=e(A+v<sub>1</sub>V<sub>1</sub>,B+v<sub>2</sub>V<sub>2</sub>);第二个逻辑拆分:α<sub>2</sub>=e(A+V<sub>1</sub>,v<sub>2</sub>V<sub>2</sub>);第三个逻辑拆分:α<sub>3</sub>=e(v<sub>1</sub>V<sub>1</sub>,B+V<sub>2</sub>);注意到:α<sub>1</sub>=e(A+v<sub>1</sub>V<sub>1</sub>,B+v<sub>2</sub>V<sub>2</sub>)=e(A,B)e(A,v<sub>2</sub>V<sub>2</sub>)e(v<sub>1</sub>V<sub>1</sub>,B)e(v<sub>1</sub>V<sub>1</sub>,v<sub>2</sub>V<sub>2</sub>);α<sub>2</sub>=e(A+V<sub>1</sub>,v<sub>2</sub>V<sub>2</sub>)=e(A,v<sub>2</sub>V<sub>2</sub>)e(V<sub>1</sub>,v<sub>2</sub>V<sub>2</sub>);α<sub>3</sub>=e(v<sub>1</sub>V<sub>1</sub>,B+V<sub>2</sub>)=e(v<sub>1</sub>V<sub>1</sub>,B)e(v<sub>1</sub>V<sub>1</sub>,V<sub>2</sub>);因此:e(A,B)=α<sub>1</sub>α<sub>2</sub><sup>‑1</sup>α<sub>3</sub><sup>‑1</sup>λ<sup>‑1</sup>e(V<sub>1</sub>,V<sub>2</sub>)<sup>v1+v2</sup>;第三步:调用Rand来生成两个新的六元组;(X1,X2,x1X1,x2X1,x2X2,e(x1X1,x2X2))和(Y1,Y2,y1Y1,y2Y1,y2Y2,e(y1Y1,y2Y2));第四步:对计算服务器外包计算中的第一服务器U<sub>1</sub>和外包计算中的第二服务器U<sub>2</sub>的询问,服务器计算出双线性对结果,求出了其余的四部分,其余的作为测试数据;外包用户T以任意次序对外包计算中的第一服务器U<sub>1</sub>进行如下询问:U<sub>1</sub>(A+v<sub>1</sub>V<sub>1</sub>,B+v<sub>2</sub>V<sub>2</sub>)→e(A+v<sub>1</sub>V<sub>1</sub>,B+v<sub>2</sub>V<sub>2</sub>)=α<sub>1</sub>;U<sub>1</sub>(v<sub>1</sub>V<sub>1</sub>+v<sub>2</sub>V<sub>1</sub>,V<sub>2</sub>)→e(V<sub>1</sub>,V<sub>2</sub>)<sub>v1+v2</sub>;U<sub>1</sub>(x<sub>1</sub>X<sub>1</sub>,x<sub>2</sub>X<sub>2</sub>)→e(x<sub>1</sub>X<sub>1</sub>,x<sub>2</sub>X<sub>2</sub>);U<sub>1</sub>(y<sub>1</sub>Y<sub>1</sub>,y<sub>2</sub>Y<sub>2</sub>)→e(y<sub>1</sub>Y<sub>1</sub>,y<sub>2</sub>Y<sub>2</sub>);外包用户T以任意次序对外包计算中的第二服务器U<sub>2</sub>进行如下询问:U<sub>2</sub>(A+V<sub>1</sub>,v<sub>2</sub>V<sub>2</sub>)→e(A+V<sub>1</sub>,v<sub>2</sub>V<sub>2</sub>)=α<sub>2</sub>;U<sub>2</sub>(v<sub>1</sub>V<sub>1</sub>,B+V<sub>2</sub>)→e(v<sub>1</sub>V<sub>1</sub>,B+V<sub>2</sub>)=α<sub>3</sub>;U<sub>2</sub>(x<sub>1</sub>X<sub>1</sub>,x<sub>2</sub>X<sub>2</sub>)→e(x<sub>1</sub>X<sub>1</sub>,x<sub>2</sub>X<sub>2</sub>);U<sub>2</sub>(y<sub>1</sub>Y<sub>1</sub>,y<sub>2</sub>Y<sub>2</sub>)→e(y<sub>1</sub>Y<sub>1</sub>,y<sub>2</sub>Y<sub>2</sub>);第五步:外包用户T检测外包计算中的第一服务器U<sub>1</sub>和外包计算中的第二服务器U<sub>2</sub>的输出结果是否正确,外包用户T再次分别向外包计算中的第一服务器U<sub>1</sub>,外包计算中的第二服务器U<sub>2</sub>询问e(x<sub>1</sub>X<sub>1</sub>,x<sub>2</sub>X<sub>2</sub>)和e(y<sub>1</sub>Y<sub>1</sub>,y<sub>2</sub>Y<sub>2</sub>),并给出计算结果;如果其中有一个输出结果与之前询问时对应的输出结果不等,即出现错误,说明服务器存在作弊行为,外包用户T终止询问,输出“error”;如果输出结果与之前询问时对应的输出结果相等,外包用户T计算e(A,B)=α<sub>1</sub>α<sub>2</sub><sup>‑1</sup>α<sub>3</sub><sup>‑1</sup>λ<sup>‑1</sup>e(V<sub>1</sub>,V<sub>2</sub>)<sup>v1+v2</sup>。
地址 710071 陕西省西安市雁塔区太白南路2号