HEE:科普 | 隐私交集是什么?

为什么要隐私交集

安全多方计算技术是现在国家极为重视的技术,在数据要素市场的建设中也扮演了非常重要的角色。运用安全多方计算算法,可以实现数据不出库前提下做到数据价值传递,是一种统筹数据资源的重要手段。在安全多方计算的家族中,隐私交集是非常重要的一个部分,也是目前为止使用最为广泛的算法之一。

什么是隐私交集

所谓隐私交集,就是在不暴露隐私的情况下求出两个集合的交集。怎么才能不暴露隐私呢?首先可以确定,我们想要的数据的“交集”不属于隐私的部分,在此可以认为除了“交集部分”的信息都是“隐私信息”。

回头看我们的标题——“悄悄地发现共同点”,我们可以从实际生活中找到一个隐私交集的例子。假设现在小明和小红在进行相亲,两人之前是没有任何的交集的陌生人,小明担心双方会尴尬,希望找些话题。

最好的话题当然就是两人之间的共同爱好,比如美食、电影等,小明决定从一个相对他来说比较好切入的点——美食,进行进一步沟通。小明不知道小红喜欢吃什么,但又希望尽可能避开雷区。

美国说唱歌手Megan Thee Stallion与Cash App合作发布比特币科普视频:美国说唱歌手Megan Thee Stallion与由Square开发的移动支付服务Cash App合作发布了一段名为“Bitcoin for Hotties”的视频。该视频从她的角度解释了什么是比特币,为什么比特币有价值等内容。Megan Thee Stallion在Instagram上拥有超过2410万粉丝,在 Twitter上拥有640万粉丝。(Bitcoin News)[2021/8/8 1:41:10]

最稳妥的办法是直接问小红“你喜欢吃什么”,小红把自己喜欢吃的东西都说一遍,小明从里面挑几个自己也喜欢吃的东西然后展开话题。但小红也有和小明一样的顾虑,把自己喜欢吃的东西都告诉小明也可能会引起激烈的冲突。

国务院:推进科普与区块链技术深度融合:为贯彻落实党中央、国务院关于科普和科学素质建设的重要部署,依据《中华人民共和国科学技术进步法》、《中华人民共和国科学技术普及法》制定《全民科学素质行动规划纲要(2021-2035年)》,其中要求实施智慧科普建设工程。推进科普与区块链等技术深度融合,强化需求感知、用户分层、情景应用理念,推动传播方式、组织动员、运营服务等创新升级,加强“科普中国”建设,强化科普信息落地应用,与智慧教育、智慧城市、智慧社区等深度融合。(新华社)[2021/7/10 0:40:52]

在这种情况下最稳妥的办法就是隐私交集,双方都不告诉对方自己所有喜欢的美食是什么,最后双方却能知道两个人共同喜欢的美食是什么。

怎么做

▲?简单算法

说到这里,可能就有人会好奇了,那该怎么去做这个问题呢?

最简单的一个做法是双方约定一个方法,比如双方记录自己喜欢的美食的汉字总共多少笔,然后交换笔画,之后双方看看笔画是不是一样多,如果一样多的话那就就说明我们喜欢的美食是一个东西。

动态 | 浙江卫视节目科普支付宝区块链防伪溯源产品:昨日,在浙江卫视播出的科普综艺栏目《智造将来》现场,支付宝首次展示了支付宝区块链防伪溯源产品,以接地气的方式公开向大众展示区块链在生活中的应用。[2019/3/4]

看到这里你可能会说了,等等,可是很多美食的笔画是一样多的呀,比如面条和苹果都是16笔。那这个时候你可能就需要修改你的算法了,比如说每个字多少笔。

在计算机中,苹果和香蕉这些食物你可以认为是字符串,而这里的算法就是哈希函数。上面提到的算法中,面条和苹果作为输入,输出都是16,这就是哈希碰撞。哈希碰撞是简单算法会出现的第一个问题,但是其问题不仅仅这一点,现在的密码学算法已经足够强大,哈希碰撞发生的概率其实不是很高,最为重要的是安全性问题。

我们知道其实美食的种类听起来很多,但又不是很多,如果小明知道了小红有一个喜欢的食物总共24笔,其实他自己去网上搜一下食物的名称,很快就能发现,比如香蕉,就是24笔,那么小明就知道了小红是喜欢吃香蕉的。这就是简单算法的暴力破解问题。随着计算机运算能力的增强,暴力破解也成为了需要防备的攻破方式之一。比如现实生活中,两个人想要看号码簿的交集,如果只是简单使用哈希函数计算然后进行比较,因为手机号只有11位,对于现在的计算机来说在可接受时间内进行破解也并非难事。

中科院自动化研究所将面向大中小学生开展区块链等主题的科普讲座:5月21日,新华网讯,今年,中国科学院自动化研究所将举办第十四届“自动化之光”公众科学开放日活动。届时,自动化所将面向大中小学生分别开展《脑与智能》、《区块链技术与平行智能》、《大数据时代的视觉智能》、《动画真奇妙》等4个主题报告,用实例和生动的演示深入浅出地为大家揭示智能技术的原理和奥妙。[2018/5/21]

▲?双重加密

简单算法既然不够安全,那么该用什么样的办法规避这种不安全的问题?其实之前的算法中只有一方进行了加密,且加密的方法双方都是知道的,这样确实会存在暴力破解的危险,那么如果让双方同时进行加密可以吗?

比如双方事先准备一张图片,双方事先约定如果喜欢吃苹果呢就把图片顺时针旋转10度,香蕉的话就是顺时针旋转20度等等,对所有的美食都对应着一个相应的旋转角度。

然后小明先把图片按照自己喜欢的食物按照约定好的规则进行旋转,但这个时候小明不能直接把图片发送给小红,因为这样的话小红知道原始图片,又知道各个食物对应的角度,那她立刻就知道了小明喜欢的食物是什么。

财政部副部长朱光耀:数字经济还处在发展的过程中,要以科普、推动的态度来推进数字经济发展:今日,在中国发展高层论坛2018年会上,财政部副部长朱光耀表示:“数字经济还处在发展的过程中,要以科普、推动的态度来推进数字经济发展。也要关注数字经济的其他影响,包括税收征管、反监管措施等要跟上。”[2018/3/25]

所以小明会自己偷偷定一个旋转,比如逆时针旋转20度,在第一次根据食物对图片进行旋转后,再偷偷的按照自己的规则去旋转一次。

因为小红并不知道小明自己偷偷定下的规则中具体是旋转多少度,所以这个时候小红就算拿到了图片也不知道具体对应的是什么食物,因为这个时候不论什么食物都是有可能的。

小红看到小明的做法,感觉小明很聪明,也学小明偷偷定了一个自己的旋转角度,比如顺时针旋转10度。拿到了小明发给自己的图片以后就按照自己定下的角度再旋转一次。

同样的,小红也把图片按照自己自己喜欢的食物对应的角度旋转一下,再按照自己偷偷定下的角度旋转一下,然后发给小明,小明也将这个图片按照自己偷偷定下的角度进行旋转。

然后两个人就直接比较旋转后的图片,如果图片一模一样那就说明两个人喜欢吃的食物是一样的,否则就说明两个人喜欢吃的食物是不一样的。

通过两次加密的方式,我们就杜绝了穷举破解的问题,因为双方都不知道对方的秘密旋转角度是多少。

▲?非对称加密

刚刚的算法乍一听看似有点道理,但是实际上是有一点问题的,如果稍微观察一下就会发现,在最后比较的时候其实小红或者小明是拿到了两个人手里最后的结果的。

假设小明拿到了小红手里的图片,我们先回忆一下小红手里的图片是怎么构成的。首先是小明根据自己的食物选择旋转的角度,然后再按照自己偷偷定下的角度进行旋转,最后小红再按照自己偷偷定下的角度进行旋转。

那么小明其实已知三次旋转中的两次角度是什么、图片的初始状态是什么,此时小明就可以很容易地推断出小红的秘密旋转角度是什么,得到小红的秘密旋转角度后通过自己手上的另一张图片就可以很容易知道小红喜欢吃的食物是什么了。

之前提出的算法其实是基于对称加密的一个双重加密方法,因为对称加密的局限性,故双重加密总会有一个问题,即最后获取结果后比较结果时的信息泄露问题。

这个问题有三种解决办法。

?第一种是有一个居中调节方,调节方来比较最后的结果。

因为调节方并不知道双方的秘密角度,故调节方没有办法获知双方具体喜欢的食物是什么,但是居中调节方只要愿意与任何一方进行合作,那么另外一方的数据会立刻暴露,无疑是有风险的,其次如果有居中协调方那么整个算法无疑不再是分布式的了。

?第二种是在最后一步比较结果的时候使用隐私比较的技术进行比较,即保护双方数据的情况下进行比较是否相等。

但是这样会存在两个问题:首先无法确认再引入一个新的算法去解决问题,效率上是否会有问题;其次,如果两者结果相等的话,双方都能获取对方的秘密角度,在下次进行比较的时候又需要重新生成一个新的秘密角度,这也会增加每次比较时的工作量。

第三种是使用非对称加密的方式进行比较。通过非对称加密,我们可以使用最简单的办法完成这个问题。

还是刚刚的场景,如果小明和小红都有各自的公钥,相对应的,也有一份私钥。非对称加密下,如果使用公钥对数据进行加密,那么加密后的数据是只能通过对应的私钥进行解密的。

通过这种方式我们就可以规避之前的双重加密方法的问题,在算法的最后即使小明或者小红获得了两重加密的结果,但是因为加密的结果只能通过私钥解密,故无法反推出小红喜欢的食物是什么。

总结

通过上述的描述我们可以知道交集算法最简单即为明文计算,之后使用简单算法可以保护一点隐私,但是会存在暴力破解的可能,双重加密可以解决暴力破解的可能,但是由于对称加密的局限性,最后要么丢失安全性,要么会丢失分布式的特性,非对称加密的算法则可以克服以上的所有缺点。

如果你熟悉密码学,一定知道大名鼎鼎的RSA算法就是使用非对称加密进行运算的,其中存在大量的模指运算,故效率较低,想要完成大规模数据的运算还需要对算法进一步的升级。

作者简介

刘毅恒

来自数据网格实验室BitXMesh团队一个鲜为人知的知名程序员

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

金星链

[0:15ms0-1:69ms