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

文档序号:8285005阅读:621来源:国知局
基于bdd解决社会主义百万富翁问题的方法
【技术领域】
[0001] 本发明涉及安全多方计算领域,具体涉及一种基于BDD(二叉决策图)解决社会主 义百万富翁问题的方法。
【背景技术】
[0002] 安全多方计算(securemulti-partycomputation,SMC)是现代密码学领域的一 个重要的分支,是信息安全方向一个重要的研宄方向。安全多方计算的主要思想是:在一个 分布式网络里,两方或多方根据他们的秘密输入执行的一个算法,使得各方得到一个正确 输出的同时又保护自己输入信息的秘密性。因此安全多方计算能够最大限度利用私有数据 而不破坏数据的隐私性。
[0003] 1982年,华裔科学家姚期智用"百万富翁问题"的实例描述了安全两方计算问题, 即两个百万富翁客户端A和客户端B希望在不透露自己财富值的前提下如何比较谁更富 有,也即在保护私有信息的前提下,比较数据相等的问题。1987年Goldreich等人把安全 两方计算推广到安全多方计算,在文献中他们提出了应用爬行电路(scrambledcircuits) 技术解决安全多方计算问题的通用解决方案,但是实际意义非常有限,因为即使一个非常 简单的函数或者计算程序要转换成爬行电路都是非常困难的。同时,Goldreich还指出:直 接将一般的安全多方计算协议的研宄成果应用于特殊情形是不实际的,因为这会影响特殊 情形下的计算效率或安全性。因此人们研宄各种针对具体安全多方计算问题设计兼顾安全 性与效率应用协议成为安全多方计算研宄工作的重要组成部分。已经研宄的主要问题有: 百万富翁问题、安全多方集合计算问题、统计分析与科学计算、计算几何、数据挖掘等。
[0004] 社会主义百万富翁问题是百万富翁问题的引申问题,该问题的描述为:客户端A 有数值a,客户端B有数值b,能否安全地a和b的前提下比较a=b?这里安全的含义是指 出了最后的结果(a=b或a辛b)以外,不泄露各自任何信息。现在社会主义百万富翁问 题解决方案已经作为安全多方计算问题解决方案的基本模块,在一些应用系统中如网上拍 卖、电子选举、身份认证等有着广阔的应用前景,因此得到广泛的研宄。目前社会主义百万 富翁问题的主要解决方案有:
[0005] (1)可以将应用爬行电路技术等一些解决通用的安全多方计算问题用于解决社会 主义百万富翁问题,但是通用解决方案解决具体的安全多方计算问题是不实际的,由计算 效率考虑具体的问题应该考虑具体的解决方案,比如一个非常简单的函数或者计算程序转 换成爬行电路都非常困难。
[0006] (2)基于离散对数(DL),DifTie-Hellman(DH),Decision DifTie-Hellman(DDH) 假设和零知识证明的计算复杂度为〇(k) (k是安全参数)的解决方案。
[0007] (3)基于¢-隐藏假设和语义安全的加法同态公钥加密体制,在半诚实的第三方 的帮助下实现无信息泄漏且具有公平性的解决方案。
[0008] (4)利用滑动窗口函数将两个比较大数相等问题转化为比较这个两个数对应的滑 动窗口是否相等问题并结合交换加密函数设计了一个实现任意整数比较的解决方案。
[0009] 然而,现有的社会主义百万富翁问题的解决方案只适用于整数之间的比较目前甚 至尚未提出用于秘密输入值为分数的社会主百万富翁问题解决方案,而在工程或者其他应 用中更经常碰到的是双方待比较的秘密输入取值范围为实数域。因此,人们一直在努力寻 求适用范围更广的解决方案。

【发明内容】

[0010] 本发明所要解决的是现有社会主义百万富翁问题的解决方案都比较复杂而且只 适用于整数之间的比较的不足,提供一种基于BDD解决社会主义百万富翁问题的方法,其 能够实现保护隐私的实数比较相等。
[0011] 为解决上述问题,本发明是通过以下技术方案实现的:
[0012] 一种基于BDD解决社会主义百万富翁问题的方法,包括如下步骤:
[0013] 步骤A.客户端A和客户端B分别将各自秘密输入值改写成m位带实数类型的连 分数,连分数经过混淆,在该m位混淆后的连分数前部添加h位的前混淆分量和后部添加s 位的后混淆分量,形成h+m+s位的混淆连分数;其中m、h和s均为大于等于零的整数;
[0014] 步骤B.客户端A和客户端B将各自的h+m+s位混淆的连分数用服务器的公钥加 密后发送给服务器;服务器用自己的私钥解密得到客户端A和客户端B的h+m+s位混淆的 连分数;服务器对解密得到的客户端A的混淆连分数的各位分量与客户端B的混淆连分数 的各位分量进行依位比较,获得分量比较结果;
[0015] 步骤C.客户端A构建BDD刻画两个h+m+s位的混淆连分数各个对应分量之间的 比较过程,并对构建的BDD进行混淆加密;
[0016] 步骤D.服务器根据分量比较结果的值与客户端A执行不经意传输协议得到取值 密钥;服务器利用得到的取值密钥和上一结点得到的结点密钥进行遍历BDD,得到加密的 结果,发送给客户端A和客户端B;客户端A和客户端B解密得到最终比较结果。
[0017] 上述步骤A的具体过程如下:
[0018] 步骤Al.客户端A和客户端B双方确定m和max,其中m为实数展开成的连分数分 量位数,max为代表无穷大;
[0019] 步骤A2.客户端A和客户端B事先约定各数值所代表的实数类型;
[0020] 步骤A3.客户端A和客户端B将各自秘密输入值展开成连分数并在第一位分量前 添加一位代表实数类型的分量;
[0021] 步骤A4.客户端A和客户端B各自将包含实数类型的连分数末尾添加max或者截 取前m位使得连分数位数统一为m位;
[0022] 步骤A5.客户端B选择一种公钥加密方案,并生成一对公钥和私钥,并将公钥发送 给客户端A;
[0023] 步骤A6.客户端A与客户端B共享它产生的混淆参数;即客户端A利用客户端B 的公钥与客户端B共享它随机产生的h位前混淆分量、s位后混淆分量以及混淆数组;
[0024] 步骤A7.客户端A与客户端B分别在其m位的连分数利用数混淆数组进行混淆, 并在混淆后的连分数前部添加h位的前混淆分量和后部添加s位的后混淆分量,形成h+m+s 位的混淆连分数。
[0025] 上述步骤A7中,用于混淆连分数的混淆数组为U1,A2,. ..,AJ和[Cl,c2,..., C1J;此时
[0026] 客户端A计算
[0027] ah+i=a3 人 ^ci (其中i= 1,2, ? ? ?,m);
[0028] 客户端B计算
[0029] |3 h+i=b3 入 ^ci (其中i= 1,2, ? ? ?,m)。
[0030] 上述步骤B的具体过程如下:
[0031] 步骤BI.服务器选择一种公钥加密方案,并生成一对服
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1