ICE:解决「百万富翁问题」—隐私比较高效算法解读-ODAILY

隐私比较是指在不暴露双方具体数值的前提下,获取双方数值的大小关系。最早起源于姚期智的百万富翁问题:有两个百万富翁想要比较下谁更富有,但是又不想透露自己有多少钱,如何在没有可信第三方的情况下进行比较?这个问题是由中国第一个也是目前为止唯一一个图灵奖获得者姚期智在1980年代提出的,他是中国计算机学术和教育的第一人,为现代密码学打开了一道新的大门。

在之前的文章《优雅的求职——隐私比较算法实例》中已经通过求职案例介绍了隐私比较的应用场景以及如何实现,本文则主要介绍一种在当前效率比较高的隐私比较协议。

该协议是CrypTFlow2:Practical2-PartySecureInference中提出的一个子协议,并基于此协议实现DRelu激活函数应用于神经网络中。

--相关技术--

该协议主要使用了布尔秘密分享和不经意传输两种技术进行构建:

▲不经意传输

不经意传输(OT,ObliviousTransfer)是指数据发送方有n个数据,数据接收方接收其中的一个数据,且数据接收方不能获取其他的数据,数据发送方也不知道接收方选择接收的数据具体是哪一个。在之前的文章《基于安全多方计算(MPC)的隐私计算技术(一)》中已介绍过一种实现方案,故本文不再赘述。

多链DeFi管理协议Instadapp推出Avocado多签解决方案:5月11日消息,多链DeFi管理协议Instadapp推出Avocado多签解决方案,适用于个人、团队和机构等,简化所有签名者的交易流程,并允许在所有链中使用相同的地址,以为多重签名用户提供类似EOA的体验。[2023/5/11 14:56:54]

▲布尔秘密分享

在安全多方计算中会使用秘密分享将数据进行拆分后分享出去,每一方拿到每个数据的相应碎片,对于原始数据的计算逻辑都会转为对碎片的计算,在整个计算逻辑完成后,再将碎片的计算结果进行汇聚还原以获取原始数据的计算结果。

布尔秘密分享是指将一个布尔值b拆分成两个碎片b0、b1,将两个碎片汇聚到一起即可还原出原始数据b。

碎片生成:随机生成一个布尔值b0,并和b执行异或计算出b1=b0⊕b

碎片还原:对两个碎片执行异或操作

b=b0⊕b1

异或运算:布尔秘密分享在异或操作上是满足同态性质的,在本地通过对碎片进行异或操作再还原就等价于对原始数据的异或操作

a=a0⊕a1,b=b0⊕b1

声音 | 清华大学朱岩:区块链的核心就是解决可信:12月15日,清华大学互联网产业研究院院长朱岩在接受采访时表示,区块链的核心就是解决可信。在他看来,没有一个产业不需要可信的生态环境,区块链不仅仅是溯源、存证、去中心。而是但凡需要可信的生态环境,就需要发挥区块链的优势。迄今为止,消费互联网发展已经有25年,区块链的核心是在于促进可信社会的建立。(每日经济新闻)[2019/12/17]

a⊕b=(a0⊕b0)⊕(a1⊕b1)

与运算:布尔秘密分享对于与操作不满足同态性质,使用不经意传输技术以实现安全的与操作:

Alice持有碎片a0和b0,Bob持有碎片a1和b1,通过与运算使得Alice获取c0,Bob获取c1,c0⊕c1=(a0⊕a1)∧(b0⊕b1),并保证双方碎片的安全;

*Alice作为不经意传输的发送方,随机生成一个布尔值r作为c0,并按下图生成不经意传输的输入:

*Bob作为不经意传输的接收方将自己的碎片a1,b1拼接成a1||b1作为不经意传输的选择项获取数据r⊕((a0⊕a1)∧(b0⊕b1))作为c1;

可验证c0⊕c1=r⊕r⊕((a0⊕a1)∧(b0⊕b1))=(a0⊕a1)∧(b0⊕b1);

声音 | 中国工程院院士陈纯:区块链发展需要解决监管问题:据央广网消息,10月31日,浙江大学区块链研究中心主任、中国工程院院士陈纯就区块链研究的多个问题接受了记者的采访。陈纯介绍,区块链分为公有链、联盟链和私有链。和国外侧重发展公有链不同,中国的区块链研究集中于联盟区块链的技术,目前在金融和民生等领域已经有了一些积极的应用。比如,一些银行将区块链技术应用于企业的应收款链环节,在解决中小企业融资难方面取得了良好的效果。在陈纯看来,区块链技术实际上还处在技术研究阶段,离大规模的实际应用还有相当长的距离。区块链发展需要解决的另一大问题是监管,目前,我国相关部门已经就区块链发展应用中的“实名制”和“备案制”做出了相关规定。监管需要“以链治链”,陈纯介绍,浙江大学区块链研究中心正在从技术监管方面进行积极研究。他还指出,强化对区块链平台级应用的安全评估,提升区块链技术及应用的合关性和规范性,协助建立健全区块链的监管体系,强化区块链的监管能力建设,共同探索区块链的监管新模式。[2019/11/1]

本质是将与运算的所有可能性罗列出来,加入随机项后由另一方根据自己的数据选择混淆后的计算结果。

--实现思路--

▲明文比较

声音 | 陈晓华:通过区块链把煤炭数字化 可提前融资解决企业的资金问题:金色财经讯,近日,BTV《解码区块链》邀请了中国移动通信联合会区块链专委会主任陈晓华。针对“区块链在煤炭的投融资方面所起到的作用”问题,陈晓华表示,区块链最终是做通证的,即数字经济的一个板块。传统的交易可能需要用实质的产品做质押,我觉得如果通过区块链技术用于煤炭金融的话,我们未来可以高效的解决投融资问题。比如,一个地方有多少吨煤,我们就可以通过有关部门给它确权,确权之后就可以去融资,可以提前预售。预售之后,就可以去开采。这样一来,通过区块链技术做成数字煤炭,或者叫数字经济,未来会有很大的作用。勘测出来的煤,我们可以通过做成数字资产,进行提前融资,解决企业的资金问题。[2019/6/6]

首先不考虑比较运算的隐私性,平常情况下两个数是如何比较大小的:

*将两个数对齐为相同长度的数字数组,长度不够的则在前面补0

a=123,b=5879,a=>,b=>

*对两个数组里面的数字进行顺序比较,如果对应位的数字相等,则继续比较下一位,直到有一位不相等,最早不相等那位的比较结果即为两个数据的比较结果,若所有位的数字都相等,则两个数据相等。整个过程可归纳为以下公式:

声音 | 李启威:闪电网络或可解决加密行业可扩展性不足的问题:据AMBcrypto消息,Litecoin创始人李启威(Charlie Lee)最近表示,加密货币行业发展的主要障碍之一是扩展问题。可扩展性是一个严重的问题,随着新的令牌,用户,投资者,初创公司和交易所的增加,交易数据一直在堆积,导致当前系统紧张。像Lightning Network这样的技术将成为比特币[BTC]或Litecoin [LTC]可扩展性问题的解决方案。他进一步表示,闪电网络可以在不牺牲权力下放的情况下解决扩展问题。[2018/10/16]

X,Y都是长度为n的数据,1{X<Y},1{X=Y}是求值表达式,满足大括号内条件时为1否则为0

X=x0||x1||x2||...||x(n-1),Y=y0||y1||y2||...||y(n-1),xi,yi表示拆分后的第i位数据

Xi=xi||...||x(n-1),Yi=yi||...||y(n-1),用于表示去除前i-1位后的数据

1{X<Y}=1{x0<x0}⊕(1{x0=y0}∧1{X1<Y1})

1{X1<Y1}=1{x1<x1}⊕(1{x1=y1}∧1{X2<Y2})

...

1{X(n-1)<Y(n-1。=1{x(n-1)<y(n-1。

▲不安全的隐私比较

如果要将上述比较方案转为隐私比较,最容易想到的方案是将两个最小比较单位的数的比较隐私化,在之前的文章《优雅的求职——隐私比较算法实例》中已经介绍过:对于两个最小比较单位的比较可通过不经意传输协议来完成。这样确实是保证了单个最小比较单位的安全性,但是对于某些情况,会暴露出数据的一些情况:

a=1230b=1231,对于这两个数字的比较,如果b作为ot的接受方也就是最小比较单元数据比较结果的获取方,按照上述方案进行比较,会有两点额外信息被泄露:

1)在前几位相同的情况下:b会知道a的前三位是123;

2)两个最小单元的数据是最小单元范围的两端数据:b会知道a的最后一位是0;

而根据以上两个信息b甚至可以直接反推出a的数据,在这种情况隐私比较也就不隐私了。

▲消除不安全

本论文中的隐私比较协议,整个比较思路和上面不安全的隐私比较是一致的,但是该协议引入了秘密分享技术,在通过不经意传输协议获取比较结果时发送方对每个数据都混淆上一个随机项,这样双方都不会获取到最小比较单元数据的比较结果,而是比较结果的碎片,并使用碎片按照明文比较的流程递归的进行比较,所有最小比较单元都比较完成后,再将比较结果的碎片进行还原以获取整个数据的比较结果。

由于最小单元的比较结果都是碎片,到比较结束才会还原递归计算的结果,就避免了获取最小比较单元比较结果导致的信息泄露。

--协议流程--

Alice拥有数据x,Bob拥有数据y,数据的二进制长度为l,最小比较单元的二进制长度为m,划分的最小比较单元个数为q=l/m,最小比较单元的十进制最大值为M=2^m-1

1)双方分别划分数据:x=x0||...||x(q-1),y=y0||...||y(q-1)

2)对于所有的最小比较单元xi(0<=i<q),通过不经意传输获取每个最小比较单元比较结果的碎片

*Alice作为不经意传输的发送方准备数据:随机生成布尔值<lt_i>_0,<eq_i>_0,分别作为xi是否小于和等于yi的布尔分享碎片,对于0<=j<=M,分别设置两个不经意传输实例的输入为:

sij=<lt_i>_0⊕1{xi<j}

tij=<eq_i>_0⊕1{xi=j}

*Bob将yi作为输入分别执行两个不经意传输实例,获取两个比较结果的碎片:

<lt-i>1和<eq-i>1

例如当m取2时,Alice的第一个最小比较单元x0=2,Bob的第一个最小比较单元y0=1,Alice随机生成<lt_0>_0,<eq_0>_0,并按下表生成两个不经意传输的输入:

Bob使用y0作为两个不经意传输的选择项,获取:

<lt_0>_1=0⊕<lt_0>_0,<eq_0>_1=0⊕<eq_0>_0

3)所有最小比较单元比较完成后,双方都获取了对应的最小比较单元间是否小于和是否等于的布尔分享碎片,即可按照明文比较流程,使用碎片递推计算出最终比较结果的碎片。

对于碎片的异或操作,只需要进行本地对碎片进行异或就行。对于碎片的与操作,则需要按照上面介绍的方案通过不经意传输计算出结果的碎片。

在递推过程中主要有两个地方需要执行与操作:

当前面所有比较单元相等,需要比较下一个时:

1{x0||x1=y0||y1}∧1{x2<y2}

计算前面所有比较单元是否都相等时:

1{x0||x1=y0||y1}=1{x0=y0}∧1{x1=y1}

--总结--

该协议整体思路和明文的比较流程一致,并使用不经意传输和秘密分享技术保证数据的隐私性,也是当前效率比较高的协议。

对于单个元素的比较,与运算的OT实例,无法通过OT扩展进行优化,因为需要进行递归的计算,前后有依赖关系。对于批量元素的比较则可在纵向对于相同位置与运算的OT实例通过OT扩展来优化效率。

作者简介

刘敬

趣链科技数据网格实验室BitXMesh团队

参考文献

原论文:RatheeD,RatheeM,KumarN,etal.CrypTFlow2:Practical2-partysecureinference//Proceedingsofthe2020ACMSIGSACConferenceonComputerandCommunicationsSecurity.2020:325-342.

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

金星链

狗狗币价格WEB3:波卡与 Web3.0 的渊源-ODAILY

“波卡知识图谱”是我们针对波卡从零到一的入门级文章,我们尝试从波卡最基础的部分讲起,为大家提供全方位了解波卡的内容,当然这是一项巨大的工程,也充满了挑战.

[0:15ms0-0:823ms