基于BDD解决社会主义百万富翁问题的方法技术

技术编号:11423057 阅读:95 留言:0更新日期:2015-05-07 01:13
本发明专利技术公开一种基于BDD解决社会主义百万富翁问题的方法,其客户端A和B分别将各自秘密输入值改写成m位带实数类型的连分数形式;服务器对两个m位带实数类型的连分数各个对应分量的安全比较;客户端A用特殊的BDDs结构对改写成连分数形式的实数的比较过程进行刻画,并对特殊BDDs结构进行混淆加密;服务器与客户端A执行2选1不经意传输协议得到结点密钥对BDDs进行遍历,将得到加密的叶子结点信息送给客户端A和B解密得到实数的比较结果。本发明专利技术可以实现客户端A和B的秘密输入值之间的安全比较。

【技术实现步骤摘要】
基于BDD解决社会主义百万富翁问题的方法
本专利技术涉及安全多方计算领域,具体涉及一种基于BDD(二叉决策图)解决社会主义百万富翁问题的方法。
技术介绍
安全多方计算(securemulti-partycomputation,SMC)是现代密码学领域的一个重要的分支,是信息安全方向一个重要的研究方向。安全多方计算的主要思想是:在一个分布式网络里,两方或多方根据他们的秘密输入执行的一个算法,使得各方得到一个正确输出的同时又保护自己输入信息的秘密性。因此安全多方计算能够最大限度利用私有数据而不破坏数据的隐私性。1982年,华裔科学家姚期智用“百万富翁问题”的实例描述了安全两方计算问题,即两个百万富翁客户端A和客户端B希望在不透露自己财富值的前提下如何比较谁更富有,也即在保护私有信息的前提下,比较数据相等的问题。1987年Goldreich等人把安全两方计算推广到安全多方计算,在文献中他们提出了应用爬行电路(scrambledcircuits)技术解决安全多方计算问题的通用解决方案,但是实际意义非常有限,因为即使一个非常简单的函数或者计算程序要转换成爬行电路都是非常困难的。同时,Goldreich还指出:直接将一般的安全多方计算协议的研究成果应用于特殊情形是不实际的,因为这会影响特殊情形下的计算效率或安全性。因此人们研究各种针对具体安全多方计算问题设计兼顾安全性与效率应用协议成为安全多方计算研究工作的重要组成部分。已经研究的主要问题有:百万富翁问题、安全多方集合计算问题、统计分析与科学计算、计算几何、数据挖掘等。社会主义百万富翁问题是百万富翁问题的引申问题,该问题的描述为:客户端A有数值a,客户端B有数值b,能否安全地a和b的前提下比较a=b?这里安全的含义是指出了最后的结果(a=b或a≠b)以外,不泄露各自任何信息。现在社会主义百万富翁问题解决方案已经作为安全多方计算问题解决方案的基本模块,在一些应用系统中如网上拍卖、电子选举、身份认证等有着广阔的应用前景,因此得到广泛的研究。目前社会主义百万富翁问题的主要解决方案有:(1)可以将应用爬行电路技术等一些解决通用的安全多方计算问题用于解决社会主义百万富翁问题,但是通用解决方案解决具体的安全多方计算问题是不实际的,由计算效率考虑具体的问题应该考虑具体的解决方案,比如一个非常简单的函数或者计算程序转换成爬行电路都非常困难。(2)基于离散对数(DL),Diffie-Hellman(DH),DecisionDiffie-Hellman(DDH)假设和零知识证明的计算复杂度为O(k)(k是安全参数)的解决方案。(3)基于φ-隐藏假设和语义安全的加法同态公钥加密体制,在半诚实的第三方的帮助下实现无信息泄漏且具有公平性的解决方案。(4)利用滑动窗口函数将两个比较大数相等问题转化为比较这个两个数对应的滑动窗口是否相等问题并结合交换加密函数设计了一个实现任意整数比较的解决方案。然而,现有的社会主义百万富翁问题的解决方案只适用于整数之间的比较目前甚至尚未提出用于秘密输入值为分数的社会主百万富翁问题解决方案,而在工程或者其他应用中更经常碰到的是双方待比较的秘密输入取值范围为实数域。因此,人们一直在努力寻求适用范围更广的解决方案。
技术实现思路
本专利技术所要解决的是现有社会主义百万富翁问题的解决方案都比较复杂而且只适用于整数之间的比较的不足,提供一种基于BDD解决社会主义百万富翁问题的方法,其能够实现保护隐私的实数比较相等。为解决上述问题,本专利技术是通过以下技术方案实现的:一种基于BDD解决社会主义百万富翁问题的方法,包括如下步骤:步骤A.客户端A和客户端B分别将各自秘密输入值改写成m位带实数类型的连分数,连分数经过混淆,在该m位混淆后的连分数前部添加h位的前混淆分量和后部添加s位的后混淆分量,形成h+m+s位的混淆连分数;其中m、h和s均为大于等于零的整数;步骤B.客户端A和客户端B将各自的h+m+s位混淆的连分数用服务器的公钥加密后发送给服务器;服务器用自己的私钥解密得到客户端A和客户端B的h+m+s位混淆的连分数;服务器对解密得到的客户端A的混淆连分数的各位分量与客户端B的混淆连分数的各位分量进行依位比较,获得分量比较结果;步骤C.客户端A构建BDD刻画两个h+m+s位的混淆连分数各个对应分量之间的比较过程,并对构建的BDD进行混淆加密;步骤D.服务器根据分量比较结果的值与客户端A执行不经意传输协议得到取值密钥;服务器利用得到的取值密钥和上一结点得到的结点密钥进行遍历BDD,得到加密的结果,发送给客户端A和客户端B;客户端A和客户端B解密得到最终比较结果。上述步骤A的具体过程如下:步骤A1.客户端A和客户端B双方确定m和max,其中m为实数展开成的连分数分量位数,max为代表无穷大;步骤A2.客户端A和客户端B事先约定各数值所代表的实数类型;步骤A3.客户端A和客户端B将各自秘密输入值展开成连分数并在第一位分量前添加一位代表实数类型的分量;步骤A4.客户端A和客户端B各自将包含实数类型的连分数末尾添加max或者截取前m位使得连分数位数统一为m位;步骤A5.客户端B选择一种公钥加密方案,并生成一对公钥和私钥,并将公钥发送给客户端A;步骤A6.客户端A与客户端B共享它产生的混淆参数;即客户端A利用客户端B的公钥与客户端B共享它随机产生的h位前混淆分量、s位后混淆分量以及混淆数组;步骤A7.客户端A与客户端B分别在其m位的连分数利用数混淆数组进行混淆,并在混淆后的连分数前部添加h位的前混淆分量和后部添加s位的后混淆分量,形成h+m+s位的混淆连分数。上述步骤A7中,用于混淆连分数的混淆数组为[λ1,λ2,...,λm]和[c1,c2,...,cm];此时客户端A计算αh+i=ai*λi+ci(其中i=1,2,...,m);客户端B计算βh+i=bi*λi+ci(其中i=1,2,...,m)。上述步骤B的具体过程如下:步骤B1.服务器选择一种公钥加密方案,并生成一对服务器的公钥和密钥,将公钥发送给客户端A和客户端B;步骤B2.客户端A和客户端B分别利用服务器的公钥将h+m+s位的混淆连分数αi和客户端B的h+m+s位的混淆连分数βi加密后发送给服务器;步骤B3.服务器对从客户端A和客户端B发送的消息进行解密后,得到客户端A的h+m+s位的混淆连分数αi和客户端B的h+m+s位的混淆连分数βi,之后对客户端A和客户端B发来的混淆连分数各个对应分量进行比较得到分量比较结果Ri;即其中i=1,2,...,h+m+s。上述步骤C的具体过程如下:步骤C1.客户端A利用BDD刻画两个实数转换成h+m+s位混淆连分数后的比较过程;步骤C2.客户端A选择一个对称加密方案,客户端A为BDD中的每一个叶子结点随机分配一个信息解密密钥,并为每个非叶子结点分配密钥组合即结点密钥sv、2个取值密钥和其中取值密钥和与分量比较结果Ri对应;其中i=1,2,...,h+m+s;步骤C3.客户端A利用对称加密密钥组合为BDD中每个非叶子结点加密;步骤C4.客户端A将混淆加密后的BDD结点发送给服务器并为服务器指出源结点的标签和结点密钥;步骤C5.客户端B生成另一对公钥和私钥,并将公钥发送给客户端A,客户端A将叶子结本文档来自技高网
...
基于BDD解决社会主义百万富翁问题的方法

【技术保护点】
一种基于BDD解决社会主义百万富翁问题的方法,其特征是,包括如下步骤:步骤A.客户端A和客户端B分别将各自秘密输入值改写成m位带实数类型的连分数,连分数经过混淆,在该m位混淆后的连分数前部添加h位的前混淆分量和后部添加s位的后混淆分量,形成h+m+s位的混淆连分数;其中m、h和s均为大于等于零的整数;步骤B.客户端A和客户端B将各自的h+m+s位混淆的连分数用服务器的公钥加密后发送给服务器;服务器用自己的私钥解密得到客户端A和客户端B的h+m+s位混淆的连分数;服务器对解密得到的客户端A的混淆连分数的各位分量与客户端B的混淆连分数的各位分量进行依位比较,获得分量比较结果;步骤C.客户端A构建BDD刻画两个h+m+s位的混淆连分数各个对应分量之间的比较过程,并对构建的BDD进行混淆加密;步骤D.服务器根据分量比较结果的值与客户端A执行不经意传输协议得到取值密钥;服务器利用得到的取值密钥和上一结点得到的结点密钥进行遍历BDD,得到加密的结果,发送给客户端A和客户端B;客户端A和客户端B解密得到最终比较结果。

【技术特征摘要】
1.一种基于BDD解决社会主义百万富翁问题的方法,其特征是,包括如下步骤:步骤A.客户端A和客户端B分别将各自秘密输入值改写成m位带实数类型的连分数,连分数经过混淆,在该m位混淆后的连分数前部添加h位的前混淆分量和后部添加s位的后混淆分量,形成h+m+s位的混淆连分数;其中m、h和s均为大于等于零的整数;步骤B.客户端A和客户端B将各自的h+m+s位混淆的连分数用服务器的公钥加密后发送给服务器;服务器用自己的私钥解密得到客户端A和客户端B的h+m+s位混淆的连分数;服务器对解密得到的客户端A的混淆连分数的各位分量与客户端B的混淆连分数的各位分量进行依位比较,获得分量比较结果;步骤C.客户端A构建BDD刻画两个h+m+s位的混淆连分数各个对应分量之间的比较过程,并对构建的BDD进行混淆加密;步骤D.服务器根据分量比较结果的值与客户端A执行不经意传输协议得到取值密钥;服务器利用得到的取值密钥和上一结点得到的结点密钥进行遍历BDD,得到加密的结果,发送给客户端A和客户端B;客户端A和客户端B解密得到最终比较结果。2.根据权利要求1所述的BDD解决社会主义百万富翁问题的方法,其特征在于,所述步骤A的具体过程如下:步骤A1.客户端A和客户端B双方确定m和max,其中m为实数展开成的连分数分量位数,max为代表无穷大;步骤A2.客户端A和客户端B事先约定各数值所代表的实数类型;步骤A3.客户端A和客户端B将各自秘密输入值展开成连分数并在第一位分量前添加一位代表实数类型的分量;步骤A4.客户端A和客户端B各自将包含实数类型的连分数末尾添加max或者截取前m位使得连分数位数统一为m位;步骤A5.客户端B选择一种公钥加密方案,并生成一对公钥和私钥,并将公钥发送给客户端A;步骤A6.客户端A与客户端B共享它产生的混淆参数;即客户端A利用客户端B的公钥与客户端B共享它随机产生的h位前混淆分量、s位后混淆分量以及混淆数组;步骤A7.客户端A与客户端B分别在其m位的连分数利用数混淆数组进行混淆,并在混淆后的连分数前部添加h位的前混淆分量和后部添加s位的后混淆分量,形成h+m+s位的混淆连分数。3.根据权利要求2所述的BDD解决社会主义百万富翁问题的方法,其特征在于,所述步骤A7中,客户端A和客户端B的连分数分别为[a1,a2;a3,a4,...,am]和[b1,b2,b3,b4,...,bm],用于混淆连分数的混淆数组为[λ1,λ2,...,λm]和[c1,c2,...,cm];此时客户端A计算αh+i=ai*λi+ci,其中i=1,2,...,m;客户端B计算βh+i=bi*λi+ci,其中i=1,2,...,m。4.根据权利要求1所述的BDD...

【专利技术属性】
技术研发人员:古天龙陈益师徐周波常亮宁黎华
申请(专利权)人:桂林电子科技大学
类型:发明
国别省市:广西;45

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1